RTEMS 4.11
Annotated Report
Sun Dec 23 04:11:25 2012

08003760 <IMFS_dump_directory>: */ static void IMFS_dump_directory( IMFS_jnode_t *the_directory, int level ) {
 8003760:	37 9c ff bc 	addi sp,sp,-68                                 
 8003764:	5b 8b 00 44 	sw (sp+68),r11                                 
 8003768:	5b 8c 00 40 	sw (sp+64),r12                                 
 800376c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8003770:	5b 8e 00 38 	sw (sp+56),r14                                 
 8003774:	5b 8f 00 34 	sw (sp+52),r15                                 
 8003778:	5b 90 00 30 	sw (sp+48),r16                                 
 800377c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8003780:	5b 92 00 28 	sw (sp+40),r18                                 
 8003784:	5b 93 00 24 	sw (sp+36),r19                                 
 8003788:	5b 94 00 20 	sw (sp+32),r20                                 
 800378c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8003790:	5b 96 00 18 	sw (sp+24),r22                                 
 8003794:	5b 97 00 14 	sw (sp+20),r23                                 
 8003798:	5b 98 00 10 	sw (sp+16),r24                                 
 800379c:	5b 99 00 0c 	sw (sp+12),r25                                 
 80037a0:	5b 9b 00 08 	sw (sp+8),fp                                   
 80037a4:	5b 9d 00 04 	sw (sp+4),ra                                   
}                                                                     
                                                                      
int IMFS_memfile_maximum_size( void )                                 
{                                                                     
  return IMFS_MEMFILE_MAXIMUM_SIZE;                                   
}                                                                     
 80037a8:	28 2d 00 50 	lw r13,(r1+80)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 80037ac:	34 30 00 54 	addi r16,r1,84                                 
 */                                                                   
static void IMFS_dump_directory(                                      
  IMFS_jnode_t  *the_directory,                                       
  int            level                                                
)                                                                     
{                                                                     
 80037b0:	b8 40 70 00 	mv r14,r2                                      
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 80037b4:	45 b0 00 38 	be r13,r16,8003894 <IMFS_dump_directory+0x134> 
 80037b8:	78 0b 08 02 	mvhi r11,0x802                                 
 80037bc:	78 0f 08 02 	mvhi r15,0x802                                 
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
      return;                                                         
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
 80037c0:	78 19 08 02 	mvhi r25,0x802                                 
)                                                                     
{                                                                     
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( IMFS_type( the_jnode ) ) {                                  
 80037c4:	78 12 08 02 	mvhi r18,0x802                                 
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
      return;                                                         
  }                                                                   
  puts("");                                                           
 80037c8:	78 11 08 02 	mvhi r17,0x802                                 
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
 80037cc:	78 18 08 02 	mvhi r24,0x802                                 
    case IMFS_HARD_LINK:                                              
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
 80037d0:	78 14 08 02 	mvhi r20,0x802                                 
        the_jnode->info.file.indirect,                                
        the_jnode->info.file.doubly_indirect,                         
        the_jnode->info.file.triply_indirect                          
      );                                                              
#else                                                                 
      fprintf(stdout, " (file %" PRId32 ")",                          
 80037d4:	78 17 08 02 	mvhi r23,0x802                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
        the_jnode->info.device.major, the_jnode->info.device.minor ); 
      break;                                                          
                                                                      
    case IMFS_LINEAR_FILE:                                            
      fprintf(stdout, " (file %" PRId32 " %p)",                       
 80037d8:	78 16 08 02 	mvhi r22,0x802                                 
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
      break;                                                          
                                                                      
    case IMFS_DEVICE:                                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
 80037dc:	78 15 08 02 	mvhi r21,0x802                                 
 80037e0:	39 6b 72 78 	ori r11,r11,0x7278                             
 80037e4:	39 ef 4d ec 	ori r15,r15,0x4dec                             
)                                                                     
{                                                                     
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( IMFS_type( the_jnode ) ) {                                  
 80037e8:	34 13 00 06 	mvi r19,6                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
      return;                                                         
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
 80037ec:	3b 39 4e 4c 	ori r25,r25,0x4e4c                             
)                                                                     
{                                                                     
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( IMFS_type( the_jnode ) ) {                                  
 80037f0:	3a 52 4e d0 	ori r18,r18,0x4ed0                             
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
      return;                                                         
  }                                                                   
  puts("");                                                           
 80037f4:	3a 31 49 bc 	ori r17,r17,0x49bc                             
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
 80037f8:	3b 18 4e 38 	ori r24,r24,0x4e38                             
    case IMFS_HARD_LINK:                                              
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
 80037fc:	3a 94 4e 24 	ori r20,r20,0x4e24                             
        the_jnode->info.file.indirect,                                
        the_jnode->info.file.doubly_indirect,                         
        the_jnode->info.file.triply_indirect                          
      );                                                              
#else                                                                 
      fprintf(stdout, " (file %" PRId32 ")",                          
 8003800:	3a f7 4e 18 	ori r23,r23,0x4e18                             
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
        the_jnode->info.device.major, the_jnode->info.device.minor ); 
      break;                                                          
                                                                      
    case IMFS_LINEAR_FILE:                                            
      fprintf(stdout, " (file %" PRId32 " %p)",                       
 8003804:	3a d6 4e 08 	ori r22,r22,0x4e08                             
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
      break;                                                          
                                                                      
    case IMFS_DEVICE:                                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
 8003808:	3a b5 4d f4 	ori r21,r21,0x4df4                             
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
      IMFS_dump_directory( the_jnode, level + 1 );                    
 800380c:	34 5b 00 01 	addi fp,r2,1                                   
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
 8003810:	48 0e 00 0a 	bg r0,r14,8003838 <IMFS_dump_directory+0xd8>   <== NEVER TAKEN
 8003814:	34 0c 00 00 	mvi r12,0                                      
      fprintf(stdout, "...." );                                       
 8003818:	29 63 00 00 	lw r3,(r11+0)                                  
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
 800381c:	35 8c 00 01 	addi r12,r12,1                                 
      fprintf(stdout, "...." );                                       
 8003820:	b9 e0 08 00 	mv r1,r15                                      
 8003824:	28 64 00 08 	lw r4,(r3+8)                                   
 8003828:	34 02 00 01 	mvi r2,1                                       
 800382c:	34 03 00 04 	mvi r3,4                                       
 8003830:	f8 00 3d b4 	calli 8012f00 <fwrite>                         
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
 8003834:	4d cc ff f9 	bge r14,r12,8003818 <IMFS_dump_directory+0xb8> 
  IMFS_jnode_t *the_jnode                                             
)                                                                     
{                                                                     
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
 8003838:	29 63 00 00 	lw r3,(r11+0)                                  
 800383c:	35 a1 00 0c 	addi r1,r13,12                                 
 8003840:	28 62 00 08 	lw r2,(r3+8)                                   
 8003844:	f8 00 3a 75 	calli 8012218 <fputs>                          
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
 8003848:	29 a3 00 4c 	lw r3,(r13+76)                                 
 800384c:	28 63 00 00 	lw r3,(r3+0)                                   
  switch( IMFS_type( the_jnode ) ) {                                  
 8003850:	54 73 00 4c 	bgu r3,r19,8003980 <IMFS_dump_directory+0x220> <== NEVER TAKEN
 8003854:	b4 63 18 00 	add r3,r3,r3                                   
 8003858:	b4 63 18 00 	add r3,r3,r3                                   
 800385c:	b6 43 18 00 	add r3,r18,r3                                  
 8003860:	28 63 00 00 	lw r3,(r3+0)                                   
 8003864:	c0 60 00 00 	b r3                                           
    case IMFS_HARD_LINK:                                              
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
 8003868:	29 63 00 00 	lw r3,(r11+0)                                  
 800386c:	ba 80 08 00 	mv r1,r20                                      
 8003870:	34 02 00 01 	mvi r2,1                                       
 8003874:	28 64 00 08 	lw r4,(r3+8)                                   
 8003878:	34 03 00 13 	mvi r3,19                                      
 800387c:	f8 00 3d a1 	calli 8012f00 <fwrite>                         
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
 8003880:	29 a3 00 4c 	lw r3,(r13+76)                                 
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
 8003884:	28 63 00 00 	lw r3,(r3+0)                                   
 8003888:	44 60 00 21 	be r3,r0,800390c <IMFS_dump_directory+0x1ac>   <== NEVER TAKEN
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
 800388c:	29 ad 00 00 	lw r13,(r13+0)                                 
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
 8003890:	5d b0 ff e0 	bne r13,r16,8003810 <IMFS_dump_directory+0xb0> 
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
      IMFS_dump_directory( the_jnode, level + 1 );                    
  }                                                                   
}                                                                     
 8003894:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003898:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800389c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80038a0:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80038a4:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80038a8:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80038ac:	2b 90 00 30 	lw r16,(sp+48)                                 
 80038b0:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80038b4:	2b 92 00 28 	lw r18,(sp+40)                                 
 80038b8:	2b 93 00 24 	lw r19,(sp+36)                                 
 80038bc:	2b 94 00 20 	lw r20,(sp+32)                                 
 80038c0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80038c4:	2b 96 00 18 	lw r22,(sp+24)                                 
 80038c8:	2b 97 00 14 	lw r23,(sp+20)                                 
 80038cc:	2b 98 00 10 	lw r24,(sp+16)                                 
 80038d0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80038d4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80038d8:	37 9c 00 44 	addi sp,sp,68                                  
 80038dc:	c3 a0 00 00 	ret                                            
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
        the_jnode->info.device.major, the_jnode->info.device.minor ); 
      break;                                                          
                                                                      
    case IMFS_LINEAR_FILE:                                            
      fprintf(stdout, " (file %" PRId32 " %p)",                       
 80038e0:	29 61 00 00 	lw r1,(r11+0)                                  
 80038e4:	29 a3 00 50 	lw r3,(r13+80)                                 
 80038e8:	29 a4 00 54 	lw r4,(r13+84)                                 
 80038ec:	28 21 00 08 	lw r1,(r1+8)                                   
 80038f0:	ba c0 10 00 	mv r2,r22                                      
 80038f4:	f8 00 39 de 	calli 801206c <fprintf>                        
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
      return;                                                         
  }                                                                   
  puts("");                                                           
 80038f8:	ba 20 08 00 	mv r1,r17                                      
 80038fc:	f8 00 42 22 	calli 8014184 <puts>                           
 8003900:	29 a3 00 4c 	lw r3,(r13+76)                                 
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
 8003904:	28 63 00 00 	lw r3,(r3+0)                                   
 8003908:	5c 60 ff e1 	bne r3,r0,800388c <IMFS_dump_directory+0x12c>  
      IMFS_dump_directory( the_jnode, level + 1 );                    
 800390c:	b9 a0 08 00 	mv r1,r13                                      
 8003910:	bb 60 10 00 	mv r2,fp                                       
 8003914:	fb ff ff 93 	calli 8003760 <IMFS_dump_directory>            
 8003918:	e3 ff ff dd 	bi 800388c <IMFS_dump_directory+0x12c>         
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
      break;                                                          
                                                                      
    case IMFS_DEVICE:                                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
 800391c:	29 61 00 00 	lw r1,(r11+0)                                  
 8003920:	29 a3 00 50 	lw r3,(r13+80)                                 
 8003924:	29 a4 00 54 	lw r4,(r13+84)                                 
 8003928:	28 21 00 08 	lw r1,(r1+8)                                   
 800392c:	ba a0 10 00 	mv r2,r21                                      
 8003930:	f8 00 39 cf 	calli 801206c <fprintf>                        
 8003934:	e3 ff ff f1 	bi 80038f8 <IMFS_dump_directory+0x198>         
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( IMFS_type( the_jnode ) ) {                                  
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
 8003938:	29 62 00 00 	lw r2,(r11+0)                                  
 800393c:	34 01 00 2f 	mvi r1,47                                      
 8003940:	28 42 00 08 	lw r2,(r2+8)                                   
 8003944:	f8 00 39 f1 	calli 8012108 <fputc>                          
 8003948:	e3 ff ff ec 	bi 80038f8 <IMFS_dump_directory+0x198>         
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
 800394c:	29 63 00 00 	lw r3,(r11+0)                                  
 8003950:	bb 00 08 00 	mv r1,r24                                      
 8003954:	34 02 00 01 	mvi r2,1                                       
 8003958:	28 64 00 08 	lw r4,(r3+8)                                   
 800395c:	34 03 00 12 	mvi r3,18                                      
 8003960:	f8 00 3d 68 	calli 8012f00 <fwrite>                         
 8003964:	e3 ff ff c7 	bi 8003880 <IMFS_dump_directory+0x120>         
        the_jnode->info.file.indirect,                                
        the_jnode->info.file.doubly_indirect,                         
        the_jnode->info.file.triply_indirect                          
      );                                                              
#else                                                                 
      fprintf(stdout, " (file %" PRId32 ")",                          
 8003968:	29 61 00 00 	lw r1,(r11+0)                                  
 800396c:	29 a3 00 50 	lw r3,(r13+80)                                 
 8003970:	ba e0 10 00 	mv r2,r23                                      
 8003974:	28 21 00 08 	lw r1,(r1+8)                                   
 8003978:	f8 00 39 bd 	calli 801206c <fprintf>                        
 800397c:	e3 ff ff df 	bi 80038f8 <IMFS_dump_directory+0x198>         
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
      return;                                                         
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
 8003980:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003984:	bb 20 10 00 	mv r2,r25                                      <== NOT EXECUTED
 8003988:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 800398c:	f8 00 39 b8 	calli 801206c <fprintf>                        <== NOT EXECUTED
 8003990:	e3 ff ff bc 	bi 8003880 <IMFS_dump_directory+0x120>         <== NOT EXECUTED
                                                                      

0800871c <IMFS_eval_token>: rtems_filesystem_eval_path_context_t *ctx, void *arg, const char *token, size_t tokenlen ) {
 800871c:	37 9c ff e4 	addi sp,sp,-28                                 
 8008720:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8008724:	5b 8c 00 18 	sw (sp+24),r12                                 
 8008728:	5b 8d 00 14 	sw (sp+20),r13                                 
 800872c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8008730:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8008734:	5b 90 00 08 	sw (sp+8),r16                                  
 8008738:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc( ctx );                 
  IMFS_jnode_t *dir = currentloc->node_access;                        
 800873c:	28 2c 00 20 	lw r12,(r1+32)                                 
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
 8008740:	b8 60 78 00 	mv r15,r3                                      
 8008744:	b8 80 70 00 	mv r14,r4                                      
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc( ctx );                 
  IMFS_jnode_t *dir = currentloc->node_access;                        
  bool access_ok = rtems_filesystem_eval_path_check_access(           
 8008748:	29 83 00 30 	lw r3,(r12+48)                                 
 800874c:	2d 84 00 3c 	lhu r4,(r12+60)                                
 8008750:	2d 85 00 3e 	lhu r5,(r12+62)                                
 8008754:	34 02 00 01 	mvi r2,1                                       
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
 8008758:	b8 20 68 00 	mv r13,r1                                      
  rtems_filesystem_eval_path_generic_status status =                  
 800875c:	34 0b 00 01 	mvi r11,1                                      
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc( ctx );                 
  IMFS_jnode_t *dir = currentloc->node_access;                        
  bool access_ok = rtems_filesystem_eval_path_check_access(           
 8008760:	f8 00 03 a8 	calli 8009600 <rtems_filesystem_eval_path_check_access>
    dir->st_mode,                                                     
    dir->st_uid,                                                      
    dir->st_gid                                                       
  );                                                                  
                                                                      
  if ( access_ok ) {                                                  
 8008764:	44 20 00 27 	be r1,r0,8008800 <IMFS_eval_token+0xe4>        
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 8008768:	45 cb 00 44 	be r14,r11,8008878 <IMFS_eval_token+0x15c>     
static inline bool rtems_filesystem_is_parent_directory(              
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 2 && token [0] == '.' && token [1] == '.';       
 800876c:	34 01 00 02 	mvi r1,2                                       
 8008770:	45 c1 00 57 	be r14,r1,80088cc <IMFS_eval_token+0x1b0>      
};                                                                    
                                                                      
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )      
{                                                                     
  rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config ); 
}                                                                     
 8008774:	29 8b 00 50 	lw r11,(r12+80)                                
    if ( rtems_filesystem_is_parent_directory( token, tokenlen ) ) {  
      return dir->Parent;                                             
    } else {                                                          
      rtems_chain_control *entries = &dir->info.directory.Entries;    
      rtems_chain_node *current = rtems_chain_first( entries );       
      rtems_chain_node *tail = rtems_chain_tail( entries );           
 8008778:	35 90 00 54 	addi r16,r12,84                                
                                                                      
      while ( current != tail ) {                                     
 800877c:	45 70 00 2d 	be r11,r16,8008830 <IMFS_eval_token+0x114>     
        IMFS_jnode_t *entry = (IMFS_jnode_t *) current;               
        bool match = strncmp( entry->name, token, tokenlen ) == 0     
 8008780:	b9 e0 10 00 	mv r2,r15                                      
 8008784:	35 61 00 0c 	addi r1,r11,12                                 
 8008788:	b9 c0 18 00 	mv r3,r14                                      
 800878c:	f8 00 19 2e 	calli 800ec44 <strncmp>                        
          && entry->name [tokenlen] == '\0';                          
 8008790:	b5 6e 10 00 	add r2,r11,r14                                 
      rtems_chain_control *entries = &dir->info.directory.Entries;    
      rtems_chain_node *current = rtems_chain_first( entries );       
      rtems_chain_node *tail = rtems_chain_tail( entries );           
                                                                      
      while ( current != tail ) {                                     
        IMFS_jnode_t *entry = (IMFS_jnode_t *) current;               
 8008794:	b9 60 28 00 	mv r5,r11                                      
        bool match = strncmp( entry->name, token, tokenlen ) == 0     
          && entry->name [tokenlen] == '\0';                          
 8008798:	5c 20 00 24 	bne r1,r0,8008828 <IMFS_eval_token+0x10c>      
 800879c:	40 42 00 0c 	lbu r2,(r2+12)                                 
 80087a0:	5c 41 00 22 	bne r2,r1,8008828 <IMFS_eval_token+0x10c>      
            rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );   
          }                                                           
        }                                                             
      }                                                               
    } else {                                                          
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
 80087a4:	34 0b 00 02 	mvi r11,2                                      
  );                                                                  
                                                                      
  if ( access_ok ) {                                                  
    IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
                                                                      
    if ( entry != NULL ) {                                            
 80087a8:	44 a0 00 16 	be r5,r0,8008800 <IMFS_eval_token+0xe4>        
};                                                                    
                                                                      
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )      
{                                                                     
  rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config ); 
}                                                                     
 80087ac:	28 a3 00 4c 	lw r3,(r5+76)                                  
                                                                      
  if ( access_ok ) {                                                  
    IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
                                                                      
    if ( entry != NULL ) {                                            
      bool terminal = !rtems_filesystem_eval_path_has_path( ctx );    
 80087b0:	29 a4 00 04 	lw r4,(r13+4)                                  
};                                                                    
                                                                      
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )      
{                                                                     
  rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config ); 
}                                                                     
 80087b4:	29 a2 00 10 	lw r2,(r13+16)                                 
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
 80087b8:	28 61 00 00 	lw r1,(r3+0)                                   
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
 80087bc:	59 a0 00 0c 	sw (r13+12),r0                                 
                                                                      
  if ( access_ok ) {                                                  
    IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
                                                                      
    if ( entry != NULL ) {                                            
      bool terminal = !rtems_filesystem_eval_path_has_path( ctx );    
 80087c0:	64 84 00 00 	cmpei r4,r4,0                                  
      bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
      IMFS_jnode_types_t type = IMFS_type( entry );                   
                                                                      
      rtems_filesystem_eval_path_clear_token( ctx );                  
                                                                      
      if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
 80087c4:	44 2b 00 1d 	be r1,r11,8008838 <IMFS_eval_token+0x11c>      
        entry = entry->info.hard_link.link_node;                      
      }                                                               
                                                                      
      if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) { 
 80087c8:	34 06 00 03 	mvi r6,3                                       
 80087cc:	44 26 00 34 	be r1,r6,800889c <IMFS_eval_token+0x180>       
  IMFS_jnode_types_t type                                             
)                                                                     
{                                                                     
  rtems_filesystem_global_location_t **fs_root_ptr = NULL;            
                                                                      
  if ( type == IMFS_DIRECTORY ) {                                     
 80087d0:	5c 20 00 1f 	bne r1,r0,800884c <IMFS_eval_token+0x130>      
    if ( node->info.directory.mt_fs != NULL ) {                       
 80087d4:	28 a6 00 5c 	lw r6,(r5+92)                                  
 80087d8:	44 c1 00 1d 	be r6,r1,800884c <IMFS_eval_token+0x130>       
                                                                      
          if ( !terminal ) {                                          
            status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;     
          }                                                           
        } else {                                                      
          access_ok = rtems_filesystem_eval_path_check_access(        
 80087dc:	28 a3 00 30 	lw r3,(r5+48)                                  
 80087e0:	2c a4 00 3c 	lhu r4,(r5+60)                                 
 80087e4:	2c a5 00 3e 	lhu r5,(r5+62)                                 
 80087e8:	b9 a0 08 00 	mv r1,r13                                      
 80087ec:	34 02 00 01 	mvi r2,1                                       
{                                                                     
  rtems_filesystem_global_location_t **fs_root_ptr = NULL;            
                                                                      
  if ( type == IMFS_DIRECTORY ) {                                     
    if ( node->info.directory.mt_fs != NULL ) {                       
      fs_root_ptr = &node->info.directory.mt_fs->mt_fs_root;          
 80087f0:	34 cc 00 24 	addi r12,r6,36                                 
                                                                      
          if ( !terminal ) {                                          
            status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;     
          }                                                           
        } else {                                                      
          access_ok = rtems_filesystem_eval_path_check_access(        
 80087f4:	f8 00 03 83 	calli 8009600 <rtems_filesystem_eval_path_check_access>
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 80087f8:	34 0b 00 01 	mvi r11,1                                      
            RTEMS_FS_PERMS_EXEC,                                      
            entry->st_mode,                                           
            entry->st_uid,                                            
            entry->st_gid                                             
          );                                                          
          if ( access_ok ) {                                          
 80087fc:	5c 20 00 24 	bne r1,r0,800888c <IMFS_eval_token+0x170>      <== ALWAYS TAKEN
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8008800:	b9 60 08 00 	mv r1,r11                                      
 8008804:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008808:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800880c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8008810:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8008814:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8008818:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800881c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8008820:	37 9c 00 1c 	addi sp,sp,28                                  
 8008824:	c3 a0 00 00 	ret                                            
};                                                                    
                                                                      
void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx )      
{                                                                     
  rtems_filesystem_eval_path_generic( ctx, NULL, &IMFS_eval_config ); 
}                                                                     
 8008828:	29 6b 00 00 	lw r11,(r11+0)                                 
    } else {                                                          
      rtems_chain_control *entries = &dir->info.directory.Entries;    
      rtems_chain_node *current = rtems_chain_first( entries );       
      rtems_chain_node *tail = rtems_chain_tail( entries );           
                                                                      
      while ( current != tail ) {                                     
 800882c:	5e 0b ff d5 	bne r16,r11,8008780 <IMFS_eval_token+0x64>     
            rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );   
          }                                                           
        }                                                             
      }                                                               
    } else {                                                          
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
 8008830:	34 0b 00 02 	mvi r11,2                                      
 8008834:	e3 ff ff f3 	bi 8008800 <IMFS_eval_token+0xe4>              
    IMFS_jnode_t *entry = IMFS_search_in_directory( dir, token, tokenlen );
                                                                      
    if ( entry != NULL ) {                                            
      bool terminal = !rtems_filesystem_eval_path_has_path( ctx );    
      int eval_flags = rtems_filesystem_eval_path_get_flags( ctx );   
      bool follow_hard_link = (eval_flags & RTEMS_FS_FOLLOW_HARD_LINK) != 0;
 8008838:	20 42 00 08 	andi r2,r2,0x8                                 
      bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
      IMFS_jnode_types_t type = IMFS_type( entry );                   
                                                                      
      rtems_filesystem_eval_path_clear_token( ctx );                  
                                                                      
      if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
 800883c:	5c 40 00 02 	bne r2,r0,8008844 <IMFS_eval_token+0x128>      
 8008840:	5c 82 00 02 	bne r4,r2,8008848 <IMFS_eval_token+0x12c>      <== ALWAYS TAKEN
        entry = entry->info.hard_link.link_node;                      
 8008844:	28 a5 00 50 	lw r5,(r5+80)                                  
    } else {                                                          
      rtems_chain_control *entries = &dir->info.directory.Entries;    
      rtems_chain_node *current = rtems_chain_first( entries );       
      rtems_chain_node *tail = rtems_chain_tail( entries );           
                                                                      
      while ( current != tail ) {                                     
 8008848:	28 a3 00 4c 	lw r3,(r5+76)                                  
      } else {                                                        
        rtems_filesystem_global_location_t **fs_root_ptr =            
          IMFS_is_mount_point( entry, type );                         
                                                                      
        if ( fs_root_ptr == NULL ) {                                  
          --dir->reference_count;                                     
 800884c:	2d 81 00 34 	lhu r1,(r12+52)                                
                                                                      
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{                                                                     
  IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;             
                                                                      
  loc->handlers = node->control->handlers;                            
 8008850:	28 62 00 04 	lw r2,(r3+4)                                   
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8008854:	b8 80 58 00 	mv r11,r4                                      
      } else {                                                        
        rtems_filesystem_global_location_t **fs_root_ptr =            
          IMFS_is_mount_point( entry, type );                         
                                                                      
        if ( fs_root_ptr == NULL ) {                                  
          --dir->reference_count;                                     
 8008858:	34 21 ff ff 	addi r1,r1,-1                                  
 800885c:	0d 81 00 34 	sh (r12+52),r1                                 
          ++entry->reference_count;                                   
 8008860:	2c a1 00 34 	lhu r1,(r5+52)                                 
 8008864:	34 21 00 01 	addi r1,r1,1                                   
 8008868:	0c a1 00 34 	sh (r5+52),r1                                  
          currentloc->node_access = entry;                            
 800886c:	59 a5 00 20 	sw (r13+32),r5                                 
 8008870:	59 a2 00 28 	sw (r13+40),r2                                 
 8008874:	e3 ff ff e3 	bi 8008800 <IMFS_eval_token+0xe4>              
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 8008878:	41 e2 00 00 	lbu r2,(r15+0)                                 
 800887c:	34 01 00 2e 	mvi r1,46                                      
 8008880:	5c 41 ff bd 	bne r2,r1,8008774 <IMFS_eval_token+0x58>       
 8008884:	b9 80 28 00 	mv r5,r12                                      
 8008888:	e3 ff ff c7 	bi 80087a4 <IMFS_eval_token+0x88>              
            entry->st_mode,                                           
            entry->st_uid,                                            
            entry->st_gid                                             
          );                                                          
          if ( access_ok ) {                                          
            rtems_filesystem_eval_path_restart( ctx, fs_root_ptr );   
 800888c:	b9 a0 08 00 	mv r1,r13                                      
 8008890:	b9 80 10 00 	mv r2,r12                                      
 8008894:	fb ff e9 4e 	calli 8002dcc <rtems_filesystem_eval_path_restart>
 8008898:	e3 ff ff da 	bi 8008800 <IMFS_eval_token+0xe4>              
                                                                      
    if ( entry != NULL ) {                                            
      bool terminal = !rtems_filesystem_eval_path_has_path( ctx );    
      int eval_flags = rtems_filesystem_eval_path_get_flags( ctx );   
      bool follow_hard_link = (eval_flags & RTEMS_FS_FOLLOW_HARD_LINK) != 0;
      bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
 800889c:	20 42 00 10 	andi r2,r2,0x10                                
                                                                      
      if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
        entry = entry->info.hard_link.link_node;                      
      }                                                               
                                                                      
      if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) { 
 80088a0:	5c 40 00 02 	bne r2,r0,80088a8 <IMFS_eval_token+0x18c>      
 80088a4:	5c 82 ff ea 	bne r4,r2,800884c <IMFS_eval_token+0x130>      
        const char *target = entry->info.sym_link.name;               
 80088a8:	28 ac 00 50 	lw r12,(r5+80)                                 
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 80088ac:	34 0b 00 01 	mvi r11,1                                      
      }                                                               
                                                                      
      if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) { 
        const char *target = entry->info.sym_link.name;               
                                                                      
        rtems_filesystem_eval_path_recursive( ctx, target, strlen( target ) );
 80088b0:	b9 80 08 00 	mv r1,r12                                      
 80088b4:	f8 00 18 b5 	calli 800eb88 <strlen>                         
 80088b8:	b8 20 18 00 	mv r3,r1                                       
 80088bc:	b9 80 10 00 	mv r2,r12                                      
 80088c0:	b9 a0 08 00 	mv r1,r13                                      
 80088c4:	fb ff e9 72 	calli 8002e8c <rtems_filesystem_eval_path_recursive>
                                                                      
      if ( type == IMFS_HARD_LINK && (follow_hard_link || !terminal)) {
        entry = entry->info.hard_link.link_node;                      
      }                                                               
                                                                      
      if ( type == IMFS_SYM_LINK && (follow_sym_link || !terminal)) { 
 80088c8:	e3 ff ff ce 	bi 8008800 <IMFS_eval_token+0xe4>              
static inline bool rtems_filesystem_is_parent_directory(              
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 2 && token [0] == '.' && token [1] == '.';       
 80088cc:	41 e1 00 00 	lbu r1,(r15+0)                                 
 80088d0:	34 02 00 2e 	mvi r2,46                                      
 80088d4:	5c 22 ff a8 	bne r1,r2,8008774 <IMFS_eval_token+0x58>       
 80088d8:	41 e2 00 01 	lbu r2,(r15+1)                                 
 80088dc:	5c 41 ff a6 	bne r2,r1,8008774 <IMFS_eval_token+0x58>       <== NEVER TAKEN
{                                                                     
  if ( rtems_filesystem_is_current_directory( token, tokenlen ) ) {   
    return dir;                                                       
  } else {                                                            
    if ( rtems_filesystem_is_parent_directory( token, tokenlen ) ) {  
      return dir->Parent;                                             
 80088e0:	29 85 00 08 	lw r5,(r12+8)                                  
 80088e4:	e3 ff ff b0 	bi 80087a4 <IMFS_eval_token+0x88>              
                                                                      

080019c0 <IMFS_fifo_write>: static ssize_t IMFS_fifo_write( rtems_libio_t *iop, const void *buffer, size_t count ) {
 80019c0:	37 9c ff ec 	addi sp,sp,-20                                 
 80019c4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80019c8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80019cc:	5b 9d 00 04 	sw (sp+4),ra                                   
  IMFS_jnode_t *jnode = iop->pathinfo.node_access;                    
 80019d0:	28 2c 00 14 	lw r12,(r1+20)                                 
                                                                      
  int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);        
 80019d4:	b8 20 20 00 	mv r4,r1                                       
 80019d8:	29 81 00 50 	lw r1,(r12+80)                                 
 80019dc:	f8 00 25 ec 	calli 800b18c <pipe_write>                     
 80019e0:	b8 20 58 00 	mv r11,r1                                      
  if (err > 0) {                                                      
 80019e4:	4c 01 00 0d 	bge r0,r1,8001a18 <IMFS_fifo_write+0x58>       
    IMFS_mtime_ctime_update(jnode);                                   
 80019e8:	37 81 00 10 	addi r1,sp,16                                  
 80019ec:	34 02 00 00 	mvi r2,0                                       
 80019f0:	f8 00 04 09 	calli 8002a14 <gettimeofday>                   
 80019f4:	2b 81 00 10 	lw r1,(sp+16)                                  
 80019f8:	59 81 00 44 	sw (r12+68),r1                                 
 80019fc:	59 81 00 48 	sw (r12+72),r1                                 
  }                                                                   
                                                                      
  IMFS_FIFO_RETURN(err);                                              
}                                                                     
 8001a00:	b9 60 08 00 	mv r1,r11                                      
 8001a04:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001a08:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001a0c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001a10:	37 9c 00 14 	addi sp,sp,20                                  
 8001a14:	c3 a0 00 00 	ret                                            
  int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);        
  if (err > 0) {                                                      
    IMFS_mtime_ctime_update(jnode);                                   
  }                                                                   
                                                                      
  IMFS_FIFO_RETURN(err);                                              
 8001a18:	44 20 ff fa 	be r1,r0,8001a00 <IMFS_fifo_write+0x40>        <== NEVER TAKEN
 8001a1c:	c8 0b 58 00 	sub r11,r0,r11                                 
 8001a20:	f8 00 36 d8 	calli 800f580 <__errno>                        
 8001a24:	58 2b 00 00 	sw (r1+0),r11                                  
 8001a28:	34 0b ff ff 	mvi r11,-1                                     
 8001a2c:	e3 ff ff f5 	bi 8001a00 <IMFS_fifo_write+0x40>              
                                                                      

08008994 <IMFS_fsunmount>: ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) void IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) {
 8008994:	37 9c ff d8 	addi sp,sp,-40                                 
 8008998:	5b 8b 00 10 	sw (sp+16),r11                                 
 800899c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80089a0:	5b 8d 00 08 	sw (sp+8),r13                                  
 80089a4:	5b 9d 00 04 	sw (sp+4),ra                                   
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
 80089a8:	28 24 00 24 	lw r4,(r1+36)                                  
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
        result = IMFS_rmnod( NULL, &loc );                            
 80089ac:	37 8d 00 14 	addi r13,sp,20                                 
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
 80089b0:	28 82 00 08 	lw r2,(r4+8)                                   
 80089b4:	28 89 00 00 	lw r9,(r4+0)                                   
 80089b8:	28 88 00 04 	lw r8,(r4+4)                                   
 80089bc:	28 87 00 0c 	lw r7,(r4+12)                                  
 80089c0:	28 86 00 10 	lw r6,(r4+16)                                  
 80089c4:	28 85 00 14 	lw r5,(r4+20)                                  
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
 80089c8:	28 41 00 4c 	lw r1,(r2+76)                                  
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
   jnode = (IMFS_jnode_t *)loc.node_access;                           
 80089cc:	b8 40 58 00 	mv r11,r2                                      
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
 80089d0:	28 23 00 00 	lw r3,(r1+0)                                   
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
 80089d4:	5b 89 00 14 	sw (sp+20),r9                                  
 80089d8:	5b 88 00 18 	sw (sp+24),r8                                  
 80089dc:	5b 82 00 1c 	sw (sp+28),r2                                  
 80089e0:	5b 87 00 20 	sw (sp+32),r7                                  
 80089e4:	5b 86 00 24 	sw (sp+36),r6                                  
 80089e8:	5b 85 00 28 	sw (sp+40),r5                                  
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
 80089ec:	58 80 00 08 	sw (r4+8),r0                                   
 80089f0:	28 21 00 04 	lw r1,(r1+4)                                   
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
 80089f4:	29 6c 00 08 	lw r12,(r11+8)                                 
     loc.node_access = (void *)jnode;                                 
 80089f8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80089fc:	5b 81 00 24 	sw (sp+36),r1                                  
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
 8008a00:	5c 60 00 14 	bne r3,r0,8008a50 <IMFS_fsunmount+0xbc>        <== NEVER TAKEN
 8008a04:	29 63 00 50 	lw r3,(r11+80)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8008a08:	35 61 00 54 	addi r1,r11,84                                 
 8008a0c:	44 61 00 11 	be r3,r1,8008a50 <IMFS_fsunmount+0xbc>         
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
 8008a10:	45 60 00 18 	be r11,r0,8008a70 <IMFS_fsunmount+0xdc>        <== NEVER TAKEN
         if ( jnode_has_children( jnode ) )                           
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
}                                                                     
 8008a14:	29 61 00 4c 	lw r1,(r11+76)                                 
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
 8008a18:	28 23 00 00 	lw r3,(r1+0)                                   
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
       if ( IMFS_is_directory( jnode ) ) {                            
 8008a1c:	5c 60 ff f5 	bne r3,r0,80089f0 <IMFS_fsunmount+0x5c>        <== NEVER TAKEN
         if ( jnode_has_children( jnode ) )                           
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
}                                                                     
 8008a20:	29 64 00 50 	lw r4,(r11+80)                                 
 8008a24:	35 65 00 54 	addi r5,r11,84                                 
        IMFS_node_destroy( jnode );                                   
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
       if ( IMFS_is_directory( jnode ) ) {                            
         if ( jnode_has_children( jnode ) )                           
 8008a28:	44 85 ff f2 	be r4,r5,80089f0 <IMFS_fsunmount+0x5c>         
           jnode = jnode_get_first_child( jnode );                    
 8008a2c:	b8 80 58 00 	mv r11,r4                                      
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
 8008a30:	44 80 00 10 	be r4,r0,8008a70 <IMFS_fsunmount+0xdc>         <== NEVER TAKEN
 8008a34:	28 81 00 4c 	lw r1,(r4+76)                                  
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
 8008a38:	29 6c 00 08 	lw r12,(r11+8)                                 
       if ( IMFS_is_directory( jnode ) ) {                            
         if ( jnode_has_children( jnode ) )                           
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
 8008a3c:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{                                                                     
  IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;             
                                                                      
  loc->handlers = node->control->handlers;                            
 8008a40:	28 21 00 04 	lw r1,(r1+4)                                   
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
 8008a44:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8008a48:	5b 81 00 24 	sw (sp+36),r1                                  
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
 8008a4c:	44 60 ff ee 	be r3,r0,8008a04 <IMFS_fsunmount+0x70>         
        result = IMFS_rmnod( NULL, &loc );                            
 8008a50:	34 01 00 00 	mvi r1,0                                       
 8008a54:	b9 a0 10 00 	mv r2,r13                                      
 8008a58:	fb ff e1 76 	calli 8001030 <IMFS_rmnod>                     
        if ( result != 0 )                                            
 8008a5c:	5c 20 00 0b 	bne r1,r0,8008a88 <IMFS_fsunmount+0xf4>        <== NEVER TAKEN
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
 8008a60:	b9 60 08 00 	mv r1,r11                                      
        jnode = next;                                                 
 8008a64:	b9 80 58 00 	mv r11,r12                                     
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
        result = IMFS_rmnod( NULL, &loc );                            
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
 8008a68:	fb ff e0 8c 	calli 8000c98 <IMFS_node_destroy>              
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
 8008a6c:	5d 60 ff ea 	bne r11,r0,8008a14 <IMFS_fsunmount+0x80>       
         if ( jnode_has_children( jnode ) )                           
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
}                                                                     
 8008a70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008a74:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8008a78:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8008a7c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8008a80:	37 9c 00 28 	addi sp,sp,40                                  
 8008a84:	c3 a0 00 00 	ret                                            
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
        result = IMFS_rmnod( NULL, &loc );                            
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
 8008a88:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 8008a8c:	38 42 d9 e0 	ori r2,r2,0xd9e0                               <== NOT EXECUTED
 8008a90:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8008a94:	fb ff ee 85 	calli 80044a8 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08000b2c <IMFS_initialize_support>: int IMFS_initialize_support( rtems_filesystem_mount_table_entry_t *mt_entry, const rtems_filesystem_operations_table *op_table, const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT] ) {
 8000b2c:	37 9c ff ec 	addi sp,sp,-20                                 
 8000b30:	5b 8b 00 14 	sw (sp+20),r11                                 
 8000b34:	5b 8c 00 10 	sw (sp+16),r12                                 
 8000b38:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8000b3c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8000b40:	5b 9d 00 04 	sw (sp+4),ra                                   
 8000b44:	b8 20 68 00 	mv r13,r1                                      
 8000b48:	b8 40 70 00 	mv r14,r2                                      
  static int imfs_instance;                                           
                                                                      
  int rv = 0;                                                         
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );          
 8000b4c:	34 01 00 01 	mvi r1,1                                       
 8000b50:	34 02 00 24 	mvi r2,36                                      
int IMFS_initialize_support(                                          
  rtems_filesystem_mount_table_entry_t *mt_entry,                     
  const rtems_filesystem_operations_table *op_table,                  
  const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT]      
)                                                                     
{                                                                     
 8000b54:	b8 60 58 00 	mv r11,r3                                      
  static int imfs_instance;                                           
                                                                      
  int rv = 0;                                                         
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );          
 8000b58:	f8 00 01 e9 	calli 80012fc <calloc>                         
 8000b5c:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( fs_info != NULL ) {                                            
 8000b60:	44 20 00 43 	be r1,r0,8000c6c <IMFS_initialize_support+0x140><== NEVER TAKEN
    IMFS_jnode_t *root_node;                                          
                                                                      
    fs_info->instance = imfs_instance++;                              
 8000b64:	78 04 08 02 	mvhi r4,0x802                                  
 8000b68:	38 84 07 94 	ori r4,r4,0x794                                
 8000b6c:	28 87 00 00 	lw r7,(r4+0)                                   
    memcpy(                                                           
      fs_info->node_controls,                                         
 8000b70:	34 23 00 08 	addi r3,r1,8                                   
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );          
                                                                      
  if ( fs_info != NULL ) {                                            
    IMFS_jnode_t *root_node;                                          
                                                                      
    fs_info->instance = imfs_instance++;                              
 8000b74:	34 e2 00 01 	addi r2,r7,1                                   
 8000b78:	58 82 00 00 	sw (r4+0),r2                                   
    memcpy(                                                           
 8000b7c:	29 6a 00 00 	lw r10,(r11+0)                                 
 8000b80:	29 66 00 0c 	lw r6,(r11+12)                                 
 8000b84:	29 65 00 10 	lw r5,(r11+16)                                 
 8000b88:	29 64 00 14 	lw r4,(r11+20)                                 
 8000b8c:	29 62 00 18 	lw r2,(r11+24)                                 
 8000b90:	29 69 00 04 	lw r9,(r11+4)                                  
 8000b94:	29 68 00 08 	lw r8,(r11+8)                                  
 8000b98:	58 2a 00 08 	sw (r1+8),r10                                  
 8000b9c:	58 66 00 0c 	sw (r3+12),r6                                  
 8000ba0:	58 65 00 10 	sw (r3+16),r5                                  
 8000ba4:	58 64 00 14 	sw (r3+20),r4                                  
 8000ba8:	58 69 00 04 	sw (r3+4),r9                                   
 8000bac:	58 68 00 08 	sw (r3+8),r8                                   
 8000bb0:	58 62 00 18 	sw (r3+24),r2                                  
      fs_info->node_controls,                                         
      node_controls,                                                  
      sizeof( fs_info->node_controls )                                
    );                                                                
                                                                      
    root_node = IMFS_allocate_node(                                   
 8000bb4:	28 22 00 08 	lw r2,(r1+8)                                   
 8000bb8:	78 03 08 01 	mvhi r3,0x801                                  
 8000bbc:	34 04 00 00 	mvi r4,0                                       
 8000bc0:	38 63 d3 8c 	ori r3,r3,0xd38c                               
 8000bc4:	34 05 41 ed 	mvi r5,16877                                   
 8000bc8:	34 06 00 00 	mvi r6,0                                       
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );          
                                                                      
  if ( fs_info != NULL ) {                                            
    IMFS_jnode_t *root_node;                                          
                                                                      
    fs_info->instance = imfs_instance++;                              
 8000bcc:	58 27 00 00 	sw (r1+0),r7                                   
      fs_info->node_controls,                                         
      node_controls,                                                  
      sizeof( fs_info->node_controls )                                
    );                                                                
                                                                      
    root_node = IMFS_allocate_node(                                   
 8000bd0:	f8 00 1e 71 	calli 8008594 <IMFS_allocate_node>             
 8000bd4:	b8 20 20 00 	mv r4,r1                                       
      "",                                                             
      0,                                                              
      (S_IFDIR | 0755),                                               
      NULL                                                            
    );                                                                
    if ( root_node != NULL ) {                                        
 8000bd8:	44 20 00 25 	be r1,r0,8000c6c <IMFS_initialize_support+0x140><== NEVER TAKEN
                                                                      
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{                                                                     
  IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;             
                                                                      
  loc->handlers = node->control->handlers;                            
 8000bdc:	28 22 00 4c 	lw r2,(r1+76)                                  
    errno = ENOMEM;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    IMFS_determine_bytes_per_block(                                   
 8000be0:	78 03 08 02 	mvhi r3,0x802                                  
    );                                                                
    if ( root_node != NULL ) {                                        
      mt_entry->fs_info = fs_info;                                    
      mt_entry->ops = op_table;                                       
      mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
      mt_entry->mt_fs_root->location.node_access = root_node;         
 8000be4:	29 a5 00 24 	lw r5,(r13+36)                                 
 8000be8:	28 42 00 04 	lw r2,(r2+4)                                   
      NULL                                                            
    );                                                                
    if ( root_node != NULL ) {                                        
      mt_entry->fs_info = fs_info;                                    
      mt_entry->ops = op_table;                                       
      mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
 8000bec:	78 01 08 01 	mvhi r1,0x801                                  
    errno = ENOMEM;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    IMFS_determine_bytes_per_block(                                   
 8000bf0:	38 63 00 14 	ori r3,r3,0x14                                 
      NULL                                                            
    );                                                                
    if ( root_node != NULL ) {                                        
      mt_entry->fs_info = fs_info;                                    
      mt_entry->ops = op_table;                                       
      mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
 8000bf4:	38 21 dc 3c 	ori r1,r1,0xdc3c                               
    errno = ENOMEM;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    IMFS_determine_bytes_per_block(                                   
 8000bf8:	28 63 00 00 	lw r3,(r3+0)                                   
      NULL                                                            
    );                                                                
    if ( root_node != NULL ) {                                        
      mt_entry->fs_info = fs_info;                                    
      mt_entry->ops = op_table;                                       
      mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
 8000bfc:	59 a1 00 2c 	sw (r13+44),r1                                 
      0,                                                              
      (S_IFDIR | 0755),                                               
      NULL                                                            
    );                                                                
    if ( root_node != NULL ) {                                        
      mt_entry->fs_info = fs_info;                                    
 8000c00:	59 ac 00 08 	sw (r13+8),r12                                 
      mt_entry->ops = op_table;                                       
 8000c04:	59 ae 00 0c 	sw (r13+12),r14                                
      mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
      mt_entry->mt_fs_root->location.node_access = root_node;         
 8000c08:	58 a4 00 08 	sw (r5+8),r4                                   
 8000c0c:	58 a2 00 10 	sw (r5+16),r2                                  
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
    if (bit_mask == requested_bytes_per_block) {                      
 8000c10:	34 01 00 10 	mvi r1,16                                      
 8000c14:	44 61 00 0b 	be r3,r1,8000c40 <IMFS_initialize_support+0x114>
      is_valid = true;                                                
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
 8000c18:	34 01 00 0f 	mvi r1,15                                      
 8000c1c:	4c 23 00 08 	bge r1,r3,8000c3c <IMFS_initialize_support+0x110>
 8000c20:	34 02 00 05 	mvi r2,5                                       
 8000c24:	34 01 00 20 	mvi r1,32                                      
  int bit_mask;                                                       
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
 8000c28:	34 42 ff ff 	addi r2,r2,-1                                  
    if (bit_mask == requested_bytes_per_block) {                      
 8000c2c:	44 61 00 05 	be r3,r1,8000c40 <IMFS_initialize_support+0x114>
      is_valid = true;                                                
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
 8000c30:	48 23 00 03 	bg r1,r3,8000c3c <IMFS_initialize_support+0x110><== NEVER TAKEN
  int bit_mask;                                                       
                                                                      
  /*                                                                  
   * check, whether requested bytes per block is valid                
   */                                                                 
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {
 8000c34:	b4 21 08 00 	add r1,r1,r1                                   
 8000c38:	5c 40 ff fc 	bne r2,r0,8000c28 <IMFS_initialize_support+0xfc><== ALWAYS TAKEN
    if(bit_mask > requested_bytes_per_block)                          
      break;                                                          
  }                                                                   
  *dest_bytes_per_block = ((is_valid)                                 
			   ? requested_bytes_per_block                                     
			   : default_bytes_per_block);                                     
 8000c3c:	34 03 00 80 	mvi r3,128                                     
      break;                                                          
    }                                                                 
    if(bit_mask > requested_bytes_per_block)                          
      break;                                                          
  }                                                                   
  *dest_bytes_per_block = ((is_valid)                                 
 8000c40:	78 01 08 02 	mvhi r1,0x802                                  
 8000c44:	38 21 07 90 	ori r1,r1,0x790                                
 8000c48:	58 23 00 00 	sw (r1+0),r3                                   
  const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT]      
)                                                                     
{                                                                     
  static int imfs_instance;                                           
                                                                      
  int rv = 0;                                                         
 8000c4c:	34 01 00 00 	mvi r1,0                                       
      IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK                            
    );                                                                
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8000c50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000c54:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8000c58:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8000c5c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8000c60:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8000c64:	37 9c 00 14 	addi sp,sp,20                                  
 8000c68:	c3 a0 00 00 	ret                                            
    } else {                                                          
      errno = ENOMEM;                                                 
      rv = -1;                                                        
    }                                                                 
  } else {                                                            
    errno = ENOMEM;                                                   
 8000c6c:	f8 00 31 82 	calli 800d274 <__errno>                        
 8000c70:	34 02 00 0c 	mvi r2,12                                      
 8000c74:	58 22 00 00 	sw (r1+0),r2                                   
 8000c78:	34 01 ff ff 	mvi r1,-1                                      
 8000c7c:	e3 ff ff f5 	bi 8000c50 <IMFS_initialize_support+0x124>     
                                                                      

08002c00 <IMFS_make_generic_node>: const char *path, mode_t mode, const IMFS_node_control *node_control, void *context ) {
 8002c00:	37 9c ff 98 	addi sp,sp,-104                                
 8002c04:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002c08:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002c0c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002c10:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002c14:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002c18:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
 8002c1c:	78 05 08 01 	mvhi r5,0x801                                  
 8002c20:	38 a5 b1 7c 	ori r5,r5,0xb17c                               
 8002c24:	28 a5 00 00 	lw r5,(r5+0)                                   
                                                                      
  switch (mode & S_IFMT) {                                            
 8002c28:	34 07 20 00 	mvi r7,8192                                    
  const char *path,                                                   
  mode_t mode,                                                        
  const IMFS_node_control *node_control,                              
  void *context                                                       
)                                                                     
{                                                                     
 8002c2c:	b8 20 40 00 	mv r8,r1                                       
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
 8002c30:	28 ad 00 08 	lw r13,(r5+8)                                  
  const char *path,                                                   
  mode_t mode,                                                        
  const IMFS_node_control *node_control,                              
  void *context                                                       
)                                                                     
{                                                                     
 8002c34:	b8 60 58 00 	mv r11,r3                                      
 8002c38:	b8 80 70 00 	mv r14,r4                                      
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
 8002c3c:	a5 a0 68 00 	not r13,r13                                    
 8002c40:	a0 4d 68 00 	and r13,r2,r13                                 
                                                                      
  switch (mode & S_IFMT) {                                            
 8002c44:	21 a6 f0 00 	andi r6,r13,0xf000                             
 8002c48:	44 c7 00 15 	be r6,r7,8002c9c <IMFS_make_generic_node+0x9c> 
 8002c4c:	54 c7 00 10 	bgu r6,r7,8002c8c <IMFS_make_generic_node+0x8c><== ALWAYS TAKEN
 8002c50:	34 01 10 00 	mvi r1,4096                                    <== NOT EXECUTED
 8002c54:	44 c1 00 12 	be r6,r1,8002c9c <IMFS_make_generic_node+0x9c> <== NOT EXECUTED
        rv = -1;                                                      
      }                                                               
                                                                      
      rtems_filesystem_eval_path_cleanup( &ctx );                     
    } else {                                                          
      errno = EINVAL;                                                 
 8002c58:	f8 00 40 7c 	calli 8012e48 <__errno>                        
 8002c5c:	34 02 00 16 	mvi r2,22                                      
 8002c60:	58 22 00 00 	sw (r1+0),r2                                   
      rv = -1;                                                        
 8002c64:	34 0b ff ff 	mvi r11,-1                                     
    }                                                                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8002c68:	b9 60 08 00 	mv r1,r11                                      
 8002c6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002c70:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002c74:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002c78:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002c7c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002c80:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002c84:	37 9c 00 68 	addi sp,sp,104                                 
 8002c88:	c3 a0 00 00 	ret                                            
{                                                                     
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
                                                                      
  switch (mode & S_IFMT) {                                            
 8002c8c:	34 01 60 00 	mvi r1,24576                                   
 8002c90:	44 c1 00 03 	be r6,r1,8002c9c <IMFS_make_generic_node+0x9c> 
 8002c94:	34 21 20 00 	addi r1,r1,8192                                
 8002c98:	5c c1 ff f0 	bne r6,r1,8002c58 <IMFS_make_generic_node+0x58><== ALWAYS TAKEN
      rv = -1;                                                        
      break;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    if ( node_control->imfs_type == IMFS_GENERIC ) {                  
 8002c9c:	29 62 00 00 	lw r2,(r11+0)                                  
 8002ca0:	34 01 00 07 	mvi r1,7                                       
 8002ca4:	5c 41 ff ed 	bne r2,r1,8002c58 <IMFS_make_generic_node+0x58>
      rtems_filesystem_eval_path_context_t ctx;                       
      int eval_flags = RTEMS_FS_FOLLOW_LINK                           
        | RTEMS_FS_MAKE                                               
        | RTEMS_FS_EXCLUSIVE;                                         
      const rtems_filesystem_location_info_t *currentloc =            
        rtems_filesystem_eval_path_start( &ctx, path, eval_flags );   
 8002ca8:	37 8c 00 1c 	addi r12,sp,28                                 
    if ( node_control->imfs_type == IMFS_GENERIC ) {                  
      rtems_filesystem_eval_path_context_t ctx;                       
      int eval_flags = RTEMS_FS_FOLLOW_LINK                           
        | RTEMS_FS_MAKE                                               
        | RTEMS_FS_EXCLUSIVE;                                         
      const rtems_filesystem_location_info_t *currentloc =            
 8002cac:	b9 80 08 00 	mv r1,r12                                      
 8002cb0:	b9 00 10 00 	mv r2,r8                                       
 8002cb4:	34 03 00 78 	mvi r3,120                                     
 8002cb8:	f8 00 08 bd 	calli 8004fac <rtems_filesystem_eval_path_start>
 8002cbc:	b8 20 78 00 	mv r15,r1                                      
        rtems_filesystem_eval_path_start( &ctx, path, eval_flags );   
                                                                      
      if ( IMFS_is_imfs_instance( currentloc ) ) {                    
 8002cc0:	fb ff ff bb 	calli 8002bac <IMFS_is_imfs_instance>          
 8002cc4:	44 20 00 1b 	be r1,r0,8002d30 <IMFS_make_generic_node+0x130>
        IMFS_types_union info;                                        
        IMFS_jnode_t *new_node;                                       
                                                                      
        info.generic.context = context;                               
        new_node = IMFS_create_node_with_control(                     
 8002cc8:	2b 83 00 24 	lw r3,(sp+36)                                  
 8002ccc:	2b 84 00 28 	lw r4,(sp+40)                                  
 8002cd0:	b9 60 10 00 	mv r2,r11                                      
 8002cd4:	b9 e0 08 00 	mv r1,r15                                      
 8002cd8:	b9 a0 28 00 	mv r5,r13                                      
 8002cdc:	37 86 00 54 	addi r6,sp,84                                  
                                                                      
      if ( IMFS_is_imfs_instance( currentloc ) ) {                    
        IMFS_types_union info;                                        
        IMFS_jnode_t *new_node;                                       
                                                                      
        info.generic.context = context;                               
 8002ce0:	5b 8e 00 54 	sw (sp+84),r14                                 
        new_node = IMFS_create_node_with_control(                     
 8002ce4:	f8 00 2a f4 	calli 800d8b4 <IMFS_create_node_with_control>  
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
          IMFS_update_mtime( parent );                                
        } else {                                                      
          rv = -1;                                                    
 8002ce8:	34 0b ff ff 	mvi r11,-1                                     
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          mode,                                                       
          &info                                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
 8002cec:	44 20 00 0e 	be r1,r0,8002d24 <IMFS_make_generic_node+0x124>
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
 8002cf0:	37 8b 00 64 	addi r11,sp,100                                
 8002cf4:	34 02 00 00 	mvi r2,0                                       
 8002cf8:	b9 60 08 00 	mv r1,r11                                      
          mode,                                                       
          &info                                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
          IMFS_jnode_t *parent = currentloc->node_access;             
 8002cfc:	29 ed 00 08 	lw r13,(r15+8)                                 
                                                                      
          IMFS_update_ctime( parent );                                
 8002d00:	f8 00 02 3c 	calli 80035f0 <gettimeofday>                   
 8002d04:	2b 83 00 64 	lw r3,(sp+100)                                 
          IMFS_update_mtime( parent );                                
 8002d08:	b9 60 08 00 	mv r1,r11                                      
 8002d0c:	34 02 00 00 	mvi r2,0                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
 8002d10:	59 a3 00 48 	sw (r13+72),r3                                 
          IMFS_update_mtime( parent );                                
 8002d14:	f8 00 02 37 	calli 80035f0 <gettimeofday>                   
 8002d18:	2b 81 00 64 	lw r1,(sp+100)                                 
 8002d1c:	34 0b 00 00 	mvi r11,0                                      
 8002d20:	59 a1 00 44 	sw (r13+68),r1                                 
      } else {                                                        
        rtems_filesystem_eval_path_error( &ctx, ENOTSUP );            
        rv = -1;                                                      
      }                                                               
                                                                      
      rtems_filesystem_eval_path_cleanup( &ctx );                     
 8002d24:	b9 80 08 00 	mv r1,r12                                      
 8002d28:	f8 00 08 f8 	calli 8005108 <rtems_filesystem_eval_path_cleanup>
 8002d2c:	e3 ff ff cf 	bi 8002c68 <IMFS_make_generic_node+0x68>       
          IMFS_update_mtime( parent );                                
        } else {                                                      
          rv = -1;                                                    
        }                                                             
      } else {                                                        
        rtems_filesystem_eval_path_error( &ctx, ENOTSUP );            
 8002d30:	b9 80 08 00 	mv r1,r12                                      
 8002d34:	34 02 00 86 	mvi r2,134                                     
 8002d38:	f8 00 07 b4 	calli 8004c08 <rtems_filesystem_eval_path_error>
        rv = -1;                                                      
 8002d3c:	34 0b ff ff 	mvi r11,-1                                     
 8002d40:	e3 ff ff f9 	bi 8002d24 <IMFS_make_generic_node+0x124>      
                                                                      

0800bc7c <IMFS_memfile_extend>: MEMFILE_STATIC int IMFS_memfile_extend( IMFS_jnode_t *the_jnode, bool zero_fill, off_t new_length ) {
 800bc7c:	37 9c ff d0 	addi sp,sp,-48                                 
 800bc80:	5b 8b 00 28 	sw (sp+40),r11                                 
 800bc84:	5b 8c 00 24 	sw (sp+36),r12                                 
 800bc88:	5b 8d 00 20 	sw (sp+32),r13                                 
 800bc8c:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800bc90:	5b 8f 00 18 	sw (sp+24),r15                                 
 800bc94:	5b 90 00 14 	sw (sp+20),r16                                 
 800bc98:	5b 91 00 10 	sw (sp+16),r17                                 
 800bc9c:	5b 92 00 0c 	sw (sp+12),r18                                 
 800bca0:	5b 93 00 08 	sw (sp+8),r19                                  
 800bca4:	5b 9d 00 04 	sw (sp+4),ra                                   
    IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );        
                                                                      
  /*                                                                  
   *  Verify new file size is supported                               
   */                                                                 
  if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )                      
 800bca8:	78 0d 08 02 	mvhi r13,0x802                                 
 800bcac:	39 ad 07 90 	ori r13,r13,0x790                              
 800bcb0:	29 b2 00 00 	lw r18,(r13+0)                                 
MEMFILE_STATIC int IMFS_memfile_extend(                               
   IMFS_jnode_t  *the_jnode,                                          
   bool           zero_fill,                                          
   off_t          new_length                                          
)                                                                     
{                                                                     
 800bcb4:	b8 20 60 00 	mv r12,r1                                      
 800bcb8:	20 51 00 ff 	andi r17,r2,0xff                               
    IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );        
                                                                      
  /*                                                                  
   *  Verify new file size is supported                               
   */                                                                 
  if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )                      
 800bcbc:	02 4b 00 01 	srui r11,r18,1                                 
MEMFILE_STATIC int IMFS_memfile_extend(                               
   IMFS_jnode_t  *the_jnode,                                          
   bool           zero_fill,                                          
   off_t          new_length                                          
)                                                                     
{                                                                     
 800bcc0:	b8 60 98 00 	mv r19,r3                                      
    IMFS_assert( IMFS_type( the_jnode ) == IMFS_MEMORY_FILE );        
                                                                      
  /*                                                                  
   *  Verify new file size is supported                               
   */                                                                 
  if ( new_length >= IMFS_MEMFILE_MAXIMUM_SIZE )                      
 800bcc4:	01 6b 00 01 	srui r11,r11,1                                 
 800bcc8:	b9 60 10 00 	mv r2,r11                                      
 800bccc:	35 61 00 01 	addi r1,r11,1                                  
 800bcd0:	f8 00 40 69 	calli 801be74 <__mulsi3>                       
 800bcd4:	b9 60 10 00 	mv r2,r11                                      
 800bcd8:	34 21 00 01 	addi r1,r1,1                                   
 800bcdc:	f8 00 40 66 	calli 801be74 <__mulsi3>                       
 800bce0:	34 21 ff ff 	addi r1,r1,-1                                  
 800bce4:	ba 40 10 00 	mv r2,r18                                      
 800bce8:	f8 00 40 63 	calli 801be74 <__mulsi3>                       
 800bcec:	54 33 00 11 	bgu r1,r19,800bd30 <IMFS_memfile_extend+0xb4>  
    rtems_set_errno_and_return_minus_one( EFBIG );                    
 800bcf0:	f8 00 05 61 	calli 800d274 <__errno>                        
 800bcf4:	34 02 00 1b 	mvi r2,27                                      
 800bcf8:	58 22 00 00 	sw (r1+0),r2                                   
 800bcfc:	34 01 ff ff 	mvi r1,-1                                      
  the_jnode->info.file.size = new_length;                             
                                                                      
  IMFS_update_ctime(the_jnode);                                       
  IMFS_update_mtime(the_jnode);                                       
  return 0;                                                           
}                                                                     
 800bd00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bd04:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800bd08:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800bd0c:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800bd10:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800bd14:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800bd18:	2b 90 00 14 	lw r16,(sp+20)                                 
 800bd1c:	2b 91 00 10 	lw r17,(sp+16)                                 
 800bd20:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800bd24:	2b 93 00 08 	lw r19,(sp+8)                                  
 800bd28:	37 9c 00 30 	addi sp,sp,48                                  
 800bd2c:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EFBIG );                    
                                                                      
  /*                                                                  
   *  Verify new file size is actually larger than current size       
   */                                                                 
  if ( new_length <= the_jnode->info.file.size )                      
 800bd30:	29 8e 00 50 	lw r14,(r12+80)                                
    return 0;                                                         
 800bd34:	34 01 00 00 	mvi r1,0                                       
    rtems_set_errno_and_return_minus_one( EFBIG );                    
                                                                      
  /*                                                                  
   *  Verify new file size is actually larger than current size       
   */                                                                 
  if ( new_length <= the_jnode->info.file.size )                      
 800bd38:	4d d3 ff f2 	bge r14,r19,800bd00 <IMFS_memfile_extend+0x84> <== NEVER TAKEN
    return 0;                                                         
                                                                      
  /*                                                                  
   *  Calculate the number of range of blocks to allocate             
   */                                                                 
  new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;             
 800bd3c:	ba 40 10 00 	mv r2,r18                                      
 800bd40:	ba 60 08 00 	mv r1,r19                                      
 800bd44:	f8 00 40 58 	calli 801bea4 <__divsi3>                       
 800bd48:	b8 20 80 00 	mv r16,r1                                      
  old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
 800bd4c:	ba 40 10 00 	mv r2,r18                                      
 800bd50:	b9 c0 08 00 	mv r1,r14                                      
 800bd54:	f8 00 40 54 	calli 801bea4 <__divsi3>                       
 800bd58:	b8 20 78 00 	mv r15,r1                                      
  offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
                                                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
 800bd5c:	54 30 00 0c 	bgu r1,r16,800bd8c <IMFS_memfile_extend+0x110> <== NEVER TAKEN
  /*                                                                  
   *  Calculate the number of range of blocks to allocate             
   */                                                                 
  new_blocks = new_length / IMFS_MEMFILE_BYTES_PER_BLOCK;             
  old_blocks = the_jnode->info.file.size / IMFS_MEMFILE_BYTES_PER_BLOCK;
  offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
 800bd60:	ba 40 10 00 	mv r2,r18                                      
 800bd64:	f8 00 40 44 	calli 801be74 <__mulsi3>                       
 800bd68:	c9 c1 70 00 	sub r14,r14,r1                                 
 800bd6c:	b9 e0 58 00 	mv r11,r15                                     
                                                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( !IMFS_memfile_addblock( the_jnode, block ) ) {               
 800bd70:	b9 60 10 00 	mv r2,r11                                      
 800bd74:	b9 80 08 00 	mv r1,r12                                      
 800bd78:	fb ff ff 0b 	calli 800b9a4 <IMFS_memfile_addblock>          
 800bd7c:	5c 20 00 16 	bne r1,r0,800bdd4 <IMFS_memfile_extend+0x158>  
       if ( zero_fill ) {                                             
 800bd80:	5e 21 00 1b 	bne r17,r1,800bdec <IMFS_memfile_extend+0x170> 
  offset = the_jnode->info.file.size - old_blocks * IMFS_MEMFILE_BYTES_PER_BLOCK;
                                                                      
  /*                                                                  
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
 800bd84:	35 6b 00 01 	addi r11,r11,1                                 
 800bd88:	52 0b ff fa 	bgeu r16,r11,800bd70 <IMFS_memfile_extend+0xf4>
  /*                                                                  
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
                                                                      
  IMFS_update_ctime(the_jnode);                                       
 800bd8c:	37 8b 00 2c 	addi r11,sp,44                                 
 800bd90:	34 02 00 00 	mvi r2,0                                       
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
 800bd94:	59 93 00 50 	sw (r12+80),r19                                
                                                                      
  IMFS_update_ctime(the_jnode);                                       
 800bd98:	b9 60 08 00 	mv r1,r11                                      
 800bd9c:	fb ff d6 51 	calli 80016e0 <gettimeofday>                   
 800bda0:	2b 83 00 2c 	lw r3,(sp+44)                                  
  IMFS_update_mtime(the_jnode);                                       
 800bda4:	34 02 00 00 	mvi r2,0                                       
 800bda8:	b9 60 08 00 	mv r1,r11                                      
  /*                                                                  
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
                                                                      
  IMFS_update_ctime(the_jnode);                                       
 800bdac:	59 83 00 48 	sw (r12+72),r3                                 
  IMFS_update_mtime(the_jnode);                                       
 800bdb0:	fb ff d6 4c 	calli 80016e0 <gettimeofday>                   
 800bdb4:	2b 82 00 2c 	lw r2,(sp+44)                                  
  return 0;                                                           
 800bdb8:	34 01 00 00 	mvi r1,0                                       
   *  Set the new length of the file.                                 
   */                                                                 
  the_jnode->info.file.size = new_length;                             
                                                                      
  IMFS_update_ctime(the_jnode);                                       
  IMFS_update_mtime(the_jnode);                                       
 800bdbc:	59 82 00 44 	sw (r12+68),r2                                 
  return 0;                                                           
 800bdc0:	e3 ff ff d0 	bi 800bd00 <IMFS_memfile_extend+0x84>          
          memset( &(*block_ptr) [offset], 0, count);                  
          offset = 0;                                                 
       }                                                              
    } else {                                                          
       for ( ; block>=old_blocks ; block-- ) {                        
         IMFS_memfile_remove_block( the_jnode, block );               
 800bdc4:	b9 60 10 00 	mv r2,r11                                      
 800bdc8:	b9 80 08 00 	mv r1,r12                                      
                                                                      
          memset( &(*block_ptr) [offset], 0, count);                  
          offset = 0;                                                 
       }                                                              
    } else {                                                          
       for ( ; block>=old_blocks ; block-- ) {                        
 800bdcc:	35 6b ff ff 	addi r11,r11,-1                                
         IMFS_memfile_remove_block( the_jnode, block );               
 800bdd0:	fb ff ff 9f 	calli 800bc4c <IMFS_memfile_remove_block>      
                                                                      
          memset( &(*block_ptr) [offset], 0, count);                  
          offset = 0;                                                 
       }                                                              
    } else {                                                          
       for ( ; block>=old_blocks ; block-- ) {                        
 800bdd4:	51 6f ff fc 	bgeu r11,r15,800bdc4 <IMFS_memfile_extend+0x148>
         IMFS_memfile_remove_block( the_jnode, block );               
       }                                                              
       rtems_set_errno_and_return_minus_one( ENOSPC );                
 800bdd8:	f8 00 05 27 	calli 800d274 <__errno>                        
 800bddc:	34 02 00 1c 	mvi r2,28                                      
 800bde0:	58 22 00 00 	sw (r1+0),r2                                   
 800bde4:	34 01 ff ff 	mvi r1,-1                                      
 800bde8:	e3 ff ff c6 	bi 800bd00 <IMFS_memfile_extend+0x84>          
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( !IMFS_memfile_addblock( the_jnode, block ) ) {               
       if ( zero_fill ) {                                             
          size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;       
          block_p *block_ptr =                                        
 800bdec:	b9 60 10 00 	mv r2,r11                                      
 800bdf0:	34 03 00 00 	mvi r3,0                                       
 800bdf4:	b9 80 08 00 	mv r1,r12                                      
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( !IMFS_memfile_addblock( the_jnode, block ) ) {               
       if ( zero_fill ) {                                             
          size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;       
 800bdf8:	29 b2 00 00 	lw r18,(r13+0)                                 
          block_p *block_ptr =                                        
 800bdfc:	fb ff fd bc 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
            IMFS_memfile_get_block_pointer( the_jnode, block, 0 );    
                                                                      
          memset( &(*block_ptr) [offset], 0, count);                  
 800be00:	28 21 00 00 	lw r1,(r1+0)                                   
   *  Now allocate each of those blocks.                              
   */                                                                 
  for ( block=old_blocks ; block<=new_blocks ; block++ ) {            
    if ( !IMFS_memfile_addblock( the_jnode, block ) ) {               
       if ( zero_fill ) {                                             
          size_t count = IMFS_MEMFILE_BYTES_PER_BLOCK - offset;       
 800be04:	ca 4e 90 00 	sub r18,r18,r14                                
          block_p *block_ptr =                                        
            IMFS_memfile_get_block_pointer( the_jnode, block, 0 );    
                                                                      
          memset( &(*block_ptr) [offset], 0, count);                  
 800be08:	34 02 00 00 	mvi r2,0                                       
 800be0c:	b4 2e 08 00 	add r1,r1,r14                                  
 800be10:	ba 40 18 00 	mv r3,r18                                      
 800be14:	f8 00 08 53 	calli 800df60 <memset>                         
          offset = 0;                                                 
 800be18:	34 0e 00 00 	mvi r14,0                                      
 800be1c:	e3 ff ff da 	bi 800bd84 <IMFS_memfile_extend+0x108>         
                                                                      

0800b4ec <IMFS_memfile_get_block_pointer>: #endif IMFS_jnode_t *the_jnode, unsigned int block, int malloc_it ) {
 800b4ec:	37 9c ff dc 	addi sp,sp,-36                                 
 800b4f0:	5b 8b 00 20 	sw (sp+32),r11                                 
 800b4f4:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800b4f8:	5b 8d 00 18 	sw (sp+24),r13                                 
 800b4fc:	5b 8e 00 14 	sw (sp+20),r14                                 
 800b500:	5b 8f 00 10 	sw (sp+16),r15                                 
 800b504:	5b 90 00 0c 	sw (sp+12),r16                                 
 800b508:	5b 91 00 08 	sw (sp+8),r17                                  
 800b50c:	5b 9d 00 04 	sw (sp+4),ra                                   
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800b510:	78 04 08 02 	mvhi r4,0x802                                  
 800b514:	38 84 07 90 	ori r4,r4,0x790                                
 800b518:	28 8b 00 00 	lw r11,(r4+0)                                  
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
 800b51c:	b8 20 70 00 	mv r14,r1                                      
 800b520:	b8 40 60 00 	mv r12,r2                                      
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800b524:	01 6b 00 01 	srui r11,r11,1                                 
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
 800b528:	b8 60 78 00 	mv r15,r3                                      
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
 800b52c:	01 6b 00 01 	srui r11,r11,1                                 
 800b530:	35 61 ff ff 	addi r1,r11,-1                                 
 800b534:	54 41 00 08 	bgu r2,r1,800b554 <IMFS_memfile_get_block_pointer+0x68>
    p = info->indirect;                                               
 800b538:	29 c2 00 54 	lw r2,(r14+84)                                 
                                                                      
    if ( malloc_it ) {                                                
 800b53c:	44 60 00 2b 	be r3,r0,800b5e8 <IMFS_memfile_get_block_pointer+0xfc>
                                                                      
      if ( !p ) {                                                     
 800b540:	44 40 00 5f 	be r2,r0,800b6bc <IMFS_memfile_get_block_pointer+0x1d0>
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
                                                                      
    return &info->indirect[ my_block ];                               
 800b544:	b5 8c 60 00 	add r12,r12,r12                                
 800b548:	b5 8c 60 00 	add r12,r12,r12                                
 800b54c:	b4 4c 68 00 	add r13,r2,r12                                 
 800b550:	e0 00 00 1b 	bi 800b5bc <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
  /*                                                                  
   *  Is the block number in the doubly indirect portion?             
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
 800b554:	35 61 00 01 	addi r1,r11,1                                  
 800b558:	b9 60 10 00 	mv r2,r11                                      
 800b55c:	f8 00 42 46 	calli 801be74 <__mulsi3>                       
 800b560:	b8 20 80 00 	mv r16,r1                                      
 800b564:	34 21 ff ff 	addi r1,r1,-1                                  
 800b568:	55 81 00 23 	bgu r12,r1,800b5f4 <IMFS_memfile_get_block_pointer+0x108>
    my_block -= FIRST_DOUBLY_INDIRECT;                                
 800b56c:	c9 8b 60 00 	sub r12,r12,r11                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b570:	b9 60 10 00 	mv r2,r11                                      
 800b574:	b9 80 08 00 	mv r1,r12                                      
 800b578:	f8 00 42 b4 	calli 801c048 <__umodsi3>                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b57c:	b9 60 10 00 	mv r2,r11                                      
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    my_block -= FIRST_DOUBLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b580:	b8 20 80 00 	mv r16,r1                                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b584:	b9 80 08 00 	mv r1,r12                                      
 800b588:	f8 00 42 a0 	calli 801c008 <__udivsi3>                      
 800b58c:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    p = info->doubly_indirect;                                        
 800b590:	29 c3 00 58 	lw r3,(r14+88)                                 
    if ( malloc_it ) {                                                
 800b594:	45 e0 00 3f 	be r15,r0,800b690 <IMFS_memfile_get_block_pointer+0x1a4>
                                                                      
      if ( !p ) {                                                     
 800b598:	44 60 00 4f 	be r3,r0,800b6d4 <IMFS_memfile_get_block_pointer+0x1e8>
        if ( !p )                                                     
           return 0;                                                  
        info->doubly_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
 800b59c:	b4 42 10 00 	add r2,r2,r2                                   
 800b5a0:	b4 42 10 00 	add r2,r2,r2                                   
 800b5a4:	b4 62 10 00 	add r2,r3,r2                                   
 800b5a8:	28 41 00 00 	lw r1,(r2+0)                                   
      if ( !p1 ) {                                                    
 800b5ac:	44 20 00 52 	be r1,r0,800b6f4 <IMFS_memfile_get_block_pointer+0x208>
        if ( !p1 )                                                    
           return 0;                                                  
        p[ doubly ] = (block_p) p1;                                   
      }                                                               
                                                                      
      return (block_p *)&p1[ singly ];                                
 800b5b0:	b6 10 68 00 	add r13,r16,r16                                
 800b5b4:	b5 ad 68 00 	add r13,r13,r13                                
 800b5b8:	b4 2d 68 00 	add r13,r1,r13                                 
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
}                                                                     
 800b5bc:	b9 a0 08 00 	mv r1,r13                                      
 800b5c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b5c4:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800b5c8:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800b5cc:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800b5d0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800b5d4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800b5d8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800b5dc:	2b 91 00 08 	lw r17,(sp+8)                                  
 800b5e0:	37 9c 00 24 	addi sp,sp,36                                  
 800b5e4:	c3 a0 00 00 	ret                                            
      }                                                               
      return &info->indirect[ my_block ];                             
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
 800b5e8:	34 0d 00 00 	mvi r13,0                                      
        info->indirect = p;                                           
      }                                                               
      return &info->indirect[ my_block ];                             
    }                                                                 
                                                                      
    if ( !p )                                                         
 800b5ec:	5c 4d ff d6 	bne r2,r13,800b544 <IMFS_memfile_get_block_pointer+0x58><== ALWAYS TAKEN
 800b5f0:	e3 ff ff f3 	bi 800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
 800b5f4:	36 01 00 01 	addi r1,r16,1                                  
 800b5f8:	b9 60 10 00 	mv r2,r11                                      
 800b5fc:	f8 00 42 1e 	calli 801be74 <__mulsi3>                       
 800b600:	34 21 ff ff 	addi r1,r1,-1                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
 800b604:	34 0d 00 00 	mvi r13,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
 800b608:	55 81 ff ed 	bgu r12,r1,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
    my_block -= FIRST_TRIPLY_INDIRECT;                                
 800b60c:	c9 90 80 00 	sub r16,r12,r16                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b610:	b9 60 10 00 	mv r2,r11                                      
 800b614:	ba 00 08 00 	mv r1,r16                                      
 800b618:	f8 00 42 8c 	calli 801c048 <__umodsi3>                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b61c:	b9 60 10 00 	mv r2,r11                                      
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b620:	b8 20 60 00 	mv r12,r1                                      
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b624:	ba 00 08 00 	mv r1,r16                                      
 800b628:	f8 00 42 78 	calli 801c008 <__udivsi3>                      
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
 800b62c:	b9 60 10 00 	mv r2,r11                                      
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
 800b630:	b8 20 88 00 	mv r17,r1                                      
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
 800b634:	f8 00 42 75 	calli 801c008 <__udivsi3>                      
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
 800b638:	b9 60 10 00 	mv r2,r11                                      
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
 800b63c:	b8 20 80 00 	mv r16,r1                                      
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
 800b640:	ba 20 08 00 	mv r1,r17                                      
 800b644:	f8 00 42 81 	calli 801c048 <__umodsi3>                      
 800b648:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    p = info->triply_indirect;                                        
 800b64c:	29 c4 00 5c 	lw r4,(r14+92)                                 
                                                                      
    if ( malloc_it ) {                                                
 800b650:	45 e0 00 30 	be r15,r0,800b710 <IMFS_memfile_get_block_pointer+0x224>
      if ( !p ) {                                                     
 800b654:	44 80 00 3e 	be r4,r0,800b74c <IMFS_memfile_get_block_pointer+0x260>
        if ( !p )                                                     
           return 0;                                                  
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
 800b658:	b6 10 18 00 	add r3,r16,r16                                 
 800b65c:	b4 63 18 00 	add r3,r3,r3                                   
 800b660:	b4 83 70 00 	add r14,r4,r3                                  
 800b664:	29 c1 00 00 	lw r1,(r14+0)                                  
      if ( !p1 ) {                                                    
 800b668:	44 20 00 43 	be r1,r0,800b774 <IMFS_memfile_get_block_pointer+0x288>
        if ( !p1 )                                                    
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
 800b66c:	b5 6b 10 00 	add r2,r11,r11                                 
 800b670:	b4 42 10 00 	add r2,r2,r2                                   
 800b674:	b4 22 58 00 	add r11,r1,r2                                  
 800b678:	29 61 00 00 	lw r1,(r11+0)                                  
      if ( !p2 ) {                                                    
 800b67c:	44 20 00 39 	be r1,r0,800b760 <IMFS_memfile_get_block_pointer+0x274>
        p2 = memfile_alloc_block();                                   
        if ( !p2 )                                                    
           return 0;                                                  
        p1[ doubly ] = (block_p) p2;                                  
      }                                                               
      return (block_p *)&p2[ singly ];                                
 800b680:	b5 8c 68 00 	add r13,r12,r12                                
 800b684:	b5 ad 68 00 	add r13,r13,r13                                
 800b688:	b4 2d 68 00 	add r13,r1,r13                                 
 800b68c:	e3 ff ff cc 	bi 800b5bc <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
      return (block_p *)&p1[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
 800b690:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      return (block_p *)&p1[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
 800b694:	44 6d ff ca 	be r3,r13,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p = (block_p *)p[ doubly ];                                       
 800b698:	b4 21 10 00 	add r2,r1,r1                                   
 800b69c:	b4 42 10 00 	add r2,r2,r2                                   
 800b6a0:	b4 62 10 00 	add r2,r3,r2                                   
 800b6a4:	28 41 00 00 	lw r1,(r2+0)                                   
    if ( !p )                                                         
 800b6a8:	44 20 ff c5 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    return (block_p *)&p[ singly ];                                   
 800b6ac:	b6 10 80 00 	add r16,r16,r16                                
 800b6b0:	b6 10 80 00 	add r16,r16,r16                                
 800b6b4:	b4 30 68 00 	add r13,r1,r16                                 
 800b6b8:	e3 ff ff c1 	bi 800b5bc <IMFS_memfile_get_block_pointer+0xd0>
    p = info->indirect;                                               
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800b6bc:	fb ff ff 7c 	calli 800b4ac <memfile_alloc_block>            
 800b6c0:	b8 20 10 00 	mv r2,r1                                       
        if ( !p )                                                     
           return 0;                                                  
 800b6c4:	34 0d 00 00 	mvi r13,0                                      
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
        if ( !p )                                                     
 800b6c8:	44 20 ff bd 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->indirect = p;                                           
 800b6cc:	59 c1 00 54 	sw (r14+84),r1                                 
 800b6d0:	e3 ff ff 9d 	bi 800b544 <IMFS_memfile_get_block_pointer+0x58>
                                                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800b6d4:	5b 81 00 24 	sw (sp+36),r1                                  
 800b6d8:	fb ff ff 75 	calli 800b4ac <memfile_alloc_block>            
 800b6dc:	b8 20 18 00 	mv r3,r1                                       
        if ( !p )                                                     
           return 0;                                                  
 800b6e0:	34 0d 00 00 	mvi r13,0                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
        if ( !p )                                                     
 800b6e4:	2b 82 00 24 	lw r2,(sp+36)                                  
 800b6e8:	44 20 ff b5 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->doubly_indirect = p;                                    
 800b6ec:	59 c1 00 58 	sw (r14+88),r1                                 
 800b6f0:	e3 ff ff ab 	bi 800b59c <IMFS_memfile_get_block_pointer+0xb0>
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
 800b6f4:	5b 82 00 24 	sw (sp+36),r2                                  
 800b6f8:	fb ff ff 6d 	calli 800b4ac <memfile_alloc_block>            
        if ( !p1 )                                                    
           return 0;                                                  
 800b6fc:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
        if ( !p1 )                                                    
 800b700:	2b 82 00 24 	lw r2,(sp+36)                                  
 800b704:	44 20 ff ae 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p[ doubly ] = (block_p) p1;                                   
 800b708:	58 41 00 00 	sw (r2+0),r1                                   
 800b70c:	e3 ff ff a9 	bi 800b5b0 <IMFS_memfile_get_block_pointer+0xc4>
        p1[ doubly ] = (block_p) p2;                                  
      }                                                               
      return (block_p *)&p2[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
 800b710:	44 8d ff ab 	be r4,r13,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p1 = (block_p *) p[ triply ];                                     
 800b714:	b6 10 80 00 	add r16,r16,r16                                
 800b718:	b6 10 80 00 	add r16,r16,r16                                
 800b71c:	b4 90 20 00 	add r4,r4,r16                                  
 800b720:	28 81 00 00 	lw r1,(r4+0)                                   
    if ( !p1 )                                                        
 800b724:	44 20 ff a6 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    p2 = (block_p *)p1[ doubly ];                                     
 800b728:	b5 6b 58 00 	add r11,r11,r11                                
 800b72c:	b5 6b 58 00 	add r11,r11,r11                                
 800b730:	b4 2b 08 00 	add r1,r1,r11                                  
 800b734:	28 21 00 00 	lw r1,(r1+0)                                   
    if ( !p2 )                                                        
 800b738:	44 20 ff a1 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
      return 0;                                                       
                                                                      
    return (block_p *)&p2[ singly ];                                  
 800b73c:	b5 8c 60 00 	add r12,r12,r12                                
 800b740:	b5 8c 60 00 	add r12,r12,r12                                
 800b744:	b4 2c 68 00 	add r13,r1,r12                                 
 800b748:	e3 ff ff 9d 	bi 800b5bc <IMFS_memfile_get_block_pointer+0xd0>
                                                                      
    p = info->triply_indirect;                                        
                                                                      
    if ( malloc_it ) {                                                
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
 800b74c:	fb ff ff 58 	calli 800b4ac <memfile_alloc_block>            
 800b750:	b8 20 20 00 	mv r4,r1                                       
        if ( !p )                                                     
 800b754:	44 20 ff 9a 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        info->triply_indirect = p;                                    
 800b758:	59 c1 00 5c 	sw (r14+92),r1                                 
 800b75c:	e3 ff ff bf 	bi 800b658 <IMFS_memfile_get_block_pointer+0x16c>
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
      if ( !p2 ) {                                                    
        p2 = memfile_alloc_block();                                   
 800b760:	fb ff ff 53 	calli 800b4ac <memfile_alloc_block>            
        if ( !p2 )                                                    
           return 0;                                                  
 800b764:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
      if ( !p2 ) {                                                    
        p2 = memfile_alloc_block();                                   
        if ( !p2 )                                                    
 800b768:	44 20 ff 95 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p1[ doubly ] = (block_p) p2;                                  
 800b76c:	59 61 00 00 	sw (r11+0),r1                                  
 800b770:	e3 ff ff c4 	bi 800b680 <IMFS_memfile_get_block_pointer+0x194>
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
 800b774:	fb ff ff 4e 	calli 800b4ac <memfile_alloc_block>            
        if ( !p1 )                                                    
           return 0;                                                  
 800b778:	34 0d 00 00 	mvi r13,0                                      
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
        if ( !p1 )                                                    
 800b77c:	44 20 ff 90 	be r1,r0,800b5bc <IMFS_memfile_get_block_pointer+0xd0><== NEVER TAKEN
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
 800b780:	59 c1 00 00 	sw (r14+0),r1                                  
 800b784:	e3 ff ff ba 	bi 800b66c <IMFS_memfile_get_block_pointer+0x180>
                                                                      

0800b788 <IMFS_memfile_read>: IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) {
 800b788:	37 9c ff d0 	addi sp,sp,-48                                 
 800b78c:	5b 8b 00 28 	sw (sp+40),r11                                 
 800b790:	5b 8c 00 24 	sw (sp+36),r12                                 
 800b794:	5b 8d 00 20 	sw (sp+32),r13                                 
 800b798:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800b79c:	5b 8f 00 18 	sw (sp+24),r15                                 
 800b7a0:	5b 90 00 14 	sw (sp+20),r16                                 
 800b7a4:	5b 91 00 10 	sw (sp+16),r17                                 
 800b7a8:	5b 92 00 0c 	sw (sp+12),r18                                 
 800b7ac:	5b 93 00 08 	sw (sp+8),r19                                  
 800b7b0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b7b4:	b8 20 80 00 	mv r16,r1                                      
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
 800b7b8:	28 21 00 4c 	lw r1,(r1+76)                                  
 800b7bc:	b8 40 68 00 	mv r13,r2                                      
 800b7c0:	b8 60 90 00 	mv r18,r3                                      
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
 800b7c4:	28 22 00 00 	lw r2,(r1+0)                                   
 800b7c8:	34 01 00 05 	mvi r1,5                                       
 800b7cc:	44 41 00 55 	be r2,r1,800b920 <IMFS_memfile_read+0x198>     
  /*                                                                  
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
  if ( last_byte > the_jnode->info.file.size )                        
 800b7d0:	2a 01 00 50 	lw r1,(r16+80)                                 
                                                                      
  /*                                                                  
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
 800b7d4:	b4 8d 10 00 	add r2,r4,r13                                  
  if ( last_byte > the_jnode->info.file.size )                        
 800b7d8:	b8 80 60 00 	mv r12,r4                                      
 800b7dc:	50 22 00 02 	bgeu r1,r2,800b7e4 <IMFS_memfile_read+0x5c>    
    my_length = the_jnode->info.file.size - start;                    
 800b7e0:	c8 2d 60 00 	sub r12,r1,r13                                 
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800b7e4:	78 11 08 02 	mvhi r17,0x802                                 
 800b7e8:	3a 31 07 90 	ori r17,r17,0x790                              
 800b7ec:	2a 2b 00 00 	lw r11,(r17+0)                                 
 800b7f0:	b9 a0 08 00 	mv r1,r13                                      
  unsigned int         last_byte;                                     
  unsigned int         copied;                                        
  unsigned int         start_offset;                                  
  unsigned char       *dest;                                          
                                                                      
  dest = destination;                                                 
 800b7f4:	ba 40 70 00 	mv r14,r18                                     
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800b7f8:	b9 60 10 00 	mv r2,r11                                      
 800b7fc:	f8 00 41 da 	calli 801bf64 <__modsi3>                       
 800b800:	b8 20 98 00 	mv r19,r1                                      
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
 800b804:	b9 60 10 00 	mv r2,r11                                      
 800b808:	b9 a0 08 00 	mv r1,r13                                      
 800b80c:	f8 00 41 a6 	calli 801bea4 <__divsi3>                       
 800b810:	b8 20 68 00 	mv r13,r1                                      
   */                                                                 
  last_byte = start + length;                                         
  if ( last_byte > the_jnode->info.file.size )                        
    my_length = the_jnode->info.file.size - start;                    
                                                                      
  copied = 0;                                                         
 800b814:	34 0f 00 00 	mvi r15,0                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
 800b818:	5e 60 00 2f 	bne r19,r0,800b8d4 <IMFS_memfile_read+0x14c>   
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b81c:	55 6c 00 11 	bgu r11,r12,800b860 <IMFS_memfile_read+0xd8>   
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b820:	b9 a0 10 00 	mv r2,r13                                      
 800b824:	34 03 00 00 	mvi r3,0                                       
 800b828:	ba 00 08 00 	mv r1,r16                                      
 800b82c:	fb ff ff 30 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
 800b830:	b8 20 10 00 	mv r2,r1                                       
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
 800b834:	b9 60 18 00 	mv r3,r11                                      
 800b838:	b9 c0 08 00 	mv r1,r14                                      
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
 800b83c:	c9 8b 60 00 	sub r12,r12,r11                                
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
 800b840:	44 40 00 18 	be r2,r0,800b8a0 <IMFS_memfile_read+0x118>     <== NEVER TAKEN
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
 800b844:	28 42 00 00 	lw r2,(r2+0)                                   
    dest += to_copy;                                                  
 800b848:	b5 cb 70 00 	add r14,r14,r11                                
    block++;                                                          
 800b84c:	35 ad 00 01 	addi r13,r13,1                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
 800b850:	f8 00 09 83 	calli 800de5c <memcpy>                         
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b854:	2a 21 00 00 	lw r1,(r17+0)                                  
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
    copied += to_copy;                                                
 800b858:	b5 eb 78 00 	add r15,r15,r11                                
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800b85c:	51 81 ff f1 	bgeu r12,r1,800b820 <IMFS_memfile_read+0x98>   
  /*                                                                  
   *  Phase 3: possibly the first part of one block                   
   */                                                                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  if ( my_length ) {                                                  
 800b860:	45 80 00 0b 	be r12,r0,800b88c <IMFS_memfile_read+0x104>    
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b864:	ba 00 08 00 	mv r1,r16                                      
 800b868:	b9 a0 10 00 	mv r2,r13                                      
 800b86c:	34 03 00 00 	mvi r3,0                                       
 800b870:	fb ff ff 1f 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800b874:	44 20 00 0b 	be r1,r0,800b8a0 <IMFS_memfile_read+0x118>     <== NEVER TAKEN
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], my_length );                    
 800b878:	28 22 00 00 	lw r2,(r1+0)                                   
 800b87c:	b9 80 18 00 	mv r3,r12                                      
 800b880:	b9 c0 08 00 	mv r1,r14                                      
 800b884:	f8 00 09 76 	calli 800de5c <memcpy>                         
    copied += my_length;                                              
 800b888:	b5 ec 78 00 	add r15,r15,r12                                
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
 800b88c:	37 81 00 2c 	addi r1,sp,44                                  
 800b890:	34 02 00 00 	mvi r2,0                                       
 800b894:	fb ff d7 93 	calli 80016e0 <gettimeofday>                   
 800b898:	2b 81 00 2c 	lw r1,(sp+44)                                  
 800b89c:	5a 01 00 40 	sw (r16+64),r1                                 
                                                                      
  return copied;                                                      
}                                                                     
 800b8a0:	b9 e0 08 00 	mv r1,r15                                      
 800b8a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b8a8:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800b8ac:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800b8b0:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800b8b4:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800b8b8:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800b8bc:	2b 90 00 14 	lw r16,(sp+20)                                 
 800b8c0:	2b 91 00 10 	lw r17,(sp+16)                                 
 800b8c4:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800b8c8:	2b 93 00 08 	lw r19,(sp+8)                                  
 800b8cc:	37 9c 00 30 	addi sp,sp,48                                  
 800b8d0:	c3 a0 00 00 	ret                                            
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800b8d4:	ba 00 08 00 	mv r1,r16                                      
 800b8d8:	b9 a0 10 00 	mv r2,r13                                      
 800b8dc:	34 03 00 00 	mvi r3,0                                       
 800b8e0:	fb ff ff 03 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800b8e4:	44 20 ff ef 	be r1,r0,800b8a0 <IMFS_memfile_read+0x118>     <== NEVER TAKEN
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
 800b8e8:	c9 73 58 00 	sub r11,r11,r19                                
 800b8ec:	b9 80 78 00 	mv r15,r12                                     
 800b8f0:	51 6c 00 02 	bgeu r11,r12,800b8f8 <IMFS_memfile_read+0x170> 
 800b8f4:	b9 60 78 00 	mv r15,r11                                     
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );           
 800b8f8:	28 22 00 00 	lw r2,(r1+0)                                   
 800b8fc:	b9 e0 18 00 	mv r3,r15                                      
 800b900:	ba 40 08 00 	mv r1,r18                                      
 800b904:	b4 53 10 00 	add r2,r2,r19                                  
 800b908:	f8 00 09 55 	calli 800de5c <memcpy>                         
    dest += to_copy;                                                  
 800b90c:	b6 4f 70 00 	add r14,r18,r15                                
    block++;                                                          
    my_length -= to_copy;                                             
 800b910:	2a 2b 00 00 	lw r11,(r17+0)                                 
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );           
    dest += to_copy;                                                  
    block++;                                                          
 800b914:	35 ad 00 01 	addi r13,r13,1                                 
    my_length -= to_copy;                                             
 800b918:	c9 8f 60 00 	sub r12,r12,r15                                
 800b91c:	e3 ff ff c0 	bi 800b81c <IMFS_memfile_read+0x94>            
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    unsigned char  *file_ptr;                                         
                                                                      
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
 800b920:	2a 0f 00 50 	lw r15,(r16+80)                                
 800b924:	c9 ed 78 00 	sub r15,r15,r13                                
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
 800b928:	50 8f 00 02 	bgeu r4,r15,800b930 <IMFS_memfile_read+0x1a8>  <== ALWAYS TAKEN
 800b92c:	b8 80 78 00 	mv r15,r4                                      <== NOT EXECUTED
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
      my_length = the_jnode->info.linearfile.size - start;            
                                                                      
    memcpy(dest, &file_ptr[start], my_length);                        
 800b930:	2a 02 00 54 	lw r2,(r16+84)                                 
 800b934:	b9 e0 18 00 	mv r3,r15                                      
 800b938:	ba 40 08 00 	mv r1,r18                                      
 800b93c:	b4 4d 10 00 	add r2,r2,r13                                  
 800b940:	f8 00 09 47 	calli 800de5c <memcpy>                         
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], my_length );                    
    copied += my_length;                                              
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
 800b944:	37 81 00 2c 	addi r1,sp,44                                  
 800b948:	34 02 00 00 	mvi r2,0                                       
 800b94c:	fb ff d7 65 	calli 80016e0 <gettimeofday>                   
 800b950:	2b 81 00 2c 	lw r1,(sp+44)                                  
 800b954:	5a 01 00 40 	sw (r16+64),r1                                 
 800b958:	e3 ff ff d2 	bi 800b8a0 <IMFS_memfile_read+0x118>           
                                                                      

0800baa0 <IMFS_memfile_remove>: * is better to stick to simple, easy to understand algorithms. */ IMFS_jnode_t *IMFS_memfile_remove( IMFS_jnode_t *the_jnode ) {
 800baa0:	37 9c ff dc 	addi sp,sp,-36                                 
 800baa4:	5b 8b 00 24 	sw (sp+36),r11                                 
 800baa8:	5b 8c 00 20 	sw (sp+32),r12                                 
 800baac:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800bab0:	5b 8e 00 18 	sw (sp+24),r14                                 
 800bab4:	5b 8f 00 14 	sw (sp+20),r15                                 
 800bab8:	5b 90 00 10 	sw (sp+16),r16                                 
 800babc:	5b 91 00 0c 	sw (sp+12),r17                                 
 800bac0:	5b 92 00 08 	sw (sp+8),r18                                  
 800bac4:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Eventually this could be set smarter at each call to            
   *  memfile_free_blocks_in_table to greatly speed this up.          
   */                                                                 
  to_free = IMFS_MEMFILE_BLOCK_SLOTS;                                 
 800bac8:	78 0c 08 02 	mvhi r12,0x802                                 
 800bacc:	39 8c 07 90 	ori r12,r12,0x790                              
 800bad0:	29 8d 00 00 	lw r13,(r12+0)                                 
 *         is better to stick to simple, easy to understand algorithms.
 */                                                                   
IMFS_jnode_t *IMFS_memfile_remove(                                    
 IMFS_jnode_t  *the_jnode                                             
)                                                                     
{                                                                     
 800bad4:	b8 20 78 00 	mv r15,r1                                      
   *    + doubly indirect                                             
   *    + triply indirect                                             
   */                                                                 
  info = &the_jnode->info.file;                                       
                                                                      
  if ( info->indirect ) {                                             
 800bad8:	28 21 00 54 	lw r1,(r1+84)                                  
                                                                      
  /*                                                                  
   *  Eventually this could be set smarter at each call to            
   *  memfile_free_blocks_in_table to greatly speed this up.          
   */                                                                 
  to_free = IMFS_MEMFILE_BLOCK_SLOTS;                                 
 800badc:	01 ad 00 01 	srui r13,r13,1                                 
 800bae0:	01 ad 00 01 	srui r13,r13,1                                 
   *    + doubly indirect                                             
   *    + triply indirect                                             
   */                                                                 
  info = &the_jnode->info.file;                                       
                                                                      
  if ( info->indirect ) {                                             
 800bae4:	44 20 00 04 	be r1,r0,800baf4 <IMFS_memfile_remove+0x54>    
    memfile_free_blocks_in_table( &info->indirect, to_free );         
 800bae8:	35 e1 00 54 	addi r1,r15,84                                 
 800baec:	b9 a0 10 00 	mv r2,r13                                      
 800baf0:	fb ff ff ce 	calli 800ba28 <memfile_free_blocks_in_table>   
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
 800baf4:	29 e2 00 58 	lw r2,(r15+88)                                 
 800baf8:	44 40 00 19 	be r2,r0,800bb5c <IMFS_memfile_remove+0xbc>    
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800bafc:	29 83 00 00 	lw r3,(r12+0)                                  
 800bb00:	34 01 00 00 	mvi r1,0                                       
 800bb04:	34 0b 00 00 	mvi r11,0                                      
 800bb08:	00 63 00 01 	srui r3,r3,1                                   
 800bb0c:	00 63 00 01 	srui r3,r3,1                                   
 800bb10:	44 60 00 10 	be r3,r0,800bb50 <IMFS_memfile_remove+0xb0>    <== NEVER TAKEN
      if ( info->doubly_indirect[i] ) {                               
 800bb14:	b4 21 08 00 	add r1,r1,r1                                   
 800bb18:	b4 21 08 00 	add r1,r1,r1                                   
 800bb1c:	b4 41 08 00 	add r1,r2,r1                                   
 800bb20:	28 23 00 00 	lw r3,(r1+0)                                   
  if ( info->indirect ) {                                             
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800bb24:	35 6b 00 01 	addi r11,r11,1                                 
      if ( info->doubly_indirect[i] ) {                               
        memfile_free_blocks_in_table(                                 
 800bb28:	b9 a0 10 00 	mv r2,r13                                      
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      if ( info->doubly_indirect[i] ) {                               
 800bb2c:	44 60 00 02 	be r3,r0,800bb34 <IMFS_memfile_remove+0x94>    <== NEVER TAKEN
        memfile_free_blocks_in_table(                                 
 800bb30:	fb ff ff be 	calli 800ba28 <memfile_free_blocks_in_table>   
  if ( info->indirect ) {                                             
    memfile_free_blocks_in_table( &info->indirect, to_free );         
  }                                                                   
                                                                      
  if ( info->doubly_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800bb34:	29 82 00 00 	lw r2,(r12+0)                                  
 800bb38:	b9 60 08 00 	mv r1,r11                                      
 800bb3c:	00 42 00 01 	srui r2,r2,1                                   
 800bb40:	00 42 00 01 	srui r2,r2,1                                   
 800bb44:	51 62 00 03 	bgeu r11,r2,800bb50 <IMFS_memfile_remove+0xb0> 
 800bb48:	29 e2 00 58 	lw r2,(r15+88)                                 
 800bb4c:	e3 ff ff f2 	bi 800bb14 <IMFS_memfile_remove+0x74>          
      if ( info->doubly_indirect[i] ) {                               
        memfile_free_blocks_in_table(                                 
         (block_p **)&info->doubly_indirect[i], to_free );            
      }                                                               
    }                                                                 
    memfile_free_blocks_in_table( &info->doubly_indirect, to_free );  
 800bb50:	35 e1 00 58 	addi r1,r15,88                                 
 800bb54:	b9 a0 10 00 	mv r2,r13                                      
 800bb58:	fb ff ff b4 	calli 800ba28 <memfile_free_blocks_in_table>   
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
 800bb5c:	29 e1 00 5c 	lw r1,(r15+92)                                 
 800bb60:	44 20 00 27 	be r1,r0,800bbfc <IMFS_memfile_remove+0x15c>   
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800bb64:	29 82 00 00 	lw r2,(r12+0)                                  
 800bb68:	00 42 00 01 	srui r2,r2,1                                   
 800bb6c:	00 43 00 01 	srui r3,r2,1                                   
 800bb70:	44 60 00 20 	be r3,r0,800bbf0 <IMFS_memfile_remove+0x150>   <== NEVER TAKEN
      p = (block_p *) info->triply_indirect[i];                       
 800bb74:	28 2e 00 00 	lw r14,(r1+0)                                  
      if ( !p )  /* ensure we have a valid pointer */                 
 800bb78:	34 10 00 04 	mvi r16,4                                      
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800bb7c:	34 12 00 00 	mvi r18,0                                      
      if ( !p )  /* ensure we have a valid pointer */                 
 800bb80:	34 11 00 00 	mvi r17,0                                      
 800bb84:	45 c0 00 1b 	be r14,r0,800bbf0 <IMFS_memfile_remove+0x150>  <== NEVER TAKEN
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800bb88:	00 42 00 01 	srui r2,r2,1                                   
 800bb8c:	44 40 00 11 	be r2,r0,800bbd0 <IMFS_memfile_remove+0x130>   <== NEVER TAKEN
 800bb90:	34 03 00 00 	mvi r3,0                                       
 800bb94:	34 0b 00 00 	mvi r11,0                                      
        if ( p[j] ) {                                                 
 800bb98:	b4 63 18 00 	add r3,r3,r3                                   
 800bb9c:	b4 63 18 00 	add r3,r3,r3                                   
 800bba0:	b5 c3 08 00 	add r1,r14,r3                                  
 800bba4:	28 23 00 00 	lw r3,(r1+0)                                   
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800bba8:	35 6b 00 01 	addi r11,r11,1                                 
        if ( p[j] ) {                                                 
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
 800bbac:	b9 a0 10 00 	mv r2,r13                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
        if ( p[j] ) {                                                 
 800bbb0:	44 60 00 02 	be r3,r0,800bbb8 <IMFS_memfile_remove+0x118>   <== NEVER TAKEN
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
 800bbb4:	fb ff ff 9d 	calli 800ba28 <memfile_free_blocks_in_table>   
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
      if ( !p )  /* ensure we have a valid pointer */                 
         break;                                                       
      for ( j=0 ; j<IMFS_MEMFILE_BLOCK_SLOTS ; j++ ) {                
 800bbb8:	29 84 00 00 	lw r4,(r12+0)                                  
 800bbbc:	b9 60 18 00 	mv r3,r11                                      
 800bbc0:	00 84 00 01 	srui r4,r4,1                                   
 800bbc4:	00 84 00 01 	srui r4,r4,1                                   
 800bbc8:	54 8b ff f4 	bgu r4,r11,800bb98 <IMFS_memfile_remove+0xf8>  
 800bbcc:	29 e1 00 5c 	lw r1,(r15+92)                                 
        if ( p[j] ) {                                                 
          memfile_free_blocks_in_table( (block_p **)&p[j], to_free);  
        }                                                             
      }                                                               
      memfile_free_blocks_in_table(                                   
 800bbd0:	b4 32 08 00 	add r1,r1,r18                                  
 800bbd4:	b9 a0 10 00 	mv r2,r13                                      
 800bbd8:	fb ff ff 94 	calli 800ba28 <memfile_free_blocks_in_table>   
    memfile_free_blocks_in_table( &info->doubly_indirect, to_free );  
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
 800bbdc:	29 82 00 00 	lw r2,(r12+0)                                  
 800bbe0:	36 31 00 01 	addi r17,r17,1                                 
 800bbe4:	00 42 00 01 	srui r2,r2,1                                   
 800bbe8:	00 41 00 01 	srui r1,r2,1                                   
 800bbec:	54 31 00 10 	bgu r1,r17,800bc2c <IMFS_memfile_remove+0x18c> 
        }                                                             
      }                                                               
      memfile_free_blocks_in_table(                                   
        (block_p **)&info->triply_indirect[i], to_free );             
    }                                                                 
    memfile_free_blocks_in_table(                                     
 800bbf0:	35 e1 00 5c 	addi r1,r15,92                                 
 800bbf4:	b9 a0 10 00 	mv r2,r13                                      
 800bbf8:	fb ff ff 8c 	calli 800ba28 <memfile_free_blocks_in_table>   
        (block_p **)&info->triply_indirect, to_free );                
  }                                                                   
                                                                      
  return the_jnode;                                                   
}                                                                     
 800bbfc:	b9 e0 08 00 	mv r1,r15                                      
 800bc00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bc04:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800bc08:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800bc0c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800bc10:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800bc14:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800bc18:	2b 90 00 10 	lw r16,(sp+16)                                 
 800bc1c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800bc20:	2b 92 00 08 	lw r18,(sp+8)                                  
 800bc24:	37 9c 00 24 	addi sp,sp,36                                  
 800bc28:	c3 a0 00 00 	ret                                            
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800bc2c:	29 e1 00 5c 	lw r1,(r15+92)                                 
 800bc30:	36 04 00 04 	addi r4,r16,4                                  
 800bc34:	b4 30 18 00 	add r3,r1,r16                                  
 800bc38:	28 6e 00 00 	lw r14,(r3+0)                                  
      if ( !p )  /* ensure we have a valid pointer */                 
 800bc3c:	45 c0 ff ed 	be r14,r0,800bbf0 <IMFS_memfile_remove+0x150>  <== NEVER TAKEN
                                                                      
  }                                                                   
                                                                      
  if ( info->triply_indirect ) {                                      
    for ( i=0 ; i<IMFS_MEMFILE_BLOCK_SLOTS ; i++ ) {                  
      p = (block_p *) info->triply_indirect[i];                       
 800bc40:	ba 00 90 00 	mv r18,r16                                     
      if ( !p )  /* ensure we have a valid pointer */                 
 800bc44:	b8 80 80 00 	mv r16,r4                                      
 800bc48:	e3 ff ff d0 	bi 800bb88 <IMFS_memfile_remove+0xe8>          
                                                                      

0800be20 <IMFS_memfile_write>: IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) {
 800be20:	37 9c ff cc 	addi sp,sp,-52                                 
 800be24:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800be28:	5b 8c 00 28 	sw (sp+40),r12                                 
 800be2c:	5b 8d 00 24 	sw (sp+36),r13                                 
 800be30:	5b 8e 00 20 	sw (sp+32),r14                                 
 800be34:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800be38:	5b 90 00 18 	sw (sp+24),r16                                 
 800be3c:	5b 91 00 14 	sw (sp+20),r17                                 
 800be40:	5b 92 00 10 	sw (sp+16),r18                                 
 800be44:	5b 93 00 0c 	sw (sp+12),r19                                 
 800be48:	5b 94 00 08 	sw (sp+8),r20                                  
 800be4c:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
 800be50:	28 25 00 50 	lw r5,(r1+80)                                  
   IMFS_jnode_t          *the_jnode,                                  
   off_t                  start,                                      
   const unsigned char   *source,                                     
   unsigned int           length                                      
)                                                                     
{                                                                     
 800be54:	b8 80 90 00 	mv r18,r4                                      
  /*                                                                  
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
 800be58:	b4 82 20 00 	add r4,r4,r2                                   
   IMFS_jnode_t          *the_jnode,                                  
   off_t                  start,                                      
   const unsigned char   *source,                                     
   unsigned int           length                                      
)                                                                     
{                                                                     
 800be5c:	b8 20 88 00 	mv r17,r1                                      
 800be60:	b8 40 60 00 	mv r12,r2                                      
 800be64:	b8 60 98 00 	mv r19,r3                                      
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
 800be68:	50 a4 00 06 	bgeu r5,r4,800be80 <IMFS_memfile_write+0x60>   
    bool zero_fill = start > the_jnode->info.file.size;               
                                                                      
    status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );  
 800be6c:	e8 45 10 00 	cmpg r2,r2,r5                                  
 800be70:	b8 80 18 00 	mv r3,r4                                       
 800be74:	fb ff ff 82 	calli 800bc7c <IMFS_memfile_extend>            
 800be78:	b8 20 28 00 	mv r5,r1                                       
    if ( status )                                                     
 800be7c:	5c 20 00 33 	bne r1,r0,800bf48 <IMFS_memfile_write+0x128>   
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800be80:	78 10 08 02 	mvhi r16,0x802                                 
 800be84:	3a 10 07 90 	ori r16,r16,0x790                              
 800be88:	2a 0b 00 00 	lw r11,(r16+0)                                 
 800be8c:	b9 80 08 00 	mv r1,r12                                      
  unsigned int         last_byte;                                     
  unsigned int         start_offset;                                  
  int                  copied;                                        
  const unsigned char *src;                                           
                                                                      
  src = source;                                                       
 800be90:	ba 60 70 00 	mv r14,r19                                     
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
 800be94:	b9 60 10 00 	mv r2,r11                                      
 800be98:	f8 00 40 33 	calli 801bf64 <__modsi3>                       
 800be9c:	b8 20 a0 00 	mv r20,r1                                      
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
 800bea0:	b9 60 10 00 	mv r2,r11                                      
 800bea4:	b9 80 08 00 	mv r1,r12                                      
 800bea8:	f8 00 3f ff 	calli 801bea4 <__divsi3>                       
 800beac:	b8 20 68 00 	mv r13,r1                                      
  if ( start_offset )  {                                              
 800beb0:	ba 40 60 00 	mv r12,r18                                     
    status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );  
    if ( status )                                                     
      return status;                                                  
  }                                                                   
                                                                      
  copied = 0;                                                         
 800beb4:	34 0f 00 00 	mvi r15,0                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
 800beb8:	5e 80 00 32 	bne r20,r0,800bf80 <IMFS_memfile_write+0x160>  
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800bebc:	55 6c 00 10 	bgu r11,r12,800befc <IMFS_memfile_write+0xdc>  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800bec0:	b9 a0 10 00 	mv r2,r13                                      
 800bec4:	34 03 00 00 	mvi r3,0                                       
 800bec8:	ba 20 08 00 	mv r1,r17                                      
 800becc:	fb ff fd 88 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
 800bed0:	b9 c0 10 00 	mv r2,r14                                      
 800bed4:	b9 60 18 00 	mv r3,r11                                      
    src += to_copy;                                                   
    block++;                                                          
    my_length -= to_copy;                                             
 800bed8:	c9 8b 60 00 	sub r12,r12,r11                                
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
 800bedc:	44 20 00 3c 	be r1,r0,800bfcc <IMFS_memfile_write+0x1ac>    <== NEVER TAKEN
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
 800bee0:	28 21 00 00 	lw r1,(r1+0)                                   
    src += to_copy;                                                   
 800bee4:	b5 cb 70 00 	add r14,r14,r11                                
    block++;                                                          
 800bee8:	35 ad 00 01 	addi r13,r13,1                                 
    if ( !block_ptr )                                                 
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
 800beec:	f8 00 07 dc 	calli 800de5c <memcpy>                         
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800bef0:	2a 01 00 00 	lw r1,(r16+0)                                  
 *  IMFS_memfile_write                                                
 *                                                                    
 *  This routine writes the specified data buffer into the in memory  
 *  file pointed to by the_jnode.  The file is extended as needed.    
 */                                                                   
MEMFILE_STATIC ssize_t IMFS_memfile_write(                            
 800bef4:	b5 eb 78 00 	add r15,r15,r11                                
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
 800bef8:	51 81 ff f2 	bgeu r12,r1,800bec0 <IMFS_memfile_write+0xa0>  
   *  Phase 3: possibly the first part of one block                   
   */                                                                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  to_copy = my_length;                                                
  if ( my_length ) {                                                  
 800befc:	45 80 00 0c 	be r12,r0,800bf2c <IMFS_memfile_write+0x10c>   
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800bf00:	ba 20 08 00 	mv r1,r17                                      
 800bf04:	b9 a0 10 00 	mv r2,r13                                      
 800bf08:	34 03 00 00 	mvi r3,0                                       
 800bf0c:	fb ff fd 78 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
 800bf10:	b9 e0 28 00 	mv r5,r15                                      
 800bf14:	44 20 00 0d 	be r1,r0,800bf48 <IMFS_memfile_write+0x128>    <== NEVER TAKEN
      return copied;                                                  
    #if 0                                                             
    fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                     
 800bf18:	28 21 00 00 	lw r1,(r1+0)                                   
 800bf1c:	b9 c0 10 00 	mv r2,r14                                      
 800bf20:	b9 80 18 00 	mv r3,r12                                      
 800bf24:	f8 00 07 ce 	calli 800de5c <memcpy>                         
    my_length = 0;                                                    
    copied += to_copy;                                                
 800bf28:	b5 ec 78 00 	add r15,r15,r12                                
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
 800bf2c:	37 81 00 30 	addi r1,sp,48                                  
 800bf30:	34 02 00 00 	mvi r2,0                                       
 800bf34:	fb ff d5 eb 	calli 80016e0 <gettimeofday>                   
 800bf38:	2b 81 00 30 	lw r1,(sp+48)                                  
                                                                      
  return copied;                                                      
 800bf3c:	b9 e0 28 00 	mv r5,r15                                      
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                     
    my_length = 0;                                                    
    copied += to_copy;                                                
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
 800bf40:	5a 21 00 44 	sw (r17+68),r1                                 
 800bf44:	5a 21 00 48 	sw (r17+72),r1                                 
                                                                      
  return copied;                                                      
}                                                                     
 800bf48:	b8 a0 08 00 	mv r1,r5                                       
 800bf4c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bf50:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800bf54:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800bf58:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800bf5c:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800bf60:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800bf64:	2b 90 00 18 	lw r16,(sp+24)                                 
 800bf68:	2b 91 00 14 	lw r17,(sp+20)                                 
 800bf6c:	2b 92 00 10 	lw r18,(sp+16)                                 
 800bf70:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800bf74:	2b 94 00 08 	lw r20,(sp+8)                                  
 800bf78:	37 9c 00 34 	addi sp,sp,52                                  
 800bf7c:	c3 a0 00 00 	ret                                            
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
 800bf80:	ba 20 08 00 	mv r1,r17                                      
 800bf84:	b9 a0 10 00 	mv r2,r13                                      
 800bf88:	34 03 00 00 	mvi r3,0                                       
 800bf8c:	fb ff fd 58 	calli 800b4ec <IMFS_memfile_get_block_pointer> 
    if ( !block_ptr )                                                 
      return copied;                                                  
 800bf90:	34 05 00 00 	mvi r5,0                                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
 800bf94:	44 20 ff ed 	be r1,r0,800bf48 <IMFS_memfile_write+0x128>    <== NEVER TAKEN
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
 800bf98:	c9 74 78 00 	sub r15,r11,r20                                
 800bf9c:	52 4f 00 02 	bgeu r18,r15,800bfa4 <IMFS_memfile_write+0x184>
 800bfa0:	ba 40 78 00 	mv r15,r18                                     
        block,                                                        
        to_copy,                                                      
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
 800bfa4:	28 21 00 00 	lw r1,(r1+0)                                   
 800bfa8:	ba 60 10 00 	mv r2,r19                                      
 800bfac:	b9 e0 18 00 	mv r3,r15                                      
 800bfb0:	b4 34 08 00 	add r1,r1,r20                                  
 800bfb4:	f8 00 07 aa 	calli 800de5c <memcpy>                         
    src += to_copy;                                                   
 800bfb8:	b6 6f 70 00 	add r14,r19,r15                                
    block++;                                                          
    my_length -= to_copy;                                             
    copied += to_copy;                                                
 800bfbc:	2a 0b 00 00 	lw r11,(r16+0)                                 
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
    src += to_copy;                                                   
    block++;                                                          
 800bfc0:	35 ad 00 01 	addi r13,r13,1                                 
    my_length -= to_copy;                                             
 800bfc4:	ca 4f 60 00 	sub r12,r18,r15                                
 800bfc8:	e3 ff ff bd 	bi 800bebc <IMFS_memfile_write+0x9c>           
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
 800bfcc:	b9 e0 28 00 	mv r5,r15                                      <== NOT EXECUTED
 800bfd0:	e3 ff ff de 	bi 800bf48 <IMFS_memfile_write+0x128>          <== NOT EXECUTED
                                                                      

08000d94 <IMFS_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
 8000d94:	37 9c ff dc 	addi sp,sp,-36                                 
 8000d98:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8000d9c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8000da0:	5b 9d 00 04 	sw (sp+4),ra                                   
  dev_t dev,                                                          
  IMFS_jnode_types_t *type,                                           
  IMFS_types_union *info                                              
)                                                                     
{                                                                     
  if ( S_ISDIR( mode ) ) {                                            
 8000da4:	20 87 f0 00 	andi r7,r4,0xf000                              
  const char *name,                                                   
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
 8000da8:	b8 40 48 00 	mv r9,r2                                       
  dev_t dev,                                                          
  IMFS_jnode_types_t *type,                                           
  IMFS_types_union *info                                              
)                                                                     
{                                                                     
  if ( S_ISDIR( mode ) ) {                                            
 8000dac:	34 02 40 00 	mvi r2,16384                                   
  const char *name,                                                   
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
 8000db0:	b8 80 40 00 	mv r8,r4                                       
 8000db4:	b8 20 58 00 	mv r11,r1                                      
 8000db8:	b8 60 20 00 	mv r4,r3                                       
  IMFS_jnode_types_t *type,                                           
  IMFS_types_union *info                                              
)                                                                     
{                                                                     
  if ( S_ISDIR( mode ) ) {                                            
    *type = IMFS_DIRECTORY;                                           
 8000dbc:	34 01 00 00 	mvi r1,0                                       
  dev_t dev,                                                          
  IMFS_jnode_types_t *type,                                           
  IMFS_types_union *info                                              
)                                                                     
{                                                                     
  if ( S_ISDIR( mode ) ) {                                            
 8000dc0:	44 e2 00 0a 	be r7,r2,8000de8 <IMFS_mknod+0x54>             
    *type = IMFS_DIRECTORY;                                           
  } else if ( S_ISREG( mode ) ) {                                     
 8000dc4:	34 42 40 00 	addi r2,r2,16384                               
 8000dc8:	44 e2 00 2d 	be r7,r2,8000e7c <IMFS_mknod+0xe8>             
    *type = IMFS_MEMORY_FILE;                                         
  } else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {                  
 8000dcc:	64 e3 20 00 	cmpei r3,r7,8192                               
 8000dd0:	64 e2 60 00 	cmpei r2,r7,24576                              
 8000dd4:	b8 62 10 00 	or r2,r3,r2                                    
 8000dd8:	44 40 00 25 	be r2,r0,8000e6c <IMFS_mknod+0xd8>             
    *type = IMFS_DEVICE;                                              
    rtems_filesystem_split_dev_t(                                     
 8000ddc:	5b 85 00 10 	sw (sp+16),r5                                  
 8000de0:	5b 86 00 14 	sw (sp+20),r6                                  
  if ( S_ISDIR( mode ) ) {                                            
    *type = IMFS_DIRECTORY;                                           
  } else if ( S_ISREG( mode ) ) {                                     
    *type = IMFS_MEMORY_FILE;                                         
  } else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {                  
    *type = IMFS_DEVICE;                                              
 8000de4:	34 01 00 01 	mvi r1,1                                       
  mode_t mode,                                                        
  const IMFS_types_union *info                                        
)                                                                     
{                                                                     
  const IMFS_fs_info_t *fs_info =                                     
    (const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;            
 8000de8:	29 62 00 14 	lw r2,(r11+20)                                 
                                                                      
  return IMFS_create_node_with_control(                               
 8000dec:	34 26 00 02 	addi r6,r1,2                                   
 8000df0:	b4 c6 30 00 	add r6,r6,r6                                   
 8000df4:	28 42 00 08 	lw r2,(r2+8)                                   
 8000df8:	b4 c6 30 00 	add r6,r6,r6                                   
 8000dfc:	b9 60 08 00 	mv r1,r11                                      
 8000e00:	b4 46 30 00 	add r6,r2,r6                                   
 8000e04:	28 c2 00 00 	lw r2,(r6+0)                                   
 8000e08:	b9 20 18 00 	mv r3,r9                                       
 8000e0c:	b9 00 28 00 	mv r5,r8                                       
 8000e10:	37 86 00 10 	addi r6,sp,16                                  
 8000e14:	f8 00 1e 29 	calli 80086b8 <IMFS_create_node_with_control>  
    IMFS_jnode_t *parent = parentloc->node_access;                    
                                                                      
    IMFS_update_ctime( parent );                                      
    IMFS_update_mtime( parent );                                      
  } else {                                                            
    rv = -1;                                                          
 8000e18:	34 02 ff ff 	mvi r2,-1                                      
  IMFS_jnode_t *new_node;                                             
                                                                      
  get_type_and_info_by_mode_and_dev( mode, dev, &type, &info );       
                                                                      
  new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
  if ( new_node != NULL ) {                                           
 8000e1c:	44 20 00 0e 	be r1,r0,8000e54 <IMFS_mknod+0xc0>             
    IMFS_jnode_t *parent = parentloc->node_access;                    
                                                                      
    IMFS_update_ctime( parent );                                      
 8000e20:	37 8c 00 20 	addi r12,sp,32                                 
 8000e24:	34 02 00 00 	mvi r2,0                                       
 8000e28:	b9 80 08 00 	mv r1,r12                                      
                                                                      
  get_type_and_info_by_mode_and_dev( mode, dev, &type, &info );       
                                                                      
  new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
  if ( new_node != NULL ) {                                           
    IMFS_jnode_t *parent = parentloc->node_access;                    
 8000e2c:	29 6b 00 08 	lw r11,(r11+8)                                 
                                                                      
    IMFS_update_ctime( parent );                                      
 8000e30:	f8 00 02 2c 	calli 80016e0 <gettimeofday>                   
 8000e34:	2b 83 00 20 	lw r3,(sp+32)                                  
    IMFS_update_mtime( parent );                                      
 8000e38:	34 02 00 00 	mvi r2,0                                       
 8000e3c:	b9 80 08 00 	mv r1,r12                                      
                                                                      
  new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
  if ( new_node != NULL ) {                                           
    IMFS_jnode_t *parent = parentloc->node_access;                    
                                                                      
    IMFS_update_ctime( parent );                                      
 8000e40:	59 63 00 48 	sw (r11+72),r3                                 
    IMFS_update_mtime( parent );                                      
 8000e44:	f8 00 02 27 	calli 80016e0 <gettimeofday>                   
 8000e48:	2b 81 00 20 	lw r1,(sp+32)                                  
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
  int rv = 0;                                                         
 8000e4c:	34 02 00 00 	mvi r2,0                                       
  new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
  if ( new_node != NULL ) {                                           
    IMFS_jnode_t *parent = parentloc->node_access;                    
                                                                      
    IMFS_update_ctime( parent );                                      
    IMFS_update_mtime( parent );                                      
 8000e50:	59 61 00 44 	sw (r11+68),r1                                 
  } else {                                                            
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8000e54:	b8 40 08 00 	mv r1,r2                                       
 8000e58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000e5c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8000e60:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8000e64:	37 9c 00 24 	addi sp,sp,36                                  
 8000e68:	c3 a0 00 00 	ret                                            
    rtems_filesystem_split_dev_t(                                     
      dev,                                                            
      info->device.major,                                             
      info->device.minor                                              
    );                                                                
  } else if (S_ISFIFO( mode )) {                                      
 8000e6c:	34 02 10 00 	mvi r2,4096                                    
 8000e70:	5c e2 ff de 	bne r7,r2,8000de8 <IMFS_mknod+0x54>            <== NEVER TAKEN
    *type = IMFS_FIFO;                                                
 8000e74:	34 01 00 06 	mvi r1,6                                       
 8000e78:	e3 ff ff dc 	bi 8000de8 <IMFS_mknod+0x54>                   
)                                                                     
{                                                                     
  if ( S_ISDIR( mode ) ) {                                            
    *type = IMFS_DIRECTORY;                                           
  } else if ( S_ISREG( mode ) ) {                                     
    *type = IMFS_MEMORY_FILE;                                         
 8000e7c:	34 01 00 04 	mvi r1,4                                       
 8000e80:	e3 ff ff da 	bi 8000de8 <IMFS_mknod+0x54>                   
                                                                      

08000e84 <IMFS_mount>: #endif #include "imfs.h" int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8000e84:	37 9c ff fc 	addi sp,sp,-4                                  
 8000e88:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
 8000e8c:	28 22 00 20 	lw r2,(r1+32)                                  
 8000e90:	28 42 00 08 	lw r2,(r2+8)                                   
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
 8000e94:	28 43 00 4c 	lw r3,(r2+76)                                  
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
 8000e98:	28 63 00 00 	lw r3,(r3+0)                                   
 8000e9c:	5c 60 00 0d 	bne r3,r0,8000ed0 <IMFS_mount+0x4c>            
    if ( node->info.directory.mt_fs == NULL ) {                       
 8000ea0:	28 44 00 5c 	lw r4,(r2+92)                                  
 8000ea4:	5c 83 00 06 	bne r4,r3,8000ebc <IMFS_mount+0x38>            <== NEVER TAKEN
      node->info.directory.mt_fs = mt_entry;                          
 8000ea8:	58 41 00 5c 	sw (r2+92),r1                                  
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )      
{                                                                     
  int rv = 0;                                                         
 8000eac:	34 01 00 00 	mvi r1,0                                       
    errno = ENOTDIR;                                                  
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8000eb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000eb4:	37 9c 00 04 	addi sp,sp,4                                   
 8000eb8:	c3 a0 00 00 	ret                                            
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    if ( node->info.directory.mt_fs == NULL ) {                       
      node->info.directory.mt_fs = mt_entry;                          
    } else {                                                          
      errno = EBUSY;                                                  
 8000ebc:	f8 00 30 ee 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8000ec0:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8000ec4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
      rv = -1;                                                        
 8000ec8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8000ecc:	e3 ff ff f9 	bi 8000eb0 <IMFS_mount+0x2c>                   <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = ENOTDIR;                                                  
 8000ed0:	f8 00 30 e9 	calli 800d274 <__errno>                        
 8000ed4:	34 02 00 14 	mvi r2,20                                      
 8000ed8:	58 22 00 00 	sw (r1+0),r2                                   
    rv = -1;                                                          
 8000edc:	34 01 ff ff 	mvi r1,-1                                      
 8000ee0:	e3 ff ff f4 	bi 8000eb0 <IMFS_mount+0x2c>                   
                                                                      

08008b2c <IMFS_node_remove_directory>: } static IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) {
 8008b2c:	37 9c ff fc 	addi sp,sp,-4                                  
 8008b30:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {     
 8008b34:	28 23 00 50 	lw r3,(r1+80)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8008b38:	34 22 00 54 	addi r2,r1,84                                  
 8008b3c:	5c 62 00 06 	bne r3,r2,8008b54 <IMFS_node_remove_directory+0x28>
    errno = ENOTEMPTY;                                                
    node = NULL;                                                      
  } else if ( IMFS_is_mount_point( node ) ) {                         
 8008b40:	28 22 00 5c 	lw r2,(r1+92)                                  
 8008b44:	5c 40 00 0b 	bne r2,r0,8008b70 <IMFS_node_remove_directory+0x44><== NEVER TAKEN
    errno = EBUSY;                                                    
    node = NULL;                                                      
  }                                                                   
                                                                      
  return node;                                                        
}                                                                     
 8008b48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008b4c:	37 9c 00 04 	addi sp,sp,4                                   
 8008b50:	c3 a0 00 00 	ret                                            
static IMFS_jnode_t *IMFS_node_remove_directory(                      
  IMFS_jnode_t *node                                                  
)                                                                     
{                                                                     
  if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {     
    errno = ENOTEMPTY;                                                
 8008b54:	f8 00 11 c8 	calli 800d274 <__errno>                        
 8008b58:	34 02 00 5a 	mvi r2,90                                      
 8008b5c:	58 22 00 00 	sw (r1+0),r2                                   
    node = NULL;                                                      
 8008b60:	34 01 00 00 	mvi r1,0                                       
    errno = EBUSY;                                                    
    node = NULL;                                                      
  }                                                                   
                                                                      
  return node;                                                        
}                                                                     
 8008b64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008b68:	37 9c 00 04 	addi sp,sp,4                                   
 8008b6c:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {     
    errno = ENOTEMPTY;                                                
    node = NULL;                                                      
  } else if ( IMFS_is_mount_point( node ) ) {                         
    errno = EBUSY;                                                    
 8008b70:	f8 00 11 c1 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8008b74:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8008b78:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    node = NULL;                                                      
 8008b7c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  }                                                                   
                                                                      
  return node;                                                        
}                                                                     
 8008b80:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8008b84:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8008b88:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08000ee4 <IMFS_node_type>: rtems_filesystem_node_types_t IMFS_node_type( const rtems_filesystem_location_info_t *loc ) { const IMFS_jnode_t *node = loc->node_access;
 8000ee4:	28 21 00 08 	lw r1,(r1+8)                                   
  IMFS_jnode_types_t imfs_type = IMFS_type( node );                   
  rtems_filesystem_node_types_t type;                                 
                                                                      
  switch ( imfs_type ) {                                              
 8000ee8:	34 03 00 02 	mvi r3,2                                       
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
 8000eec:	28 22 00 4c 	lw r2,(r1+76)                                  
 8000ef0:	28 42 00 00 	lw r2,(r2+0)                                   
 8000ef4:	44 43 00 06 	be r2,r3,8000f0c <IMFS_node_type+0x28>         
 8000ef8:	34 03 00 05 	mvi r3,5                                       
    case IMFS_HARD_LINK:                                              
      type = IMFS_type( node->info.hard_link.link_node );             
      break;                                                          
    case IMFS_LINEAR_FILE:                                            
      type = RTEMS_FILESYSTEM_MEMORY_FILE;                            
 8000efc:	34 01 00 04 	mvi r1,4                                       
{                                                                     
  const IMFS_jnode_t *node = loc->node_access;                        
  IMFS_jnode_types_t imfs_type = IMFS_type( node );                   
  rtems_filesystem_node_types_t type;                                 
                                                                      
  switch ( imfs_type ) {                                              
 8000f00:	44 43 00 07 	be r2,r3,8000f1c <IMFS_node_type+0x38>         <== NEVER TAKEN
 8000f04:	b8 40 08 00 	mv r1,r2                                       
      type = imfs_type;                                               
      break;                                                          
  }                                                                   
                                                                      
  return type;                                                        
}                                                                     
 8000f08:	c3 a0 00 00 	ret                                            
 8000f0c:	28 21 00 50 	lw r1,(r1+80)                                  
 8000f10:	28 21 00 4c 	lw r1,(r1+76)                                  
 8000f14:	28 21 00 00 	lw r1,(r1+0)                                   
  rtems_filesystem_node_types_t type;                                 
                                                                      
  switch ( imfs_type ) {                                              
    case IMFS_HARD_LINK:                                              
      type = IMFS_type( node->info.hard_link.link_node );             
      break;                                                          
 8000f18:	c3 a0 00 00 	ret                                            
 8000f1c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08000f20 <IMFS_readlink>: ) { IMFS_jnode_t *node; ssize_t i; node = loc->node_access;
 8000f20:	28 25 00 08 	lw r5,(r1+8)                                   
                                                                      
  IMFS_assert( node->control->imfs_type == IMFS_SYM_LINK );           
                                                                      
  for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
 8000f24:	34 01 00 00 	mvi r1,0                                       
 8000f28:	44 60 00 0e 	be r3,r0,8000f60 <IMFS_readlink+0x40>          <== NEVER TAKEN
 8000f2c:	28 a4 00 50 	lw r4,(r5+80)                                  
 8000f30:	40 84 00 00 	lbu r4,(r4+0)                                  
 8000f34:	44 80 00 0b 	be r4,r0,8000f60 <IMFS_readlink+0x40>          <== NEVER TAKEN
 8000f38:	34 06 00 00 	mvi r6,0                                       
    buf[i] = node->info.sym_link.name[i];                             
 8000f3c:	b4 46 30 00 	add r6,r2,r6                                   
 8000f40:	30 c4 00 00 	sb (r6+0),r4                                   
                                                                      
  node = loc->node_access;                                            
                                                                      
  IMFS_assert( node->control->imfs_type == IMFS_SYM_LINK );           
                                                                      
  for( i=0; ((i<bufsize) && (node->info.sym_link.name[i] != '\0')); i++ )
 8000f44:	34 21 00 01 	addi r1,r1,1                                   
 8000f48:	b8 20 30 00 	mv r6,r1                                       
 8000f4c:	50 23 00 05 	bgeu r1,r3,8000f60 <IMFS_readlink+0x40>        
 8000f50:	28 a4 00 50 	lw r4,(r5+80)                                  
 8000f54:	b4 81 20 00 	add r4,r4,r1                                   
 8000f58:	40 84 00 00 	lbu r4,(r4+0)                                  
 8000f5c:	5c 80 ff f8 	bne r4,r0,8000f3c <IMFS_readlink+0x1c>         
    buf[i] = node->info.sym_link.name[i];                             
                                                                      
  return i;                                                           
}                                                                     
 8000f60:	c3 a0 00 00 	ret                                            
                                                                      

08000f64 <IMFS_rename>: const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) {
 8000f64:	37 9c ff e8 	addi sp,sp,-24                                 
 8000f68:	5b 8b 00 10 	sw (sp+16),r11                                 
 8000f6c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8000f70:	5b 8d 00 08 	sw (sp+8),r13                                  
 8000f74:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  IMFS_jnode_t *node = oldloc->node_access;                           
 8000f78:	28 4b 00 08 	lw r11,(r2+8)                                  
  const rtems_filesystem_location_info_t *oldloc,                     
  const rtems_filesystem_location_info_t *newparentloc,               
  const char *name,                                                   
  size_t namelen                                                      
)                                                                     
{                                                                     
 8000f7c:	b8 a0 68 00 	mv r13,r5                                      
  int rv = 0;                                                         
  IMFS_jnode_t *node = oldloc->node_access;                           
  IMFS_jnode_t *new_parent = newparentloc->node_access;               
 8000f80:	28 6c 00 08 	lw r12,(r3+8)                                  
  /*                                                                  
   * FIXME: Due to insufficient checks we can create inaccessible nodes with
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
 8000f84:	29 61 00 08 	lw r1,(r11+8)                                  
 8000f88:	44 20 00 25 	be r1,r0,800101c <IMFS_rename+0xb8>            <== NEVER TAKEN
    if ( namelen < IMFS_NAME_MAX ) {                                  
 8000f8c:	34 01 00 1f 	mvi r1,31                                      
 8000f90:	54 a1 00 1e 	bgu r5,r1,8001008 <IMFS_rename+0xa4>           <== NEVER TAKEN
      memcpy( node->name, name, namelen );                            
 8000f94:	b8 80 10 00 	mv r2,r4                                       
 8000f98:	b8 a0 18 00 	mv r3,r5                                       
 8000f9c:	35 61 00 0c 	addi r1,r11,12                                 
 8000fa0:	f8 00 33 af 	calli 800de5c <memcpy>                         
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 8000fa4:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 8000fa8:	29 61 00 04 	lw r1,(r11+4)                                  
      node->name [namelen] = '\0';                                    
 8000fac:	b5 6d 68 00 	add r13,r11,r13                                
 8000fb0:	31 a0 00 0c 	sb (r13+12),r0                                 
  next->previous = previous;                                          
 8000fb4:	58 61 00 04 	sw (r3+4),r1                                   
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8000fb8:	29 82 00 58 	lw r2,(r12+88)                                 
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
 8000fbc:	58 23 00 00 	sw (r1+0),r3                                   
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8000fc0:	35 81 00 54 	addi r1,r12,84                                 
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 8000fc4:	59 61 00 00 	sw (r11+0),r1                                  
static inline void IMFS_add_to_directory(                             
  IMFS_jnode_t *dir,                                                  
  IMFS_jnode_t *node                                                  
)                                                                     
{                                                                     
  node->Parent = dir;                                                 
 8000fc8:	59 6c 00 08 	sw (r11+8),r12                                 
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
 8000fcc:	58 4b 00 00 	sw (r2+0),r11                                  
  the_node->previous = old_last;                                      
 8000fd0:	59 62 00 04 	sw (r11+4),r2                                  
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
 8000fd4:	59 8b 00 58 	sw (r12+88),r11                                
                                                                      
      IMFS_remove_from_directory( node );                             
      IMFS_add_to_directory( new_parent, node );                      
      IMFS_update_ctime( node );                                      
 8000fd8:	34 02 00 00 	mvi r2,0                                       
 8000fdc:	37 81 00 14 	addi r1,sp,20                                  
 8000fe0:	f8 00 01 c0 	calli 80016e0 <gettimeofday>                   
 8000fe4:	2b 82 00 14 	lw r2,(sp+20)                                  
  const rtems_filesystem_location_info_t *newparentloc,               
  const char *name,                                                   
  size_t namelen                                                      
)                                                                     
{                                                                     
  int rv = 0;                                                         
 8000fe8:	34 01 00 00 	mvi r1,0                                       
      memcpy( node->name, name, namelen );                            
      node->name [namelen] = '\0';                                    
                                                                      
      IMFS_remove_from_directory( node );                             
      IMFS_add_to_directory( new_parent, node );                      
      IMFS_update_ctime( node );                                      
 8000fec:	59 62 00 48 	sw (r11+72),r2                                 
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8000ff0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000ff4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8000ff8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8000ffc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001000:	37 9c 00 18 	addi sp,sp,24                                  
 8001004:	c3 a0 00 00 	ret                                            
                                                                      
      IMFS_remove_from_directory( node );                             
      IMFS_add_to_directory( new_parent, node );                      
      IMFS_update_ctime( node );                                      
    } else {                                                          
      errno = ENAMETOOLONG;                                           
 8001008:	f8 00 30 9b 	calli 800d274 <__errno>                        <== NOT EXECUTED
 800100c:	34 02 00 5b 	mvi r2,91                                      <== NOT EXECUTED
 8001010:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
      rv = -1;                                                        
 8001014:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001018:	e3 ff ff f6 	bi 8000ff0 <IMFS_rename+0x8c>                  <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
 800101c:	f8 00 30 96 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8001020:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8001024:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 8001028:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800102c:	e3 ff ff f1 	bi 8000ff0 <IMFS_rename+0x8c>                  <== NOT EXECUTED
                                                                      

0800112c <IMFS_unmount>: #endif #include "imfs.h" int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
 800112c:	37 9c ff fc 	addi sp,sp,-4                                  
 8001130:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
 8001134:	28 22 00 20 	lw r2,(r1+32)                                  
 8001138:	28 42 00 08 	lw r2,(r2+8)                                   
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
 800113c:	28 43 00 4c 	lw r3,(r2+76)                                  
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
 8001140:	28 63 00 00 	lw r3,(r3+0)                                   
 8001144:	5c 60 00 0d 	bne r3,r0,8001178 <IMFS_unmount+0x4c>          <== NEVER TAKEN
    if ( node->info.directory.mt_fs == mt_entry ) {                   
 8001148:	28 43 00 5c 	lw r3,(r2+92)                                  
 800114c:	5c 61 00 06 	bne r3,r1,8001164 <IMFS_unmount+0x38>          <== NEVER TAKEN
      node->info.directory.mt_fs = NULL;                              
 8001150:	58 40 00 5c 	sw (r2+92),r0                                  
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )    
{                                                                     
  int rv = 0;                                                         
 8001154:	34 01 00 00 	mvi r1,0                                       
    errno = ENOTDIR;                                                  
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001158:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800115c:	37 9c 00 04 	addi sp,sp,4                                   
 8001160:	c3 a0 00 00 	ret                                            
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    if ( node->info.directory.mt_fs == mt_entry ) {                   
      node->info.directory.mt_fs = NULL;                              
    } else {                                                          
      errno = EINVAL;                                                 
 8001164:	f8 00 30 44 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8001168:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 800116c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
      rv = -1;                                                        
 8001170:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001174:	e3 ff ff f9 	bi 8001158 <IMFS_unmount+0x2c>                 <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = ENOTDIR;                                                  
 8001178:	f8 00 30 3f 	calli 800d274 <__errno>                        <== NOT EXECUTED
 800117c:	34 02 00 14 	mvi r2,20                                      <== NOT EXECUTED
 8001180:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 8001184:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001188:	e3 ff ff f4 	bi 8001158 <IMFS_unmount+0x2c>                 <== NOT EXECUTED
                                                                      

08001938 <RTEMS_Malloc_Initialize>: void RTEMS_Malloc_Initialize( const Heap_Area *areas, size_t area_count, Heap_Initialization_or_extend_handler extend ) {
 8001938:	37 9c ff e0 	addi sp,sp,-32                                 
 800193c:	5b 8b 00 20 	sw (sp+32),r11                                 
 8001940:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8001944:	5b 8d 00 18 	sw (sp+24),r13                                 
 8001948:	5b 8e 00 14 	sw (sp+20),r14                                 
 800194c:	5b 8f 00 10 	sw (sp+16),r15                                 
 8001950:	5b 90 00 0c 	sw (sp+12),r16                                 
 8001954:	5b 91 00 08 	sw (sp+8),r17                                  
 8001958:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Control *heap = RTEMS_Malloc_Heap;                             
                                                                      
  if ( !rtems_configuration_get_unified_work_area() ) {               
 800195c:	78 04 08 01 	mvhi r4,0x801                                  
 8001960:	38 84 d2 6c 	ori r4,r4,0xd26c                               
 8001964:	40 85 00 31 	lbu r5,(r4+49)                                 
  const Heap_Area *areas,                                             
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Control *heap = RTEMS_Malloc_Heap;                             
 8001968:	78 04 08 02 	mvhi r4,0x802                                  
 800196c:	38 84 00 54 	ori r4,r4,0x54                                 
void RTEMS_Malloc_Initialize(                                         
  const Heap_Area *areas,                                             
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
 8001970:	b8 40 78 00 	mv r15,r2                                      
 8001974:	b8 60 80 00 	mv r16,r3                                      
  Heap_Control *heap = RTEMS_Malloc_Heap;                             
 8001978:	28 8e 00 00 	lw r14,(r4+0)                                  
                                                                      
  if ( !rtems_configuration_get_unified_work_area() ) {               
 800197c:	5c a0 00 12 	bne r5,r0,80019c4 <RTEMS_Malloc_Initialize+0x8c>
    Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
    uintptr_t page_size = CPU_HEAP_ALIGNMENT;                         
    size_t i;                                                         
                                                                      
    for (i = 0; i < area_count; ++i) {                                
 8001980:	44 45 00 28 	be r2,r5,8001a20 <RTEMS_Malloc_Initialize+0xe8>
 8001984:	78 11 08 00 	mvhi r17,0x800                                 
 8001988:	3a 31 51 d8 	ori r17,r17,0x51d8                             
 800198c:	b8 20 58 00 	mv r11,r1                                      
 8001990:	34 0c 00 00 	mvi r12,0                                      
 8001994:	ba 20 68 00 	mv r13,r17                                     
      const Heap_Area *area = &areas [i];                             
      uintptr_t space_available = (*init_or_extend)(                  
 8001998:	29 62 00 00 	lw r2,(r11+0)                                  
 800199c:	29 63 00 04 	lw r3,(r11+4)                                  
 80019a0:	b9 c0 08 00 	mv r1,r14                                      
 80019a4:	34 04 00 04 	mvi r4,4                                       
 80019a8:	d9 a0 00 00 	call r13                                       
        area->begin,                                                  
        area->size,                                                   
        page_size                                                     
      );                                                              
                                                                      
      if ( space_available > 0 ) {                                    
 80019ac:	44 20 00 02 	be r1,r0,80019b4 <RTEMS_Malloc_Initialize+0x7c><== NEVER TAKEN
        init_or_extend = extend;                                      
 80019b0:	ba 00 68 00 	mv r13,r16                                     
  if ( !rtems_configuration_get_unified_work_area() ) {               
    Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
    uintptr_t page_size = CPU_HEAP_ALIGNMENT;                         
    size_t i;                                                         
                                                                      
    for (i = 0; i < area_count; ++i) {                                
 80019b4:	35 8c 00 01 	addi r12,r12,1                                 
 80019b8:	35 6b 00 08 	addi r11,r11,8                                 
 80019bc:	55 ec ff f7 	bgu r15,r12,8001998 <RTEMS_Malloc_Initialize+0x60><== NEVER TAKEN
      if ( space_available > 0 ) {                                    
        init_or_extend = extend;                                      
      }                                                               
    }                                                                 
                                                                      
    if ( init_or_extend == _Heap_Initialize ) {                       
 80019c0:	45 b1 00 18 	be r13,r17,8001a20 <RTEMS_Malloc_Initialize+0xe8><== NEVER TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  If configured, initialize the statistics support                
   */                                                                 
  if ( rtems_malloc_statistics_helpers != NULL ) {                    
 80019c4:	78 01 08 02 	mvhi r1,0x802                                  
 80019c8:	38 21 07 4c 	ori r1,r1,0x74c                                
 80019cc:	28 21 00 00 	lw r1,(r1+0)                                   
 80019d0:	44 20 00 03 	be r1,r0,80019dc <RTEMS_Malloc_Initialize+0xa4>
    (*rtems_malloc_statistics_helpers->initialize)();                 
 80019d4:	28 21 00 00 	lw r1,(r1+0)                                   
 80019d8:	d8 20 00 00 	call r1                                        
  }                                                                   
                                                                      
  MSBUMP( space_available, _Protected_heap_Get_size( heap ) );        
 80019dc:	78 0b 08 02 	mvhi r11,0x802                                 
 80019e0:	39 6b 08 28 	ori r11,r11,0x828                              
 80019e4:	29 6c 00 00 	lw r12,(r11+0)                                 
 80019e8:	b9 c0 08 00 	mv r1,r14                                      
 80019ec:	f8 00 11 72 	calli 8005fb4 <_Protected_heap_Get_size>       
 80019f0:	b4 2c 08 00 	add r1,r1,r12                                  
 80019f4:	59 61 00 00 	sw (r11+0),r1                                  
}                                                                     
 80019f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80019fc:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8001a00:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8001a04:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8001a08:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8001a0c:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8001a10:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8001a14:	2b 91 00 08 	lw r17,(sp+8)                                  
 8001a18:	37 9c 00 20 	addi sp,sp,32                                  
 8001a1c:	c3 a0 00 00 	ret                                            
        init_or_extend = extend;                                      
      }                                                               
    }                                                                 
                                                                      
    if ( init_or_extend == _Heap_Initialize ) {                       
      _Internal_error_Occurred(                                       
 8001a20:	34 01 00 00 	mvi r1,0                                       
 8001a24:	34 02 00 01 	mvi r2,1                                       
 8001a28:	34 03 00 17 	mvi r3,23                                      
 8001a2c:	f8 00 0e 9c 	calli 800549c <_Internal_error_Occurred>       
                                                                      

08023778 <Stack_check_Dump_threads_usage>: static rtems_printk_plugin_t print_handler; static void Stack_check_Dump_threads_usage( Thread_Control *the_thread ) {
 8023778:	37 9c ff d0 	addi sp,sp,-48                                 
 802377c:	5b 8b 00 28 	sw (sp+40),r11                                 
 8023780:	5b 8c 00 24 	sw (sp+36),r12                                 
 8023784:	5b 8d 00 20 	sw (sp+32),r13                                 
 8023788:	5b 8e 00 1c 	sw (sp+28),r14                                 
 802378c:	5b 8f 00 18 	sw (sp+24),r15                                 
 8023790:	5b 90 00 14 	sw (sp+20),r16                                 
 8023794:	5b 91 00 10 	sw (sp+16),r17                                 
 8023798:	5b 92 00 0c 	sw (sp+12),r18                                 
 802379c:	5b 93 00 08 	sw (sp+8),r19                                  
 80237a0:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
 80237a4:	34 02 ff ff 	mvi r2,-1                                      
 80237a8:	44 22 00 62 	be r1,r2,8023930 <Stack_check_Dump_threads_usage+0x1b8>
      current = 0;                                                    
    } else                                                            
  #endif                                                              
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
 80237ac:	28 31 01 04 	lw r17,(r1+260)                                
 80237b0:	28 27 00 b8 	lw r7,(r1+184)                                 
      the_thread = 0;                                                 
      current = 0;                                                    
    } else                                                            
  #endif                                                              
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
 80237b4:	34 2d 00 b4 	addi r13,r1,180                                
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
  size = Stack_check_usable_stack_size(stack);                        
 80237b8:	29 ae 00 00 	lw r14,(r13+0)                                 
    /*                                                                
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
 80237bc:	34 e2 00 20 	addi r2,r7,32                                  
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
 80237c0:	34 e6 00 10 	addi r6,r7,16                                  
  size = Stack_check_usable_stack_size(stack);                        
 80237c4:	35 ce ff f0 	addi r14,r14,-16                               
{                                                                     
  const uint32_t   *base, *ebase;                                     
  uint32_t   length;                                                  
                                                                      
  base = s;                                                           
  length = n/4;                                                       
 80237c8:	01 c4 00 01 	srui r4,r14,1                                  
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
  else                                                                
    used = 0;                                                         
 80237cc:	34 0f 00 00 	mvi r15,0                                      
{                                                                     
  const uint32_t   *base, *ebase;                                     
  uint32_t   length;                                                  
                                                                      
  base = s;                                                           
  length = n/4;                                                       
 80237d0:	00 84 00 01 	srui r4,r4,1                                   
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
 80237d4:	b4 84 20 00 	add r4,r4,r4                                   
 80237d8:	b4 84 20 00 	add r4,r4,r4                                   
 80237dc:	b4 44 20 00 	add r4,r2,r4                                   
 80237e0:	50 44 00 09 	bgeu r2,r4,8023804 <Stack_check_Dump_threads_usage+0x8c><== NEVER TAKEN
      if (*base != U32_PATTERN)                                       
 80237e4:	28 e3 00 20 	lw r3,(r7+32)                                  
 80237e8:	78 07 08 06 	mvhi r7,0x806                                  
 80237ec:	38 e7 45 4c 	ori r7,r7,0x454c                               
 80237f0:	28 e5 00 00 	lw r5,(r7+0)                                   
 80237f4:	5c 65 00 39 	bne r3,r5,80238d8 <Stack_check_Dump_threads_usage+0x160><== NEVER TAKEN
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
 80237f8:	34 42 00 04 	addi r2,r2,4                                   
 80237fc:	54 82 00 35 	bgu r4,r2,80238d0 <Stack_check_Dump_threads_usage+0x158><== ALWAYS TAKEN
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
  else                                                                
    used = 0;                                                         
 8023800:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
                                                                      
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if ( the_thread )                                                 
 8023804:	44 20 00 3a 	be r1,r0,80238ec <Stack_check_Dump_threads_usage+0x174><== NOT EXECUTED
  #endif                                                              
    {                                                                 
      (*print_handler)(                                               
 8023808:	28 30 00 08 	lw r16,(r1+8)                                  
 802380c:	78 0c 08 06 	mvhi r12,0x806                                 
 8023810:	39 8c ea 70 	ori r12,r12,0xea70                             
 8023814:	78 0b 08 06 	mvhi r11,0x806                                 
 8023818:	29 93 00 00 	lw r19,(r12+0)                                 
 802381c:	37 83 00 2c 	addi r3,sp,44                                  
 8023820:	34 02 00 05 	mvi r2,5                                       
 8023824:	39 6b ea 74 	ori r11,r11,0xea74                             
 8023828:	ba 00 08 00 	mv r1,r16                                      
 802382c:	29 72 00 00 	lw r18,(r11+0)                                 
 8023830:	fb ff a5 b7 	calli 800cf0c <rtems_object_get_name>          
 8023834:	78 02 08 06 	mvhi r2,0x806                                  
 8023838:	b8 20 20 00 	mv r4,r1                                       
 802383c:	38 42 43 c0 	ori r2,r2,0x43c0                               
 8023840:	ba 60 08 00 	mv r1,r19                                      
 8023844:	ba 00 18 00 	mv r3,r16                                      
 8023848:	da 40 00 00 	call r18                                       
                                                                      
  (*print_handler)(                                                   
    print_context,                                                    
    " %010p - %010p %010p  %8" PRId32 "   ",                          
    stack->area,                                                      
    stack->area + stack->size - 1,                                    
 802384c:	29 a4 00 00 	lw r4,(r13+0)                                  
 8023850:	29 a3 00 04 	lw r3,(r13+4)                                  
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
      }                                                               
    #endif                                                            
                                                                      
  (*print_handler)(                                                   
 8023854:	29 67 00 00 	lw r7,(r11+0)                                  
 8023858:	29 81 00 00 	lw r1,(r12+0)                                  
    print_context,                                                    
    " %010p - %010p %010p  %8" PRId32 "   ",                          
    stack->area,                                                      
    stack->area + stack->size - 1,                                    
 802385c:	34 84 ff ff 	addi r4,r4,-1                                  
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
      }                                                               
    #endif                                                            
                                                                      
  (*print_handler)(                                                   
 8023860:	78 02 08 06 	mvhi r2,0x806                                  
 8023864:	38 42 43 e0 	ori r2,r2,0x43e0                               
 8023868:	b4 64 20 00 	add r4,r3,r4                                   
 802386c:	ba 20 28 00 	mv r5,r17                                      
 8023870:	b9 c0 30 00 	mv r6,r14                                      
 8023874:	d8 e0 00 00 	call r7                                        
    stack->area + stack->size - 1,                                    
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
 8023878:	78 01 08 06 	mvhi r1,0x806                                  
 802387c:	38 21 ea 78 	ori r1,r1,0xea78                               
 8023880:	28 21 00 00 	lw r1,(r1+0)                                   
 8023884:	44 20 00 25 	be r1,r0,8023918 <Stack_check_Dump_threads_usage+0x1a0><== NEVER TAKEN
    (*print_handler)( print_context, "Unavailable\n" );               
  } else {                                                            
    (*print_handler)( print_context, "%8" PRId32 "\n", used );        
 8023888:	29 64 00 00 	lw r4,(r11+0)                                  
 802388c:	29 81 00 00 	lw r1,(r12+0)                                  
 8023890:	78 02 08 06 	mvhi r2,0x806                                  
 8023894:	38 42 44 10 	ori r2,r2,0x4410                               
 8023898:	b9 e0 18 00 	mv r3,r15                                      
 802389c:	d8 80 00 00 	call r4                                        
  }                                                                   
                                                                      
                                                                      
}                                                                     
 80238a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80238a4:	2b 8b 00 28 	lw r11,(sp+40)                                 
 80238a8:	2b 8c 00 24 	lw r12,(sp+36)                                 
 80238ac:	2b 8d 00 20 	lw r13,(sp+32)                                 
 80238b0:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 80238b4:	2b 8f 00 18 	lw r15,(sp+24)                                 
 80238b8:	2b 90 00 14 	lw r16,(sp+20)                                 
 80238bc:	2b 91 00 10 	lw r17,(sp+16)                                 
 80238c0:	2b 92 00 0c 	lw r18,(sp+12)                                 
 80238c4:	2b 93 00 08 	lw r19,(sp+8)                                  
 80238c8:	37 9c 00 30 	addi sp,sp,48                                  
 80238cc:	c3 a0 00 00 	ret                                            
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
      if (*base != U32_PATTERN)                                       
 80238d0:	28 47 00 00 	lw r7,(r2+0)                                   
 80238d4:	44 e3 ff c9 	be r7,r3,80237f8 <Stack_check_Dump_threads_usage+0x80>
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
  else                                                                
    used = 0;                                                         
 80238d8:	34 0f 00 00 	mvi r15,0                                      
  low  = Stack_check_usable_stack_start(stack);                       
  size = Stack_check_usable_stack_size(stack);                        
                                                                      
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
 80238dc:	44 40 ff ca 	be r2,r0,8023804 <Stack_check_Dump_threads_usage+0x8c><== NEVER TAKEN
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
 80238e0:	b4 ce 78 00 	add r15,r6,r14                                 
 80238e4:	c9 e2 78 00 	sub r15,r15,r2                                 
  else                                                                
    used = 0;                                                         
                                                                      
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if ( the_thread )                                                 
 80238e8:	5c 20 ff c8 	bne r1,r0,8023808 <Stack_check_Dump_threads_usage+0x90>
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name )
      );                                                              
    }                                                                 
    #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                        
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
 80238ec:	78 0b 08 06 	mvhi r11,0x806                                 
 80238f0:	78 0c 08 06 	mvhi r12,0x806                                 
 80238f4:	39 6b ea 74 	ori r11,r11,0xea74                             
 80238f8:	39 8c ea 70 	ori r12,r12,0xea70                             
 80238fc:	29 64 00 00 	lw r4,(r11+0)                                  
 8023900:	29 81 00 00 	lw r1,(r12+0)                                  
 8023904:	78 02 08 06 	mvhi r2,0x806                                  
 8023908:	38 42 43 d0 	ori r2,r2,0x43d0                               
 802390c:	34 03 ff ff 	mvi r3,-1                                      
 8023910:	d8 80 00 00 	call r4                                        
 8023914:	e3 ff ff ce 	bi 802384c <Stack_check_Dump_threads_usage+0xd4>
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
    (*print_handler)( print_context, "Unavailable\n" );               
 8023918:	29 63 00 00 	lw r3,(r11+0)                                  <== NOT EXECUTED
 802391c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8023920:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 8023924:	38 42 44 00 	ori r2,r2,0x4400                               <== NOT EXECUTED
 8023928:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 802392c:	e3 ff ff dd 	bi 80238a0 <Stack_check_Dump_threads_usage+0x128><== NOT EXECUTED
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
 8023930:	78 0d 08 06 	mvhi r13,0x806                                 
 8023934:	39 ad fa a4 	ori r13,r13,0xfaa4                             
 8023938:	29 a7 00 04 	lw r7,(r13+4)                                  
        return;                                                       
      stack = &Stack_check_Interrupt_stack;                           
      the_thread = 0;                                                 
      current = 0;                                                    
 802393c:	34 11 00 00 	mvi r17,0                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
        return;                                                       
      stack = &Stack_check_Interrupt_stack;                           
      the_thread = 0;                                                 
 8023940:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   *  Obtain interrupt stack information                              
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (the_thread == (Thread_Control *) -1) {                        
      if (!Stack_check_Interrupt_stack.area)                          
 8023944:	5c e0 ff 9d 	bne r7,r0,80237b8 <Stack_check_Dump_threads_usage+0x40><== ALWAYS TAKEN
 8023948:	e3 ff ff d6 	bi 80238a0 <Stack_check_Dump_threads_usage+0x128><== NOT EXECUTED
                                                                      

08023a60 <Stack_check_report_blown_task>: Thread_Control *running, bool pattern_ok ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok) {
 8023a60:	37 9c ff d0 	addi sp,sp,-48                                 
 8023a64:	5b 8b 00 10 	sw (sp+16),r11                                 
 8023a68:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8023a6c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8023a70:	5b 9d 00 04 	sw (sp+4),ra                                   
 8023a74:	b8 20 58 00 	mv r11,r1                                      
  Stack_Control *stack = &running->Start.Initial_stack;               
  void          *pattern_area = Stack_check_Get_pattern(stack);       
  char           name[32];                                            
                                                                      
  printk("BLOWN STACK!!!\n");                                         
 8023a78:	78 01 08 06 	mvhi r1,0x806                                  
 8023a7c:	38 21 44 18 	ori r1,r1,0x4418                               
  Thread_Control *running,                                            
  bool pattern_ok                                                     
) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE;                                 
                                                                      
void Stack_check_report_blown_task(Thread_Control *running, bool pattern_ok)
{                                                                     
 8023a80:	20 4c 00 ff 	andi r12,r2,0xff                               
  Stack_Control *stack = &running->Start.Initial_stack;               
  void          *pattern_area = Stack_check_Get_pattern(stack);       
 8023a84:	29 6d 00 b8 	lw r13,(r11+184)                               
  char           name[32];                                            
                                                                      
  printk("BLOWN STACK!!!\n");                                         
 8023a88:	fb ff 79 ab 	calli 8002134 <printk>                         
  printk("task control block: 0x%08" PRIxPTR "\n", running);          
 8023a8c:	78 01 08 06 	mvhi r1,0x806                                  
 8023a90:	38 21 44 28 	ori r1,r1,0x4428                               
 8023a94:	b9 60 10 00 	mv r2,r11                                      
 8023a98:	fb ff 79 a7 	calli 8002134 <printk>                         
  printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);   
 8023a9c:	29 62 00 08 	lw r2,(r11+8)                                  
 8023aa0:	78 01 08 06 	mvhi r1,0x806                                  
 8023aa4:	38 21 44 44 	ori r1,r1,0x4444                               
 8023aa8:	fb ff 79 a3 	calli 8002134 <printk>                         
  printk(                                                             
 8023aac:	29 62 00 0c 	lw r2,(r11+12)                                 
 8023ab0:	78 01 08 06 	mvhi r1,0x806                                  
 8023ab4:	38 21 44 58 	ori r1,r1,0x4458                               
 8023ab8:	fb ff 79 9f 	calli 8002134 <printk>                         
    "task name: 0x%08" PRIx32 "\n",                                   
    running->Object.name.name_u32                                     
  );                                                                  
  printk(                                                             
 8023abc:	29 61 00 08 	lw r1,(r11+8)                                  
 8023ac0:	37 83 00 14 	addi r3,sp,20                                  
 8023ac4:	34 02 00 20 	mvi r2,32                                      
 8023ac8:	fb ff a5 11 	calli 800cf0c <rtems_object_get_name>          
 8023acc:	b8 20 10 00 	mv r2,r1                                       
 8023ad0:	78 01 08 06 	mvhi r1,0x806                                  
 8023ad4:	38 21 44 6c 	ori r1,r1,0x446c                               
 8023ad8:	fb ff 79 97 	calli 8002134 <printk>                         
  );                                                                  
  printk(                                                             
    "task stack area (%lu Bytes): 0x%08" PRIxPTR " .. 0x%08" PRIxPTR "\n",
    (unsigned long) stack->size,                                      
    stack->area,                                                      
    ((char *) stack->area + stack->size)                              
 8023adc:	29 63 00 b8 	lw r3,(r11+184)                                
 8023ae0:	29 62 00 b4 	lw r2,(r11+180)                                
  );                                                                  
  printk(                                                             
    "task name string: %s\n",                                         
    rtems_object_get_name(running->Object.id, sizeof(name), name)     
  );                                                                  
  printk(                                                             
 8023ae4:	78 01 08 06 	mvhi r1,0x806                                  
 8023ae8:	38 21 44 84 	ori r1,r1,0x4484                               
 8023aec:	b4 62 20 00 	add r4,r3,r2                                   
 8023af0:	fb ff 79 91 	calli 8002134 <printk>                         
    "task stack area (%lu Bytes): 0x%08" PRIxPTR " .. 0x%08" PRIxPTR "\n",
    (unsigned long) stack->size,                                      
    stack->area,                                                      
    ((char *) stack->area + stack->size)                              
  );                                                                  
  if (!pattern_ok) {                                                  
 8023af4:	45 80 00 04 	be r12,r0,8023b04 <Stack_check_report_blown_task+0xa4><== ALWAYS TAKEN
          rtems_configuration_get_user_multiprocessing_table()->node  
      );                                                              
    }                                                                 
  #endif                                                              
                                                                      
  rtems_fatal(                                                        
 8023af8:	29 62 00 0c 	lw r2,(r11+12)                                 
 8023afc:	34 01 00 09 	mvi r1,9                                       
 8023b00:	fb ff 80 42 	calli 8003c08 <rtems_fatal>                    
    (unsigned long) stack->size,                                      
    stack->area,                                                      
    ((char *) stack->area + stack->size)                              
  );                                                                  
  if (!pattern_ok) {                                                  
    printk(                                                           
 8023b04:	78 01 08 06 	mvhi r1,0x806                                  
 8023b08:	38 21 44 b4 	ori r1,r1,0x44b4                               
 8023b0c:	34 02 00 10 	mvi r2,16                                      
 8023b10:	35 a3 00 08 	addi r3,r13,8                                  
 8023b14:	35 a4 00 18 	addi r4,r13,24                                 
 8023b18:	fb ff 79 87 	calli 8002134 <printk>                         
 8023b1c:	e3 ff ff f7 	bi 8023af8 <Stack_check_report_blown_task+0x98>
                                                                      

0800473c <_API_extensions_Add_post_switch>: */ RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain( const Chain_Node *node ) { return (node->next == NULL) && (node->previous == NULL);
 800473c:	28 22 00 00 	lw r2,(r1+0)                                   
 8004740:	44 40 00 02 	be r2,r0,8004748 <_API_extensions_Add_post_switch+0xc>
 8004744:	c3 a0 00 00 	ret                                            
 8004748:	28 23 00 04 	lw r3,(r1+4)                                   
 800474c:	5c 62 ff fe 	bne r3,r2,8004744 <_API_extensions_Add_post_switch+0x8><== NEVER TAKEN
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8004750:	78 02 08 02 	mvhi r2,0x802                                  
 8004754:	38 42 09 c8 	ori r2,r2,0x9c8                                
 8004758:	28 44 00 08 	lw r4,(r2+8)                                   
                                                                      
  the_node->next = tail;                                              
 800475c:	78 03 08 02 	mvhi r3,0x802                                  
 8004760:	38 63 09 cc 	ori r3,r3,0x9cc                                
 8004764:	58 23 00 00 	sw (r1+0),r3                                   
  tail->previous = the_node;                                          
 8004768:	58 41 00 08 	sw (r2+8),r1                                   
  old_last->next = the_node;                                          
 800476c:	58 81 00 00 	sw (r4+0),r1                                   
  the_node->previous = old_last;                                      
 8004770:	58 24 00 04 	sw (r1+4),r4                                   
 8004774:	c3 a0 00 00 	ret                                            
                                                                      

08004778 <_API_extensions_Run_postdriver>: } } #endif void _API_extensions_Run_postdriver( void ) {
 8004778:	37 9c ff f4 	addi sp,sp,-12                                 
 800477c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004780:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004784:	5b 9d 00 04 	sw (sp+4),ra                                   
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
  }                                                                   
}                                                                     
 8004788:	78 01 08 02 	mvhi r1,0x802                                  
 800478c:	38 21 0a 88 	ori r1,r1,0xa88                                
 8004790:	28 2b 00 00 	lw r11,(r1+0)                                  
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 8004794:	78 0c 08 02 	mvhi r12,0x802                                 
 8004798:	39 8c 0a 8c 	ori r12,r12,0xa8c                              
 800479c:	45 6c 00 05 	be r11,r12,80047b0 <_API_extensions_Run_postdriver+0x38><== NEVER TAKEN
     *  Currently all APIs configure this hook so it is always non-NULL.
     */                                                               
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
 80047a0:	29 61 00 08 	lw r1,(r11+8)                                  
 80047a4:	d8 20 00 00 	call r1                                        
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
        !_Chain_Is_tail( &_API_extensions_List, the_node ) ;          
        the_node = the_node->next ) {                                 
 80047a8:	29 6b 00 00 	lw r11,(r11+0)                                 
void _API_extensions_Run_postdriver( void )                           
{                                                                     
  Chain_Node             *the_node;                                   
  API_extensions_Control *the_extension;                              
                                                                      
  for ( the_node = _Chain_First( &_API_extensions_List );             
 80047ac:	5d 6c ff fd 	bne r11,r12,80047a0 <_API_extensions_Run_postdriver+0x28>
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)              
    if ( the_extension->postdriver_hook )                             
#endif                                                                
      (*the_extension->postdriver_hook)();                            
  }                                                                   
}                                                                     
 80047b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047b4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80047b8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80047bc:	37 9c 00 0c 	addi sp,sp,12                                  
 80047c0:	c3 a0 00 00 	ret                                            
                                                                      

08006fe8 <_CORE_RWLock_Release>: #include <rtems/score/watchdog.h> CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock ) {
 8006fe8:	37 9c ff f4 	addi sp,sp,-12                                 
 8006fec:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8006ff0:	5b 8c 00 08 	sw (sp+8),r12                                  
 8006ff4:	5b 9d 00 04 	sw (sp+4),ra                                   
  ISR_Level       level;                                              
  Thread_Control *executing = _Thread_Executing;                      
 8006ff8:	78 02 08 01 	mvhi r2,0x801                                  
 8006ffc:	38 42 9d a0 	ori r2,r2,0x9da0                               
 8007000:	28 43 00 10 	lw r3,(r2+16)                                  
#include <rtems/score/watchdog.h>                                     
                                                                      
CORE_RWLock_Status _CORE_RWLock_Release(                              
  CORE_RWLock_Control  *the_rwlock                                    
)                                                                     
{                                                                     
 8007004:	b8 20 58 00 	mv r11,r1                                      
   *  Otherwise, we have to block.                                    
   *  If locked for reading and no waiters, then OK to read.          
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
 8007008:	90 00 08 00 	rcsr r1,IE                                     
 800700c:	34 02 ff fe 	mvi r2,-2                                      
 8007010:	a0 22 10 00 	and r2,r1,r2                                   
 8007014:	d0 02 00 00 	wcsr IE,r2                                     
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
 8007018:	29 62 00 44 	lw r2,(r11+68)                                 
 800701c:	44 40 00 2f 	be r2,r0,80070d8 <_CORE_RWLock_Release+0xf0>   
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
 8007020:	34 04 00 01 	mvi r4,1                                       
 8007024:	44 44 00 22 	be r2,r4,80070ac <_CORE_RWLock_Release+0xc4>   
          return CORE_RWLOCK_SUCCESSFUL;                              
        }                                                             
    }                                                                 
                                                                      
    /* CORE_RWLOCK_LOCKED_FOR_WRITING or READING with readers */      
    executing->Wait.return_code = CORE_RWLOCK_SUCCESSFUL;             
 8007028:	58 60 00 34 	sw (r3+52),r0                                  
                                                                      
    /*                                                                
     * Implicitly transition to "unlocked" and find another thread interested
     * in obtaining this rwlock.                                      
     */                                                               
    the_rwlock->current_state = CORE_RWLOCK_UNLOCKED;                 
 800702c:	59 60 00 44 	sw (r11+68),r0                                 
  _ISR_Enable( level );                                               
 8007030:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
 8007034:	b9 60 08 00 	mv r1,r11                                      
 8007038:	f8 00 08 a5 	calli 80092cc <_Thread_queue_Dequeue>          
                                                                      
  if ( next ) {                                                       
 800703c:	44 20 00 16 	be r1,r0,8007094 <_CORE_RWLock_Release+0xac>   
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
 8007040:	28 22 00 30 	lw r2,(r1+48)                                  
 8007044:	34 01 00 01 	mvi r1,1                                       
 8007048:	44 41 00 2d 	be r2,r1,80070fc <_CORE_RWLock_Release+0x114>  
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 800704c:	29 62 00 48 	lw r2,(r11+72)                                 
    the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_READING;       
 8007050:	59 61 00 44 	sw (r11+68),r1                                 
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 8007054:	34 0c 00 01 	mvi r12,1                                      
    }                                                                 
                                                                      
    /*                                                                
     * Must be CORE_RWLOCK_THREAD_WAITING_FOR_READING                 
     */                                                               
    the_rwlock->number_of_readers += 1;                               
 8007058:	34 41 00 01 	addi r1,r2,1                                   
 800705c:	59 61 00 48 	sw (r11+72),r1                                 
 8007060:	e0 00 00 07 	bi 800707c <_CORE_RWLock_Release+0x94>         
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 8007064:	28 63 00 30 	lw r3,(r3+48)                                  
 8007068:	44 6c 00 0b 	be r3,r12,8007094 <_CORE_RWLock_Release+0xac>  <== NEVER TAKEN
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
 800706c:	29 63 00 48 	lw r3,(r11+72)                                 
 8007070:	34 63 00 01 	addi r3,r3,1                                   
 8007074:	59 63 00 48 	sw (r11+72),r3                                 
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
 8007078:	f8 00 09 bd 	calli 800976c <_Thread_queue_Extract>          
                                                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
 800707c:	b9 60 08 00 	mv r1,r11                                      
 8007080:	f8 00 0a 09 	calli 80098a4 <_Thread_queue_First>            
 8007084:	b8 20 18 00 	mv r3,r1                                       
      if ( !next ||                                                   
           next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE )
        return CORE_RWLOCK_SUCCESSFUL;                                
      the_rwlock->number_of_readers += 1;                             
      _Thread_queue_Extract( &the_rwlock->Wait_queue, next );         
 8007088:	b8 20 10 00 	mv r2,r1                                       
 800708c:	b9 60 08 00 	mv r1,r11                                      
    /*                                                                
     * Now see if more readers can be let go.                         
     */                                                               
    while ( 1 ) {                                                     
      next = _Thread_queue_First( &the_rwlock->Wait_queue );          
      if ( !next ||                                                   
 8007090:	5c 60 ff f5 	bne r3,r0,8007064 <_CORE_RWLock_Release+0x7c>  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 8007094:	34 01 00 00 	mvi r1,0                                       
 8007098:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800709c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80070a0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80070a4:	37 9c 00 0c 	addi sp,sp,12                                  
 80070a8:	c3 a0 00 00 	ret                                            
      _ISR_Enable( level );                                           
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
      return CORE_RWLOCK_SUCCESSFUL;                                  
    }                                                                 
    if ( the_rwlock->current_state == CORE_RWLOCK_LOCKED_FOR_READING ) {
	the_rwlock->number_of_readers -= 1;                                  
 80070ac:	29 62 00 48 	lw r2,(r11+72)                                 
 80070b0:	34 42 ff ff 	addi r2,r2,-1                                  
 80070b4:	59 62 00 48 	sw (r11+72),r2                                 
	if ( the_rwlock->number_of_readers != 0 ) {                          
 80070b8:	44 40 ff dc 	be r2,r0,8007028 <_CORE_RWLock_Release+0x40>   
          /* must be unlocked again */                                
	  _ISR_Enable( level );                                              
 80070bc:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 80070c0:	34 01 00 00 	mvi r1,0                                       
 80070c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80070c8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80070cc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80070d0:	37 9c 00 0c 	addi sp,sp,12                                  
 80070d4:	c3 a0 00 00 	ret                                            
   *  If any thread is waiting, then we wait.                         
   */                                                                 
                                                                      
  _ISR_Disable( level );                                              
    if ( the_rwlock->current_state == CORE_RWLOCK_UNLOCKED){          
      _ISR_Enable( level );                                           
 80070d8:	d0 01 00 00 	wcsr IE,r1                                     
      executing->Wait.return_code = CORE_RWLOCK_UNAVAILABLE;          
 80070dc:	34 01 00 02 	mvi r1,2                                       
 80070e0:	58 61 00 34 	sw (r3+52),r1                                  
  }                                                                   
                                                                      
  /* indentation is to match _ISR_Disable at top */                   
                                                                      
  return CORE_RWLOCK_SUCCESSFUL;                                      
}                                                                     
 80070e4:	34 01 00 00 	mvi r1,0                                       
 80070e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80070ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80070f0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80070f4:	37 9c 00 0c 	addi sp,sp,12                                  
 80070f8:	c3 a0 00 00 	ret                                            
                                                                      
  next = _Thread_queue_Dequeue( &the_rwlock->Wait_queue );            
                                                                      
  if ( next ) {                                                       
    if ( next->Wait.option == CORE_RWLOCK_THREAD_WAITING_FOR_WRITE ) {
      the_rwlock->current_state = CORE_RWLOCK_LOCKED_FOR_WRITING;     
 80070fc:	34 01 00 02 	mvi r1,2                                       
 8007100:	59 61 00 44 	sw (r11+68),r1                                 
      return CORE_RWLOCK_SUCCESSFUL;                                  
 8007104:	e3 ff ff e4 	bi 8007094 <_CORE_RWLock_Release+0xac>         
                                                                      

08007108 <_CORE_RWLock_Timeout>: void _CORE_RWLock_Timeout( Objects_Id id, void *ignored ) {
 8007108:	37 9c ff f8 	addi sp,sp,-8                                  
 800710c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8007110:	37 82 00 08 	addi r2,sp,8                                   
 8007114:	f8 00 07 6b 	calli 8008ec0 <_Thread_Get>                    
  switch ( location ) {                                               
 8007118:	2b 82 00 08 	lw r2,(sp+8)                                   
 800711c:	5c 40 00 07 	bne r2,r0,8007138 <_CORE_RWLock_Timeout+0x30>  <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 8007120:	f8 00 0a 1f 	calli 800999c <_Thread_queue_Process_timeout>  
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8007124:	78 01 08 01 	mvhi r1,0x801                                  
 8007128:	38 21 99 08 	ori r1,r1,0x9908                               
 800712c:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    --level;                                                          
 8007130:	34 42 ff ff 	addi r2,r2,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 8007134:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 8007138:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800713c:	37 9c 00 08 	addi sp,sp,8                                   
 8007140:	c3 a0 00 00 	ret                                            
                                                                      

0800f690 <_CORE_message_queue_Initialize>: CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) {
 800f690:	37 9c ff e8 	addi sp,sp,-24                                 
 800f694:	5b 8b 00 18 	sw (sp+24),r11                                 
 800f698:	5b 8c 00 14 	sw (sp+20),r12                                 
 800f69c:	5b 8d 00 10 	sw (sp+16),r13                                 
 800f6a0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800f6a4:	5b 8f 00 08 	sw (sp+8),r15                                  
 800f6a8:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f6ac:	b8 20 58 00 	mv r11,r1                                      
  size_t message_buffering_required = 0;                              
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
 800f6b0:	58 20 00 48 	sw (r1+72),r0                                  
  the_message_queue->maximum_message_size       = maximum_message_size;
 800f6b4:	58 24 00 4c 	sw (r1+76),r4                                  
    CORE_message_queue_Control        *the_message_queue,             
    CORE_message_queue_Notify_Handler  the_handler,                   
    void                              *the_argument                   
  )                                                                   
  {                                                                   
    the_message_queue->notify_handler  = the_handler;                 
 800f6b8:	58 20 00 60 	sw (r1+96),r0                                  
    the_message_queue->notify_argument = the_argument;                
 800f6bc:	58 20 00 64 	sw (r1+100),r0                                 
)                                                                     
{                                                                     
  size_t message_buffering_required = 0;                              
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
 800f6c0:	59 63 00 44 	sw (r11+68),r3                                 
  /*                                                                  
   * Check if allocated_message_size is aligned to uintptr-size boundary.
   * If not, it will increase allocated_message_size to multiplicity of pointer
   * size.                                                            
   */                                                                 
  if (allocated_message_size & (sizeof(uintptr_t) - 1)) {             
 800f6c4:	20 81 00 03 	andi r1,r4,0x3                                 
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
 800f6c8:	b8 60 60 00 	mv r12,r3                                      
 800f6cc:	b8 40 78 00 	mv r15,r2                                      
  /*                                                                  
   * Check if allocated_message_size is aligned to uintptr-size boundary.
   * If not, it will increase allocated_message_size to multiplicity of pointer
   * size.                                                            
   */                                                                 
  if (allocated_message_size & (sizeof(uintptr_t) - 1)) {             
 800f6d0:	b8 80 28 00 	mv r5,r4                                       
 800f6d4:	44 20 00 06 	be r1,r0,800f6ec <_CORE_message_queue_Initialize+0x5c>
    allocated_message_size += sizeof(uintptr_t);                      
 800f6d8:	34 85 00 04 	addi r5,r4,4                                   
    allocated_message_size &= ~(sizeof(uintptr_t) - 1);               
 800f6dc:	34 01 ff fc 	mvi r1,-4                                      
 800f6e0:	a0 a1 28 00 	and r5,r5,r1                                   
  /*                                                                  
   * Check for an overflow. It can occur while increasing allocated_message_size
   * to multiplicity of uintptr_t above.                              
   */                                                                 
  if (allocated_message_size < maximum_message_size)                  
    return false;                                                     
 800f6e4:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  /*                                                                  
   * Check for an overflow. It can occur while increasing allocated_message_size
   * to multiplicity of uintptr_t above.                              
   */                                                                 
  if (allocated_message_size < maximum_message_size)                  
 800f6e8:	54 85 00 1f 	bgu r4,r5,800f764 <_CORE_message_queue_Initialize+0xd4>
                                                                      
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  if ( !size_t_mult32_with_overflow(                                  
 800f6ec:	34 ae 00 14 	addi r14,r5,20                                 
  size_t  a,                                                          
  size_t  b,                                                          
  size_t *c                                                           
)                                                                     
{                                                                     
  long long x = (long long)a*b;                                       
 800f6f0:	34 01 00 00 	mvi r1,0                                       
 800f6f4:	b9 c0 10 00 	mv r2,r14                                      
 800f6f8:	34 03 00 00 	mvi r3,0                                       
 800f6fc:	b9 80 20 00 	mv r4,r12                                      
 800f700:	f8 00 48 05 	calli 8021714 <__muldi3>                       
   */                                                                 
  if ( !size_t_mult32_with_overflow(                                  
        (size_t) maximum_pending_messages,                            
        allocated_message_size + sizeof(CORE_message_queue_Buffer_control),
        &message_buffering_required ) )                               
    return false;                                                     
 800f704:	34 0d 00 00 	mvi r13,0                                      
  size_t *c                                                           
)                                                                     
{                                                                     
  long long x = (long long)a*b;                                       
                                                                      
  if ( x > SIZE_MAX )                                                 
 800f708:	48 20 00 17 	bg r1,r0,800f764 <_CORE_message_queue_Initialize+0xd4>
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
 800f70c:	b8 40 08 00 	mv r1,r2                                       
 800f710:	f8 00 0e f4 	calli 80132e0 <_Workspace_Allocate>            
    return false;                                                     
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
 800f714:	59 61 00 5c 	sw (r11+92),r1                                 
     _Workspace_Allocate( message_buffering_required );               
 800f718:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if (the_message_queue->message_buffers == 0)                        
 800f71c:	44 20 00 12 	be r1,r0,800f764 <_CORE_message_queue_Initialize+0xd4><== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize the pool of inactive messages, pending messages,     
   *  and set of waiting threads.                                     
   */                                                                 
  _Chain_Initialize (                                                 
 800f720:	b8 60 10 00 	mv r2,r3                                       
 800f724:	35 61 00 68 	addi r1,r11,104                                
 800f728:	b9 80 18 00 	mv r3,r12                                      
 800f72c:	b9 c0 20 00 	mv r4,r14                                      
 800f730:	fb ff ff b7 	calli 800f60c <_Chain_Initialize>              
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800f734:	35 62 00 54 	addi r2,r11,84                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 800f738:	35 61 00 50 	addi r1,r11,80                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800f73c:	59 61 00 58 	sw (r11+88),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800f740:	59 62 00 50 	sw (r11+80),r2                                 
  head->previous = NULL;                                              
 800f744:	59 60 00 54 	sw (r11+84),r0                                 
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
                                                                      
  _Thread_queue_Initialize(                                           
 800f748:	29 e2 00 00 	lw r2,(r15+0)                                  
 800f74c:	b9 60 08 00 	mv r1,r11                                      
 800f750:	34 03 00 80 	mvi r3,128                                     
 800f754:	64 42 00 01 	cmpei r2,r2,1                                  
 800f758:	34 04 00 06 	mvi r4,6                                       
 800f75c:	f8 00 0c 34 	calli 801282c <_Thread_queue_Initialize>       
       THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
 800f760:	34 0d 00 01 	mvi r13,1                                      
}                                                                     
 800f764:	b9 a0 08 00 	mv r1,r13                                      
 800f768:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f76c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800f770:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800f774:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800f778:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800f77c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800f780:	37 9c 00 18 	addi sp,sp,24                                  
 800f784:	c3 a0 00 00 	ret                                            
                                                                      

08004dd0 <_CORE_semaphore_Surrender>: CORE_semaphore_Status _CORE_semaphore_Surrender( CORE_semaphore_Control *the_semaphore, Objects_Id id, CORE_semaphore_API_mp_support_callout api_semaphore_mp_support ) {
 8004dd0:	37 9c ff f8 	addi sp,sp,-8                                  
 8004dd4:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004dd8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004ddc:	b8 20 58 00 	mv r11,r1                                      
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8004de0:	f8 00 08 a4 	calli 8007070 <_Thread_queue_Dequeue>          
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8004de4:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
 8004de8:	44 20 00 06 	be r1,r0,8004e00 <_CORE_semaphore_Surrender+0x30>
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8004dec:	b8 40 08 00 	mv r1,r2                                       
 8004df0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004df4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004df8:	37 9c 00 08 	addi sp,sp,8                                   
 8004dfc:	c3 a0 00 00 	ret                                            
    if ( !_Objects_Is_local_id( the_thread->Object.id ) )             
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
 8004e00:	90 00 08 00 	rcsr r1,IE                                     
 8004e04:	34 02 ff fe 	mvi r2,-2                                      
 8004e08:	a0 22 10 00 	and r2,r1,r2                                   
 8004e0c:	d0 02 00 00 	wcsr IE,r2                                     
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8004e10:	29 63 00 48 	lw r3,(r11+72)                                 
 8004e14:	29 64 00 40 	lw r4,(r11+64)                                 
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
 8004e18:	34 02 00 04 	mvi r2,4                                       
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
 8004e1c:	50 64 00 04 	bgeu r3,r4,8004e2c <_CORE_semaphore_Surrender+0x5c><== NEVER TAKEN
        the_semaphore->count += 1;                                    
 8004e20:	34 63 00 01 	addi r3,r3,1                                   
 8004e24:	59 63 00 48 	sw (r11+72),r3                                 
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
 8004e28:	34 02 00 00 	mvi r2,0                                       
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
 8004e2c:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8004e30:	b8 40 08 00 	mv r1,r2                                       
 8004e34:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004e38:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004e3c:	37 9c 00 08 	addi sp,sp,8                                   
 8004e40:	c3 a0 00 00 	ret                                            
                                                                      

08004970 <_Chain_Initialize>: Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size ) {
 8004970:	37 9c ff f0 	addi sp,sp,-16                                 
 8004974:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004978:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800497c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004980:	5b 9d 00 04 	sw (sp+4),ra                                   
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
 8004984:	58 20 00 04 	sw (r1+4),r0                                   
  Chain_Control *the_chain,                                           
  void           *starting_address,                                   
  size_t         number_nodes,                                        
  size_t         node_size                                            
)                                                                     
{                                                                     
 8004988:	b8 20 58 00 	mv r11,r1                                      
 800498c:	b8 40 60 00 	mv r12,r2                                      
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8004990:	34 2d 00 04 	addi r13,r1,4                                  
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 8004994:	44 60 00 10 	be r3,r0,80049d4 <_Chain_Initialize+0x64>      <== NEVER TAKEN
 8004998:	34 63 ff ff 	addi r3,r3,-1                                  
 800499c:	b8 60 10 00 	mv r2,r3                                       
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
 80049a0:	b9 80 28 00 	mv r5,r12                                      
)                                                                     
{                                                                     
  size_t count = number_nodes;                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *current = head;                                         
 80049a4:	b9 60 30 00 	mv r6,r11                                      
 80049a8:	e0 00 00 04 	bi 80049b8 <_Chain_Initialize+0x48>            
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 80049ac:	b8 a0 30 00 	mv r6,r5                                       
 80049b0:	34 63 ff ff 	addi r3,r3,-1                                  
    current->next  = next;                                            
    next->previous = current;                                         
    current        = next;                                            
    next           = (Chain_Node *)                                   
 80049b4:	b8 e0 28 00 	mv r5,r7                                       
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
    current->next  = next;                                            
 80049b8:	58 c5 00 00 	sw (r6+0),r5                                   
    next->previous = current;                                         
 80049bc:	58 a6 00 04 	sw (r5+4),r6                                   
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/chain.h>                                        
#include <rtems/score/isr.h>                                          
                                                                      
void _Chain_Initialize(                                               
 80049c0:	b4 a4 38 00 	add r7,r5,r4                                   
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 80049c4:	5c 60 ff fa 	bne r3,r0,80049ac <_Chain_Initialize+0x3c>     
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/chain.h>                                        
#include <rtems/score/isr.h>                                          
                                                                      
void _Chain_Initialize(                                               
 80049c8:	b8 80 08 00 	mv r1,r4                                       
 80049cc:	f8 00 5d 2a 	calli 801be74 <__mulsi3>                       
  Chain_Node *current = head;                                         
  Chain_Node *next = starting_address;                                
                                                                      
  head->previous = NULL;                                              
                                                                      
  while ( count-- ) {                                                 
 80049d0:	b5 81 08 00 	add r1,r12,r1                                  
    current        = next;                                            
    next           = (Chain_Node *)                                   
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
                                                                      
  current->next = tail;                                               
 80049d4:	58 2d 00 00 	sw (r1+0),r13                                  
  tail->previous = current;                                           
 80049d8:	59 61 00 08 	sw (r11+8),r1                                  
}                                                                     
 80049dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80049e0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80049e4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80049e8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80049ec:	37 9c 00 10 	addi sp,sp,16                                  
 80049f0:	c3 a0 00 00 	ret                                            
                                                                      

0800ec9c <_Event_Seize>: Thread_Control *executing, Event_Control *event, Thread_blocking_operation_States *sync_state, States_Control wait_state ) {
 800ec9c:	37 9c ff f0 	addi sp,sp,-16                                 
 800eca0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800eca4:	5b 8c 00 08 	sw (sp+8),r12                                  
 800eca8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set                  seized_events;                     
  rtems_event_set                  pending_events;                    
  ISR_Level                        level;                             
  Thread_blocking_operation_States current_sync_state;                
                                                                      
  executing->Wait.return_code = RTEMS_SUCCESSFUL;                     
 800ecac:	58 a0 00 34 	sw (r5+52),r0                                  
  Thread_Control                   *executing,                        
  Event_Control                    *event,                            
  Thread_blocking_operation_States *sync_state,                       
  States_Control                    wait_state                        
)                                                                     
{                                                                     
 800ecb0:	b8 a0 58 00 	mv r11,r5                                      
 800ecb4:	b8 e0 60 00 	mv r12,r7                                      
  ISR_Level                        level;                             
  Thread_blocking_operation_States current_sync_state;                
                                                                      
  executing->Wait.return_code = RTEMS_SUCCESSFUL;                     
                                                                      
  _ISR_Disable( level );                                              
 800ecb8:	90 00 48 00 	rcsr r9,IE                                     
 800ecbc:	34 05 ff fe 	mvi r5,-2                                      
 800ecc0:	a1 25 28 00 	and r5,r9,r5                                   
 800ecc4:	d0 05 00 00 	wcsr IE,r5                                     
  pending_events = event->pending_events;                             
 800ecc8:	28 c7 00 00 	lw r7,(r6+0)                                   
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800eccc:	a0 27 28 00 	and r5,r1,r7                                   
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
 800ecd0:	44 a0 00 04 	be r5,r0,800ece0 <_Event_Seize+0x44>           
 800ecd4:	44 25 00 27 	be r1,r5,800ed70 <_Event_Seize+0xd4>           
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800ecd8:	20 4a 00 02 	andi r10,r2,0x2                                
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
 800ecdc:	5d 40 00 25 	bne r10,r0,800ed70 <_Event_Seize+0xd4>         
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (                       
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_NO_WAIT) ? true : false;                
 800ece0:	20 46 00 01 	andi r6,r2,0x1                                 
    _ISR_Enable( level );                                             
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
 800ece4:	5c c0 00 1a 	bne r6,r0,800ed4c <_Event_Seize+0xb0>          
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = option_set;                     
  executing->Wait.count             = event_in;                       
 800ece8:	59 61 00 24 	sw (r11+36),r1                                 
   *  set properly when we are marked as in the event critical section.
   *                                                                  
   *  NOTE: Since interrupts are disabled, this isn't that much of an 
   *        issue but better safe than sorry.                         
   */                                                                 
  executing->Wait.option            = option_set;                     
 800ecec:	59 62 00 30 	sw (r11+48),r2                                 
  executing->Wait.count             = event_in;                       
  executing->Wait.return_argument   = event_out;                      
 800ecf0:	59 64 00 28 	sw (r11+40),r4                                 
                                                                      
  *sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;           
 800ecf4:	34 01 00 01 	mvi r1,1                                       
 800ecf8:	59 81 00 00 	sw (r12+0),r1                                  
                                                                      
  _ISR_Enable( level );                                               
 800ecfc:	d0 09 00 00 	wcsr IE,r9                                     
                                                                      
  if ( ticks ) {                                                      
 800ed00:	5c 60 00 2c 	bne r3,r0,800edb0 <_Event_Seize+0x114>         
      sync_state                                                      
    );                                                                
    _Watchdog_Insert_ticks( &executing->Timer, ticks );               
  }                                                                   
                                                                      
  _Thread_Set_state( executing, wait_state );                         
 800ed04:	b9 60 08 00 	mv r1,r11                                      
 800ed08:	b9 00 10 00 	mv r2,r8                                       
 800ed0c:	fb ff e6 d6 	calli 8008864 <_Thread_Set_state>              
                                                                      
  _ISR_Disable( level );                                              
 800ed10:	90 00 18 00 	rcsr r3,IE                                     
 800ed14:	34 01 ff fe 	mvi r1,-2                                      
 800ed18:	a0 61 08 00 	and r1,r3,r1                                   
 800ed1c:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
  current_sync_state = *sync_state;                                   
 800ed20:	29 81 00 00 	lw r1,(r12+0)                                  
  *sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;               
  if ( current_sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
 800ed24:	34 02 00 01 	mvi r2,1                                       
  _Thread_Set_state( executing, wait_state );                         
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  current_sync_state = *sync_state;                                   
  *sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;               
 800ed28:	59 80 00 00 	sw (r12+0),r0                                  
  if ( current_sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
 800ed2c:	44 22 00 1b 	be r1,r2,800ed98 <_Event_Seize+0xfc>           <== ALWAYS TAKEN
   *  The blocking thread was satisfied by an ISR or timed out.       
   *                                                                  
   *  WARNING! Entering with interrupts disabled and returning with interrupts
   *  enabled!                                                        
   */                                                                 
  _Thread_blocking_operation_Cancel( current_sync_state, executing, level );
 800ed30:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800ed34:	f8 00 05 40 	calli 8010234 <_Thread_blocking_operation_Cancel><== NOT EXECUTED
}                                                                     
 800ed38:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800ed3c:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800ed40:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800ed44:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 800ed48:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    *event_out = seized_events;                                       
    return;                                                           
  }                                                                   
                                                                      
  if ( _Options_Is_no_wait( option_set ) ) {                          
    _ISR_Enable( level );                                             
 800ed4c:	d0 09 00 00 	wcsr IE,r9                                     
    executing->Wait.return_code = RTEMS_UNSATISFIED;                  
 800ed50:	34 01 00 0d 	mvi r1,13                                      
 800ed54:	59 61 00 34 	sw (r11+52),r1                                 
    *event_out = seized_events;                                       
 800ed58:	58 85 00 00 	sw (r4+0),r5                                   
   *                                                                  
   *  WARNING! Entering with interrupts disabled and returning with interrupts
   *  enabled!                                                        
   */                                                                 
  _Thread_blocking_operation_Cancel( current_sync_state, executing, level );
}                                                                     
 800ed5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ed60:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800ed64:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800ed68:	37 9c 00 10 	addi sp,sp,16                                  
 800ed6c:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(               
 rtems_event_set the_event_set,                                       
 rtems_event_set the_mask                                             
)                                                                     
{                                                                     
   return ( the_event_set & ~(the_mask) );                            
 800ed70:	a4 a0 08 00 	not r1,r5                                      
 800ed74:	a0 27 38 00 	and r7,r1,r7                                   
  pending_events = event->pending_events;                             
  seized_events  = _Event_sets_Get( pending_events, event_in );       
                                                                      
  if ( !_Event_sets_Is_empty( seized_events ) &&                      
       (seized_events == event_in || _Options_Is_any( option_set )) ) {
    event->pending_events =                                           
 800ed78:	58 c7 00 00 	sw (r6+0),r7                                   
      _Event_sets_Clear( pending_events, seized_events );             
    _ISR_Enable( level );                                             
 800ed7c:	d0 09 00 00 	wcsr IE,r9                                     
    *event_out = seized_events;                                       
 800ed80:	58 85 00 00 	sw (r4+0),r5                                   
   *                                                                  
   *  WARNING! Entering with interrupts disabled and returning with interrupts
   *  enabled!                                                        
   */                                                                 
  _Thread_blocking_operation_Cancel( current_sync_state, executing, level );
}                                                                     
 800ed84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ed88:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800ed8c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800ed90:	37 9c 00 10 	addi sp,sp,16                                  
 800ed94:	c3 a0 00 00 	ret                                            
  _ISR_Disable( level );                                              
                                                                      
  current_sync_state = *sync_state;                                   
  *sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;               
  if ( current_sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
    _ISR_Enable( level );                                             
 800ed98:	d0 03 00 00 	wcsr IE,r3                                     
   *                                                                  
   *  WARNING! Entering with interrupts disabled and returning with interrupts
   *  enabled!                                                        
   */                                                                 
  _Thread_blocking_operation_Cancel( current_sync_state, executing, level );
}                                                                     
 800ed9c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800eda0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800eda4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800eda8:	37 9c 00 10 	addi sp,sp,16                                  
 800edac:	c3 a0 00 00 	ret                                            
  *sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;           
                                                                      
  _ISR_Enable( level );                                               
                                                                      
  if ( ticks ) {                                                      
    _Watchdog_Initialize(                                             
 800edb0:	29 62 00 08 	lw r2,(r11+8)                                  
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 800edb4:	78 01 08 00 	mvhi r1,0x800                                  
 800edb8:	38 21 ef 98 	ori r1,r1,0xef98                               
 800edbc:	59 61 00 64 	sw (r11+100),r1                                
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800edc0:	78 01 08 01 	mvhi r1,0x801                                  
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
 800edc4:	59 62 00 68 	sw (r11+104),r2                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 800edc8:	59 60 00 50 	sw (r11+80),r0                                 
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
 800edcc:	59 6c 00 6c 	sw (r11+108),r12                               
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800edd0:	59 63 00 54 	sw (r11+84),r3                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800edd4:	38 21 aa 10 	ori r1,r1,0xaa10                               
 800edd8:	35 62 00 48 	addi r2,r11,72                                 
 800eddc:	5b 88 00 10 	sw (sp+16),r8                                  
 800ede0:	fb ff e7 b9 	calli 8008cc4 <_Watchdog_Insert>               
 800ede4:	2b 88 00 10 	lw r8,(sp+16)                                  
 800ede8:	e3 ff ff c7 	bi 800ed04 <_Event_Seize+0x68>                 
                                                                      

0800a400 <_Event_Surrender>: rtems_event_set event_in, Event_Control *event, Thread_blocking_operation_States *sync_state, States_Control wait_state ) {
 800a400:	37 9c ff f4 	addi sp,sp,-12                                 
 800a404:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800a408:	5b 8c 00 08 	sw (sp+8),r12                                  
 800a40c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_event_set pending_events;                                     
  rtems_event_set event_condition;                                    
  rtems_event_set seized_events;                                      
  rtems_option    option_set;                                         
                                                                      
  option_set = the_thread->Wait.option;                               
 800a410:	28 2a 00 30 	lw r10,(r1+48)                                 
  rtems_event_set                   event_in,                         
  Event_Control                    *event,                            
  Thread_blocking_operation_States *sync_state,                       
  States_Control                    wait_state                        
)                                                                     
{                                                                     
 800a414:	b8 20 58 00 	mv r11,r1                                      
  rtems_event_set seized_events;                                      
  rtems_option    option_set;                                         
                                                                      
  option_set = the_thread->Wait.option;                               
                                                                      
  _ISR_Disable( level );                                              
 800a418:	90 00 08 00 	rcsr r1,IE                                     
 800a41c:	34 09 ff fe 	mvi r9,-2                                      
 800a420:	a0 29 48 00 	and r9,r1,r9                                   
 800a424:	d0 09 00 00 	wcsr IE,r9                                     
RTEMS_INLINE_ROUTINE void _Event_sets_Post(                           
  rtems_event_set  the_new_events,                                    
  rtems_event_set *the_event_set                                      
)                                                                     
{                                                                     
  *the_event_set |= the_new_events;                                   
 800a428:	28 66 00 00 	lw r6,(r3+0)                                   
  _Event_sets_Post( event_in, &event->pending_events );               
  pending_events  = event->pending_events;                            
  event_condition = the_thread->Wait.count;                           
 800a42c:	29 68 00 24 	lw r8,(r11+36)                                 
 800a430:	b8 46 10 00 	or r2,r2,r6                                    
 800a434:	58 62 00 00 	sw (r3+0),r2                                   
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
 800a438:	a0 48 30 00 	and r6,r2,r8                                   
  seized_events = _Event_sets_Get( pending_events, event_condition ); 
                                                                      
  /*                                                                  
   *  No events were seized in this operation                         
   */                                                                 
  if ( _Event_sets_Is_empty( seized_events ) ) {                      
 800a43c:	44 c0 00 32 	be r6,r0,800a504 <_Event_Surrender+0x104>      
                                                                      
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
 800a440:	78 07 08 02 	mvhi r7,0x802                                  
 800a444:	38 e7 0d e0 	ori r7,r7,0xde0                                
 800a448:	28 ec 00 08 	lw r12,(r7+8)                                  
 800a44c:	45 80 00 03 	be r12,r0,800a458 <_Event_Surrender+0x58>      
 800a450:	28 e7 00 10 	lw r7,(r7+16)                                  
 800a454:	45 67 00 1d 	be r11,r7,800a4c8 <_Event_Surrender+0xc8>      <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
 800a458:	29 64 00 10 	lw r4,(r11+16)                                 
 800a45c:	a0 a4 28 00 	and r5,r5,r4                                   
  }                                                                   
                                                                      
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Are_set( the_thread->current_state, wait_state ) ) {   
 800a460:	44 a0 00 29 	be r5,r0,800a504 <_Event_Surrender+0x104>      
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
 800a464:	45 06 00 03 	be r8,r6,800a470 <_Event_Surrender+0x70>       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Options_Is_any (                           
  rtems_option option_set                                             
)                                                                     
{                                                                     
   return (option_set & RTEMS_EVENT_ANY) ? true : false;              
 800a468:	21 4a 00 02 	andi r10,r10,0x2                               
 800a46c:	45 40 00 26 	be r10,r0,800a504 <_Event_Surrender+0x104>     <== NEVER TAKEN
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(               
 rtems_event_set the_event_set,                                       
 rtems_event_set the_mask                                             
)                                                                     
{                                                                     
   return ( the_event_set & ~(the_mask) );                            
 800a470:	a4 c0 20 00 	not r4,r6                                      
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800a474:	29 65 00 28 	lw r5,(r11+40)                                 
 800a478:	a0 82 10 00 	and r2,r4,r2                                   
  /*                                                                  
   *  Otherwise, this is a normal send to another thread              
   */                                                                 
  if ( _States_Are_set( the_thread->current_state, wait_state ) ) {   
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
      event->pending_events = _Event_sets_Clear(                      
 800a47c:	58 62 00 00 	sw (r3+0),r2                                   
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
 800a480:	59 60 00 24 	sw (r11+36),r0                                 
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800a484:	58 a6 00 00 	sw (r5+0),r6                                   
                                                                      
      _ISR_Flash( level );                                            
 800a488:	d0 01 00 00 	wcsr IE,r1                                     
 800a48c:	d0 09 00 00 	wcsr IE,r9                                     
                                                                      
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
 800a490:	29 63 00 50 	lw r3,(r11+80)                                 
 800a494:	34 02 00 02 	mvi r2,2                                       
 800a498:	44 62 00 21 	be r3,r2,800a51c <_Event_Surrender+0x11c>      
        _ISR_Enable( level );                                         
 800a49c:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800a4a0:	78 01 08 01 	mvhi r1,0x801                                  
 800a4a4:	38 21 dc 0c 	ori r1,r1,0xdc0c                               
 800a4a8:	28 22 00 00 	lw r2,(r1+0)                                   
 800a4ac:	b9 60 08 00 	mv r1,r11                                      
 800a4b0:	f8 00 02 da 	calli 800b018 <_Thread_Clear_state>            
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
}                                                                     
 800a4b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a4b8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a4bc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a4c0:	37 9c 00 0c 	addi sp,sp,12                                  
 800a4c4:	c3 a0 00 00 	ret                                            
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
 800a4c8:	28 8c 00 00 	lw r12,(r4+0)                                  <== NOT EXECUTED
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
 800a4cc:	34 07 00 01 	mvi r7,1                                       <== NOT EXECUTED
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
 800a4d0:	35 8c ff ff 	addi r12,r12,-1                                <== NOT EXECUTED
  /*                                                                  
   *  If we are in an ISR and sending to the current thread, then     
   *  we have a critical section issue to deal with.                  
   */                                                                 
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
 800a4d4:	55 87 ff e1 	bgu r12,r7,800a458 <_Event_Surrender+0x58>     <== NOT EXECUTED
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
        (*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
 800a4d8:	45 06 00 03 	be r8,r6,800a4e4 <_Event_Surrender+0xe4>       <== NOT EXECUTED
 800a4dc:	21 4a 00 02 	andi r10,r10,0x2                               <== NOT EXECUTED
 800a4e0:	45 40 00 09 	be r10,r0,800a504 <_Event_Surrender+0x104>     <== NOT EXECUTED
 800a4e4:	a4 c0 38 00 	not r7,r6                                      <== NOT EXECUTED
      event->pending_events = _Event_sets_Clear(                      
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800a4e8:	29 65 00 28 	lw r5,(r11+40)                                 <== NOT EXECUTED
 800a4ec:	a0 e2 10 00 	and r2,r7,r2                                   <== NOT EXECUTED
  if ( _ISR_Is_in_progress() &&                                       
       _Thread_Is_executing( the_thread ) &&                          
       ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||         
        (*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
      event->pending_events = _Event_sets_Clear(                      
 800a4f0:	58 62 00 00 	sw (r3+0),r2                                   <== NOT EXECUTED
        pending_events,                                               
        seized_events                                                 
      );                                                              
      the_thread->Wait.count = 0;                                     
 800a4f4:	59 60 00 24 	sw (r11+36),r0                                 <== NOT EXECUTED
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
 800a4f8:	58 a6 00 00 	sw (r5+0),r6                                   <== NOT EXECUTED
      *sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;              
 800a4fc:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 800a500:	58 82 00 00 	sw (r4+0),r2                                   <== NOT EXECUTED
        _Thread_Unblock( the_thread );                                
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
 800a504:	d0 01 00 00 	wcsr IE,r1                                     
}                                                                     
 800a508:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a50c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a510:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a514:	37 9c 00 0c 	addi sp,sp,12                                  
 800a518:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800a51c:	34 02 00 03 	mvi r2,3                                       
 800a520:	59 62 00 50 	sw (r11+80),r2                                 
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
        _ISR_Enable( level );                                         
        _Thread_Unblock( the_thread );                                
      } else {                                                        
        _Watchdog_Deactivate( &the_thread->Timer );                   
        _ISR_Enable( level );                                         
 800a524:	d0 01 00 00 	wcsr IE,r1                                     
        (void) _Watchdog_Remove( &the_thread->Timer );                
 800a528:	35 61 00 48 	addi r1,r11,72                                 
 800a52c:	fb ff f5 e9 	calli 8007cd0 <_Watchdog_Remove>               
 800a530:	78 03 08 01 	mvhi r3,0x801                                  
 800a534:	38 63 dc 0c 	ori r3,r3,0xdc0c                               
 800a538:	28 62 00 00 	lw r2,(r3+0)                                   
 800a53c:	b9 60 08 00 	mv r1,r11                                      
 800a540:	f8 00 02 b6 	calli 800b018 <_Thread_Clear_state>            
 800a544:	e3 ff ff f1 	bi 800a508 <_Event_Surrender+0x108>            
                                                                      

0800ef98 <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *arg ) {
 800ef98:	37 9c ff f4 	addi sp,sp,-12                                 
 800ef9c:	5b 8b 00 08 	sw (sp+8),r11                                  
 800efa0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800efa4:	b8 40 58 00 	mv r11,r2                                      
  ISR_Level                         level;                            
  Thread_blocking_operation_States *sync_state;                       
                                                                      
  sync_state = arg;                                                   
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800efa8:	37 82 00 0c 	addi r2,sp,12                                  
 800efac:	fb ff e3 91 	calli 8007df0 <_Thread_Get>                    
  switch ( location ) {                                               
 800efb0:	2b 82 00 0c 	lw r2,(sp+12)                                  
 800efb4:	44 40 00 05 	be r2,r0,800efc8 <_Event_Timeout+0x30>         <== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800efb8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800efbc:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800efc0:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800efc4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
       *                                                              
       *  If it is not satisfied, then it is "nothing happened" and   
       *  this is the "timeout" transition.  After a request is satisfied,
       *  a timeout is not allowed to occur.                          
       */                                                             
      _ISR_Disable( level );                                          
 800efc8:	90 00 20 00 	rcsr r4,IE                                     
 800efcc:	34 03 ff fe 	mvi r3,-2                                      
 800efd0:	a0 83 18 00 	and r3,r4,r3                                   
 800efd4:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800efd8:	78 03 08 01 	mvhi r3,0x801                                  
 800efdc:	38 63 ae 00 	ori r3,r3,0xae00                               
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800efe0:	28 63 00 10 	lw r3,(r3+16)                                  
            _ISR_Enable( level );                                     
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
 800efe4:	58 20 00 24 	sw (r1+36),r0                                  
        if ( _Thread_Is_executing( the_thread ) ) {                   
 800efe8:	44 23 00 11 	be r1,r3,800f02c <_Event_Timeout+0x94>         <== NEVER TAKEN
          if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
            *sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;          
        }                                                             
                                                                      
        the_thread->Wait.return_code = RTEMS_TIMEOUT;                 
 800efec:	34 02 00 06 	mvi r2,6                                       
 800eff0:	58 22 00 34 	sw (r1+52),r2                                  
      _ISR_Enable( level );                                           
 800eff4:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800eff8:	78 03 08 01 	mvhi r3,0x801                                  
 800effc:	38 63 96 90 	ori r3,r3,0x9690                               
 800f000:	28 62 00 00 	lw r2,(r3+0)                                   
 800f004:	f8 00 04 a4 	calli 8010294 <_Thread_Clear_state>            
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800f008:	78 01 08 01 	mvhi r1,0x801                                  
 800f00c:	38 21 a9 78 	ori r1,r1,0xa978                               
 800f010:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    --level;                                                          
 800f014:	34 42 ff ff 	addi r2,r2,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 800f018:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 800f01c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f020:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800f024:	37 9c 00 0c 	addi sp,sp,12                                  
 800f028:	c3 a0 00 00 	ret                                            
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
        if ( _Thread_Is_executing( the_thread ) ) {                   
          if ( *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
 800f02c:	29 63 00 00 	lw r3,(r11+0)                                  <== NOT EXECUTED
 800f030:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 800f034:	5c 62 ff ee 	bne r3,r2,800efec <_Event_Timeout+0x54>        <== NOT EXECUTED
            *sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;          
 800f038:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800f03c:	59 62 00 00 	sw (r11+0),r2                                  <== NOT EXECUTED
 800f040:	e3 ff ff eb 	bi 800efec <_Event_Timeout+0x54>               <== NOT EXECUTED
                                                                      

0800ab2c <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
 800ab2c:	37 9c ff bc 	addi sp,sp,-68                                 
 800ab30:	5b 8b 00 44 	sw (sp+68),r11                                 
 800ab34:	5b 8c 00 40 	sw (sp+64),r12                                 
 800ab38:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800ab3c:	5b 8e 00 38 	sw (sp+56),r14                                 
 800ab40:	5b 8f 00 34 	sw (sp+52),r15                                 
 800ab44:	5b 90 00 30 	sw (sp+48),r16                                 
 800ab48:	5b 91 00 2c 	sw (sp+44),r17                                 
 800ab4c:	5b 92 00 28 	sw (sp+40),r18                                 
 800ab50:	5b 93 00 24 	sw (sp+36),r19                                 
 800ab54:	5b 94 00 20 	sw (sp+32),r20                                 
 800ab58:	5b 95 00 1c 	sw (sp+28),r21                                 
 800ab5c:	5b 96 00 18 	sw (sp+24),r22                                 
 800ab60:	5b 97 00 14 	sw (sp+20),r23                                 
 800ab64:	5b 98 00 10 	sw (sp+16),r24                                 
 800ab68:	5b 99 00 0c 	sw (sp+12),r25                                 
 800ab6c:	5b 9b 00 08 	sw (sp+8),fp                                   
 800ab70:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
 800ab74:	34 54 00 04 	addi r20,r2,4                                  
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800ab78:	b8 20 78 00 	mv r15,r1                                      
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
    - HEAP_ALLOC_BONUS;                                               
  uintptr_t const page_size = heap->page_size;                        
 800ab7c:	28 37 00 10 	lw r23,(r1+16)                                 
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 800ab80:	b8 40 70 00 	mv r14,r2                                      
 800ab84:	b8 60 80 00 	mv r16,r3                                      
 800ab88:	b8 80 90 00 	mv r18,r4                                      
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    /* Integer overflow occured */                                    
    return NULL;                                                      
 800ab8c:	34 01 00 00 	mvi r1,0                                       
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
 800ab90:	54 54 00 5b 	bgu r2,r20,800acfc <_Heap_Allocate_aligned_with_boundary+0x1d0>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
 800ab94:	5c 80 00 6f 	bne r4,r0,800ad50 <_Heap_Allocate_aligned_with_boundary+0x224>
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800ab98:	29 ec 00 08 	lw r12,(r15+8)                                 
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800ab9c:	34 01 00 00 	mvi r1,0                                       
 800aba0:	45 ec 00 57 	be r15,r12,800acfc <_Heap_Allocate_aligned_with_boundary+0x1d0>
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
 800aba4:	34 18 00 04 	mvi r24,4                                      
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800aba8:	34 11 00 01 	mvi r17,1                                      
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800abac:	34 1b ff fe 	mvi fp,-2                                      
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
 800abb0:	36 f9 00 07 	addi r25,r23,7                                 
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
 800abb4:	cb 0e c0 00 	sub r24,r24,r14                                
      /*                                                              
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
 800abb8:	29 81 00 04 	lw r1,(r12+4)                                  
 800abbc:	52 81 00 3b 	bgeu r20,r1,800aca8 <_Heap_Allocate_aligned_with_boundary+0x17c>
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800abc0:	35 8b 00 08 	addi r11,r12,8                                 
        if ( alignment == 0 ) {                                       
 800abc4:	46 00 00 3e 	be r16,r0,800acbc <_Heap_Allocate_aligned_with_boundary+0x190>
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800abc8:	a0 3b 68 00 	and r13,r1,fp                                  
  if ( stats->max_search < search_count ) {                           
    stats->max_search = search_count;                                 
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800abcc:	29 f5 00 14 	lw r21,(r15+20)                                
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
                                                                      
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
 800abd0:	b5 8d 68 00 	add r13,r12,r13                                
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
 800abd4:	b7 0d 58 00 	add r11,r24,r13                                
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
 800abd8:	cb 35 18 00 	sub r3,r25,r21                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800abdc:	b9 60 08 00 	mv r1,r11                                      
 800abe0:	ba 00 10 00 	mv r2,r16                                      
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
 800abe4:	b4 6d 68 00 	add r13,r3,r13                                 
 800abe8:	f8 00 45 18 	calli 801c048 <__umodsi3>                      
 800abec:	c9 61 58 00 	sub r11,r11,r1                                 
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
 800abf0:	35 96 00 08 	addi r22,r12,8                                 
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
                                                                      
  alloc_begin = _Heap_Align_down( alloc_begin, alignment );           
                                                                      
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
 800abf4:	51 ab 00 05 	bgeu r13,r11,800ac08 <_Heap_Allocate_aligned_with_boundary+0xdc>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800abf8:	b9 a0 08 00 	mv r1,r13                                      
 800abfc:	ba 00 10 00 	mv r2,r16                                      
 800ac00:	f8 00 45 12 	calli 801c048 <__umodsi3>                      
 800ac04:	c9 a1 58 00 	sub r11,r13,r1                                 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
 800ac08:	46 40 00 1c 	be r18,r0,800ac78 <_Heap_Allocate_aligned_with_boundary+0x14c>
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
    alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
 800ac0c:	b5 6e 68 00 	add r13,r11,r14                                
 800ac10:	b9 a0 08 00 	mv r1,r13                                      
 800ac14:	ba 40 10 00 	mv r2,r18                                      
 800ac18:	f8 00 45 0c 	calli 801c048 <__umodsi3>                      
 800ac1c:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
 800ac20:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800ac24:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800ac28:	a1 a1 68 00 	and r13,r13,r1                                 
 800ac2c:	45 a0 00 13 	be r13,r0,800ac78 <_Heap_Allocate_aligned_with_boundary+0x14c>
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
 800ac30:	b6 ce 98 00 	add r19,r22,r14                                
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
 800ac34:	56 65 00 1d 	bgu r19,r5,800aca8 <_Heap_Allocate_aligned_with_boundary+0x17c>
 800ac38:	e0 00 00 02 	bi 800ac40 <_Heap_Allocate_aligned_with_boundary+0x114>
 800ac3c:	56 65 00 1b 	bgu r19,r5,800aca8 <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
        return 0;                                                     
      }                                                               
      alloc_begin = boundary_line - alloc_size;                       
 800ac40:	c8 ae 58 00 	sub r11,r5,r14                                 
 800ac44:	ba 00 10 00 	mv r2,r16                                      
 800ac48:	b9 60 08 00 	mv r1,r11                                      
 800ac4c:	f8 00 44 ff 	calli 801c048 <__umodsi3>                      
 800ac50:	c9 61 58 00 	sub r11,r11,r1                                 
      alloc_begin = _Heap_Align_down( alloc_begin, alignment );       
      alloc_end = alloc_begin + alloc_size;                           
 800ac54:	b5 6e 68 00 	add r13,r11,r14                                
 800ac58:	b9 a0 08 00 	mv r1,r13                                      
 800ac5c:	ba 40 10 00 	mv r2,r18                                      
 800ac60:	f8 00 44 fa 	calli 801c048 <__umodsi3>                      
 800ac64:	c9 a1 28 00 	sub r5,r13,r1                                  
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
 800ac68:	f5 a5 68 00 	cmpgu r13,r13,r5                               
 800ac6c:	f4 ab 08 00 	cmpgu r1,r5,r11                                
 800ac70:	a1 a1 68 00 	and r13,r13,r1                                 
 800ac74:	5d a0 ff f2 	bne r13,r0,800ac3c <_Heap_Allocate_aligned_with_boundary+0x110>
      boundary_line = _Heap_Align_down( alloc_end, boundary );        
    }                                                                 
  }                                                                   
                                                                      
  /* Ensure that the we have a valid new block at the beginning */    
  if ( alloc_begin >= alloc_begin_floor ) {                           
 800ac78:	56 cb 00 0c 	bgu r22,r11,800aca8 <_Heap_Allocate_aligned_with_boundary+0x17c>
 800ac7c:	34 01 ff f8 	mvi r1,-8                                      
 800ac80:	c8 2c 68 00 	sub r13,r1,r12                                 
 800ac84:	ba e0 10 00 	mv r2,r23                                      
 800ac88:	b9 60 08 00 	mv r1,r11                                      
 800ac8c:	f8 00 44 ef 	calli 801c048 <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800ac90:	b5 ab 68 00 	add r13,r13,r11                                
    uintptr_t const alloc_block_begin =                               
      (uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size );
    uintptr_t const free_size = alloc_block_begin - block_begin;      
 800ac94:	c9 a1 08 00 	sub r1,r13,r1                                  
                                                                      
    if ( free_size >= min_block_size || free_size == 0 ) {            
 800ac98:	64 22 00 00 	cmpei r2,r1,0                                  
 800ac9c:	f0 35 a8 00 	cmpgeu r21,r1,r21                              
 800aca0:	b8 55 08 00 	or r1,r2,r21                                   
 800aca4:	5c 20 00 06 	bne r1,r0,800acbc <_Heap_Allocate_aligned_with_boundary+0x190>
                                                                      
      if ( alloc_begin != 0 ) {                                       
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
 800aca8:	29 8c 00 08 	lw r12,(r12+8)                                 
 800acac:	36 21 00 01 	addi r1,r17,1                                  
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800acb0:	45 ec 00 26 	be r15,r12,800ad48 <_Heap_Allocate_aligned_with_boundary+0x21c>
 800acb4:	b8 20 88 00 	mv r17,r1                                      
 800acb8:	e3 ff ff c0 	bi 800abb8 <_Heap_Allocate_aligned_with_boundary+0x8c>
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
 800acbc:	45 60 ff fb 	be r11,r0,800aca8 <_Heap_Allocate_aligned_with_boundary+0x17c><== NEVER TAKEN
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800acc0:	29 e3 00 48 	lw r3,(r15+72)                                 
    stats->searches += search_count;                                  
 800acc4:	29 e2 00 4c 	lw r2,(r15+76)                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800acc8:	b9 e0 08 00 	mv r1,r15                                      
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800accc:	34 63 00 01 	addi r3,r3,1                                   
    stats->searches += search_count;                                  
 800acd0:	b4 51 10 00 	add r2,r2,r17                                  
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
 800acd4:	59 e3 00 48 	sw (r15+72),r3                                 
    stats->searches += search_count;                                  
 800acd8:	59 e2 00 4c 	sw (r15+76),r2                                 
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
 800acdc:	b9 60 18 00 	mv r3,r11                                      
 800ace0:	b9 80 10 00 	mv r2,r12                                      
 800ace4:	b9 c0 20 00 	mv r4,r14                                      
 800ace8:	fb ff e9 91 	calli 800532c <_Heap_Block_allocate>           
 800acec:	b9 60 08 00 	mv r1,r11                                      
      boundary                                                        
    );                                                                
  }                                                                   
                                                                      
  /* Statistics */                                                    
  if ( stats->max_search < search_count ) {                           
 800acf0:	29 e2 00 44 	lw r2,(r15+68)                                 
 800acf4:	50 51 00 02 	bgeu r2,r17,800acfc <_Heap_Allocate_aligned_with_boundary+0x1d0>
    stats->max_search = search_count;                                 
 800acf8:	59 f1 00 44 	sw (r15+68),r17                                
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
}                                                                     
 800acfc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ad00:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800ad04:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800ad08:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800ad0c:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800ad10:	2b 8f 00 34 	lw r15,(sp+52)                                 
 800ad14:	2b 90 00 30 	lw r16,(sp+48)                                 
 800ad18:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800ad1c:	2b 92 00 28 	lw r18,(sp+40)                                 
 800ad20:	2b 93 00 24 	lw r19,(sp+36)                                 
 800ad24:	2b 94 00 20 	lw r20,(sp+32)                                 
 800ad28:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800ad2c:	2b 96 00 18 	lw r22,(sp+24)                                 
 800ad30:	2b 97 00 14 	lw r23,(sp+20)                                 
 800ad34:	2b 98 00 10 	lw r24,(sp+16)                                 
 800ad38:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800ad3c:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800ad40:	37 9c 00 44 	addi sp,sp,68                                  
 800ad44:	c3 a0 00 00 	ret                                            
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
 800ad48:	34 01 00 00 	mvi r1,0                                       
 800ad4c:	e3 ff ff e9 	bi 800acf0 <_Heap_Allocate_aligned_with_boundary+0x1c4>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
 800ad50:	54 44 ff eb 	bgu r2,r4,800acfc <_Heap_Allocate_aligned_with_boundary+0x1d0>
      return NULL;                                                    
    }                                                                 
                                                                      
    if ( alignment == 0 ) {                                           
 800ad54:	5c 60 ff 91 	bne r3,r0,800ab98 <_Heap_Allocate_aligned_with_boundary+0x6c>
      alignment = page_size;                                          
 800ad58:	ba e0 80 00 	mv r16,r23                                     
 800ad5c:	e3 ff ff 8f 	bi 800ab98 <_Heap_Allocate_aligned_with_boundary+0x6c>
                                                                      

0800a7e0 <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t unused __attribute__((unused)) ) {
 800a7e0:	37 9c ff bc 	addi sp,sp,-68                                 
 800a7e4:	5b 8b 00 3c 	sw (sp+60),r11                                 
 800a7e8:	5b 8c 00 38 	sw (sp+56),r12                                 
 800a7ec:	5b 8d 00 34 	sw (sp+52),r13                                 
 800a7f0:	5b 8e 00 30 	sw (sp+48),r14                                 
 800a7f4:	5b 8f 00 2c 	sw (sp+44),r15                                 
 800a7f8:	5b 90 00 28 	sw (sp+40),r16                                 
 800a7fc:	5b 91 00 24 	sw (sp+36),r17                                 
 800a800:	5b 92 00 20 	sw (sp+32),r18                                 
 800a804:	5b 93 00 1c 	sw (sp+28),r19                                 
 800a808:	5b 94 00 18 	sw (sp+24),r20                                 
 800a80c:	5b 95 00 14 	sw (sp+20),r21                                 
 800a810:	5b 96 00 10 	sw (sp+16),r22                                 
 800a814:	5b 97 00 0c 	sw (sp+12),r23                                 
 800a818:	5b 98 00 08 	sw (sp+8),r24                                  
 800a81c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Block *start_block = first_block;                              
  Heap_Block *merge_below_block = NULL;                               
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
 800a820:	5b 80 00 44 	sw (sp+68),r0                                  
  Heap_Block *extend_last_block = NULL;                               
 800a824:	5b 80 00 40 	sw (sp+64),r0                                  
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
 800a828:	b4 43 70 00 	add r14,r2,r3                                  
  Heap_Control *heap,                                                 
  void *extend_area_begin_ptr,                                        
  uintptr_t extend_area_size,                                         
  uintptr_t unused __attribute__((unused))                            
)                                                                     
{                                                                     
 800a82c:	b8 40 68 00 	mv r13,r2                                      
 800a830:	b8 20 58 00 	mv r11,r1                                      
  Heap_Statistics *const stats = &heap->stats;                        
  Heap_Block *const first_block = heap->first_block;                  
 800a834:	28 30 00 20 	lw r16,(r1+32)                                 
  Heap_Block *merge_above_block = NULL;                               
  Heap_Block *link_below_block = NULL;                                
  Heap_Block *link_above_block = NULL;                                
  Heap_Block *extend_first_block = NULL;                              
  Heap_Block *extend_last_block = NULL;                               
  uintptr_t const page_size = heap->page_size;                        
 800a838:	28 32 00 10 	lw r18,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 800a83c:	28 24 00 14 	lw r4,(r1+20)                                  
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
  uintptr_t const free_size = stats->free_size;                       
 800a840:	28 37 00 30 	lw r23,(r1+48)                                 
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
    return 0;                                                         
 800a844:	34 0c 00 00 	mvi r12,0                                      
  uintptr_t const free_size = stats->free_size;                       
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
 800a848:	54 4e 00 72 	bgu r2,r14,800aa10 <_Heap_Extend+0x230>        
    return 0;                                                         
  }                                                                   
                                                                      
  extend_area_ok = _Heap_Get_first_and_last_block(                    
 800a84c:	b8 40 08 00 	mv r1,r2                                       
 800a850:	37 85 00 44 	addi r5,sp,68                                  
 800a854:	b8 60 10 00 	mv r2,r3                                       
 800a858:	37 86 00 40 	addi r6,sp,64                                  
 800a85c:	ba 40 18 00 	mv r3,r18                                      
 800a860:	fb ff e9 3c 	calli 8004d50 <_Heap_Get_first_and_last_block> 
    page_size,                                                        
    min_block_size,                                                   
    &extend_first_block,                                              
    &extend_last_block                                                
  );                                                                  
  if (!extend_area_ok ) {                                             
 800a864:	44 20 00 6b 	be r1,r0,800aa10 <_Heap_Extend+0x230>          
 800a868:	ba 00 60 00 	mv r12,r16                                     
 800a86c:	34 16 00 00 	mvi r22,0                                      
 800a870:	34 18 00 00 	mvi r24,0                                      
 800a874:	34 11 00 00 	mvi r17,0                                      
 800a878:	34 14 00 00 	mvi r20,0                                      
    - 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;                
 800a87c:	34 15 ff fe 	mvi r21,-2                                     
 800a880:	e0 00 00 0d 	bi 800a8b4 <_Heap_Extend+0xd4>                 
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800a884:	55 ee 00 77 	bgu r15,r14,800aa60 <_Heap_Extend+0x280>       
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a888:	b9 e0 08 00 	mv r1,r15                                      
 800a88c:	ba 40 10 00 	mv r2,r18                                      
 800a890:	35 f3 ff f8 	addi r19,r15,-8                                
 800a894:	f8 00 22 23 	calli 8013120 <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a898:	ca 61 08 00 	sub r1,r19,r1                                  
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
 800a89c:	45 af 00 15 	be r13,r15,800a8f0 <_Heap_Extend+0x110>        
      start_block->prev_size = extend_area_end;                       
                                                                      
      merge_above_block = end_block;                                  
    } else if ( sub_area_end < extend_area_begin ) {                  
 800a8a0:	55 af 00 6e 	bgu r13,r15,800aa58 <_Heap_Extend+0x278>       
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a8a4:	28 2c 00 04 	lw r12,(r1+4)                                  
 800a8a8:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a8ac:	b4 2c 60 00 	add r12,r1,r12                                 
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
 800a8b0:	46 0c 00 16 	be r16,r12,800a908 <_Heap_Extend+0x128>        
    return 0;                                                         
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800a8b4:	b9 80 08 00 	mv r1,r12                                      
 800a8b8:	45 90 00 6c 	be r12,r16,800aa68 <_Heap_Extend+0x288>        
    uintptr_t const sub_area_end = start_block->prev_size;            
 800a8bc:	29 8f 00 00 	lw r15,(r12+0)                                 
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
 800a8c0:	f5 c1 28 00 	cmpgu r5,r14,r1                                
 800a8c4:	f5 ed 20 00 	cmpgu r4,r15,r13                               
      (uintptr_t) start_block : heap->area_begin;                     
    uintptr_t const sub_area_end = start_block->prev_size;            
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
 800a8c8:	a0 a4 20 00 	and r4,r5,r4                                   
 800a8cc:	5c 80 00 71 	bne r4,r0,800aa90 <_Heap_Extend+0x2b0>         
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
 800a8d0:	5c 2e ff ed 	bne r1,r14,800a884 <_Heap_Extend+0xa4>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a8d4:	b9 e0 08 00 	mv r1,r15                                      
 800a8d8:	ba 40 10 00 	mv r2,r18                                      
 800a8dc:	35 f3 ff f8 	addi r19,r15,-8                                
 800a8e0:	f8 00 22 10 	calli 8013120 <__umodsi3>                      
 800a8e4:	b9 80 a0 00 	mv r20,r12                                     
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800a8e8:	ca 61 08 00 	sub r1,r19,r1                                  
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
 800a8ec:	5d af ff ed 	bne r13,r15,800a8a0 <_Heap_Extend+0xc0>        <== ALWAYS TAKEN
      start_block->prev_size = extend_area_end;                       
 800a8f0:	59 8e 00 00 	sw (r12+0),r14                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a8f4:	28 2c 00 04 	lw r12,(r1+4)                                  
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
 800a8f8:	b8 20 88 00 	mv r17,r1                                      
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800a8fc:	a2 ac 60 00 	and r12,r21,r12                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800a900:	b4 2c 60 00 	add r12,r1,r12                                 
    } else if ( sub_area_end < extend_area_begin ) {                  
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
 800a904:	5e 0c ff ec 	bne r16,r12,800a8b4 <_Heap_Extend+0xd4>        <== NEVER TAKEN
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
 800a908:	29 61 00 18 	lw r1,(r11+24)                                 
 800a90c:	51 a1 00 5d 	bgeu r13,r1,800aa80 <_Heap_Extend+0x2a0>       
    heap->area_begin = extend_area_begin;                             
 800a910:	59 6d 00 18 	sw (r11+24),r13                                
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
 800a914:	2b 81 00 40 	lw r1,(sp+64)                                  
 800a918:	2b 82 00 44 	lw r2,(sp+68)                                  
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
 800a91c:	29 65 00 20 	lw r5,(r11+32)                                 
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
 800a920:	c8 22 18 00 	sub r3,r1,r2                                   
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
 800a924:	38 64 00 01 	ori r4,r3,0x1                                  
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
 800a928:	58 4e 00 00 	sw (r2+0),r14                                  
  extend_first_block->size_and_flag =                                 
 800a92c:	58 44 00 04 	sw (r2+4),r4                                   
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
 800a930:	58 23 00 00 	sw (r1+0),r3                                   
  extend_last_block->size_and_flag = 0;                               
 800a934:	58 20 00 04 	sw (r1+4),r0                                   
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
 800a938:	50 45 00 4e 	bgeu r2,r5,800aa70 <_Heap_Extend+0x290>        
    heap->first_block = extend_first_block;                           
 800a93c:	59 62 00 20 	sw (r11+32),r2                                 
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
 800a940:	46 80 00 66 	be r20,r0,800aad8 <_Heap_Extend+0x2f8>         
  Heap_Control *heap,                                                 
  uintptr_t extend_area_begin,                                        
  Heap_Block *first_block                                             
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 800a944:	29 6c 00 10 	lw r12,(r11+16)                                
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
 800a948:	35 ad 00 08 	addi r13,r13,8                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(                        
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  uintptr_t remainder = value % alignment;                            
 800a94c:	b9 a0 08 00 	mv r1,r13                                      
 800a950:	b9 80 10 00 	mv r2,r12                                      
 800a954:	f8 00 21 f3 	calli 8013120 <__umodsi3>                      
                                                                      
  if ( remainder != 0 ) {                                             
 800a958:	44 20 00 03 	be r1,r0,800a964 <_Heap_Extend+0x184>          
    return value - remainder + alignment;                             
 800a95c:	b5 ac 68 00 	add r13,r13,r12                                
 800a960:	c9 a1 68 00 	sub r13,r13,r1                                 
  uintptr_t const new_first_block_begin =                             
 800a964:	35 a2 ff f8 	addi r2,r13,-8                                 
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
 800a968:	2a 83 00 00 	lw r3,(r20+0)                                  
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
  uintptr_t const new_first_block_begin =                             
    new_first_block_alloc_begin - HEAP_BLOCK_HEADER_SIZE;             
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
 800a96c:	ca 82 08 00 	sub r1,r20,r2                                  
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
 800a970:	38 21 00 01 	ori r1,r1,0x1                                  
 800a974:	58 41 00 04 	sw (r2+4),r1                                   
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
  uintptr_t const new_first_block_size =                              
    first_block_begin - new_first_block_begin;                        
  Heap_Block *const new_first_block = (Heap_Block *) new_first_block_begin;
                                                                      
  new_first_block->prev_size = first_block->prev_size;                
 800a978:	59 a3 ff f8 	sw (r13+-8),r3                                 
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
 800a97c:	b9 60 08 00 	mv r1,r11                                      
 800a980:	fb ff ff 7e 	calli 800a778 <_Heap_Free_block>               
      link_below_block,                                               
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
 800a984:	46 20 00 45 	be r17,r0,800aa98 <_Heap_Extend+0x2b8>         
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800a988:	29 62 00 10 	lw r2,(r11+16)                                 
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
    extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE,      
 800a98c:	35 ce ff f8 	addi r14,r14,-8                                
  uintptr_t extend_area_end                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const last_block_new_size = _Heap_Align_down(             
 800a990:	c9 d1 70 00 	sub r14,r14,r17                                
 800a994:	b9 c0 08 00 	mv r1,r14                                      
 800a998:	f8 00 21 e2 	calli 8013120 <__umodsi3>                      
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
    (last_block->size_and_flag - last_block_new_size)                 
 800a99c:	2a 22 00 04 	lw r2,(r17+4)                                  
 800a9a0:	c9 c1 70 00 	sub r14,r14,r1                                 
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a9a4:	b5 d1 08 00 	add r1,r14,r17                                 
    (last_block->size_and_flag - last_block_new_size)                 
 800a9a8:	c8 4e 10 00 	sub r2,r2,r14                                  
      | HEAP_PREV_BLOCK_USED;                                         
 800a9ac:	38 42 00 01 	ori r2,r2,0x1                                  
    page_size                                                         
  );                                                                  
  Heap_Block *const new_last_block =                                  
    _Heap_Block_at( last_block, last_block_new_size );                
                                                                      
  new_last_block->size_and_flag =                                     
 800a9b0:	58 22 00 04 	sw (r1+4),r2                                   
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a9b4:	2a 23 00 04 	lw r3,(r17+4)                                  
    (last_block->size_and_flag - last_block_new_size)                 
      | HEAP_PREV_BLOCK_USED;                                         
                                                                      
  _Heap_Block_set_size( last_block, last_block_new_size );            
                                                                      
  _Heap_Free_block( heap, last_block );                               
 800a9b8:	b9 60 08 00 	mv r1,r11                                      
 800a9bc:	ba 20 10 00 	mv r2,r17                                      
 800a9c0:	20 63 00 01 	andi r3,r3,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a9c4:	b9 c3 70 00 	or r14,r14,r3                                  
 800a9c8:	5a 2e 00 04 	sw (r17+4),r14                                 
 800a9cc:	fb ff ff 6b 	calli 800a778 <_Heap_Free_block>               
      extend_first_block,                                             
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
 800a9d0:	66 31 00 00 	cmpei r17,r17,0                                
 800a9d4:	66 94 00 00 	cmpei r20,r20,0                                
 800a9d8:	a2 34 88 00 	and r17,r17,r20                                
 800a9dc:	5e 20 00 3b 	bne r17,r0,800aac8 <_Heap_Extend+0x2e8>        
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
                                                                      
  return extended_size;                                               
}                                                                     
 800a9e0:	29 61 00 24 	lw r1,(r11+36)                                 
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
 800a9e4:	29 63 00 20 	lw r3,(r11+32)                                 
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800a9e8:	29 6c 00 30 	lw r12,(r11+48)                                
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a9ec:	28 22 00 04 	lw r2,(r1+4)                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800a9f0:	29 64 00 2c 	lw r4,(r11+44)                                 
 * This feature will be used to terminate the scattered heap area list.  See
 * also _Heap_Extend().                                               
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
 800a9f4:	c8 61 18 00 	sub r3,r3,r1                                   
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800a9f8:	20 42 00 01 	andi r2,r2,0x1                                 
                                                                      
  block->size_and_flag = size | flag;                                 
 800a9fc:	b8 62 10 00 	or r2,r3,r2                                    
    _Heap_Free_block( heap, extend_first_block );                     
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
 800aa00:	c9 97 60 00 	sub r12,r12,r23                                
 800aa04:	58 22 00 04 	sw (r1+4),r2                                   
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
 800aa08:	b4 8c 08 00 	add r1,r4,r12                                  
 800aa0c:	59 61 00 2c 	sw (r11+44),r1                                 
                                                                      
  return extended_size;                                               
}                                                                     
 800aa10:	b9 80 08 00 	mv r1,r12                                      
 800aa14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa18:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 800aa1c:	2b 8c 00 38 	lw r12,(sp+56)                                 
 800aa20:	2b 8d 00 34 	lw r13,(sp+52)                                 
 800aa24:	2b 8e 00 30 	lw r14,(sp+48)                                 
 800aa28:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 800aa2c:	2b 90 00 28 	lw r16,(sp+40)                                 
 800aa30:	2b 91 00 24 	lw r17,(sp+36)                                 
 800aa34:	2b 92 00 20 	lw r18,(sp+32)                                 
 800aa38:	2b 93 00 1c 	lw r19,(sp+28)                                 
 800aa3c:	2b 94 00 18 	lw r20,(sp+24)                                 
 800aa40:	2b 95 00 14 	lw r21,(sp+20)                                 
 800aa44:	2b 96 00 10 	lw r22,(sp+16)                                 
 800aa48:	2b 97 00 0c 	lw r23,(sp+12)                                 
 800aa4c:	2b 98 00 08 	lw r24,(sp+8)                                  
 800aa50:	37 9c 00 44 	addi sp,sp,68                                  
 800aa54:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
 800aa58:	b8 20 b0 00 	mv r22,r1                                      
 800aa5c:	e3 ff ff 92 	bi 800a8a4 <_Heap_Extend+0xc4>                 
      return 0;                                                       
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
 800aa60:	b9 80 c0 00 	mv r24,r12                                     
 800aa64:	e3 ff ff 89 	bi 800a888 <_Heap_Extend+0xa8>                 
    return 0;                                                         
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
 800aa68:	29 61 00 18 	lw r1,(r11+24)                                 
 800aa6c:	e3 ff ff 94 	bi 800a8bc <_Heap_Extend+0xdc>                 
  extend_last_block->size_and_flag = 0;                               
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
    heap->first_block = extend_first_block;                           
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
 800aa70:	29 62 00 24 	lw r2,(r11+36)                                 
 800aa74:	50 41 ff b3 	bgeu r2,r1,800a940 <_Heap_Extend+0x160>        
    heap->last_block = extend_last_block;                             
 800aa78:	59 61 00 24 	sw (r11+36),r1                                 
 800aa7c:	e3 ff ff b1 	bi 800a940 <_Heap_Extend+0x160>                
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
 800aa80:	29 61 00 1c 	lw r1,(r11+28)                                 
 800aa84:	50 2e ff a4 	bgeu r1,r14,800a914 <_Heap_Extend+0x134>       <== NEVER TAKEN
    heap->area_end = extend_area_end;                                 
 800aa88:	59 6e 00 1c 	sw (r11+28),r14                                
 800aa8c:	e3 ff ff a2 	bi 800a914 <_Heap_Extend+0x134>                
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return 0;                                                       
 800aa90:	34 0c 00 00 	mvi r12,0                                      
 800aa94:	e3 ff ff df 	bi 800aa10 <_Heap_Extend+0x230>                
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
 800aa98:	46 d1 ff ce 	be r22,r17,800a9d0 <_Heap_Extend+0x1f0>        
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
 800aa9c:	2a c3 00 04 	lw r3,(r22+4)                                  
)                                                                     
{                                                                     
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
 800aaa0:	2b 82 00 44 	lw r2,(sp+68)                                  
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
    _Heap_Link_above(                                                 
 800aaa4:	2b 81 00 40 	lw r1,(sp+64)                                  
 800aaa8:	20 63 00 01 	andi r3,r3,0x1                                 
)                                                                     
{                                                                     
  uintptr_t const link_begin = (uintptr_t) link;                      
  uintptr_t const first_block_begin = (uintptr_t) first_block;        
                                                                      
  _Heap_Block_set_size( link, first_block_begin - link_begin );       
 800aaac:	c8 56 10 00 	sub r2,r2,r22                                  
                                                                      
  block->size_and_flag = size | flag;                                 
 800aab0:	b8 43 10 00 	or r2,r2,r3                                    
 800aab4:	5a c2 00 04 	sw (r22+4),r2                                  
                                                                      
  last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;                  
 800aab8:	28 22 00 04 	lw r2,(r1+4)                                   
 800aabc:	38 42 00 01 	ori r2,r2,0x1                                  
 800aac0:	58 22 00 04 	sw (r1+4),r2                                   
 800aac4:	e3 ff ff c3 	bi 800a9d0 <_Heap_Extend+0x1f0>                
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
    _Heap_Free_block( heap, extend_first_block );                     
 800aac8:	2b 82 00 44 	lw r2,(sp+68)                                  
 800aacc:	b9 60 08 00 	mv r1,r11                                      
 800aad0:	fb ff ff 2a 	calli 800a778 <_Heap_Free_block>               
 800aad4:	e3 ff ff c3 	bi 800a9e0 <_Heap_Extend+0x200>                
    heap->last_block = extend_last_block;                             
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
    _Heap_Merge_below( heap, extend_area_begin, merge_below_block );  
  } else if ( link_below_block != NULL ) {                            
 800aad8:	47 14 ff ab 	be r24,r20,800a984 <_Heap_Extend+0x1a4>        
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
    (link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;           
 800aadc:	cb 01 c0 00 	sub r24,r24,r1                                 
 800aae0:	3b 18 00 01 	ori r24,r24,0x1                                
)                                                                     
{                                                                     
  uintptr_t const last_block_begin = (uintptr_t) last_block;          
  uintptr_t const link_begin = (uintptr_t) link;                      
                                                                      
  last_block->size_and_flag =                                         
 800aae4:	58 38 00 04 	sw (r1+4),r24                                  
 800aae8:	e3 ff ff a7 	bi 800a984 <_Heap_Extend+0x1a4>                
                                                                      

0800ad60 <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) {
 800ad60:	37 9c ff f4 	addi sp,sp,-12                                 
 800ad64:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800ad68:	5b 8c 00 08 	sw (sp+8),r12                                  
 800ad6c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ad70:	b8 20 58 00 	mv r11,r1                                      
 800ad74:	b8 40 18 00 	mv r3,r2                                       
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
    return true;                                                      
 800ad78:	34 01 00 01 	mvi r1,1                                       
  /*                                                                  
   * 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 ) {                                    
 800ad7c:	44 40 00 4b 	be r2,r0,800aea8 <_Heap_Free+0x148>            
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 800ad80:	29 62 00 10 	lw r2,(r11+16)                                 
 800ad84:	b8 60 08 00 	mv r1,r3                                       
 800ad88:	34 6c ff f8 	addi r12,r3,-8                                 
 800ad8c:	f8 00 44 af 	calli 801c048 <__umodsi3>                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
 800ad90:	29 64 00 20 	lw r4,(r11+32)                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 800ad94:	c9 81 10 00 	sub r2,r12,r1                                  
                                                                      
  alloc_begin = (uintptr_t) alloc_begin_ptr;                          
  block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );  
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
 800ad98:	34 01 00 00 	mvi r1,0                                       
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 800ad9c:	54 82 00 43 	bgu r4,r2,800aea8 <_Heap_Free+0x148>           
 800ada0:	29 65 00 24 	lw r5,(r11+36)                                 
 800ada4:	54 45 00 41 	bgu r2,r5,800aea8 <_Heap_Free+0x148>           
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800ada8:	28 48 00 04 	lw r8,(r2+4)                                   
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 800adac:	34 07 ff fe 	mvi r7,-2                                      
 800adb0:	a1 07 30 00 	and r6,r8,r7                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800adb4:	b4 46 18 00 	add r3,r2,r6                                   
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 800adb8:	54 83 00 3c 	bgu r4,r3,800aea8 <_Heap_Free+0x148>           <== NEVER TAKEN
 800adbc:	54 65 00 3b 	bgu r3,r5,800aea8 <_Heap_Free+0x148>           <== NEVER TAKEN
 800adc0:	28 69 00 04 	lw r9,(r3+4)                                   
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 800adc4:	21 2a 00 01 	andi r10,r9,0x1                                
    return false;                                                     
  }                                                                   
                                                                      
  _Heap_Protection_block_check( heap, next_block );                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
 800adc8:	45 40 00 38 	be r10,r0,800aea8 <_Heap_Free+0x148>           
    - 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;                
 800adcc:	a1 27 48 00 	and r9,r9,r7                                   
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
 800add0:	34 07 00 00 	mvi r7,0                                       
 800add4:	44 a3 00 05 	be r5,r3,800ade8 <_Heap_Free+0x88>             
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800add8:	b4 69 08 00 	add r1,r3,r9                                   
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 800addc:	28 27 00 04 	lw r7,(r1+4)                                   
 800ade0:	20 e7 00 01 	andi r7,r7,0x1                                 
                                                                      
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
 800ade4:	18 e7 00 01 	xori r7,r7,0x1                                 
 800ade8:	21 08 00 01 	andi r8,r8,0x1                                 
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
 800adec:	5d 00 00 19 	bne r8,r0,800ae50 <_Heap_Free+0xf0>            
    uintptr_t const prev_size = block->prev_size;                     
 800adf0:	28 4a 00 00 	lw r10,(r2+0)                                  
    Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size );
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) {              
      _HAssert( false );                                              
      return( false );                                                
 800adf4:	34 01 00 00 	mvi r1,0                                       
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 800adf8:	c8 4a 10 00 	sub r2,r2,r10                                  
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 800adfc:	54 82 00 2b 	bgu r4,r2,800aea8 <_Heap_Free+0x148>           <== NEVER TAKEN
 800ae00:	b9 00 08 00 	mv r1,r8                                       
 800ae04:	54 45 00 29 	bgu r2,r5,800aea8 <_Heap_Free+0x148>           <== NEVER TAKEN
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 800ae08:	28 44 00 04 	lw r4,(r2+4)                                   
 800ae0c:	20 84 00 01 	andi r4,r4,0x1                                 
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
 800ae10:	44 80 00 26 	be r4,r0,800aea8 <_Heap_Free+0x148>            <== NEVER TAKEN
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
 800ae14:	44 e0 00 3d 	be r7,r0,800af08 <_Heap_Free+0x1a8>            
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800ae18:	29 64 00 38 	lw r4,(r11+56)                                 
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800ae1c:	28 61 00 08 	lw r1,(r3+8)                                   
 800ae20:	28 63 00 0c 	lw r3,(r3+12)                                  
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
 800ae24:	b4 c9 48 00 	add r9,r6,r9                                   
 800ae28:	b5 2a 50 00 	add r10,r9,r10                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
  Heap_Block *prev = block->prev;                                     
                                                                      
  prev->next = next;                                                  
 800ae2c:	58 61 00 08 	sw (r3+8),r1                                   
  next->prev = prev;                                                  
 800ae30:	58 23 00 0c 	sw (r1+12),r3                                  
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
 800ae34:	34 81 ff ff 	addi r1,r4,-1                                  
 800ae38:	59 61 00 38 	sw (r11+56),r1                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800ae3c:	39 43 00 01 	ori r3,r10,0x1                                 
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800ae40:	b4 4a 08 00 	add r1,r2,r10                                  
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800ae44:	58 43 00 04 	sw (r2+4),r3                                   
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
 800ae48:	58 2a 00 00 	sw (r1+0),r10                                  
 800ae4c:	e0 00 00 0d 	bi 800ae80 <_Heap_Free+0x120>                  
      uintptr_t const size = block_size + prev_size;                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
 800ae50:	44 e0 00 1b 	be r7,r0,800aebc <_Heap_Free+0x15c>            
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
 800ae54:	28 64 00 08 	lw r4,(r3+8)                                   
 800ae58:	28 61 00 0c 	lw r1,(r3+12)                                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
 800ae5c:	b5 26 48 00 	add r9,r9,r6                                   
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
 800ae60:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = prev;                                             
 800ae64:	58 41 00 0c 	sw (r2+12),r1                                  
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
 800ae68:	39 25 00 01 	ori r5,r9,0x1                                  
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800ae6c:	b4 49 18 00 	add r3,r2,r9                                   
                                                                      
  next->prev = new_block;                                             
 800ae70:	58 82 00 0c 	sw (r4+12),r2                                  
  prev->next = new_block;                                             
 800ae74:	58 22 00 08 	sw (r1+8),r2                                   
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
 800ae78:	58 45 00 04 	sw (r2+4),r5                                   
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
 800ae7c:	58 69 00 00 	sw (r3+0),r9                                   
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800ae80:	29 62 00 40 	lw r2,(r11+64)                                 
  ++stats->frees;                                                     
 800ae84:	29 61 00 50 	lw r1,(r11+80)                                 
  stats->free_size += block_size;                                     
 800ae88:	29 63 00 30 	lw r3,(r11+48)                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800ae8c:	34 42 ff ff 	addi r2,r2,-1                                  
  ++stats->frees;                                                     
 800ae90:	34 21 00 01 	addi r1,r1,1                                   
  stats->free_size += block_size;                                     
 800ae94:	b4 66 30 00 	add r6,r3,r6                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
 800ae98:	59 61 00 50 	sw (r11+80),r1                                 
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
 800ae9c:	59 62 00 40 	sw (r11+64),r2                                 
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
 800aea0:	59 66 00 30 	sw (r11+48),r6                                 
                                                                      
  return( true );                                                     
 800aea4:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 800aea8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aeac:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800aeb0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800aeb4:	37 9c 00 0c 	addi sp,sp,12                                  
 800aeb8:	c3 a0 00 00 	ret                                            
    next_block->prev_size = size;                                     
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
 800aebc:	38 c1 00 01 	ori r1,r6,0x1                                  
 800aec0:	58 41 00 04 	sw (r2+4),r1                                   
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
 800aec4:	28 67 00 04 	lw r7,(r3+4)                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800aec8:	29 61 00 38 	lw r1,(r11+56)                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
 800aecc:	29 64 00 08 	lw r4,(r11+8)                                  
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
 800aed0:	34 05 ff fe 	mvi r5,-2                                      
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
 800aed4:	58 4b 00 0c 	sw (r2+12),r11                                 
 800aed8:	a0 e5 28 00 	and r5,r7,r5                                   
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800aedc:	29 67 00 3c 	lw r7,(r11+60)                                 
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800aee0:	34 21 00 01 	addi r1,r1,1                                   
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
 800aee4:	58 44 00 08 	sw (r2+8),r4                                   
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
 800aee8:	58 82 00 0c 	sw (r4+12),r2                                  
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
 800aeec:	58 65 00 04 	sw (r3+4),r5                                   
    next_block->prev_size = block_size;                               
 800aef0:	58 66 00 00 	sw (r3+0),r6                                   
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
 800aef4:	59 62 00 08 	sw (r11+8),r2                                  
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
 800aef8:	59 61 00 38 	sw (r11+56),r1                                 
    if ( stats->max_free_blocks < stats->free_blocks ) {              
 800aefc:	50 e1 ff e1 	bgeu r7,r1,800ae80 <_Heap_Free+0x120>          
      stats->max_free_blocks = stats->free_blocks;                    
 800af00:	59 61 00 3c 	sw (r11+60),r1                                 
 800af04:	e3 ff ff df 	bi 800ae80 <_Heap_Free+0x120>                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
 800af08:	b4 ca 50 00 	add r10,r6,r10                                 
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
 800af0c:	39 41 00 01 	ori r1,r10,0x1                                 
 800af10:	58 41 00 04 	sw (r2+4),r1                                   
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
 800af14:	28 62 00 04 	lw r2,(r3+4)                                   
 800af18:	34 01 ff fe 	mvi r1,-2                                      
      next_block->prev_size = size;                                   
 800af1c:	58 6a 00 00 	sw (r3+0),r10                                  
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
 800af20:	a0 41 08 00 	and r1,r2,r1                                   
 800af24:	58 61 00 04 	sw (r3+4),r1                                   
 800af28:	e3 ff ff d6 	bi 800ae80 <_Heap_Free+0x120>                  
                                                                      

080111cc <_Heap_Get_free_information>: info->number++; info->total += the_size; if ( info->largest < the_size ) info->largest = the_size; } }
 80111cc:	28 23 00 08 	lw r3,(r1+8)                                   
)                                                                     
{                                                                     
  Heap_Block *the_block;                                              
  Heap_Block *const tail = _Heap_Free_list_tail(the_heap);            
                                                                      
  info->number = 0;                                                   
 80111d0:	58 40 00 00 	sw (r2+0),r0                                   
  info->largest = 0;                                                  
 80111d4:	58 40 00 04 	sw (r2+4),r0                                   
  info->total = 0;                                                    
 80111d8:	58 40 00 08 	sw (r2+8),r0                                   
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
 80111dc:	44 23 00 12 	be r1,r3,8011224 <_Heap_Get_free_information+0x58><== NEVER TAKEN
 80111e0:	34 06 00 01 	mvi r6,1                                       
 80111e4:	34 07 00 00 	mvi r7,0                                       
 80111e8:	34 05 00 00 	mvi r5,0                                       
    - 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;                
 80111ec:	34 09 ff fe 	mvi r9,-2                                      
 80111f0:	e0 00 00 03 	bi 80111fc <_Heap_Get_free_information+0x30>   
 80111f4:	28 47 00 04 	lw r7,(r2+4)                                   
 80111f8:	b9 00 30 00 	mv r6,r8                                       
 80111fc:	28 64 00 04 	lw r4,(r3+4)                                   
      the_block != tail;                                              
      the_block = the_block->next)                                    
 8011200:	34 c8 00 01 	addi r8,r6,1                                   
 8011204:	a1 24 20 00 	and r4,r9,r4                                   
                                                                      
    /* As we always coalesce free blocks, prev block must have been used. */
    _HAssert(_Heap_Is_prev_used(the_block));                          
                                                                      
    info->number++;                                                   
    info->total += the_size;                                          
 8011208:	b4 a4 28 00 	add r5,r5,r4                                   
    if ( info->largest < the_size )                                   
 801120c:	50 e4 00 02 	bgeu r7,r4,8011214 <_Heap_Get_free_information+0x48>
        info->largest = the_size;                                     
 8011210:	58 44 00 04 	sw (r2+4),r4                                   
  info->largest = 0;                                                  
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
      the_block != tail;                                              
      the_block = the_block->next)                                    
 8011214:	28 63 00 08 	lw r3,(r3+8)                                   
                                                                      
  info->number = 0;                                                   
  info->largest = 0;                                                  
  info->total = 0;                                                    
                                                                      
  for(the_block = _Heap_Free_list_first(the_heap);                    
 8011218:	5c 23 ff f7 	bne r1,r3,80111f4 <_Heap_Get_free_information+0x28>
 801121c:	58 46 00 00 	sw (r2+0),r6                                   
 8011220:	58 45 00 08 	sw (r2+8),r5                                   
 8011224:	c3 a0 00 00 	ret                                            
                                                                      

08007228 <_Heap_Greedy_allocate>: Heap_Block *_Heap_Greedy_allocate( Heap_Control *heap, const uintptr_t *block_sizes, size_t block_count ) {
 8007228:	37 9c ff e4 	addi sp,sp,-28                                 
 800722c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8007230:	5b 8c 00 18 	sw (sp+24),r12                                 
 8007234:	5b 8d 00 14 	sw (sp+20),r13                                 
 8007238:	5b 8e 00 10 	sw (sp+16),r14                                 
 800723c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8007240:	5b 90 00 08 	sw (sp+8),r16                                  
 8007244:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );    
  Heap_Block *allocated_blocks = NULL;                                
 8007248:	34 0d 00 00 	mvi r13,0                                      
Heap_Block *_Heap_Greedy_allocate(                                    
  Heap_Control *heap,                                                 
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
 800724c:	b8 60 80 00 	mv r16,r3                                      
 8007250:	b8 20 60 00 	mv r12,r1                                      
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
 8007254:	44 60 00 12 	be r3,r0,800729c <_Heap_Greedy_allocate+0x74>  
 8007258:	b8 40 70 00 	mv r14,r2                                      
 800725c:	34 0b 00 00 	mvi r11,0                                      
 * @brief See _Heap_Allocate_aligned_with_boundary() with alignment and
 * boundary equals zero.                                              
 */                                                                   
RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size )
{                                                                     
  return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );    
 8007260:	29 c2 00 00 	lw r2,(r14+0)                                  
 8007264:	34 03 00 00 	mvi r3,0                                       
 8007268:	34 04 00 00 	mvi r4,0                                       
 800726c:	b9 80 08 00 	mv r1,r12                                      
 8007270:	f8 00 24 5e 	calli 80103e8 <_Heap_Allocate_aligned_with_boundary>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 8007274:	34 2f ff f8 	addi r15,r1,-8                                 
 8007278:	35 6b 00 01 	addi r11,r11,1                                 
    void *next = _Heap_Allocate( heap, block_sizes [i] );             
                                                                      
    if ( next != NULL ) {                                             
 800727c:	44 20 00 06 	be r1,r0,8007294 <_Heap_Greedy_allocate+0x6c>  <== NEVER TAKEN
 8007280:	29 82 00 10 	lw r2,(r12+16)                                 
 8007284:	f8 00 47 74 	calli 8019054 <__umodsi3>                      
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 8007288:	c9 e1 08 00 	sub r1,r15,r1                                  
      Heap_Block *next_block = _Heap_Block_of_alloc_area(             
        (uintptr_t) next,                                             
        heap->page_size                                               
      );                                                              
                                                                      
      next_block->next = allocated_blocks;                            
 800728c:	58 2d 00 08 	sw (r1+8),r13                                  
 8007290:	b8 20 68 00 	mv r13,r1                                      
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
 8007294:	35 ce 00 04 	addi r14,r14,4                                 
 8007298:	56 0b ff f2 	bgu r16,r11,8007260 <_Heap_Greedy_allocate+0x38>
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
}                                                                     
 800729c:	29 8b 00 08 	lw r11,(r12+8)                                 
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
 80072a0:	34 0e 00 00 	mvi r14,0                                      
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 80072a4:	34 0f ff fe 	mvi r15,-2                                     
 80072a8:	5d 8b 00 03 	bne r12,r11,80072b4 <_Heap_Greedy_allocate+0x8c><== ALWAYS TAKEN
 80072ac:	e0 00 00 0d 	bi 80072e0 <_Heap_Greedy_allocate+0xb8>        <== NOT EXECUTED
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
}                                                                     
 80072b0:	b8 20 58 00 	mv r11,r1                                      
 80072b4:	29 64 00 04 	lw r4,(r11+4)                                  
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
    _Heap_Block_allocate(                                             
 80072b8:	b9 60 10 00 	mv r2,r11                                      
 80072bc:	35 63 00 08 	addi r3,r11,8                                  
 80072c0:	a1 e4 20 00 	and r4,r15,r4                                  
 80072c4:	b9 80 08 00 	mv r1,r12                                      
 80072c8:	34 84 ff f8 	addi r4,r4,-8                                  
 80072cc:	f8 00 01 0b 	calli 80076f8 <_Heap_Block_allocate>           
      current,                                                        
      _Heap_Alloc_area_of_block( current ),                           
      _Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE            
    );                                                                
                                                                      
    current->next = blocks;                                           
 80072d0:	59 6e 00 08 	sw (r11+8),r14                                 
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
}                                                                     
 80072d4:	29 81 00 08 	lw r1,(r12+8)                                  
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
 80072d8:	b9 60 70 00 	mv r14,r11                                     
 80072dc:	5d 81 ff f5 	bne r12,r1,80072b0 <_Heap_Greedy_allocate+0x88>
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
 80072e0:	5d a0 00 03 	bne r13,r0,80072ec <_Heap_Greedy_allocate+0xc4>
 80072e4:	e0 00 00 07 	bi 8007300 <_Heap_Greedy_allocate+0xd8>        
    current = allocated_blocks;                                       
    allocated_blocks = allocated_blocks->next;                        
 80072e8:	b9 60 68 00 	mv r13,r11                                     
 80072ec:	29 ab 00 08 	lw r11,(r13+8)                                 
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
 80072f0:	35 a2 00 08 	addi r2,r13,8                                  
 80072f4:	b9 80 08 00 	mv r1,r12                                      
 80072f8:	f8 00 24 c9 	calli 801061c <_Heap_Free>                     
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
 80072fc:	5d 60 ff fb 	bne r11,r0,80072e8 <_Heap_Greedy_allocate+0xc0>
    allocated_blocks = allocated_blocks->next;                        
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
                                                                      
  return blocks;                                                      
}                                                                     
 8007300:	b9 c0 08 00 	mv r1,r14                                      
 8007304:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007308:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800730c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8007310:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8007314:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8007318:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800731c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8007320:	37 9c 00 1c 	addi sp,sp,28                                  
 8007324:	c3 a0 00 00 	ret                                            
                                                                      

08007328 <_Heap_Greedy_free>: void _Heap_Greedy_free( Heap_Control *heap, Heap_Block *blocks ) {
 8007328:	37 9c ff f4 	addi sp,sp,-12                                 
 800732c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8007330:	5b 8c 00 08 	sw (sp+8),r12                                  
 8007334:	5b 9d 00 04 	sw (sp+4),ra                                   
 8007338:	b8 20 60 00 	mv r12,r1                                      
  while ( blocks != NULL ) {                                          
 800733c:	5c 40 00 03 	bne r2,r0,8007348 <_Heap_Greedy_free+0x20>     <== ALWAYS TAKEN
 8007340:	e0 00 00 07 	bi 800735c <_Heap_Greedy_free+0x34>            <== NOT EXECUTED
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
 8007344:	b9 60 10 00 	mv r2,r11                                      
 8007348:	28 4b 00 08 	lw r11,(r2+8)                                  
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
 800734c:	b9 80 08 00 	mv r1,r12                                      
 8007350:	34 42 00 08 	addi r2,r2,8                                   
 8007354:	f8 00 24 b2 	calli 801061c <_Heap_Free>                     
void _Heap_Greedy_free(                                               
  Heap_Control *heap,                                                 
  Heap_Block *blocks                                                  
)                                                                     
{                                                                     
  while ( blocks != NULL ) {                                          
 8007358:	5d 60 ff fb 	bne r11,r0,8007344 <_Heap_Greedy_free+0x1c>    
    Heap_Block *current = blocks;                                     
                                                                      
    blocks = blocks->next;                                            
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
}                                                                     
 800735c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007360:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8007364:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8007368:	37 9c 00 0c 	addi sp,sp,12                                  
 800736c:	c3 a0 00 00 	ret                                            
                                                                      

0801129c <_Heap_Iterate>: void _Heap_Iterate( Heap_Control *heap, Heap_Block_visitor visitor, void *visitor_arg ) {
 801129c:	37 9c ff e8 	addi sp,sp,-24                                 
 80112a0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80112a4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80112a8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80112ac:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80112b0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80112b4:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Block *current = heap->first_block;                            
 80112b8:	28 25 00 20 	lw r5,(r1+32)                                  
  Heap_Block *end = heap->last_block;                                 
 80112bc:	28 2c 00 24 	lw r12,(r1+36)                                 
void _Heap_Iterate(                                                   
  Heap_Control *heap,                                                 
  Heap_Block_visitor visitor,                                         
  void *visitor_arg                                                   
)                                                                     
{                                                                     
 80112c0:	b8 40 68 00 	mv r13,r2                                      
 80112c4:	b8 60 70 00 	mv r14,r3                                      
 80112c8:	34 0f ff fe 	mvi r15,-2                                     
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
 80112cc:	5c ac 00 04 	bne r5,r12,80112dc <_Heap_Iterate+0x40>        <== ALWAYS TAKEN
 80112d0:	e0 00 00 0c 	bi 8011300 <_Heap_Iterate+0x64>                <== NOT EXECUTED
 80112d4:	45 8b 00 0b 	be r12,r11,8011300 <_Heap_Iterate+0x64>        
 80112d8:	b9 60 28 00 	mv r5,r11                                      
 80112dc:	28 a2 00 04 	lw r2,(r5+4)                                   
    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 );            
 80112e0:	b8 a0 08 00 	mv r1,r5                                       
 80112e4:	b9 c0 20 00 	mv r4,r14                                      
 80112e8:	a1 e2 10 00 	and r2,r15,r2                                  
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 80112ec:	b4 a2 58 00 	add r11,r5,r2                                  
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 80112f0:	29 63 00 04 	lw r3,(r11+4)                                  
 80112f4:	20 63 00 01 	andi r3,r3,0x1                                 
 80112f8:	d9 a0 00 00 	call r13                                       
{                                                                     
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
 80112fc:	44 20 ff f6 	be r1,r0,80112d4 <_Heap_Iterate+0x38>          <== ALWAYS TAKEN
                                                                      
    stop = (*visitor)( current, size, used, visitor_arg );            
                                                                      
    current = next;                                                   
  }                                                                   
}                                                                     
 8011300:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011304:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8011308:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801130c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8011310:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8011314:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8011318:	37 9c 00 18 	addi sp,sp,24                                  
 801131c:	c3 a0 00 00 	ret                                            
                                                                      

0801cf7c <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) {
 801cf7c:	37 9c ff f0 	addi sp,sp,-16                                 
 801cf80:	5b 8b 00 10 	sw (sp+16),r11                                 
 801cf84:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801cf88:	5b 8d 00 08 	sw (sp+8),r13                                  
 801cf8c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801cf90:	b8 40 60 00 	mv r12,r2                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 801cf94:	28 22 00 10 	lw r2,(r1+16)                                  
 801cf98:	b8 20 58 00 	mv r11,r1                                      
 801cf9c:	b9 80 08 00 	mv r1,r12                                      
 801cfa0:	b8 60 68 00 	mv r13,r3                                      
 801cfa4:	fb ff fc 29 	calli 801c048 <__umodsi3>                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
 801cfa8:	29 62 00 20 	lw r2,(r11+32)                                 
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
 801cfac:	35 84 ff f8 	addi r4,r12,-8                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
 801cfb0:	c8 81 20 00 	sub r4,r4,r1                                   
  Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
  Heap_Block *next_block = NULL;                                      
  uintptr_t block_size = 0;                                           
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
    return false;                                                     
 801cfb4:	34 01 00 00 	mvi r1,0                                       
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 801cfb8:	54 44 00 10 	bgu r2,r4,801cff8 <_Heap_Size_of_alloc_area+0x7c>
 801cfbc:	29 65 00 24 	lw r5,(r11+36)                                 
 801cfc0:	54 85 00 0e 	bgu r4,r5,801cff8 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 801cfc4:	28 86 00 04 	lw r6,(r4+4)                                   
 801cfc8:	34 03 ff fe 	mvi r3,-2                                      
 801cfcc:	a0 66 18 00 	and r3,r3,r6                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 801cfd0:	b4 83 20 00 	add r4,r4,r3                                   
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 801cfd4:	54 44 00 09 	bgu r2,r4,801cff8 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
 801cfd8:	54 85 00 08 	bgu r4,r5,801cff8 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 801cfdc:	28 82 00 04 	lw r2,(r4+4)                                   
 801cfe0:	20 42 00 01 	andi r2,r2,0x1                                 
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if (                                                                
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
 801cfe4:	44 40 00 05 	be r2,r0,801cff8 <_Heap_Size_of_alloc_area+0x7c><== NEVER TAKEN
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
 801cfe8:	c8 8c 20 00 	sub r4,r4,r12                                  
 801cfec:	34 84 00 04 	addi r4,r4,4                                   
 801cff0:	59 a4 00 00 	sw (r13+0),r4                                  
                                                                      
  return true;                                                        
 801cff4:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 801cff8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cffc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801d000:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801d004:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801d008:	37 9c 00 10 	addi sp,sp,16                                  
 801d00c:	c3 a0 00 00 	ret                                            
                                                                      

08005918 <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
 8005918:	37 9c ff 9c 	addi sp,sp,-100                                
 800591c:	5b 8b 00 50 	sw (sp+80),r11                                 
 8005920:	5b 8c 00 4c 	sw (sp+76),r12                                 
 8005924:	5b 8d 00 48 	sw (sp+72),r13                                 
 8005928:	5b 8e 00 44 	sw (sp+68),r14                                 
 800592c:	5b 8f 00 40 	sw (sp+64),r15                                 
 8005930:	5b 90 00 3c 	sw (sp+60),r16                                 
 8005934:	5b 91 00 38 	sw (sp+56),r17                                 
 8005938:	5b 92 00 34 	sw (sp+52),r18                                 
 800593c:	5b 93 00 30 	sw (sp+48),r19                                 
 8005940:	5b 94 00 2c 	sw (sp+44),r20                                 
 8005944:	5b 95 00 28 	sw (sp+40),r21                                 
 8005948:	5b 96 00 24 	sw (sp+36),r22                                 
 800594c:	5b 97 00 20 	sw (sp+32),r23                                 
 8005950:	5b 98 00 1c 	sw (sp+28),r24                                 
 8005954:	5b 99 00 18 	sw (sp+24),r25                                 
 8005958:	5b 9b 00 14 	sw (sp+20),fp                                  
 800595c:	5b 9d 00 10 	sw (sp+16),ra                                  
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
 8005960:	78 0f 08 00 	mvhi r15,0x800                                 
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
 8005964:	20 63 00 ff 	andi r3,r3,0xff                                
 8005968:	b8 20 68 00 	mv r13,r1                                      
 800596c:	b8 40 98 00 	mv r19,r2                                      
  uintptr_t const page_size = heap->page_size;                        
 8005970:	28 35 00 10 	lw r21,(r1+16)                                 
  uintptr_t const min_block_size = heap->min_block_size;              
 8005974:	28 36 00 14 	lw r22,(r1+20)                                 
  Heap_Block *const first_block = heap->first_block;                  
 8005978:	28 34 00 20 	lw r20,(r1+32)                                 
  Heap_Block *const last_block = heap->last_block;                    
 800597c:	28 37 00 24 	lw r23,(r1+36)                                 
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
 8005980:	39 ef 58 70 	ori r15,r15,0x5870                             
 8005984:	44 60 00 03 	be r3,r0,8005990 <_Heap_Walk+0x78>             
 8005988:	78 0f 08 00 	mvhi r15,0x800                                 
 800598c:	39 ef 58 94 	ori r15,r15,0x5894                             
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
 8005990:	78 03 08 01 	mvhi r3,0x801                                  
 8005994:	38 63 7e 00 	ori r3,r3,0x7e00                               
 8005998:	28 69 00 00 	lw r9,(r3+0)                                   
 800599c:	34 07 00 03 	mvi r7,3                                       
    return true;                                                      
 80059a0:	34 03 00 01 	mvi r3,1                                       
  Heap_Block *const last_block = heap->last_block;                    
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
 80059a4:	45 27 00 15 	be r9,r7,80059f8 <_Heap_Walk+0xe0>             
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 80059a8:	b8 60 08 00 	mv r1,r3                                       
 80059ac:	2b 9d 00 10 	lw ra,(sp+16)                                  
 80059b0:	2b 8b 00 50 	lw r11,(sp+80)                                 
 80059b4:	2b 8c 00 4c 	lw r12,(sp+76)                                 
 80059b8:	2b 8d 00 48 	lw r13,(sp+72)                                 
 80059bc:	2b 8e 00 44 	lw r14,(sp+68)                                 
 80059c0:	2b 8f 00 40 	lw r15,(sp+64)                                 
 80059c4:	2b 90 00 3c 	lw r16,(sp+60)                                 
 80059c8:	2b 91 00 38 	lw r17,(sp+56)                                 
 80059cc:	2b 92 00 34 	lw r18,(sp+52)                                 
 80059d0:	2b 93 00 30 	lw r19,(sp+48)                                 
 80059d4:	2b 94 00 2c 	lw r20,(sp+44)                                 
 80059d8:	2b 95 00 28 	lw r21,(sp+40)                                 
 80059dc:	2b 96 00 24 	lw r22,(sp+36)                                 
 80059e0:	2b 97 00 20 	lw r23,(sp+32)                                 
 80059e4:	2b 98 00 1c 	lw r24,(sp+28)                                 
 80059e8:	2b 99 00 18 	lw r25,(sp+24)                                 
 80059ec:	2b 9b 00 14 	lw fp,(sp+20)                                  
 80059f0:	37 9c 00 64 	addi sp,sp,100                                 
 80059f4:	c3 a0 00 00 	ret                                            
  Heap_Block *const first_free_block = _Heap_Free_list_first( heap ); 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
                                                                      
  (*printer)(                                                         
 80059f8:	29 a2 00 08 	lw r2,(r13+8)                                  
 80059fc:	29 a1 00 0c 	lw r1,(r13+12)                                 
 8005a00:	29 a6 00 18 	lw r6,(r13+24)                                 
 8005a04:	29 a7 00 1c 	lw r7,(r13+28)                                 
 8005a08:	78 03 08 01 	mvhi r3,0x801                                  
 8005a0c:	5b 82 00 08 	sw (sp+8),r2                                   
 8005a10:	5b 81 00 0c 	sw (sp+12),r1                                  
 8005a14:	5b 97 00 04 	sw (sp+4),r23                                  
 8005a18:	ba 60 08 00 	mv r1,r19                                      
 8005a1c:	34 02 00 00 	mvi r2,0                                       
 8005a20:	38 63 50 d8 	ori r3,r3,0x50d8                               
 8005a24:	ba a0 20 00 	mv r4,r21                                      
 8005a28:	ba c0 28 00 	mv r5,r22                                      
 8005a2c:	ba 80 40 00 	mv r8,r20                                      
 8005a30:	d9 e0 00 00 	call r15                                       
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
 8005a34:	46 a0 00 26 	be r21,r0,8005acc <_Heap_Walk+0x1b4>           
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 8005a38:	22 ab 00 03 	andi r11,r21,0x3                               
    (*printer)( source, true, "page size is zero\n" );                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
 8005a3c:	5d 60 00 2b 	bne r11,r0,8005ae8 <_Heap_Walk+0x1d0>          
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005a40:	ba c0 08 00 	mv r1,r22                                      
 8005a44:	ba a0 10 00 	mv r2,r21                                      
 8005a48:	fb ff eb f6 	calli 8000a20 <__umodsi3>                      
 8005a4c:	b8 20 60 00 	mv r12,r1                                      
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
 8005a50:	5c 2b 00 2e 	bne r1,r11,8005b08 <_Heap_Walk+0x1f0>          
 8005a54:	36 81 00 08 	addi r1,r20,8                                  
 8005a58:	ba a0 10 00 	mv r2,r21                                      
 8005a5c:	fb ff eb f1 	calli 8000a20 <__umodsi3>                      
 8005a60:	b8 20 18 00 	mv r3,r1                                       
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 8005a64:	5c 2c 00 31 	bne r1,r12,8005b28 <_Heap_Walk+0x210>          
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005a68:	2a 8c 00 04 	lw r12,(r20+4)                                 
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005a6c:	21 81 00 01 	andi r1,r12,0x1                                
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
 8005a70:	44 23 00 fe 	be r1,r3,8005e68 <_Heap_Walk+0x550>            
    - 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;                
 8005a74:	2a e2 00 04 	lw r2,(r23+4)                                  
 8005a78:	34 01 ff fe 	mvi r1,-2                                      
 8005a7c:	a0 22 08 00 	and r1,r1,r2                                   
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8005a80:	b6 e1 08 00 	add r1,r23,r1                                  
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005a84:	28 22 00 04 	lw r2,(r1+4)                                   
 8005a88:	20 42 00 01 	andi r2,r2,0x1                                 
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
 8005a8c:	44 43 00 09 	be r2,r3,8005ab0 <_Heap_Walk+0x198>            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
 8005a90:	46 81 00 2e 	be r20,r1,8005b48 <_Heap_Walk+0x230>           
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
 8005a94:	78 03 08 01 	mvhi r3,0x801                                  
 8005a98:	38 63 52 40 	ori r3,r3,0x5240                               
 8005a9c:	ba 60 08 00 	mv r1,r19                                      
 8005aa0:	34 02 00 01 	mvi r2,1                                       
 8005aa4:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005aa8:	34 03 00 00 	mvi r3,0                                       
 8005aac:	e3 ff ff bf 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
    (*printer)(                                                       
 8005ab0:	78 03 08 01 	mvhi r3,0x801                                  
 8005ab4:	38 63 52 28 	ori r3,r3,0x5228                               
 8005ab8:	ba 60 08 00 	mv r1,r19                                      
 8005abc:	34 02 00 01 	mvi r2,1                                       
 8005ac0:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005ac4:	34 03 00 00 	mvi r3,0                                       
 8005ac8:	e3 ff ff b8 	bi 80059a8 <_Heap_Walk+0x90>                   
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
    (*printer)( source, true, "page size is zero\n" );                
 8005acc:	78 03 08 01 	mvhi r3,0x801                                  
 8005ad0:	38 63 51 6c 	ori r3,r3,0x516c                               
 8005ad4:	ba 60 08 00 	mv r1,r19                                      
 8005ad8:	34 02 00 01 	mvi r2,1                                       
 8005adc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005ae0:	34 03 00 00 	mvi r3,0                                       
 8005ae4:	e3 ff ff b1 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
    (*printer)(                                                       
 8005ae8:	78 03 08 01 	mvhi r3,0x801                                  
 8005aec:	38 63 51 80 	ori r3,r3,0x5180                               
 8005af0:	ba 60 08 00 	mv r1,r19                                      
 8005af4:	34 02 00 01 	mvi r2,1                                       
 8005af8:	ba a0 20 00 	mv r4,r21                                      
 8005afc:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005b00:	34 03 00 00 	mvi r3,0                                       
 8005b04:	e3 ff ff a9 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
    (*printer)(                                                       
 8005b08:	78 03 08 01 	mvhi r3,0x801                                  
 8005b0c:	38 63 51 a0 	ori r3,r3,0x51a0                               
 8005b10:	ba 60 08 00 	mv r1,r19                                      
 8005b14:	34 02 00 01 	mvi r2,1                                       
 8005b18:	ba c0 20 00 	mv r4,r22                                      
 8005b1c:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005b20:	34 03 00 00 	mvi r3,0                                       
 8005b24:	e3 ff ff a1 	bi 80059a8 <_Heap_Walk+0x90>                   
  }                                                                   
                                                                      
  if (                                                                
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
 8005b28:	78 03 08 01 	mvhi r3,0x801                                  
 8005b2c:	38 63 51 c4 	ori r3,r3,0x51c4                               
 8005b30:	ba 60 08 00 	mv r1,r19                                      
 8005b34:	34 02 00 01 	mvi r2,1                                       
 8005b38:	ba 80 20 00 	mv r4,r20                                      
 8005b3c:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005b40:	34 03 00 00 	mvi r3,0                                       
 8005b44:	e3 ff ff 99 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005b48:	29 ab 00 08 	lw r11,(r13+8)                                 
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
 8005b4c:	29 b2 00 10 	lw r18,(r13+16)                                
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005b50:	45 ab 00 2f 	be r13,r11,8005c0c <_Heap_Walk+0x2f4>          
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005b54:	29 ae 00 20 	lw r14,(r13+32)                                
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 8005b58:	55 cb 00 dd 	bgu r14,r11,8005ecc <_Heap_Walk+0x5b4>         <== NEVER TAKEN
 8005b5c:	29 b8 00 24 	lw r24,(r13+36)                                
 8005b60:	55 78 00 db 	bgu r11,r24,8005ecc <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005b64:	35 61 00 08 	addi r1,r11,8                                  
 8005b68:	ba 40 10 00 	mv r2,r18                                      
 8005b6c:	fb ff eb ad 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 8005b70:	5c 20 00 df 	bne r1,r0,8005eec <_Heap_Walk+0x5d4>           <== NEVER TAKEN
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 8005b74:	29 63 00 04 	lw r3,(r11+4)                                  
 8005b78:	34 02 ff fe 	mvi r2,-2                                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005b7c:	b9 60 80 00 	mv r16,r11                                     
 8005b80:	a0 43 10 00 	and r2,r2,r3                                   
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005b84:	b5 62 10 00 	add r2,r11,r2                                  
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005b88:	28 42 00 04 	lw r2,(r2+4)                                   
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005b8c:	b9 a0 18 00 	mv r3,r13                                      
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 8005b90:	34 11 ff fe 	mvi r17,-2                                     
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005b94:	20 42 00 01 	andi r2,r2,0x1                                 
 8005b98:	44 41 00 12 	be r2,r1,8005be0 <_Heap_Walk+0x2c8>            <== ALWAYS TAKEN
 8005b9c:	e0 00 00 dc 	bi 8005f0c <_Heap_Walk+0x5f4>                  <== NOT EXECUTED
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
 8005ba0:	29 6b 00 08 	lw r11,(r11+8)                                 
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005ba4:	45 ab 00 1b 	be r13,r11,8005c10 <_Heap_Walk+0x2f8>          
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 8005ba8:	55 cb 00 c9 	bgu r14,r11,8005ecc <_Heap_Walk+0x5b4>         
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005bac:	35 61 00 08 	addi r1,r11,8                                  
 8005bb0:	ba 40 10 00 	mv r2,r18                                      
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 8005bb4:	55 78 00 c6 	bgu r11,r24,8005ecc <_Heap_Walk+0x5b4>         <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005bb8:	fb ff eb 9a 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
 8005bbc:	5c 20 00 cc 	bne r1,r0,8005eec <_Heap_Walk+0x5d4>           
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 8005bc0:	29 64 00 04 	lw r4,(r11+4)                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005bc4:	ba 00 18 00 	mv r3,r16                                      
 8005bc8:	b9 60 80 00 	mv r16,r11                                     
 8005bcc:	a2 24 20 00 	and r4,r17,r4                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005bd0:	b4 8b 20 00 	add r4,r4,r11                                  
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005bd4:	28 84 00 04 	lw r4,(r4+4)                                   
 8005bd8:	20 84 00 01 	andi r4,r4,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005bdc:	5c 81 00 cc 	bne r4,r1,8005f0c <_Heap_Walk+0x5f4>           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
 8005be0:	29 67 00 0c 	lw r7,(r11+12)                                 
 8005be4:	44 e3 ff ef 	be r7,r3,8005ba0 <_Heap_Walk+0x288>            
      (*printer)(                                                     
 8005be8:	78 03 08 01 	mvhi r3,0x801                                  
 8005bec:	38 63 52 dc 	ori r3,r3,0x52dc                               
 8005bf0:	ba 60 08 00 	mv r1,r19                                      
 8005bf4:	34 02 00 01 	mvi r2,1                                       
 8005bf8:	b9 60 20 00 	mv r4,r11                                      
 8005bfc:	b8 e0 28 00 	mv r5,r7                                       
 8005c00:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005c04:	34 03 00 00 	mvi r3,0                                       
 8005c08:	e3 ff ff 68 	bi 80059a8 <_Heap_Walk+0x90>                   
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005c0c:	29 ae 00 20 	lw r14,(r13+32)                                
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005c10:	78 01 08 01 	mvhi r1,0x801                                  
 8005c14:	5b 81 00 54 	sw (sp+84),r1                                  
 8005c18:	78 01 08 01 	mvhi r1,0x801                                  
 8005c1c:	5b 81 00 58 	sw (sp+88),r1                                  
 8005c20:	78 01 08 01 	mvhi r1,0x801                                  
 8005c24:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005c28:	78 01 08 01 	mvhi r1,0x801                                  
 8005c2c:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005c30:	78 01 08 01 	mvhi r1,0x801                                  
 8005c34:	5b 81 00 64 	sw (sp+100),r1                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005c38:	2b 81 00 54 	lw r1,(sp+84)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 8005c3c:	78 1b 08 01 	mvhi fp,0x801                                  
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 8005c40:	78 19 08 01 	mvhi r25,0x801                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005c44:	38 21 50 a0 	ori r1,r1,0x50a0                               
 8005c48:	5b 81 00 54 	sw (sp+84),r1                                  
 8005c4c:	2b 81 00 58 	lw r1,(sp+88)                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005c50:	78 18 08 01 	mvhi r24,0x801                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
 8005c54:	ba 80 88 00 	mv r17,r20                                     
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005c58:	38 21 50 bc 	ori r1,r1,0x50bc                               
 8005c5c:	5b 81 00 58 	sw (sp+88),r1                                  
 8005c60:	2b 81 00 5c 	lw r1,(sp+92)                                  
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 8005c64:	3b 7b 54 8c 	ori fp,fp,0x548c                               
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
      (*printer)(                                                     
 8005c68:	3b 39 54 74 	ori r25,r25,0x5474                             
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005c6c:	38 21 53 d0 	ori r1,r1,0x53d0                               
 8005c70:	5b 81 00 5c 	sw (sp+92),r1                                  
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005c74:	2b 81 00 60 	lw r1,(sp+96)                                  
 8005c78:	3b 18 54 40 	ori r24,r24,0x5440                             
 8005c7c:	38 21 50 cc 	ori r1,r1,0x50cc                               
 8005c80:	5b 81 00 60 	sw (sp+96),r1                                  
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005c84:	2b 81 00 64 	lw r1,(sp+100)                                 
 8005c88:	38 21 50 b0 	ori r1,r1,0x50b0                               
 8005c8c:	5b 81 00 64 	sw (sp+100),r1                                 
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
 8005c90:	34 01 ff fe 	mvi r1,-2                                      
 8005c94:	a1 81 90 00 	and r18,r12,r1                                 
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
 8005c98:	b6 51 80 00 	add r16,r18,r17                                
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
 8005c9c:	55 d0 00 7a 	bgu r14,r16,8005e84 <_Heap_Walk+0x56c>         <== NEVER TAKEN
 8005ca0:	29 a4 00 24 	lw r4,(r13+36)                                 
 8005ca4:	56 04 00 78 	bgu r16,r4,8005e84 <_Heap_Walk+0x56c>          
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
 8005ca8:	ba 40 08 00 	mv r1,r18                                      
 8005cac:	ba a0 10 00 	mv r2,r21                                      
    uintptr_t const block_begin = (uintptr_t) block;                  
    uintptr_t const block_size = _Heap_Block_size( block );           
    bool const prev_used = _Heap_Is_prev_used( block );               
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
 8005cb0:	fe 37 58 00 	cmpne r11,r17,r23                              
 8005cb4:	fb ff eb 5b 	calli 8000a20 <__umodsi3>                      
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
 8005cb8:	44 20 00 02 	be r1,r0,8005cc0 <_Heap_Walk+0x3a8>            
 8005cbc:	5d 60 00 15 	bne r11,r0,8005d10 <_Heap_Walk+0x3f8>          
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
 8005cc0:	52 56 00 02 	bgeu r18,r22,8005cc8 <_Heap_Walk+0x3b0>        
 8005cc4:	5d 60 00 1c 	bne r11,r0,8005d34 <_Heap_Walk+0x41c>          <== ALWAYS TAKEN
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
 8005cc8:	56 11 00 02 	bgu r16,r17,8005cd0 <_Heap_Walk+0x3b8>         
 8005ccc:	5d 60 00 77 	bne r11,r0,8005ea8 <_Heap_Walk+0x590>          
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
 8005cd0:	2a 06 00 04 	lw r6,(r16+4)                                  
 8005cd4:	21 8c 00 01 	andi r12,r12,0x1                               
 8005cd8:	20 c6 00 01 	andi r6,r6,0x1                                 
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
 8005cdc:	44 c0 00 28 	be r6,r0,8005d7c <_Heap_Walk+0x464>            
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
 8005ce0:	45 80 00 1f 	be r12,r0,8005d5c <_Heap_Walk+0x444>           
      (*printer)(                                                     
 8005ce4:	ba 60 08 00 	mv r1,r19                                      
 8005ce8:	34 02 00 00 	mvi r2,0                                       
 8005cec:	bb 20 18 00 	mv r3,r25                                      
 8005cf0:	ba 20 20 00 	mv r4,r17                                      
 8005cf4:	ba 40 28 00 	mv r5,r18                                      
 8005cf8:	d9 e0 00 00 	call r15                                       
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
 8005cfc:	46 90 00 43 	be r20,r16,8005e08 <_Heap_Walk+0x4f0>          
 8005d00:	2a 0c 00 04 	lw r12,(r16+4)                                 
 8005d04:	29 ae 00 20 	lw r14,(r13+32)                                
 8005d08:	ba 00 88 00 	mv r17,r16                                     
 8005d0c:	e3 ff ff e1 	bi 8005c90 <_Heap_Walk+0x378>                  
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
      (*printer)(                                                     
 8005d10:	78 03 08 01 	mvhi r3,0x801                                  
 8005d14:	38 63 53 40 	ori r3,r3,0x5340                               
 8005d18:	ba 60 08 00 	mv r1,r19                                      
 8005d1c:	34 02 00 01 	mvi r2,1                                       
 8005d20:	ba 20 20 00 	mv r4,r17                                      
 8005d24:	ba 40 28 00 	mv r5,r18                                      
 8005d28:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: block size %u not page aligned\n",             
        block,                                                        
        block_size                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005d2c:	34 03 00 00 	mvi r3,0                                       
 8005d30:	e3 ff ff 1e 	bi 80059a8 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
      (*printer)(                                                     
 8005d34:	78 03 08 01 	mvhi r3,0x801                                  
 8005d38:	38 63 53 70 	ori r3,r3,0x5370                               
 8005d3c:	ba 60 08 00 	mv r1,r19                                      
 8005d40:	34 02 00 01 	mvi r2,1                                       
 8005d44:	ba 20 20 00 	mv r4,r17                                      
 8005d48:	ba 40 28 00 	mv r5,r18                                      
 8005d4c:	ba c0 30 00 	mv r6,r22                                      
 8005d50:	d9 e0 00 00 	call r15                                       
        block,                                                        
        block_size,                                                   
        min_block_size                                                
      );                                                              
                                                                      
      return false;                                                   
 8005d54:	34 03 00 00 	mvi r3,0                                       
 8005d58:	e3 ff ff 14 	bi 80059a8 <_Heap_Walk+0x90>                   
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
 8005d5c:	2a 26 00 00 	lw r6,(r17+0)                                  
 8005d60:	ba 20 20 00 	mv r4,r17                                      
 8005d64:	ba 60 08 00 	mv r1,r19                                      
 8005d68:	34 02 00 00 	mvi r2,0                                       
 8005d6c:	bb 60 18 00 	mv r3,fp                                       
 8005d70:	ba 40 28 00 	mv r5,r18                                      
 8005d74:	d9 e0 00 00 	call r15                                       
 8005d78:	e3 ff ff e1 	bi 8005cfc <_Heap_Walk+0x3e4>                  
    false,                                                            
    "block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n",          
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
 8005d7c:	2a 26 00 0c 	lw r6,(r17+12)                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005d80:	29 a4 00 08 	lw r4,(r13+8)                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005d84:	29 a5 00 0c 	lw r5,(r13+12)                                 
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005d88:	2b 87 00 54 	lw r7,(sp+84)                                  
 8005d8c:	44 86 00 03 	be r4,r6,8005d98 <_Heap_Walk+0x480>            
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005d90:	bb 00 38 00 	mv r7,r24                                      
 8005d94:	45 a6 00 29 	be r13,r6,8005e38 <_Heap_Walk+0x520>           
    block->next,                                                      
    block->next == last_free_block ?                                  
 8005d98:	2a 28 00 08 	lw r8,(r17+8)                                  
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005d9c:	2b 84 00 58 	lw r4,(sp+88)                                  
 8005da0:	44 a8 00 03 	be r5,r8,8005dac <_Heap_Walk+0x494>            
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005da4:	bb 00 20 00 	mv r4,r24                                      
 8005da8:	45 a8 00 26 	be r13,r8,8005e40 <_Heap_Walk+0x528>           
  Heap_Block *const last_free_block = _Heap_Free_list_last( heap );   
  bool const prev_used = _Heap_Is_prev_used( block );                 
  uintptr_t const block_size = _Heap_Block_size( block );             
  Heap_Block *const next_block = _Heap_Block_at( block, block_size ); 
                                                                      
  (*printer)(                                                         
 8005dac:	2b 83 00 5c 	lw r3,(sp+92)                                  
 8005db0:	5b 84 00 04 	sw (sp+4),r4                                   
 8005db4:	ba 60 08 00 	mv r1,r19                                      
 8005db8:	34 02 00 00 	mvi r2,0                                       
 8005dbc:	ba 20 20 00 	mv r4,r17                                      
 8005dc0:	ba 40 28 00 	mv r5,r18                                      
 8005dc4:	d9 e0 00 00 	call r15                                       
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
 8005dc8:	2a 06 00 00 	lw r6,(r16+0)                                  
 8005dcc:	5e 46 00 11 	bne r18,r6,8005e10 <_Heap_Walk+0x4f8>          
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
 8005dd0:	45 80 00 1e 	be r12,r0,8005e48 <_Heap_Walk+0x530>           
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
 8005dd4:	29 a5 00 08 	lw r5,(r13+8)                                  
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005dd8:	45 a5 00 04 	be r13,r5,8005de8 <_Heap_Walk+0x4d0>           <== NEVER TAKEN
    if ( free_block == block ) {                                      
 8005ddc:	46 25 ff c8 	be r17,r5,8005cfc <_Heap_Walk+0x3e4>           
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
 8005de0:	28 a5 00 08 	lw r5,(r5+8)                                   
)                                                                     
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
 8005de4:	5d a5 ff fe 	bne r13,r5,8005ddc <_Heap_Walk+0x4c4>          
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
 8005de8:	78 03 08 01 	mvhi r3,0x801                                  
 8005dec:	38 63 54 b4 	ori r3,r3,0x54b4                               
 8005df0:	ba 60 08 00 	mv r1,r19                                      
 8005df4:	34 02 00 01 	mvi r2,1                                       
 8005df8:	ba 20 20 00 	mv r4,r17                                      
 8005dfc:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 8005e00:	34 03 00 00 	mvi r3,0                                       
 8005e04:	e3 ff fe e9 	bi 80059a8 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
 8005e08:	34 03 00 01 	mvi r3,1                                       
 8005e0c:	e3 ff fe e7 	bi 80059a8 <_Heap_Walk+0x90>                   
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
    (*printer)(                                                       
 8005e10:	78 03 08 01 	mvhi r3,0x801                                  
 8005e14:	38 63 54 08 	ori r3,r3,0x5408                               
 8005e18:	ba 60 08 00 	mv r1,r19                                      
 8005e1c:	34 02 00 01 	mvi r2,1                                       
 8005e20:	ba 20 20 00 	mv r4,r17                                      
 8005e24:	ba 40 28 00 	mv r5,r18                                      
 8005e28:	ba 00 38 00 	mv r7,r16                                      
 8005e2c:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 8005e30:	34 03 00 00 	mvi r3,0                                       
 8005e34:	e3 ff fe dd 	bi 80059a8 <_Heap_Walk+0x90>                   
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
 8005e38:	2b 87 00 64 	lw r7,(sp+100)                                 
 8005e3c:	e3 ff ff d7 	bi 8005d98 <_Heap_Walk+0x480>                  
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
 8005e40:	2b 84 00 60 	lw r4,(sp+96)                                  
 8005e44:	e3 ff ff da 	bi 8005dac <_Heap_Walk+0x494>                  
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
    (*printer)(                                                       
 8005e48:	78 03 08 01 	mvhi r3,0x801                                  
 8005e4c:	38 63 54 44 	ori r3,r3,0x5444                               
 8005e50:	ba 60 08 00 	mv r1,r19                                      
 8005e54:	34 02 00 01 	mvi r2,1                                       
 8005e58:	ba 20 20 00 	mv r4,r17                                      
 8005e5c:	d9 e0 00 00 	call r15                                       
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
 8005e60:	34 03 00 00 	mvi r3,0                                       
 8005e64:	e3 ff fe d1 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
    (*printer)(                                                       
 8005e68:	78 03 08 01 	mvhi r3,0x801                                  
 8005e6c:	38 63 51 f8 	ori r3,r3,0x51f8                               
 8005e70:	ba 60 08 00 	mv r1,r19                                      
 8005e74:	34 02 00 01 	mvi r2,1                                       
 8005e78:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005e7c:	34 03 00 00 	mvi r3,0                                       
 8005e80:	e3 ff fe ca 	bi 80059a8 <_Heap_Walk+0x90>                   
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {              
      (*printer)(                                                     
 8005e84:	78 03 08 01 	mvhi r3,0x801                                  
 8005e88:	38 63 53 10 	ori r3,r3,0x5310                               
 8005e8c:	ba 60 08 00 	mv r1,r19                                      
 8005e90:	34 02 00 01 	mvi r2,1                                       
 8005e94:	ba 20 20 00 	mv r4,r17                                      
 8005e98:	ba 00 28 00 	mv r5,r16                                      
 8005e9c:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x not in heap\n",              
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005ea0:	34 03 00 00 	mvi r3,0                                       
 8005ea4:	e3 ff fe c1 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
      (*printer)(                                                     
 8005ea8:	78 03 08 01 	mvhi r3,0x801                                  
 8005eac:	38 63 53 9c 	ori r3,r3,0x539c                               
 8005eb0:	ba 60 08 00 	mv r1,r19                                      
 8005eb4:	34 02 00 01 	mvi r2,1                                       
 8005eb8:	ba 20 20 00 	mv r4,r17                                      
 8005ebc:	ba 00 28 00 	mv r5,r16                                      
 8005ec0:	d9 e0 00 00 	call r15                                       
        "block 0x%08x: next block 0x%08x is not a successor\n",       
        block,                                                        
        next_block                                                    
      );                                                              
                                                                      
      return false;                                                   
 8005ec4:	34 03 00 00 	mvi r3,0                                       
 8005ec8:	e3 ff fe b8 	bi 80059a8 <_Heap_Walk+0x90>                   
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
    if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {              
      (*printer)(                                                     
 8005ecc:	78 03 08 01 	mvhi r3,0x801                                  
 8005ed0:	38 63 52 70 	ori r3,r3,0x5270                               
 8005ed4:	ba 60 08 00 	mv r1,r19                                      
 8005ed8:	34 02 00 01 	mvi r2,1                                       
 8005edc:	b9 60 20 00 	mv r4,r11                                      
 8005ee0:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005ee4:	34 03 00 00 	mvi r3,0                                       
 8005ee8:	e3 ff fe b0 	bi 80059a8 <_Heap_Walk+0x90>                   
    }                                                                 
                                                                      
    if (                                                              
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
 8005eec:	78 03 08 01 	mvhi r3,0x801                                  
 8005ef0:	38 63 52 90 	ori r3,r3,0x5290                               
 8005ef4:	ba 60 08 00 	mv r1,r19                                      
 8005ef8:	34 02 00 01 	mvi r2,1                                       
 8005efc:	b9 60 20 00 	mv r4,r11                                      
 8005f00:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005f04:	34 03 00 00 	mvi r3,0                                       
 8005f08:	e3 ff fe a8 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
      (*printer)(                                                     
 8005f0c:	78 03 08 01 	mvhi r3,0x801                                  
 8005f10:	38 63 52 c0 	ori r3,r3,0x52c0                               
 8005f14:	ba 60 08 00 	mv r1,r19                                      
 8005f18:	34 02 00 01 	mvi r2,1                                       
 8005f1c:	b9 60 20 00 	mv r4,r11                                      
 8005f20:	d9 e0 00 00 	call r15                                       
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
 8005f24:	34 03 00 00 	mvi r3,0                                       
 8005f28:	e3 ff fe a0 	bi 80059a8 <_Heap_Walk+0x90>                   
                                                                      

080045e0 <_IO_Initialize_all_drivers>: void _IO_Initialize_all_drivers( void ) {
 80045e0:	37 9c ff f4 	addi sp,sp,-12                                 
 80045e4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80045e8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80045ec:	5b 9d 00 04 	sw (sp+4),ra                                   
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 80045f0:	78 0c 08 02 	mvhi r12,0x802                                 
 80045f4:	39 8c 12 50 	ori r12,r12,0x1250                             
 80045f8:	29 81 00 00 	lw r1,(r12+0)                                  
 80045fc:	44 20 00 09 	be r1,r0,8004620 <_IO_Initialize_all_drivers+0x40><== NEVER TAKEN
 8004600:	34 0b 00 00 	mvi r11,0                                      
     (void) rtems_io_initialize( major, 0, NULL );                    
 8004604:	b9 60 08 00 	mv r1,r11                                      
 8004608:	34 02 00 00 	mvi r2,0                                       
 800460c:	34 03 00 00 	mvi r3,0                                       
 8004610:	f8 00 18 d6 	calli 800a968 <rtems_io_initialize>            
                                                                      
void _IO_Initialize_all_drivers( void )                               
{                                                                     
   rtems_device_major_number major;                                   
                                                                      
   for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )         
 8004614:	29 81 00 00 	lw r1,(r12+0)                                  
 8004618:	35 6b 00 01 	addi r11,r11,1                                 
 800461c:	54 2b ff fa 	bgu r1,r11,8004604 <_IO_Initialize_all_drivers+0x24>
     (void) rtems_io_initialize( major, 0, NULL );                    
}                                                                     
 8004620:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004624:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004628:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800462c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004630:	c3 a0 00 00 	ret                                            
                                                                      

080044c0 <_IO_Manager_initialization>: #include <rtems/score/wkspace.h> #include <string.h> void _IO_Manager_initialization(void) {
 80044c0:	37 9c ff e8 	addi sp,sp,-24                                 
 80044c4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80044c8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80044cc:	5b 8d 00 10 	sw (sp+16),r13                                 
 80044d0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80044d4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80044d8:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
 80044dc:	78 01 08 01 	mvhi r1,0x801                                  
 80044e0:	38 21 d2 6c 	ori r1,r1,0xd26c                               
  drivers_in_table  = rtems_configuration_get_number_of_device_drivers();
 80044e4:	28 2b 00 38 	lw r11,(r1+56)                                 
  number_of_drivers = rtems_configuration_get_maximum_drivers();      
 80044e8:	28 2e 00 34 	lw r14,(r1+52)                                 
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = rtems_configuration_get_device_driver_table();  
 80044ec:	28 2d 00 3c 	lw r13,(r1+60)                                 
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
 80044f0:	51 6e 00 2e 	bgeu r11,r14,80045a8 <_IO_Manager_initialization+0xe8>
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
 80044f4:	b5 ce 60 00 	add r12,r14,r14                                
 80044f8:	b5 8e 60 00 	add r12,r12,r14                                
 80044fc:	b5 8c 60 00 	add r12,r12,r12                                
 8004500:	b5 8c 60 00 	add r12,r12,r12                                
 8004504:	b5 8c 60 00 	add r12,r12,r12                                
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
 8004508:	b9 80 08 00 	mv r1,r12                                      
 800450c:	f8 00 0e d2 	calli 8008054 <_Workspace_Allocate_or_fatal_error>
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 8004510:	78 04 08 02 	mvhi r4,0x802                                  
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 8004514:	78 0f 08 02 	mvhi r15,0x802                                 
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 8004518:	38 84 12 50 	ori r4,r4,0x1250                               
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 800451c:	39 ef 12 54 	ori r15,r15,0x1254                             
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 8004520:	34 02 00 00 	mvi r2,0                                       
 8004524:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
 8004528:	58 8e 00 00 	sw (r4+0),r14                                  
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
 800452c:	59 e1 00 00 	sw (r15+0),r1                                  
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
 8004530:	f8 00 26 8c 	calli 800df60 <memset>                         
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8004534:	45 60 00 15 	be r11,r0,8004588 <_IO_Manager_initialization+0xc8><== NEVER TAKEN
 8004538:	29 e5 00 00 	lw r5,(r15+0)                                  
 800453c:	34 03 00 00 	mvi r3,0                                       
 8004540:	34 04 00 00 	mvi r4,0                                       
#include <rtems/score/thread.h>                                       
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 8004544:	b5 a3 08 00 	add r1,r13,r3                                  
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
 8004548:	28 26 00 00 	lw r6,(r1+0)                                   
#include <rtems/score/thread.h>                                       
#include <rtems/score/wkspace.h>                                      
                                                                      
#include <string.h>                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
 800454c:	b4 a3 10 00 	add r2,r5,r3                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8004550:	34 84 00 01 	addi r4,r4,1                                   
    _IO_Driver_address_table[index] = driver_table[index];            
 8004554:	58 46 00 00 	sw (r2+0),r6                                   
 8004558:	28 26 00 04 	lw r6,(r1+4)                                   
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 800455c:	34 63 00 18 	addi r3,r3,24                                  
    _IO_Driver_address_table[index] = driver_table[index];            
 8004560:	58 46 00 04 	sw (r2+4),r6                                   
 8004564:	28 26 00 08 	lw r6,(r1+8)                                   
 8004568:	58 46 00 08 	sw (r2+8),r6                                   
 800456c:	28 26 00 0c 	lw r6,(r1+12)                                  
 8004570:	58 46 00 0c 	sw (r2+12),r6                                  
 8004574:	28 26 00 10 	lw r6,(r1+16)                                  
 8004578:	58 46 00 10 	sw (r2+16),r6                                  
 800457c:	28 21 00 14 	lw r1,(r1+20)                                  
 8004580:	58 41 00 14 	sw (r2+20),r1                                  
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
 8004584:	55 64 ff f0 	bgu r11,r4,8004544 <_IO_Manager_initialization+0x84>
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 8004588:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800458c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004590:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004594:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004598:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800459c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80045a0:	37 9c 00 18 	addi sp,sp,24                                  
 80045a4:	c3 a0 00 00 	ret                                            
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 80045a8:	78 02 08 02 	mvhi r2,0x802                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 80045ac:	78 01 08 02 	mvhi r1,0x802                                  
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 80045b0:	38 42 12 54 	ori r2,r2,0x1254                               
    _IO_Number_of_drivers = number_of_drivers;                        
 80045b4:	38 21 12 50 	ori r1,r1,0x1250                               
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
 80045b8:	58 4d 00 00 	sw (r2+0),r13                                  
    _IO_Number_of_drivers = number_of_drivers;                        
 80045bc:	58 2b 00 00 	sw (r1+0),r11                                  
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
}                                                                     
 80045c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80045c4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80045c8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80045cc:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80045d0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80045d4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80045d8:	37 9c 00 18 	addi sp,sp,24                                  
 80045dc:	c3 a0 00 00 	ret                                            
                                                                      

0800558c <_Objects_Allocate>: #endif Objects_Control *_Objects_Allocate( Objects_Information *information ) {
 800558c:	37 9c ff ec 	addi sp,sp,-20                                 
 8005590:	5b 8b 00 14 	sw (sp+20),r11                                 
 8005594:	5b 8c 00 10 	sw (sp+16),r12                                 
 8005598:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800559c:	5b 8e 00 08 	sw (sp+8),r14                                  
 80055a0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80055a4:	b8 20 58 00 	mv r11,r1                                      
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
 80055a8:	28 21 00 18 	lw r1,(r1+24)                                  
    return NULL;                                                      
 80055ac:	34 0c 00 00 	mvi r12,0                                      
   *  If the application is using the optional manager stubs and      
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
 80055b0:	5c 20 00 09 	bne r1,r0,80055d4 <_Objects_Allocate+0x48>     <== ALWAYS TAKEN
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 80055b4:	b9 80 08 00 	mv r1,r12                                      
 80055b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80055bc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80055c0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80055c4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80055c8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80055cc:	37 9c 00 14 	addi sp,sp,20                                  
 80055d0:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
 80055d4:	35 6d 00 20 	addi r13,r11,32                                
 80055d8:	b9 a0 08 00 	mv r1,r13                                      
 80055dc:	fb ff fc d4 	calli 800492c <_Chain_Get>                     
 80055e0:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( information->auto_extend ) {                                   
 80055e4:	41 61 00 12 	lbu r1,(r11+18)                                
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
 80055e8:	b9 80 70 00 	mv r14,r12                                     
                                                                      
  if ( information->auto_extend ) {                                   
 80055ec:	44 20 ff f2 	be r1,r0,80055b4 <_Objects_Allocate+0x28>      
    /*                                                                
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
 80055f0:	45 80 00 18 	be r12,r0,8005650 <_Objects_Allocate+0xc4>     
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
 80055f4:	2d 83 00 0a 	lhu r3,(r12+10)                                
 80055f8:	2d 61 00 0a 	lhu r1,(r11+10)                                
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
 80055fc:	2d 62 00 14 	lhu r2,(r11+20)                                
 8005600:	c8 61 08 00 	sub r1,r3,r1                                   
 8005604:	f8 00 5a 81 	calli 801c008 <__udivsi3>                      
                                                                      
      information->inactive_per_block[ block ]--;                     
 8005608:	29 62 00 30 	lw r2,(r11+48)                                 
 800560c:	b4 21 08 00 	add r1,r1,r1                                   
 8005610:	b4 21 08 00 	add r1,r1,r1                                   
 8005614:	b4 41 08 00 	add r1,r2,r1                                   
 8005618:	28 22 00 00 	lw r2,(r1+0)                                   
      information->inactive--;                                        
 800561c:	2d 63 00 2c 	lhu r3,(r11+44)                                
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
 8005620:	34 42 ff ff 	addi r2,r2,-1                                  
 8005624:	58 22 00 00 	sw (r1+0),r2                                   
      information->inactive--;                                        
 8005628:	34 61 ff ff 	addi r1,r3,-1                                  
 800562c:	0d 61 00 2c 	sh (r11+44),r1                                 
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
 8005630:	b9 80 08 00 	mv r1,r12                                      
 8005634:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005638:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800563c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005640:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005644:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8005648:	37 9c 00 14 	addi sp,sp,20                                  
 800564c:	c3 a0 00 00 	ret                                            
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
      _Objects_Extend_information( information );                     
 8005650:	b9 60 08 00 	mv r1,r11                                      
 8005654:	f8 00 00 06 	calli 800566c <_Objects_Extend_information>    
      the_object =  (Objects_Control *) _Chain_Get( &information->Inactive );
 8005658:	b9 a0 08 00 	mv r1,r13                                      
 800565c:	fb ff fc b4 	calli 800492c <_Chain_Get>                     
 8005660:	b8 20 60 00 	mv r12,r1                                      
    }                                                                 
                                                                      
    if ( the_object ) {                                               
 8005664:	44 2e ff d4 	be r1,r14,80055b4 <_Objects_Allocate+0x28>     
 8005668:	e3 ff ff e3 	bi 80055f4 <_Objects_Allocate+0x68>            
                                                                      

0800566c <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
 800566c:	37 9c ff c8 	addi sp,sp,-56                                 
 8005670:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8005674:	5b 8c 00 28 	sw (sp+40),r12                                 
 8005678:	5b 8d 00 24 	sw (sp+36),r13                                 
 800567c:	5b 8e 00 20 	sw (sp+32),r14                                 
 8005680:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8005684:	5b 90 00 18 	sw (sp+24),r16                                 
 8005688:	5b 91 00 14 	sw (sp+20),r17                                 
 800568c:	5b 92 00 10 	sw (sp+16),r18                                 
 8005690:	5b 93 00 0c 	sw (sp+12),r19                                 
 8005694:	5b 94 00 08 	sw (sp+8),r20                                  
 8005698:	5b 9d 00 04 	sw (sp+4),ra                                   
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 800569c:	28 2c 00 34 	lw r12,(r1+52)                                 
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 80056a0:	b8 20 58 00 	mv r11,r1                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
 80056a4:	2c 30 00 0a 	lhu r16,(r1+10)                                
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 80056a8:	45 80 00 9f 	be r12,r0,8005924 <_Objects_Extend_information+0x2b8>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
 80056ac:	2c 2f 00 14 	lhu r15,(r1+20)                                
 80056b0:	2c 31 00 10 	lhu r17,(r1+16)                                
 80056b4:	b9 e0 10 00 	mv r2,r15                                      
 80056b8:	ba 20 08 00 	mv r1,r17                                      
 80056bc:	f8 00 5a 53 	calli 801c008 <__udivsi3>                      
 80056c0:	20 2e ff ff 	andi r14,r1,0xffff                             
                                                                      
    for ( ; block < block_count; block++ ) {                          
 80056c4:	45 c0 00 b3 	be r14,r0,8005990 <_Objects_Extend_information+0x324><== NEVER TAKEN
      if ( information->object_blocks[ block ] == NULL ) {            
 80056c8:	29 81 00 00 	lw r1,(r12+0)                                  
 80056cc:	44 20 00 b6 	be r1,r0,80059a4 <_Objects_Extend_information+0x338><== NEVER TAKEN
 80056d0:	b9 80 18 00 	mv r3,r12                                      
 80056d4:	b9 e0 08 00 	mv r1,r15                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
 80056d8:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 80056dc:	34 0c 00 00 	mvi r12,0                                      
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 80056e0:	35 8c 00 01 	addi r12,r12,1                                 
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
        break;                                                        
      } else                                                          
        index_base += information->allocation_size;                   
 80056e4:	b5 af 68 00 	add r13,r13,r15                                
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 80056e8:	55 cc 00 83 	bgu r14,r12,80058f4 <_Objects_Extend_information+0x288>
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
 80056ec:	34 0f 00 01 	mvi r15,1                                      
      } else                                                          
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
 80056f0:	b6 21 88 00 	add r17,r17,r1                                 
  /*                                                                  
   *  We need to limit the number of objects to the maximum number    
   *  representable in the index portion of the object Id.  In the    
   *  case of 16-bit Ids, this is only 256 object instances.          
   */                                                                 
  if ( maximum > OBJECTS_ID_FINAL_INDEX ) {                           
 80056f4:	38 02 ff ff 	mvu r2,0xffff                                  
 80056f8:	56 22 00 72 	bgu r17,r2,80058c0 <_Objects_Extend_information+0x254><== NEVER TAKEN
                                                                      
  /*                                                                  
   * 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;      
 80056fc:	29 62 00 18 	lw r2,(r11+24)                                 
 8005700:	f8 00 59 dd 	calli 801be74 <__mulsi3>                       
  if ( information->auto_extend ) {                                   
 8005704:	41 62 00 12 	lbu r2,(r11+18)                                
 8005708:	44 40 00 80 	be r2,r0,8005908 <_Objects_Extend_information+0x29c>
    new_object_block = _Workspace_Allocate( block_size );             
 800570c:	f8 00 0a 3e 	calli 8008004 <_Workspace_Allocate>            
 8005710:	b8 20 90 00 	mv r18,r1                                      
    if ( !new_object_block )                                          
 8005714:	44 20 00 6b 	be r1,r0,80058c0 <_Objects_Extend_information+0x254>
  }                                                                   
                                                                      
  /*                                                                  
   *  Do we need to grow the tables?                                  
   */                                                                 
  if ( do_extend ) {                                                  
 8005718:	45 e0 00 43 	be r15,r0,8005824 <_Objects_Extend_information+0x1b8>
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
 800571c:	35 c1 00 01 	addi r1,r14,1                                  
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8005720:	b4 21 98 00 	add r19,r1,r1                                  
 8005724:	b6 61 18 00 	add r3,r19,r1                                  
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
 8005728:	b6 23 18 00 	add r3,r17,r3                                  
    if ( information->auto_extend ) {                                 
 800572c:	41 62 00 12 	lbu r2,(r11+18)                                
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
 8005730:	b4 70 18 00 	add r3,r3,r16                                  
    block_count++;                                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
 8005734:	b4 63 18 00 	add r3,r3,r3                                   
 8005738:	b4 63 18 00 	add r3,r3,r3                                   
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
 800573c:	44 40 00 76 	be r2,r0,8005914 <_Objects_Extend_information+0x2a8>
      object_blocks = _Workspace_Allocate( block_size );              
 8005740:	b8 60 08 00 	mv r1,r3                                       
 8005744:	f8 00 0a 30 	calli 8008004 <_Workspace_Allocate>            
 8005748:	b8 20 78 00 	mv r15,r1                                      
      if ( !object_blocks ) {                                         
 800574c:	44 20 00 8e 	be r1,r0,8005984 <_Objects_Extend_information+0x318>
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 8005750:	2d 61 00 10 	lhu r1,(r11+16)                                
                                                                      
    /*                                                                
     *  Break the block into the various sections.                    
     */                                                               
    inactive_per_block = (uint32_t *) _Addresses_Add_offset(          
        object_blocks, block_count * sizeof(void*) );                 
 8005754:	b6 73 a0 00 	add r20,r19,r19                                
 8005758:	b5 f4 98 00 	add r19,r15,r20                                
 800575c:	b6 74 a0 00 	add r20,r19,r20                                
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
 8005760:	54 30 00 77 	bgu r1,r16,800593c <_Objects_Extend_information+0x2d0>
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 8005764:	ba 80 20 00 	mv r4,r20                                      
 8005768:	34 03 00 00 	mvi r3,0                                       
 800576c:	46 00 00 05 	be r16,r0,8005780 <_Objects_Extend_information+0x114><== NEVER TAKEN
        local_table[ index ] = NULL;                                  
 8005770:	58 80 00 00 	sw (r4+0),r0                                   
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
 8005774:	34 63 00 01 	addi r3,r3,1                                   
 8005778:	34 84 00 04 	addi r4,r4,4                                   
 800577c:	56 03 ff fd 	bgu r16,r3,8005770 <_Objects_Extend_information+0x104><== NEVER TAKEN
 8005780:	b5 ce 70 00 	add r14,r14,r14                                
 8005784:	b5 ce 70 00 	add r14,r14,r14                                
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 8005788:	2d 65 00 14 	lhu r5,(r11+20)                                
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
 800578c:	b5 ee 08 00 	add r1,r15,r14                                 
 8005790:	58 20 00 00 	sw (r1+0),r0                                   
    inactive_per_block[block_count] = 0;                              
 8005794:	b6 6e 70 00 	add r14,r19,r14                                
 8005798:	59 c0 00 00 	sw (r14+0),r0                                  
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
 800579c:	b5 a5 28 00 	add r5,r13,r5                                  
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80057a0:	51 a5 00 09 	bgeu r13,r5,80057c4 <_Objects_Extend_information+0x158><== NEVER TAKEN
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 80057a4:	b5 ad 20 00 	add r4,r13,r13                                 
 80057a8:	b4 84 20 00 	add r4,r4,r4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80057ac:	b6 84 20 00 	add r4,r20,r4                                  
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
 80057b0:	b9 a0 18 00 	mv r3,r13                                      
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
 80057b4:	58 80 00 00 	sw (r4+0),r0                                   
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
 80057b8:	34 63 00 01 	addi r3,r3,1                                   
 80057bc:	34 84 00 04 	addi r4,r4,4                                   
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
 80057c0:	54 a3 ff fd 	bgu r5,r3,80057b4 <_Objects_Extend_information+0x148>
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
 80057c4:	90 00 70 00 	rcsr r14,IE                                    
 80057c8:	34 01 ff fe 	mvi r1,-2                                      
 80057cc:	a1 c1 08 00 	and r1,r14,r1                                  
 80057d0:	d0 01 00 00 	wcsr IE,r1                                     
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 80057d4:	29 61 00 00 	lw r1,(r11+0)                                  
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
 80057d8:	22 31 ff ff 	andi r17,r17,0xffff                            
 80057dc:	0d 71 00 10 	sh (r11+16),r17                                
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
 80057e0:	29 70 00 34 	lw r16,(r11+52)                                
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
 80057e4:	59 73 00 30 	sw (r11+48),r19                                
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
 80057e8:	59 6f 00 34 	sw (r11+52),r15                                
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
 80057ec:	59 74 00 1c 	sw (r11+28),r20                                
 80057f0:	34 02 00 18 	mvi r2,24                                      
 80057f4:	f8 00 59 2b 	calli 801bca0 <__ashlsi3>                      
 80057f8:	78 0f 00 01 	mvhi r15,0x1                                   
 80057fc:	b8 2f 78 00 	or r15,r1,r15                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8005800:	2d 61 00 04 	lhu r1,(r11+4)                                 
 8005804:	34 02 00 1b 	mvi r2,27                                      
 8005808:	f8 00 59 26 	calli 801bca0 <__ashlsi3>                      
 800580c:	b9 e1 10 00 	or r2,r15,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8005810:	b8 51 88 00 	or r17,r2,r17                                  
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
 8005814:	59 71 00 0c 	sw (r11+12),r17                                
        information->the_class,                                       
        _Objects_Local_node,                                          
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
 8005818:	d0 0e 00 00 	wcsr IE,r14                                    
                                                                      
    _Workspace_Free( old_tables );                                    
 800581c:	ba 00 08 00 	mv r1,r16                                      
 8005820:	f8 00 0a 04 	calli 8008030 <_Workspace_Free>                
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8005824:	29 61 00 34 	lw r1,(r11+52)                                 
 8005828:	b5 8c 60 00 	add r12,r12,r12                                
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 800582c:	2d 63 00 14 	lhu r3,(r11+20)                                
 8005830:	29 64 00 18 	lw r4,(r11+24)                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8005834:	b5 8c 60 00 	add r12,r12,r12                                
 8005838:	b4 2c 08 00 	add r1,r1,r12                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 800583c:	37 90 00 30 	addi r16,sp,48                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
 8005840:	58 32 00 00 	sw (r1+0),r18                                  
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
 8005844:	ba 40 10 00 	mv r2,r18                                      
 8005848:	ba 00 08 00 	mv r1,r16                                      
 800584c:	fb ff fc 49 	calli 8004970 <_Chain_Initialize>              
 8005850:	78 12 00 01 	mvhi r18,0x1                                   
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 8005854:	35 71 00 20 	addi r17,r11,32                                
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
 8005858:	e0 00 00 0e 	bi 8005890 <_Objects_Extend_information+0x224> 
 800585c:	29 61 00 00 	lw r1,(r11+0)                                  
 8005860:	f8 00 59 10 	calli 801bca0 <__ashlsi3>                      
 8005864:	b8 32 78 00 	or r15,r1,r18                                  
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
 8005868:	2d 61 00 04 	lhu r1,(r11+4)                                 
 800586c:	34 02 00 1b 	mvi r2,27                                      
 8005870:	f8 00 59 0c 	calli 801bca0 <__ashlsi3>                      
 8005874:	b9 e1 10 00 	or r2,r15,r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
 8005878:	b8 4d 10 00 	or r2,r2,r13                                   
                                                                      
    the_object->id = _Objects_Build_id(                               
 800587c:	59 c2 00 08 	sw (r14+8),r2                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
 8005880:	ba 20 08 00 	mv r1,r17                                      
 8005884:	b9 c0 10 00 	mv r2,r14                                      
 8005888:	fb ff fc 1d 	calli 80048fc <_Chain_Append>                  
                                                                      
    index++;                                                          
 800588c:	35 ad 00 01 	addi r13,r13,1                                 
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
 8005890:	ba 00 08 00 	mv r1,r16                                      
 8005894:	fb ff fc 26 	calli 800492c <_Chain_Get>                     
 8005898:	b8 20 70 00 	mv r14,r1                                      
 800589c:	34 02 00 18 	mvi r2,24                                      
 80058a0:	5c 20 ff ef 	bne r1,r0,800585c <_Objects_Extend_information+0x1f0>
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 80058a4:	29 63 00 30 	lw r3,(r11+48)                                 
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 80058a8:	2d 62 00 2c 	lhu r2,(r11+44)                                
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
 80058ac:	2d 61 00 14 	lhu r1,(r11+20)                                
 80058b0:	b4 6c 60 00 	add r12,r3,r12                                 
 80058b4:	59 81 00 00 	sw (r12+0),r1                                  
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
 80058b8:	b4 22 08 00 	add r1,r1,r2                                   
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
  information->inactive =                                             
 80058bc:	0d 61 00 2c 	sh (r11+44),r1                                 
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
 80058c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80058c4:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 80058c8:	2b 8c 00 28 	lw r12,(sp+40)                                 
 80058cc:	2b 8d 00 24 	lw r13,(sp+36)                                 
 80058d0:	2b 8e 00 20 	lw r14,(sp+32)                                 
 80058d4:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 80058d8:	2b 90 00 18 	lw r16,(sp+24)                                 
 80058dc:	2b 91 00 14 	lw r17,(sp+20)                                 
 80058e0:	2b 92 00 10 	lw r18,(sp+16)                                 
 80058e4:	2b 93 00 0c 	lw r19,(sp+12)                                 
 80058e8:	2b 94 00 08 	lw r20,(sp+8)                                  
 80058ec:	37 9c 00 38 	addi sp,sp,56                                  
 80058f0:	c3 a0 00 00 	ret                                            
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 80058f4:	28 62 00 04 	lw r2,(r3+4)                                   
 80058f8:	34 63 00 04 	addi r3,r3,4                                   
 80058fc:	5c 40 ff 79 	bne r2,r0,80056e0 <_Objects_Extend_information+0x74>
        do_extend = false;                                            
 8005900:	34 0f 00 00 	mvi r15,0                                      
 8005904:	e3 ff ff 7b 	bi 80056f0 <_Objects_Extend_information+0x84>  
  if ( information->auto_extend ) {                                   
    new_object_block = _Workspace_Allocate( block_size );             
    if ( !new_object_block )                                          
      return;                                                         
  } else {                                                            
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
 8005908:	f8 00 09 d3 	calli 8008054 <_Workspace_Allocate_or_fatal_error>
 800590c:	b8 20 90 00 	mv r18,r1                                      
 8005910:	e3 ff ff 82 	bi 8005718 <_Objects_Extend_information+0xac>  
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
        return;                                                       
      }                                                               
    } else {                                                          
      object_blocks = _Workspace_Allocate_or_fatal_error( block_size );
 8005914:	b8 60 08 00 	mv r1,r3                                       
 8005918:	f8 00 09 cf 	calli 8008054 <_Workspace_Allocate_or_fatal_error>
 800591c:	b8 20 78 00 	mv r15,r1                                      
 8005920:	e3 ff ff 8c 	bi 8005750 <_Objects_Extend_information+0xe4>  
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 8005924:	2c 31 00 10 	lhu r17,(r1+16)                                
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
 8005928:	ba 00 68 00 	mv r13,r16                                     
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
 800592c:	2c 21 00 14 	lhu r1,(r1+20)                                 
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
 8005930:	34 0f 00 01 	mvi r15,1                                      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
 8005934:	34 0e 00 00 	mvi r14,0                                      
 8005938:	e3 ff ff 6e 	bi 80056f0 <_Objects_Extend_information+0x84>  
      /*                                                              
       *  Copy each section of the table over. This has to be performed as
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
 800593c:	29 62 00 34 	lw r2,(r11+52)                                 
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
 8005940:	b5 ce 70 00 	add r14,r14,r14                                
 8005944:	b5 ce 70 00 	add r14,r14,r14                                
      /*                                                              
       *  Copy each section of the table over. This has to be performed as
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
 8005948:	b9 c0 18 00 	mv r3,r14                                      
 800594c:	b9 e0 08 00 	mv r1,r15                                      
 8005950:	f8 00 21 43 	calli 800de5c <memcpy>                         
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
 8005954:	29 62 00 30 	lw r2,(r11+48)                                 
 8005958:	b9 c0 18 00 	mv r3,r14                                      
 800595c:	ba 60 08 00 	mv r1,r19                                      
 8005960:	f8 00 21 3f 	calli 800de5c <memcpy>                         
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 8005964:	2d 63 00 10 	lhu r3,(r11+16)                                
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 8005968:	29 62 00 1c 	lw r2,(r11+28)                                 
 800596c:	ba 80 08 00 	mv r1,r20                                      
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
 8005970:	b6 03 18 00 	add r3,r16,r3                                  
 8005974:	b4 63 18 00 	add r3,r3,r3                                   
 8005978:	b4 63 18 00 	add r3,r3,r3                                   
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
 800597c:	f8 00 21 38 	calli 800de5c <memcpy>                         
 8005980:	e3 ff ff 82 	bi 8005788 <_Objects_Extend_information+0x11c> 
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
      object_blocks = _Workspace_Allocate( block_size );              
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
 8005984:	ba 40 08 00 	mv r1,r18                                      
 8005988:	f8 00 09 aa 	calli 8008030 <_Workspace_Free>                
        return;                                                       
 800598c:	e3 ff ff cd 	bi 80058c0 <_Objects_Extend_information+0x254> 
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
 8005990:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
 8005994:	ba 00 68 00 	mv r13,r16                                     <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
 8005998:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 800599c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80059a0:	e3 ff ff 54 	bi 80056f0 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
 80059a4:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
 80059a8:	ba 00 68 00 	mv r13,r16                                     <== NOT EXECUTED
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
 80059ac:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
 80059b0:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80059b4:	e3 ff ff 4f 	bi 80056f0 <_Objects_Extend_information+0x84>  <== NOT EXECUTED
                                                                      

08005aa0 <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
 8005aa0:	37 9c ff f0 	addi sp,sp,-16                                 
 8005aa4:	5b 8b 00 10 	sw (sp+16),r11                                 
 8005aa8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8005aac:	5b 8d 00 08 	sw (sp+8),r13                                  
 8005ab0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005ab4:	20 4c ff ff 	andi r12,r2,0xffff                             
 8005ab8:	b8 20 68 00 	mv r13,r1                                      
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
    return NULL;                                                      
 8005abc:	34 0b 00 00 	mvi r11,0                                      
)                                                                     
{                                                                     
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
 8005ac0:	5d 80 00 08 	bne r12,r0,8005ae0 <_Objects_Get_information+0x40>
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
 8005ac4:	b9 60 08 00 	mv r1,r11                                      
 8005ac8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005acc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8005ad0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005ad4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005ad8:	37 9c 00 10 	addi sp,sp,16                                  
 8005adc:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  This call implicitly validates the_api so we do not call        
   *  _Objects_Is_api_valid above here.                               
   */                                                                 
  the_class_api_maximum = _Objects_API_maximum_class( the_api );      
 8005ae0:	f8 00 15 13 	calli 800af2c <_Objects_API_maximum_class>     
  if ( the_class_api_maximum == 0 )                                   
 8005ae4:	44 20 ff f8 	be r1,r0,8005ac4 <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
 8005ae8:	55 81 ff f7 	bgu r12,r1,8005ac4 <_Objects_Get_information+0x24>
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 8005aec:	78 01 08 02 	mvhi r1,0x802                                  
 8005af0:	b5 ad 68 00 	add r13,r13,r13                                
 8005af4:	38 21 08 f4 	ori r1,r1,0x8f4                                
 8005af8:	b5 ad 68 00 	add r13,r13,r13                                
 8005afc:	b4 2d 08 00 	add r1,r1,r13                                  
 8005b00:	28 21 00 00 	lw r1,(r1+0)                                   
 8005b04:	44 20 ff f0 	be r1,r0,8005ac4 <_Objects_Get_information+0x24><== NEVER TAKEN
    return NULL;                                                      
                                                                      
  info = _Objects_Information_table[ the_api ][ the_class ];          
 8005b08:	b5 8c 60 00 	add r12,r12,r12                                
 8005b0c:	b5 8c 60 00 	add r12,r12,r12                                
 8005b10:	b4 2c 08 00 	add r1,r1,r12                                  
 8005b14:	28 2b 00 00 	lw r11,(r1+0)                                  
  if ( !info )                                                        
 8005b18:	45 60 ff eb 	be r11,r0,8005ac4 <_Objects_Get_information+0x24><== NEVER TAKEN
   *  In a multprocessing configuration, we may access remote objects.
   *  Thus we may have 0 local instances and still have a valid object
   *  pointer.                                                        
   */                                                                 
  #if !defined(RTEMS_MULTIPROCESSING)                                 
    if ( info->maximum == 0 )                                         
 8005b1c:	2d 61 00 10 	lhu r1,(r11+16)                                
      return NULL;                                                    
 8005b20:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8005b24:	c8 01 08 00 	sub r1,r0,r1                                   
 8005b28:	a1 61 58 00 	and r11,r11,r1                                 
 8005b2c:	e3 ff ff e6 	bi 8005ac4 <_Objects_Get_information+0x24>     
                                                                      

0801624c <_Objects_Get_name_as_string>: char *_Objects_Get_name_as_string( Objects_Id id, size_t length, char *name ) {
 801624c:	37 9c ff e0 	addi sp,sp,-32                                 
 8016250:	5b 8b 00 14 	sw (sp+20),r11                                 
 8016254:	5b 8c 00 10 	sw (sp+16),r12                                 
 8016258:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801625c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8016260:	5b 9d 00 04 	sw (sp+4),ra                                   
 8016264:	b8 40 60 00 	mv r12,r2                                      
 8016268:	b8 60 58 00 	mv r11,r3                                      
  char                   lname[5];                                    
  Objects_Control       *the_object;                                  
  Objects_Locations      location;                                    
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
 801626c:	5c 40 00 0a 	bne r2,r0,8016294 <_Objects_Get_name_as_string+0x48>
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:                                              
      /* not supported */                                             
#endif                                                                
    case OBJECTS_ERROR:                                               
      return NULL;                                                    
 8016270:	34 0b 00 00 	mvi r11,0                                      
                                                                      
      _Thread_Enable_dispatch();                                      
      return name;                                                    
  }                                                                   
  return NULL;                  /* unreachable path */                
}                                                                     
 8016274:	b9 60 08 00 	mv r1,r11                                      
 8016278:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801627c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8016280:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8016284:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8016288:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801628c:	37 9c 00 20 	addi sp,sp,32                                  
 8016290:	c3 a0 00 00 	ret                                            
  Objects_Id             tmpId;                                       
                                                                      
  if ( length == 0 )                                                  
    return NULL;                                                      
                                                                      
  if ( name == NULL )                                                 
 8016294:	44 60 ff f8 	be r3,r0,8016274 <_Objects_Get_name_as_string+0x28>
    return NULL;                                                      
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 8016298:	b8 20 68 00 	mv r13,r1                                      
 801629c:	5c 20 00 05 	bne r1,r0,80162b0 <_Objects_Get_name_as_string+0x64>
 80162a0:	78 01 08 03 	mvhi r1,0x803                                  
 80162a4:	38 21 57 00 	ori r1,r1,0x5700                               
 80162a8:	28 21 00 10 	lw r1,(r1+16)                                  
 80162ac:	28 2d 00 08 	lw r13,(r1+8)                                  
                                                                      
  information = _Objects_Get_information_id( tmpId );                 
 80162b0:	b9 a0 08 00 	mv r1,r13                                      
 80162b4:	fb ff db 1c 	calli 800cf24 <_Objects_Get_information_id>    
 80162b8:	b8 20 70 00 	mv r14,r1                                      
  if ( !information )                                                 
 80162bc:	44 20 ff ed 	be r1,r0,8016270 <_Objects_Get_name_as_string+0x24>
    return NULL;                                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &location );         
 80162c0:	b9 a0 10 00 	mv r2,r13                                      
 80162c4:	37 83 00 20 	addi r3,sp,32                                  
 80162c8:	fb ff db 69 	calli 800d06c <_Objects_Get>                   
  switch ( location ) {                                               
 80162cc:	2b 82 00 20 	lw r2,(sp+32)                                  
 80162d0:	5c 40 ff e8 	bne r2,r0,8016270 <_Objects_Get_name_as_string+0x24>
      return NULL;                                                    
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)             
        if ( information->is_string ) {                               
 80162d4:	41 c3 00 38 	lbu r3,(r14+56)                                
 80162d8:	44 62 00 1c 	be r3,r2,8016348 <_Objects_Get_name_as_string+0xfc>
          s = the_object->name.name_p;                                
 80162dc:	28 27 00 0c 	lw r7,(r1+12)                                  
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
 80162e0:	b9 60 10 00 	mv r2,r11                                      
 80162e4:	44 e0 00 16 	be r7,r0,801633c <_Objects_Get_name_as_string+0xf0>
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 80162e8:	35 8c ff ff 	addi r12,r12,-1                                
 80162ec:	b9 60 10 00 	mv r2,r11                                      
 80162f0:	45 80 00 13 	be r12,r0,801633c <_Objects_Get_name_as_string+0xf0><== NEVER TAKEN
 80162f4:	40 e1 00 00 	lbu r1,(r7+0)                                  
 80162f8:	44 20 00 11 	be r1,r0,801633c <_Objects_Get_name_as_string+0xf0>
 80162fc:	78 04 08 03 	mvhi r4,0x803                                  
 8016300:	34 03 00 00 	mvi r3,0                                       
 8016304:	38 84 44 48 	ori r4,r4,0x4448                               
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8016308:	28 85 00 00 	lw r5,(r4+0)                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 801630c:	34 63 00 01 	addi r3,r3,1                                   
 *  This method objects the name of an object and returns its name    
 *  in the form of a C string.  It attempts to be careful about       
 *  overflowing the user's string and about returning unprintable characters.
 */                                                                   
                                                                      
char *_Objects_Get_name_as_string(                                    
 8016310:	b4 e3 30 00 	add r6,r7,r3                                   
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
 8016314:	b4 a1 28 00 	add r5,r5,r1                                   
 8016318:	40 a5 00 01 	lbu r5,(r5+1)                                  
 801631c:	20 a5 00 97 	andi r5,r5,0x97                                
 8016320:	5c a0 00 02 	bne r5,r0,8016328 <_Objects_Get_name_as_string+0xdc>
 8016324:	34 01 00 2a 	mvi r1,42                                      
 8016328:	30 41 00 00 	sb (r2+0),r1                                   
        s = lname;                                                    
      }                                                               
                                                                      
      d = name;                                                       
      if ( s ) {                                                      
        for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {            
 801632c:	34 42 00 01 	addi r2,r2,1                                   
 8016330:	50 6c 00 03 	bgeu r3,r12,801633c <_Objects_Get_name_as_string+0xf0>
 8016334:	40 c1 00 00 	lbu r1,(r6+0)                                  
 8016338:	5c 20 ff f4 	bne r1,r0,8016308 <_Objects_Get_name_as_string+0xbc>
          *d = (isprint((unsigned char)*s)) ? *s : '*';               
        }                                                             
      }                                                               
      *d = '\0';                                                      
 801633c:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
      _Thread_Enable_dispatch();                                      
 8016340:	fb ff e0 02 	calli 800e348 <_Thread_Enable_dispatch>        
      return name;                                                    
 8016344:	e3 ff ff cc 	bi 8016274 <_Objects_Get_name_as_string+0x28>  
        if ( information->is_string ) {                               
          s = the_object->name.name_p;                                
        } else                                                        
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
 8016348:	28 2d 00 0c 	lw r13,(r1+12)                                 
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
 801634c:	34 02 00 18 	mvi r2,24                                      
 8016350:	b9 a0 08 00 	mv r1,r13                                      
 8016354:	f8 00 5e ed 	calli 802df08 <__lshrsi3>                      
 8016358:	33 81 00 18 	sb (sp+24),r1                                  
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 801635c:	34 02 00 10 	mvi r2,16                                      
 8016360:	b9 a0 08 00 	mv r1,r13                                      
 8016364:	f8 00 5e e9 	calli 802df08 <__lshrsi3>                      
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8016368:	01 a2 00 01 	srui r2,r13,1                                  
      #endif                                                          
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
 801636c:	33 81 00 19 	sb (sp+25),r1                                  
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8016370:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
 8016374:	33 8d 00 1b 	sb (sp+27),r13                                 
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8016378:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
 801637c:	33 80 00 1c 	sb (sp+28),r0                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8016380:	00 42 00 01 	srui r2,r2,1                                   
        lname[ 3 ] = (u32_name >>  0) & 0xff;                         
        lname[ 4 ] = '\0';                                            
        s = lname;                                                    
 8016384:	37 87 00 18 	addi r7,sp,24                                  
      {                                                               
        uint32_t  u32_name = (uint32_t) the_object->name.name_u32;    
                                                                      
        lname[ 0 ] = (u32_name >> 24) & 0xff;                         
        lname[ 1 ] = (u32_name >> 16) & 0xff;                         
        lname[ 2 ] = (u32_name >>  8) & 0xff;                         
 8016388:	00 42 00 01 	srui r2,r2,1                                   
 801638c:	00 42 00 01 	srui r2,r2,1                                   
 8016390:	00 42 00 01 	srui r2,r2,1                                   
 8016394:	00 42 00 01 	srui r2,r2,1                                   
 8016398:	33 82 00 1a 	sb (sp+26),r2                                  
 801639c:	e3 ff ff d3 	bi 80162e8 <_Objects_Get_name_as_string+0x9c>  
                                                                      

08018ca4 <_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;
 8018ca4:	28 25 00 08 	lw r5,(r1+8)                                   
                                                                      
  if ( information->maximum >= index ) {                              
 8018ca8:	2c 24 00 10 	lhu r4,(r1+16)                                 
                                                                      
  /*                                                                  
   * You can't just extract the index portion or you can get tricked  
   * by a value between 1 and maximum.                                
   */                                                                 
  index = id - information->minimum_id + 1;                           
 8018cac:	c8 45 10 00 	sub r2,r2,r5                                   
 8018cb0:	34 42 00 01 	addi r2,r2,1                                   
                                                                      
  if ( information->maximum >= index ) {                              
 8018cb4:	54 44 00 09 	bgu r2,r4,8018cd8 <_Objects_Get_no_protection+0x34>
    if ( (the_object = information->local_table[ index ]) != NULL ) { 
 8018cb8:	28 24 00 1c 	lw r4,(r1+28)                                  
 8018cbc:	b4 42 08 00 	add r1,r2,r2                                   
 8018cc0:	b4 21 08 00 	add r1,r1,r1                                   
 8018cc4:	b4 81 08 00 	add r1,r4,r1                                   
 8018cc8:	28 21 00 00 	lw r1,(r1+0)                                   
 8018ccc:	44 20 00 03 	be r1,r0,8018cd8 <_Objects_Get_no_protection+0x34><== NEVER TAKEN
      *location = OBJECTS_LOCAL;                                      
 8018cd0:	58 60 00 00 	sw (r3+0),r0                                   
      return the_object;                                              
 8018cd4:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  This isn't supported or required yet for Global objects so      
   *  if it isn't local, we don't find it.                            
   */                                                                 
  *location = OBJECTS_ERROR;                                          
 8018cd8:	34 01 00 01 	mvi r1,1                                       
 8018cdc:	58 61 00 00 	sw (r3+0),r1                                   
  return NULL;                                                        
 8018ce0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8018ce4:	c3 a0 00 00 	ret                                            
                                                                      

0800d104 <_Objects_Id_to_name>: Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
 800d104:	37 9c ff e8 	addi sp,sp,-24                                 
 800d108:	5b 8b 00 14 	sw (sp+20),r11                                 
 800d10c:	5b 8c 00 10 	sw (sp+16),r12                                 
 800d110:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800d114:	5b 8e 00 08 	sw (sp+8),r14                                  
 800d118:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 800d11c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (                
  Objects_Id      id,                                                 
  Objects_Name   *name                                                
)                                                                     
{                                                                     
 800d120:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
 800d124:	5c 20 00 05 	bne r1,r0,800d138 <_Objects_Id_to_name+0x34>   
 800d128:	78 01 08 03 	mvhi r1,0x803                                  
 800d12c:	38 21 57 00 	ori r1,r1,0x5700                               
 800d130:	28 21 00 10 	lw r1,(r1+16)                                  
 800d134:	28 2b 00 08 	lw r11,(r1+8)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 800d138:	b9 60 08 00 	mv r1,r11                                      
 800d13c:	34 02 00 18 	mvi r2,24                                      
 800d140:	f8 00 83 72 	calli 802df08 <__lshrsi3>                      
 800d144:	20 23 00 07 	andi r3,r1,0x7                                 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
 800d148:	34 64 ff ff 	addi r4,r3,-1                                  
 800d14c:	34 01 00 02 	mvi r1,2                                       
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
 800d150:	34 0c 00 03 	mvi r12,3                                      
 800d154:	54 81 00 12 	bgu r4,r1,800d19c <_Objects_Id_to_name+0x98>   
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
 800d158:	78 04 08 03 	mvhi r4,0x803                                  
 800d15c:	b4 63 18 00 	add r3,r3,r3                                   
 800d160:	38 84 51 d4 	ori r4,r4,0x51d4                               
 800d164:	b4 63 18 00 	add r3,r3,r3                                   
 800d168:	b4 83 18 00 	add r3,r4,r3                                   
 800d16c:	28 6d 00 00 	lw r13,(r3+0)                                  
 800d170:	45 a0 00 0b 	be r13,r0,800d19c <_Objects_Id_to_name+0x98>   
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
 800d174:	b9 60 08 00 	mv r1,r11                                      
 800d178:	34 02 00 1b 	mvi r2,27                                      
 800d17c:	f8 00 83 63 	calli 802df08 <__lshrsi3>                      
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
 800d180:	b4 21 18 00 	add r3,r1,r1                                   
 800d184:	b4 63 18 00 	add r3,r3,r3                                   
 800d188:	b5 a3 18 00 	add r3,r13,r3                                  
 800d18c:	28 63 00 00 	lw r3,(r3+0)                                   
  if ( !information )                                                 
 800d190:	44 60 00 03 	be r3,r0,800d19c <_Objects_Id_to_name+0x98>    <== NEVER TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
 800d194:	40 6d 00 38 	lbu r13,(r3+56)                                
 800d198:	45 a0 00 09 	be r13,r0,800d1bc <_Objects_Id_to_name+0xb8>   <== ALWAYS TAKEN
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 800d19c:	b9 80 08 00 	mv r1,r12                                      
 800d1a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d1a4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800d1a8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800d1ac:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800d1b0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800d1b4:	37 9c 00 18 	addi sp,sp,24                                  
 800d1b8:	c3 a0 00 00 	ret                                            
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
      return OBJECTS_INVALID_ID;                                      
  #endif                                                              
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
 800d1bc:	b8 60 08 00 	mv r1,r3                                       
 800d1c0:	b9 60 10 00 	mv r2,r11                                      
 800d1c4:	37 83 00 18 	addi r3,sp,24                                  
 800d1c8:	fb ff ff a9 	calli 800d06c <_Objects_Get>                   
  if ( !the_object )                                                  
 800d1cc:	44 2d ff f4 	be r1,r13,800d19c <_Objects_Id_to_name+0x98>   
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 800d1d0:	28 21 00 0c 	lw r1,(r1+12)                                  
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
 800d1d4:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
  if ( !the_object )                                                  
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
 800d1d8:	59 c1 00 00 	sw (r14+0),r1                                  
  _Thread_Enable_dispatch();                                          
 800d1dc:	f8 00 04 5b 	calli 800e348 <_Thread_Enable_dispatch>        
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
 800d1e0:	b9 80 08 00 	mv r1,r12                                      
 800d1e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d1e8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800d1ec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800d1f0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800d1f4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800d1f8:	37 9c 00 18 	addi sp,sp,24                                  
 800d1fc:	c3 a0 00 00 	ret                                            
                                                                      

08005de4 <_Objects_Shrink_information>: #include <rtems/score/isr.h> void _Objects_Shrink_information( Objects_Information *information ) {
 8005de4:	37 9c ff ec 	addi sp,sp,-20                                 
 8005de8:	5b 8b 00 14 	sw (sp+20),r11                                 
 8005dec:	5b 8c 00 10 	sw (sp+16),r12                                 
 8005df0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8005df4:	5b 8e 00 08 	sw (sp+8),r14                                  
 8005df8:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
 8005dfc:	2c 2c 00 0a 	lhu r12,(r1+10)                                
  block_count = (information->maximum - index_base) /                 
 8005e00:	2c 2d 00 14 	lhu r13,(r1+20)                                
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
 8005e04:	b8 20 70 00 	mv r14,r1                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
 8005e08:	2c 21 00 10 	lhu r1,(r1+16)                                 
 8005e0c:	b9 a0 10 00 	mv r2,r13                                      
 8005e10:	c8 2c 08 00 	sub r1,r1,r12                                  
 8005e14:	f8 00 58 7d 	calli 801c008 <__udivsi3>                      
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8005e18:	44 20 00 09 	be r1,r0,8005e3c <_Objects_Shrink_information+0x58><== NEVER TAKEN
    if ( information->inactive_per_block[ block ] ==                  
 8005e1c:	29 c5 00 30 	lw r5,(r14+48)                                 
 8005e20:	34 0b 00 04 	mvi r11,4                                      
 8005e24:	34 03 00 00 	mvi r3,0                                       
 8005e28:	28 a2 00 00 	lw r2,(r5+0)                                   
 8005e2c:	45 a2 00 11 	be r13,r2,8005e70 <_Objects_Shrink_information+0x8c><== NEVER TAKEN
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8005e30:	34 63 00 01 	addi r3,r3,1                                   
#include <rtems/score/thread.h>                                       
#include <rtems/score/wkspace.h>                                      
#include <rtems/score/sysstate.h>                                     
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
 8005e34:	b4 ab 10 00 	add r2,r5,r11                                  
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
 8005e38:	54 23 00 08 	bgu r1,r3,8005e58 <_Objects_Shrink_information+0x74>
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8005e3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005e40:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8005e44:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005e48:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005e4c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8005e50:	37 9c 00 14 	addi sp,sp,20                                  
 8005e54:	c3 a0 00 00 	ret                                            
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
 8005e58:	28 42 00 00 	lw r2,(r2+0)                                   
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
 8005e5c:	35 64 00 04 	addi r4,r11,4                                  
 8005e60:	b5 8d 60 00 	add r12,r12,r13                                
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
 8005e64:	45 a2 00 04 	be r13,r2,8005e74 <_Objects_Shrink_information+0x90>
 8005e68:	b8 80 58 00 	mv r11,r4                                      
 8005e6c:	e3 ff ff f1 	bi 8005e30 <_Objects_Shrink_information+0x4c>  
 8005e70:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
         information->allocation_size ) {                             
                                                                      
      /*                                                              
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) _Chain_First( &information->Inactive );
 8005e74:	29 c1 00 20 	lw r1,(r14+32)                                 
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
 8005e78:	2c 22 00 0a 	lhu r2,(r1+10)                                 
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
 8005e7c:	28 2d 00 00 	lw r13,(r1+0)                                  
         if ((index >= index_base) &&                                 
 8005e80:	55 82 00 05 	bgu r12,r2,8005e94 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
 8005e84:	2d c3 00 14 	lhu r3,(r14+20)                                
 8005e88:	b5 83 18 00 	add r3,r12,r3                                  
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
         if ((index >= index_base) &&                                 
 8005e8c:	50 43 00 02 	bgeu r2,r3,8005e94 <_Objects_Shrink_information+0xb0>
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
 8005e90:	f8 00 12 cf 	calli 800a9cc <_Chain_Extract>                 
         }                                                            
       }                                                              
       while ( the_object );                                          
 8005e94:	45 a0 00 03 	be r13,r0,8005ea0 <_Objects_Shrink_information+0xbc>
         index = _Objects_Get_index( the_object->id );                
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
 8005e98:	b9 a0 08 00 	mv r1,r13                                      
 8005e9c:	e3 ff ff f7 	bi 8005e78 <_Objects_Shrink_information+0x94>  
       while ( the_object );                                          
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
 8005ea0:	29 c1 00 34 	lw r1,(r14+52)                                 
 8005ea4:	b4 2b 08 00 	add r1,r1,r11                                  
 8005ea8:	28 21 00 00 	lw r1,(r1+0)                                   
 8005eac:	f8 00 08 61 	calli 8008030 <_Workspace_Free>                
      information->object_blocks[ block ] = NULL;                     
 8005eb0:	29 c2 00 34 	lw r2,(r14+52)                                 
      information->inactive_per_block[ block ] = 0;                   
 8005eb4:	29 c4 00 30 	lw r4,(r14+48)                                 
                                                                      
      information->inactive -= information->allocation_size;          
 8005eb8:	2d c3 00 2c 	lhu r3,(r14+44)                                
 8005ebc:	2d c1 00 14 	lhu r1,(r14+20)                                
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
 8005ec0:	b4 4b 10 00 	add r2,r2,r11                                  
 8005ec4:	58 40 00 00 	sw (r2+0),r0                                   
      information->inactive_per_block[ block ] = 0;                   
 8005ec8:	b4 8b 58 00 	add r11,r4,r11                                 
 8005ecc:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
      information->inactive -= information->allocation_size;          
 8005ed0:	c8 61 08 00 	sub r1,r3,r1                                   
 8005ed4:	0d c1 00 2c 	sh (r14+44),r1                                 
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
 8005ed8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005edc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8005ee0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8005ee4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8005ee8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8005eec:	37 9c 00 14 	addi sp,sp,20                                  
 8005ef0:	c3 a0 00 00 	ret                                            
                                                                      

0800c854 <_POSIX_Keys_Run_destructors>: */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ) {
 800c854:	37 9c ff e8 	addi sp,sp,-24                                 
 800c858:	5b 8b 00 18 	sw (sp+24),r11                                 
 800c85c:	5b 8c 00 14 	sw (sp+20),r12                                 
 800c860:	5b 8d 00 10 	sw (sp+16),r13                                 
 800c864:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800c868:	5b 8f 00 08 	sw (sp+8),r15                                  
 800c86c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Maximum thread_index = _Objects_Get_index( thread->Object.id );
 800c870:	28 2e 00 08 	lw r14,(r1+8)                                  
 800c874:	34 02 00 18 	mvi r2,24                                      
 800c878:	78 0b 08 02 	mvhi r11,0x802                                 
 800c87c:	b9 c0 08 00 	mv r1,r14                                      
 800c880:	f8 00 3d 56 	calli 801bdd8 <__lshrsi3>                      
 800c884:	20 21 00 07 	andi r1,r1,0x7                                 
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
 800c888:	21 ce ff ff 	andi r14,r14,0xffff                            
 800c88c:	34 21 00 04 	addi r1,r1,4                                   
 800c890:	b5 ce 70 00 	add r14,r14,r14                                
 800c894:	b4 21 08 00 	add r1,r1,r1                                   
 800c898:	b5 ce 70 00 	add r14,r14,r14                                
 800c89c:	39 6b 0c ac 	ori r11,r11,0xcac                              
 800c8a0:	b4 21 78 00 	add r15,r1,r1                                  
   *                                                                  
   *  Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.         
   */                                                                 
  while ( !done ) {                                                   
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
 800c8a4:	2d 6c 00 10 	lhu r12,(r11+16)                               
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
 800c8a8:	5d 80 00 09 	bne r12,r0,800c8cc <_POSIX_Keys_Run_destructors+0x78>
          done = false;                                               
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
}                                                                     
 800c8ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c8b0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800c8b4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800c8b8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800c8bc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800c8c0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800c8c4:	37 9c 00 18 	addi sp,sp,24                                  
 800c8c8:	c3 a0 00 00 	ret                                            
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
 800c8cc:	34 0d 00 01 	mvi r13,1                                      
 800c8d0:	34 03 00 01 	mvi r3,1                                       
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
 800c8d4:	29 62 00 1c 	lw r2,(r11+28)                                 
 800c8d8:	b5 ad 08 00 	add r1,r13,r13                                 
 800c8dc:	b4 21 08 00 	add r1,r1,r1                                   
 800c8e0:	b4 41 08 00 	add r1,r2,r1                                   
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
 800c8e4:	28 21 00 00 	lw r1,(r1+0)                                   
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
 800c8e8:	b4 2f 10 00 	add r2,r1,r15                                  
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
      POSIX_Keys_Control *key = (POSIX_Keys_Control *)                
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
 800c8ec:	44 20 00 0b 	be r1,r0,800c918 <_POSIX_Keys_Run_destructors+0xc4>
 800c8f0:	28 24 00 10 	lw r4,(r1+16)                                  
 800c8f4:	44 80 00 09 	be r4,r0,800c918 <_POSIX_Keys_Run_destructors+0xc4>
        void *value = key->Values [ thread_api ][ thread_index ];     
 800c8f8:	28 42 00 04 	lw r2,(r2+4)                                   
 800c8fc:	b4 4e 10 00 	add r2,r2,r14                                  
 800c900:	28 45 00 00 	lw r5,(r2+0)                                   
                                                                      
        if ( value != NULL ) {                                        
          key->Values [ thread_api ][ thread_index ] = NULL;          
          (*key->destructor)( value );                                
 800c904:	b8 a0 08 00 	mv r1,r5                                       
        _POSIX_Keys_Information.local_table [ index ];                
                                                                      
      if ( key != NULL && key->destructor != NULL ) {                 
        void *value = key->Values [ thread_api ][ thread_index ];     
                                                                      
        if ( value != NULL ) {                                        
 800c908:	44 a0 00 04 	be r5,r0,800c918 <_POSIX_Keys_Run_destructors+0xc4><== ALWAYS TAKEN
          key->Values [ thread_api ][ thread_index ] = NULL;          
 800c90c:	58 40 00 00 	sw (r2+0),r0                                   <== NOT EXECUTED
          (*key->destructor)( value );                                
 800c910:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
          done = false;                                               
 800c914:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
    Objects_Maximum index = 0;                                        
    Objects_Maximum max = _POSIX_Keys_Information.maximum;            
                                                                      
    done = true;                                                      
                                                                      
    for ( index = 1 ; index <= max ; ++index ) {                      
 800c918:	35 ad 00 01 	addi r13,r13,1                                 
 800c91c:	21 ad ff ff 	andi r13,r13,0xffff                            
 800c920:	51 8d ff ed 	bgeu r12,r13,800c8d4 <_POSIX_Keys_Run_destructors+0x80>
   *  number of iterations.  An infinite loop may happen if destructors set
   *  thread specific data.  This can be considered dubious.          
   *                                                                  
   *  Reference: 17.1.1.2 P1003.1c/Draft 10, p. 163, line 99.         
   */                                                                 
  while ( !done ) {                                                   
 800c924:	44 60 ff e0 	be r3,r0,800c8a4 <_POSIX_Keys_Run_destructors+0x50><== NEVER TAKEN
 800c928:	e3 ff ff e1 	bi 800c8ac <_POSIX_Keys_Run_destructors+0x58>  
                                                                      

0800bd9c <_POSIX_Message_queue_Create_support>: size_t name_len, int pshared, struct mq_attr *attr_ptr, POSIX_Message_queue_Control **message_queue ) {
 800bd9c:	37 9c ff dc 	addi sp,sp,-36                                 
 800bda0:	5b 8b 00 20 	sw (sp+32),r11                                 
 800bda4:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800bda8:	5b 8d 00 18 	sw (sp+24),r13                                 
 800bdac:	5b 8e 00 14 	sw (sp+20),r14                                 
 800bdb0:	5b 8f 00 10 	sw (sp+16),r15                                 
 800bdb4:	5b 90 00 0c 	sw (sp+12),r16                                 
 800bdb8:	5b 91 00 08 	sw (sp+8),r17                                  
 800bdbc:	5b 9d 00 04 	sw (sp+4),ra                                   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800bdc0:	78 06 08 02 	mvhi r6,0x802                                  
 800bdc4:	38 c6 53 28 	ori r6,r6,0x5328                               
 800bdc8:	28 c7 00 00 	lw r7,(r6+0)                                   
 800bdcc:	b8 20 68 00 	mv r13,r1                                      
 800bdd0:	b8 60 80 00 	mv r16,r3                                      
                                                                      
    ++level;                                                          
 800bdd4:	34 e7 00 01 	addi r7,r7,1                                   
    _Thread_Dispatch_disable_level = level;                           
 800bdd8:	58 c7 00 00 	sw (r6+0),r7                                   
 800bddc:	b8 a0 88 00 	mv r17,r5                                      
   *  There is no real basis for the default values.  They will work  
   *  but were not compared against any existing implementation for   
   *  compatibility.  See README.mqueue for an example program we     
   *  think will print out the defaults.  Report anything you find with it.
   */                                                                 
  if ( attr_ptr == NULL ) {                                           
 800bde0:	44 80 00 0c 	be r4,r0,800be10 <_POSIX_Message_queue_Create_support+0x74>
    attr.mq_maxmsg  = 10;                                             
    attr.mq_msgsize = 16;                                             
  } else {                                                            
    if ( attr_ptr->mq_maxmsg <= 0 ){                                  
 800bde4:	28 8e 00 04 	lw r14,(r4+4)                                  
 800bde8:	49 c0 00 07 	bg r14,r0,800be04 <_POSIX_Message_queue_Create_support+0x68>
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    }                                                                 
                                                                      
    if ( attr_ptr->mq_msgsize <= 0 ){                                 
      _Thread_Enable_dispatch();                                      
 800bdec:	fb ff f3 f8 	calli 8008dcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 800bdf0:	f8 00 0e 72 	calli 800f7b8 <__errno>                        
 800bdf4:	34 02 00 16 	mvi r2,22                                      
 800bdf8:	58 22 00 00 	sw (r1+0),r2                                   
 800bdfc:	34 01 ff ff 	mvi r1,-1                                      
 800be00:	e0 00 00 29 	bi 800bea4 <_POSIX_Message_queue_Create_support+0x108>
    if ( attr_ptr->mq_maxmsg <= 0 ){                                  
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    }                                                                 
                                                                      
    if ( attr_ptr->mq_msgsize <= 0 ){                                 
 800be04:	28 8f 00 08 	lw r15,(r4+8)                                  
 800be08:	49 e0 00 04 	bg r15,r0,800be18 <_POSIX_Message_queue_Create_support+0x7c>
 800be0c:	e3 ff ff f8 	bi 800bdec <_POSIX_Message_queue_Create_support+0x50>
   *  compatibility.  See README.mqueue for an example program we     
   *  think will print out the defaults.  Report anything you find with it.
   */                                                                 
  if ( attr_ptr == NULL ) {                                           
    attr.mq_maxmsg  = 10;                                             
    attr.mq_msgsize = 16;                                             
 800be10:	34 0f 00 10 	mvi r15,16                                     
   *  but were not compared against any existing implementation for   
   *  compatibility.  See README.mqueue for an example program we     
   *  think will print out the defaults.  Report anything you find with it.
   */                                                                 
  if ( attr_ptr == NULL ) {                                           
    attr.mq_maxmsg  = 10;                                             
 800be14:	34 0e 00 0a 	mvi r14,10                                     
                                                                      
RTEMS_INLINE_ROUTINE                                                  
  POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void )  
{                                                                     
  return (POSIX_Message_queue_Control *)                              
    _Objects_Allocate( &_POSIX_Message_queue_Information );           
 800be18:	78 0c 08 02 	mvhi r12,0x802                                 
 800be1c:	39 8c 55 e4 	ori r12,r12,0x55e4                             
 800be20:	b9 80 08 00 	mv r1,r12                                      
 800be24:	5b 82 00 24 	sw (sp+36),r2                                  
 800be28:	fb ff ee 50 	calli 8007768 <_Objects_Allocate>              
 800be2c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    attr = *attr_ptr;                                                 
  }                                                                   
                                                                      
  the_mq = _POSIX_Message_queue_Allocate();                           
  if ( !the_mq ) {                                                    
 800be30:	2b 82 00 24 	lw r2,(sp+36)                                  
 800be34:	44 20 00 3a 	be r1,r0,800bf1c <_POSIX_Message_queue_Create_support+0x180><== NEVER TAKEN
                                                                      
  /*                                                                  
   * Make a copy of the user's string for name just in case it was    
   * dynamically constructed.                                         
   */                                                                 
  name = _Workspace_String_duplicate( name_arg, name_len );           
 800be38:	b9 a0 08 00 	mv r1,r13                                      
 800be3c:	f8 00 07 66 	calli 800dbd4 <_Workspace_String_duplicate>    
 800be40:	b8 20 68 00 	mv r13,r1                                      
  if ( !name ) {                                                      
 800be44:	44 20 00 2d 	be r1,r0,800bef8 <_POSIX_Message_queue_Create_support+0x15c>
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
  }                                                                   
                                                                      
  the_mq->process_shared  = pshared;                                  
  the_mq->named = true;                                               
  the_mq->open_count = 1;                                             
 800be48:	34 01 00 01 	mvi r1,1                                       
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
  }                                                                   
                                                                      
  the_mq->process_shared  = pshared;                                  
  the_mq->named = true;                                               
 800be4c:	34 02 00 01 	mvi r2,1                                       
 800be50:	31 62 00 14 	sb (r11+20),r2                                 
  the_mq->open_count = 1;                                             
 800be54:	59 61 00 18 	sw (r11+24),r1                                 
  the_mq->linked = true;                                              
 800be58:	31 61 00 15 	sb (r11+21),r1                                 
    _POSIX_Message_queue_Free( the_mq );                              
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
  }                                                                   
                                                                      
  the_mq->process_shared  = pshared;                                  
 800be5c:	59 70 00 10 	sw (r11+16),r16                                
   *                                                                  
   *  Joel: Cite POSIX or OpenGroup on above statement so we can determine
   *        if it is a real requirement.                              
   */                                                                 
  the_mq_attr = &the_mq->Message_queue.Attributes;                    
  the_mq_attr->discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;      
 800be60:	59 60 00 5c 	sw (r11+92),r0                                 
                                                                      
  if ( !_CORE_message_queue_Initialize(                               
 800be64:	35 61 00 1c 	addi r1,r11,28                                 
 800be68:	35 62 00 5c 	addi r2,r11,92                                 
 800be6c:	b9 c0 18 00 	mv r3,r14                                      
 800be70:	b9 e0 20 00 	mv r4,r15                                      
 800be74:	f8 00 04 35 	calli 800cf48 <_CORE_message_queue_Initialize> 
 800be78:	44 20 00 15 	be r1,r0,800becc <_POSIX_Message_queue_Create_support+0x130><== NEVER TAKEN
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 800be7c:	2d 62 00 0a 	lhu r2,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800be80:	29 81 00 1c 	lw r1,(r12+28)                                 
 800be84:	b4 42 10 00 	add r2,r2,r2                                   
 800be88:	b4 42 10 00 	add r2,r2,r2                                   
 800be8c:	b4 22 10 00 	add r2,r1,r2                                   
 800be90:	58 4b 00 00 	sw (r2+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 800be94:	59 6d 00 0c 	sw (r11+12),r13                                
    &_POSIX_Message_queue_Information,                                
    &the_mq->Object,                                                  
    name                                                              
  );                                                                  
                                                                      
  *message_queue = the_mq;                                            
 800be98:	5a 2b 00 00 	sw (r17+0),r11                                 
                                                                      
  _Thread_Enable_dispatch();                                          
 800be9c:	fb ff f3 cc 	calli 8008dcc <_Thread_Enable_dispatch>        
  return 0;                                                           
 800bea0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800bea4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bea8:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800beac:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800beb0:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800beb4:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800beb8:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800bebc:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800bec0:	2b 91 00 08 	lw r17,(sp+8)                                  
 800bec4:	37 9c 00 24 	addi sp,sp,36                                  
 800bec8:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free (                 
  POSIX_Message_queue_Control *the_mq                                 
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
 800becc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800bed0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800bed4:	fb ff ef 30 	calli 8007b94 <_Objects_Free>                  <== NOT EXECUTED
           attr.mq_maxmsg,                                            
           attr.mq_msgsize                                            
      ) ) {                                                           
                                                                      
    _POSIX_Message_queue_Free( the_mq );                              
    _Workspace_Free(name);                                            
 800bed8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800bedc:	fb ff f8 e1 	calli 800a260 <_Workspace_Free>                <== NOT EXECUTED
    _Thread_Enable_dispatch();                                        
 800bee0:	fb ff f3 bb 	calli 8008dcc <_Thread_Enable_dispatch>        <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( ENOSPC );                   
 800bee4:	f8 00 0e 35 	calli 800f7b8 <__errno>                        <== NOT EXECUTED
 800bee8:	34 02 00 1c 	mvi r2,28                                      <== NOT EXECUTED
 800beec:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800bef0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800bef4:	e3 ff ff ec 	bi 800bea4 <_POSIX_Message_queue_Create_support+0x108><== NOT EXECUTED
 800bef8:	b9 60 10 00 	mv r2,r11                                      
 800befc:	b9 80 08 00 	mv r1,r12                                      
 800bf00:	fb ff ef 25 	calli 8007b94 <_Objects_Free>                  
   * dynamically constructed.                                         
   */                                                                 
  name = _Workspace_String_duplicate( name_arg, name_len );           
  if ( !name ) {                                                      
    _POSIX_Message_queue_Free( the_mq );                              
    _Thread_Enable_dispatch();                                        
 800bf04:	fb ff f3 b2 	calli 8008dcc <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENOMEM );                   
 800bf08:	f8 00 0e 2c 	calli 800f7b8 <__errno>                        
 800bf0c:	34 02 00 0c 	mvi r2,12                                      
 800bf10:	58 22 00 00 	sw (r1+0),r2                                   
 800bf14:	34 01 ff ff 	mvi r1,-1                                      
 800bf18:	e3 ff ff e3 	bi 800bea4 <_POSIX_Message_queue_Create_support+0x108>
    attr = *attr_ptr;                                                 
  }                                                                   
                                                                      
  the_mq = _POSIX_Message_queue_Allocate();                           
  if ( !the_mq ) {                                                    
    _Thread_Enable_dispatch();                                        
 800bf1c:	fb ff f3 ac 	calli 8008dcc <_Thread_Enable_dispatch>        <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( ENFILE );                   
 800bf20:	f8 00 0e 26 	calli 800f7b8 <__errno>                        <== NOT EXECUTED
 800bf24:	34 02 00 17 	mvi r2,23                                      <== NOT EXECUTED
 800bf28:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800bf2c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800bf30:	e3 ff ff dd 	bi 800bea4 <_POSIX_Message_queue_Create_support+0x108><== NOT EXECUTED
                                                                      

08009a70 <_POSIX_Message_queue_Receive_support>: size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout ) {
 8009a70:	37 9c ff dc 	addi sp,sp,-36                                 
 8009a74:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009a78:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009a7c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009a80:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009a84:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009a88:	5b 90 00 08 	sw (sp+8),r16                                  
 8009a8c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009a90:	b8 20 58 00 	mv r11,r1                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd (
  mqd_t              id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control_fd *) _Objects_Get(             
 8009a94:	78 01 08 02 	mvhi r1,0x802                                  
 8009a98:	b8 40 78 00 	mv r15,r2                                      
 8009a9c:	b8 60 60 00 	mv r12,r3                                      
 8009aa0:	b9 60 10 00 	mv r2,r11                                      
 8009aa4:	38 21 b2 40 	ori r1,r1,0xb240                               
 8009aa8:	37 83 00 24 	addi r3,sp,36                                  
 8009aac:	b8 80 68 00 	mv r13,r4                                      
 8009ab0:	b8 c0 70 00 	mv r14,r6                                      
 8009ab4:	20 b0 00 ff 	andi r16,r5,0xff                               
 8009ab8:	f8 00 0d bb 	calli 800d1a4 <_Objects_Get>                   
  Objects_Locations                location;                          
  size_t                           length_out;                        
  bool                             do_wait;                           
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
 8009abc:	2b 82 00 24 	lw r2,(sp+36)                                  
 8009ac0:	44 40 00 0e 	be r2,r0,8009af8 <_POSIX_Message_queue_Receive_support+0x88>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EBADF );                      
 8009ac4:	f8 00 2d 56 	calli 801501c <__errno>                        
 8009ac8:	34 02 00 09 	mvi r2,9                                       
 8009acc:	58 22 00 00 	sw (r1+0),r2                                   
 8009ad0:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 8009ad4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009ad8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8009adc:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8009ae0:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8009ae4:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8009ae8:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8009aec:	2b 90 00 08 	lw r16,(sp+8)                                  
 8009af0:	37 9c 00 24 	addi sp,sp,36                                  
 8009af4:	c3 a0 00 00 	ret                                            
                                                                      
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
 8009af8:	28 24 00 14 	lw r4,(r1+20)                                  
 8009afc:	34 07 00 01 	mvi r7,1                                       
 8009b00:	20 88 00 03 	andi r8,r4,0x3                                 
 8009b04:	45 07 00 3a 	be r8,r7,8009bec <_POSIX_Message_queue_Receive_support+0x17c>
        _Thread_Enable_dispatch();                                    
        rtems_set_errno_and_return_minus_one( EBADF );                
      }                                                               
                                                                      
      the_mq = the_mq_fd->Queue;                                      
 8009b08:	28 27 00 10 	lw r7,(r1+16)                                  
                                                                      
      if ( msg_len < the_mq->Message_queue.maximum_message_size ) {   
 8009b0c:	28 e1 00 68 	lw r1,(r7+104)                                 
 8009b10:	51 81 00 07 	bgeu r12,r1,8009b2c <_POSIX_Message_queue_Receive_support+0xbc>
        _Thread_Enable_dispatch();                                    
 8009b14:	f8 00 11 e5 	calli 800e2a8 <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EMSGSIZE );             
 8009b18:	f8 00 2d 41 	calli 801501c <__errno>                        
 8009b1c:	34 02 00 7a 	mvi r2,122                                     
 8009b20:	58 22 00 00 	sw (r1+0),r2                                   
 8009b24:	34 01 ff ff 	mvi r1,-1                                      
 8009b28:	e3 ff ff eb 	bi 8009ad4 <_POSIX_Message_queue_Receive_support+0x64>
      /*                                                              
       *  Now if something goes wrong, we return a "length" of -1     
       *  to indicate an error.                                       
       */                                                             
                                                                      
      length_out = -1;                                                
 8009b2c:	34 01 ff ff 	mvi r1,-1                                      
 8009b30:	5b 81 00 20 	sw (sp+32),r1                                  
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 8009b34:	34 05 00 00 	mvi r5,0                                       
 8009b38:	5e 00 00 17 	bne r16,r0,8009b94 <_POSIX_Message_queue_Receive_support+0x124>
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 8009b3c:	34 e1 00 1c 	addi r1,r7,28                                  
 8009b40:	b9 60 10 00 	mv r2,r11                                      
 8009b44:	b9 e0 18 00 	mv r3,r15                                      
 8009b48:	37 84 00 20 	addi r4,sp,32                                  
 8009b4c:	b9 c0 30 00 	mv r6,r14                                      
 8009b50:	f8 00 08 45 	calli 800bc64 <_CORE_message_queue_Seize>      
        &length_out,                                                  
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8009b54:	f8 00 11 d5 	calli 800e2a8 <_Thread_Enable_dispatch>        
      if (msg_prio) {                                                 
 8009b58:	45 a0 00 19 	be r13,r0,8009bbc <_POSIX_Message_queue_Receive_support+0x14c><== NEVER TAKEN
        *msg_prio = _POSIX_Message_queue_Priority_from_core(          
             _Thread_Executing->Wait.count                            
 8009b5c:	78 0b 08 02 	mvhi r11,0x802                                 
 8009b60:	39 6b b2 c0 	ori r11,r11,0xb2c0                             
 8009b64:	29 6c 00 10 	lw r12,(r11+16)                                
RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
  CORE_message_queue_Submit_types priority                            
)                                                                     
{                                                                     
  /* absolute value without a library dependency */                   
  return (unsigned int) ((priority >= 0) ? priority : -priority);     
 8009b68:	34 02 00 1f 	mvi r2,31                                      
 8009b6c:	29 81 00 24 	lw r1,(r12+36)                                 
 8009b70:	f8 00 6f 36 	calli 8025848 <__ashrsi3>                      
 8009b74:	29 82 00 24 	lw r2,(r12+36)                                 
 8009b78:	98 22 10 00 	xor r2,r1,r2                                   
 8009b7c:	c8 41 08 00 	sub r1,r2,r1                                   
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if (msg_prio) {                                                 
        *msg_prio = _POSIX_Message_queue_Priority_from_core(          
 8009b80:	59 a1 00 00 	sw (r13+0),r1                                  
             _Thread_Executing->Wait.count                            
          );                                                          
      }                                                               
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
 8009b84:	29 81 00 34 	lw r1,(r12+52)                                 
 8009b88:	5c 20 00 11 	bne r1,r0,8009bcc <_POSIX_Message_queue_Receive_support+0x15c>
        return length_out;                                            
 8009b8c:	2b 81 00 20 	lw r1,(sp+32)                                  
 8009b90:	e3 ff ff d1 	bi 8009ad4 <_POSIX_Message_queue_Receive_support+0x64>
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
        do_wait = (the_mq_fd->oflag & O_NONBLOCK) ? false : true;     
 8009b94:	20 85 40 00 	andi r5,r4,0x4000                              
      length_out = -1;                                                
                                                                      
      /*                                                              
       *  A timed receive with a bad time will do a poll regardless.  
       */                                                             
      if ( wait )                                                     
 8009b98:	64 a5 00 00 	cmpei r5,r5,0                                  
        do_wait = wait;                                               
                                                                      
      /*                                                              
       *  Now perform the actual message receive                      
       */                                                             
      _CORE_message_queue_Seize(                                      
 8009b9c:	34 e1 00 1c 	addi r1,r7,28                                  
 8009ba0:	b9 60 10 00 	mv r2,r11                                      
 8009ba4:	b9 e0 18 00 	mv r3,r15                                      
 8009ba8:	37 84 00 20 	addi r4,sp,32                                  
 8009bac:	b9 c0 30 00 	mv r6,r14                                      
 8009bb0:	f8 00 08 2d 	calli 800bc64 <_CORE_message_queue_Seize>      
        &length_out,                                                  
        do_wait,                                                      
        timeout                                                       
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8009bb4:	f8 00 11 bd 	calli 800e2a8 <_Thread_Enable_dispatch>        
      if (msg_prio) {                                                 
 8009bb8:	5d a0 ff e9 	bne r13,r0,8009b5c <_POSIX_Message_queue_Receive_support+0xec><== ALWAYS TAKEN
 8009bbc:	78 0b 08 02 	mvhi r11,0x802                                 <== NOT EXECUTED
 8009bc0:	39 6b b2 c0 	ori r11,r11,0xb2c0                             <== NOT EXECUTED
 8009bc4:	29 6c 00 10 	lw r12,(r11+16)                                <== NOT EXECUTED
 8009bc8:	e3 ff ff ef 	bi 8009b84 <_POSIX_Message_queue_Receive_support+0x114><== NOT EXECUTED
      }                                                               
                                                                      
      if ( !_Thread_Executing->Wait.return_code )                     
        return length_out;                                            
                                                                      
      rtems_set_errno_and_return_minus_one(                           
 8009bcc:	f8 00 2d 14 	calli 801501c <__errno>                        
 8009bd0:	b8 20 60 00 	mv r12,r1                                      
 8009bd4:	29 61 00 10 	lw r1,(r11+16)                                 
 8009bd8:	28 21 00 34 	lw r1,(r1+52)                                  
 8009bdc:	f8 00 00 c2 	calli 8009ee4 <_POSIX_Message_queue_Translate_core_message_queue_return_code>
 8009be0:	59 81 00 00 	sw (r12+0),r1                                  
 8009be4:	34 01 ff ff 	mvi r1,-1                                      
 8009be8:	e3 ff ff bb 	bi 8009ad4 <_POSIX_Message_queue_Receive_support+0x64>
  the_mq_fd = _POSIX_Message_queue_Get_fd( mqdes, &location );        
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( (the_mq_fd->oflag & O_ACCMODE) == O_WRONLY ) {             
        _Thread_Enable_dispatch();                                    
 8009bec:	f8 00 11 af 	calli 800e2a8 <_Thread_Enable_dispatch>        
        rtems_set_errno_and_return_minus_one( EBADF );                
 8009bf0:	f8 00 2d 0b 	calli 801501c <__errno>                        
 8009bf4:	34 02 00 09 	mvi r2,9                                       
 8009bf8:	58 22 00 00 	sw (r1+0),r2                                   
 8009bfc:	34 01 ff ff 	mvi r1,-1                                      
 8009c00:	e3 ff ff b5 	bi 8009ad4 <_POSIX_Message_queue_Receive_support+0x64>
                                                                      

0800c6d8 <_POSIX_Semaphore_Create_support>: size_t name_len, int pshared, unsigned int value, POSIX_Semaphore_Control **the_sem ) {
 800c6d8:	37 9c ff e0 	addi sp,sp,-32                                 
 800c6dc:	5b 8b 00 20 	sw (sp+32),r11                                 
 800c6e0:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800c6e4:	5b 8d 00 18 	sw (sp+24),r13                                 
 800c6e8:	5b 8e 00 14 	sw (sp+20),r14                                 
 800c6ec:	5b 8f 00 10 	sw (sp+16),r15                                 
 800c6f0:	5b 90 00 0c 	sw (sp+12),r16                                 
 800c6f4:	5b 91 00 08 	sw (sp+8),r17                                  
 800c6f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c6fc:	b8 60 68 00 	mv r13,r3                                      
 800c700:	b8 20 70 00 	mv r14,r1                                      
 800c704:	b8 40 88 00 	mv r17,r2                                      
 800c708:	b8 80 78 00 	mv r15,r4                                      
 800c70c:	b8 a0 80 00 	mv r16,r5                                      
  POSIX_Semaphore_Control   *the_semaphore;                           
  CORE_semaphore_Attributes *the_sem_attr;                            
  char                      *name;                                    
                                                                      
  /* Sharing semaphores among processes is not currently supported */ 
  if (pshared != 0)                                                   
 800c710:	5c 60 00 39 	bne r3,r0,800c7f4 <_POSIX_Semaphore_Create_support+0x11c>
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800c714:	78 06 08 02 	mvhi r6,0x802                                  
 800c718:	38 c6 53 28 	ori r6,r6,0x5328                               
 800c71c:	28 c1 00 00 	lw r1,(r6+0)                                   
                                                                      
    ++level;                                                          
 800c720:	34 21 00 01 	addi r1,r1,1                                   
    _Thread_Dispatch_disable_level = level;                           
 800c724:	58 c1 00 00 	sw (r6+0),r1                                   
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Allocate( void )
{                                                                     
  return (POSIX_Semaphore_Control *)                                  
    _Objects_Allocate( &_POSIX_Semaphore_Information );               
 800c728:	78 0c 08 02 	mvhi r12,0x802                                 
 800c72c:	39 8c 55 64 	ori r12,r12,0x5564                             
 800c730:	b9 80 08 00 	mv r1,r12                                      
 800c734:	fb ff ec 0d 	calli 8007768 <_Objects_Allocate>              
 800c738:	b8 20 58 00 	mv r11,r1                                      
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_semaphore = _POSIX_Semaphore_Allocate();                        
  if ( !the_semaphore ) {                                             
 800c73c:	44 2d 00 33 	be r1,r13,800c808 <_POSIX_Semaphore_Create_support+0x130>
                                                                      
  /*                                                                  
   * Make a copy of the user's string for name just in case it was    
   * dynamically constructed.                                         
   */                                                                 
  if ( name_arg != NULL ) {                                           
 800c740:	45 c0 00 27 	be r14,r0,800c7dc <_POSIX_Semaphore_Create_support+0x104>
    name = _Workspace_String_duplicate( name_arg, name_len );         
 800c744:	b9 c0 08 00 	mv r1,r14                                      
 800c748:	ba 20 10 00 	mv r2,r17                                      
 800c74c:	f8 00 05 22 	calli 800dbd4 <_Workspace_String_duplicate>    
 800c750:	b8 20 68 00 	mv r13,r1                                      
    if ( !name ) {                                                    
 800c754:	44 20 00 33 	be r1,r0,800c820 <_POSIX_Semaphore_Create_support+0x148><== NEVER TAKEN
                                                                      
  the_semaphore->process_shared  = pshared;                           
                                                                      
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
    the_semaphore->open_count = 1;                                    
 800c758:	34 01 00 01 	mvi r1,1                                       
  }                                                                   
                                                                      
  the_semaphore->process_shared  = pshared;                           
                                                                      
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
 800c75c:	34 02 00 01 	mvi r2,1                                       
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
  }                                                                   
                                                                      
  the_semaphore->process_shared  = pshared;                           
 800c760:	59 60 00 10 	sw (r11+16),r0                                 
                                                                      
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
 800c764:	31 62 00 14 	sb (r11+20),r2                                 
    the_semaphore->open_count = 1;                                    
 800c768:	59 61 00 18 	sw (r11+24),r1                                 
    the_semaphore->linked = true;                                     
 800c76c:	31 61 00 15 	sb (r11+21),r1                                 
  the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;         
                                                                      
  /*                                                                  
   *  This effectively disables limit checking.                       
   */                                                                 
  the_sem_attr->maximum_count = 0xFFFFFFFF;                           
 800c770:	34 04 ff ff 	mvi r4,-1                                      
                                                                      
  _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
 800c774:	35 61 00 1c 	addi r1,r11,28                                 
 800c778:	35 62 00 5c 	addi r2,r11,92                                 
 800c77c:	b9 e0 18 00 	mv r3,r15                                      
  the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;         
                                                                      
  /*                                                                  
   *  This effectively disables limit checking.                       
   */                                                                 
  the_sem_attr->maximum_count = 0xFFFFFFFF;                           
 800c780:	59 64 00 5c 	sw (r11+92),r4                                 
   *  blocking tasks on this semaphore should be.  It could somehow   
   *  be derived from the current scheduling policy.  One             
   *  thing is certain, no matter what we decide, it won't be         
   *  the same as  all other POSIX implementations. :)                
   */                                                                 
  the_sem_attr->discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;         
 800c784:	59 60 00 60 	sw (r11+96),r0                                 
  /*                                                                  
   *  This effectively disables limit checking.                       
   */                                                                 
  the_sem_attr->maximum_count = 0xFFFFFFFF;                           
                                                                      
  _CORE_semaphore_Initialize( &the_semaphore->Semaphore, the_sem_attr, value );
 800c788:	fb ff e9 f4 	calli 8006f58 <_CORE_semaphore_Initialize>     
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 800c78c:	2d 62 00 0a 	lhu r2,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800c790:	29 81 00 1c 	lw r1,(r12+28)                                 
 800c794:	b4 42 10 00 	add r2,r2,r2                                   
 800c798:	b4 42 10 00 	add r2,r2,r2                                   
 800c79c:	b4 22 10 00 	add r2,r1,r2                                   
 800c7a0:	58 4b 00 00 	sw (r2+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 800c7a4:	59 6d 00 0c 	sw (r11+12),r13                                
    &_POSIX_Semaphore_Information,                                    
    &the_semaphore->Object,                                           
    name                                                              
  );                                                                  
                                                                      
  *the_sem = the_semaphore;                                           
 800c7a8:	5a 0b 00 00 	sw (r16+0),r11                                 
                                                                      
  _Thread_Enable_dispatch();                                          
 800c7ac:	fb ff f1 88 	calli 8008dcc <_Thread_Enable_dispatch>        
  return 0;                                                           
 800c7b0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800c7b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c7b8:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800c7bc:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800c7c0:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800c7c4:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800c7c8:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800c7cc:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800c7d0:	2b 91 00 08 	lw r17,(sp+8)                                  
 800c7d4:	37 9c 00 20 	addi sp,sp,32                                  
 800c7d8:	c3 a0 00 00 	ret                                            
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
  }                                                                   
                                                                      
  the_semaphore->process_shared  = pshared;                           
 800c7dc:	58 20 00 10 	sw (r1+16),r0                                  
  if ( name ) {                                                       
    the_semaphore->named = true;                                      
    the_semaphore->open_count = 1;                                    
    the_semaphore->linked = true;                                     
  } else {                                                            
    the_semaphore->named = false;                                     
 800c7e0:	30 20 00 14 	sb (r1+20),r0                                  
    the_semaphore->open_count = 0;                                    
 800c7e4:	58 20 00 18 	sw (r1+24),r0                                  
    the_semaphore->linked = false;                                    
 800c7e8:	30 20 00 15 	sb (r1+21),r0                                  
      _POSIX_Semaphore_Free( the_semaphore );                         
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
    }                                                                 
  } else {                                                            
    name = NULL;                                                      
 800c7ec:	34 0d 00 00 	mvi r13,0                                      
 800c7f0:	e3 ff ff e0 	bi 800c770 <_POSIX_Semaphore_Create_support+0x98>
  CORE_semaphore_Attributes *the_sem_attr;                            
  char                      *name;                                    
                                                                      
  /* Sharing semaphores among processes is not currently supported */ 
  if (pshared != 0)                                                   
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 800c7f4:	f8 00 0b f1 	calli 800f7b8 <__errno>                        
 800c7f8:	34 02 00 58 	mvi r2,88                                      
 800c7fc:	58 22 00 00 	sw (r1+0),r2                                   
 800c800:	34 01 ff ff 	mvi r1,-1                                      
 800c804:	e3 ff ff ec 	bi 800c7b4 <_POSIX_Semaphore_Create_support+0xdc>
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_semaphore = _POSIX_Semaphore_Allocate();                        
  if ( !the_semaphore ) {                                             
    _Thread_Enable_dispatch();                                        
 800c808:	fb ff f1 71 	calli 8008dcc <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENOSPC );                   
 800c80c:	f8 00 0b eb 	calli 800f7b8 <__errno>                        
 800c810:	34 02 00 1c 	mvi r2,28                                      
 800c814:	58 22 00 00 	sw (r1+0),r2                                   
 800c818:	34 01 ff ff 	mvi r1,-1                                      
 800c81c:	e3 ff ff e6 	bi 800c7b4 <_POSIX_Semaphore_Create_support+0xdc>
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free (                     
  POSIX_Semaphore_Control *the_semaphore                              
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object );
 800c820:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800c824:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800c828:	fb ff ec db 	calli 8007b94 <_Objects_Free>                  <== NOT EXECUTED
   */                                                                 
  if ( name_arg != NULL ) {                                           
    name = _Workspace_String_duplicate( name_arg, name_len );         
    if ( !name ) {                                                    
      _POSIX_Semaphore_Free( the_semaphore );                         
      _Thread_Enable_dispatch();                                      
 800c82c:	fb ff f1 68 	calli 8008dcc <_Thread_Enable_dispatch>        <== NOT EXECUTED
      rtems_set_errno_and_return_minus_one( ENOMEM );                 
 800c830:	f8 00 0b e2 	calli 800f7b8 <__errno>                        <== NOT EXECUTED
 800c834:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 800c838:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800c83c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800c840:	e3 ff ff dd 	bi 800c7b4 <_POSIX_Semaphore_Create_support+0xdc><== NOT EXECUTED
                                                                      

080091a4 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch>: #include <rtems/posix/pthread.h> void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch( Thread_Control *the_thread ) {
 80091a4:	37 9c ff fc 	addi sp,sp,-4                                  
 80091a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
 80091ac:	28 22 01 1c 	lw r2,(r1+284)                                 
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 80091b0:	28 43 00 d8 	lw r3,(r2+216)                                 
 80091b4:	5c 60 00 04 	bne r3,r0,80091c4 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20><== NEVER TAKEN
 80091b8:	28 44 00 dc 	lw r4,(r2+220)                                 
 80091bc:	34 03 00 01 	mvi r3,1                                       
 80091c0:	44 83 00 05 	be r4,r3,80091d4 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x30>
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
  } else                                                              
    _Thread_Enable_dispatch();                                        
 80091c4:	fb ff f4 fa 	calli 80065ac <_Thread_Enable_dispatch>        
                                                                      
}                                                                     
 80091c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80091cc:	37 9c 00 04 	addi sp,sp,4                                   
 80091d0:	c3 a0 00 00 	ret                                            
  POSIX_API_Control *thread_support;                                  
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
       thread_support->cancelability_type == PTHREAD_CANCEL_ASYNCHRONOUS &&
 80091d4:	28 42 00 e0 	lw r2,(r2+224)                                 
 80091d8:	44 40 ff fb 	be r2,r0,80091c4 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x20>
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 80091dc:	78 03 08 01 	mvhi r3,0x801                                  
 80091e0:	38 63 68 e8 	ori r3,r3,0x68e8                               
 80091e4:	28 64 00 00 	lw r4,(r3+0)                                   
       thread_support->cancelation_requested ) {                      
    _Thread_Unnest_dispatch();                                        
    _POSIX_Thread_Exit( the_thread, PTHREAD_CANCELED );               
 80091e8:	34 02 ff ff 	mvi r2,-1                                      
                                                                      
    --level;                                                          
 80091ec:	34 84 ff ff 	addi r4,r4,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 80091f0:	58 64 00 00 	sw (r3+0),r4                                   
 80091f4:	f8 00 02 93 	calli 8009c40 <_POSIX_Thread_Exit>             
 80091f8:	e3 ff ff f4 	bi 80091c8 <_POSIX_Thread_Evaluate_cancellation_and_enable_dispatch+0x24>
                                                                      

0800ad10 <_POSIX_Thread_Translate_sched_param>: int policy, struct sched_param *param, Thread_CPU_budget_algorithms *budget_algorithm, Thread_CPU_budget_algorithm_callout *budget_callout ) {
 800ad10:	37 9c ff e8 	addi sp,sp,-24                                 
 800ad14:	5b 8b 00 18 	sw (sp+24),r11                                 
 800ad18:	5b 8c 00 14 	sw (sp+20),r12                                 
 800ad1c:	5b 8d 00 10 	sw (sp+16),r13                                 
 800ad20:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800ad24:	5b 8f 00 08 	sw (sp+8),r15                                  
 800ad28:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ad2c:	b8 20 68 00 	mv r13,r1                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800ad30:	28 41 00 00 	lw r1,(r2+0)                                   
  int                                  policy,                        
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
 800ad34:	b8 40 60 00 	mv r12,r2                                      
 800ad38:	b8 60 70 00 	mv r14,r3                                      
 800ad3c:	b8 80 78 00 	mv r15,r4                                      
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800ad40:	fb ff ff ec 	calli 800acf0 <_POSIX_Priority_Is_valid>       
    return EINVAL;                                                    
 800ad44:	34 0b 00 16 	mvi r11,22                                     
  struct sched_param                  *param,                         
  Thread_CPU_budget_algorithms        *budget_algorithm,              
  Thread_CPU_budget_algorithm_callout *budget_callout                 
)                                                                     
{                                                                     
  if ( !_POSIX_Priority_Is_valid( param->sched_priority ) )           
 800ad48:	44 20 00 0c 	be r1,r0,800ad78 <_POSIX_Thread_Translate_sched_param+0x68><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
 800ad4c:	59 c0 00 00 	sw (r14+0),r0                                  
  *budget_callout = NULL;                                             
 800ad50:	59 e0 00 00 	sw (r15+0),r0                                  
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
 800ad54:	45 a0 00 12 	be r13,r0,800ad9c <_POSIX_Thread_Translate_sched_param+0x8c>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800ad58:	34 01 00 01 	mvi r1,1                                       
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
 800ad5c:	34 0b 00 00 	mvi r11,0                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_FIFO ) {                                       
 800ad60:	45 a1 00 06 	be r13,r1,800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
 800ad64:	34 01 00 02 	mvi r1,2                                       
 800ad68:	45 a1 00 2b 	be r13,r1,800ae14 <_POSIX_Thread_Translate_sched_param+0x104>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800ad6c:	34 01 00 04 	mvi r1,4                                       
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
 800ad70:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
 800ad74:	45 a1 00 0e 	be r13,r1,800adac <_POSIX_Thread_Translate_sched_param+0x9c>
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
    return 0;                                                         
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 800ad78:	b9 60 08 00 	mv r1,r11                                      
 800ad7c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ad80:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800ad84:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800ad88:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800ad8c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800ad90:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800ad94:	37 9c 00 18 	addi sp,sp,24                                  
 800ad98:	c3 a0 00 00 	ret                                            
                                                                      
  *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;               
  *budget_callout = NULL;                                             
                                                                      
  if ( policy == SCHED_OTHER ) {                                      
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;  
 800ad9c:	34 01 00 01 	mvi r1,1                                       
 800ada0:	59 c1 00 00 	sw (r14+0),r1                                  
    return 0;                                                         
 800ada4:	34 0b 00 00 	mvi r11,0                                      
 800ada8:	e3 ff ff f4 	bi 800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
 800adac:	29 81 00 08 	lw r1,(r12+8)                                  
 800adb0:	5c 20 00 03 	bne r1,r0,800adbc <_POSIX_Thread_Translate_sched_param+0xac>
 800adb4:	29 82 00 0c 	lw r2,(r12+12)                                 
 800adb8:	44 41 ff f0 	be r2,r1,800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800adbc:	29 81 00 10 	lw r1,(r12+16)                                 
 800adc0:	5c 20 00 04 	bne r1,r0,800add0 <_POSIX_Thread_Translate_sched_param+0xc0>
 800adc4:	29 82 00 14 	lw r2,(r12+20)                                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
 800adc8:	34 0b 00 16 	mvi r11,22                                     
  if ( policy == SCHED_SPORADIC ) {                                   
    if ( (param->sched_ss_repl_period.tv_sec == 0) &&                 
         (param->sched_ss_repl_period.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
 800adcc:	44 41 ff eb 	be r2,r1,800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
 800add0:	35 81 00 08 	addi r1,r12,8                                  
 800add4:	fb ff f5 ea 	calli 800857c <_Timespec_To_ticks>             
 800add8:	b8 20 68 00 	mv r13,r1                                      
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
 800addc:	35 81 00 10 	addi r1,r12,16                                 
 800ade0:	fb ff f5 e7 	calli 800857c <_Timespec_To_ticks>             
      return EINVAL;                                                  
 800ade4:	34 0b 00 16 	mvi r11,22                                     
                                                                      
    if ( (param->sched_ss_init_budget.tv_sec == 0) &&                 
         (param->sched_ss_init_budget.tv_nsec == 0) )                 
      return EINVAL;                                                  
                                                                      
    if ( _Timespec_To_ticks( ¶m->sched_ss_repl_period ) <         
 800ade8:	54 2d ff e4 	bgu r1,r13,800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
	 _Timespec_To_ticks( ¶m->sched_ss_init_budget ) )                
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
 800adec:	29 81 00 04 	lw r1,(r12+4)                                  
 800adf0:	fb ff ff c0 	calli 800acf0 <_POSIX_Priority_Is_valid>       
 800adf4:	44 20 ff e1 	be r1,r0,800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800adf8:	78 01 08 00 	mvhi r1,0x800                                  
      return EINVAL;                                                  
                                                                      
    if ( !_POSIX_Priority_Is_valid( param->sched_ss_low_priority ) )  
      return EINVAL;                                                  
                                                                      
    *budget_algorithm  = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;         
 800adfc:	34 02 00 03 	mvi r2,3                                       
 800ae00:	59 c2 00 00 	sw (r14+0),r2                                  
    *budget_callout = _POSIX_Threads_Sporadic_budget_callout;         
 800ae04:	38 21 45 f0 	ori r1,r1,0x45f0                               
 800ae08:	59 e1 00 00 	sw (r15+0),r1                                  
    return 0;                                                         
 800ae0c:	34 0b 00 00 	mvi r11,0                                      
 800ae10:	e3 ff ff da 	bi 800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;             
    return 0;                                                         
  }                                                                   
                                                                      
  if ( policy == SCHED_RR ) {                                         
    *budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE;
 800ae14:	59 cd 00 00 	sw (r14+0),r13                                 
    return 0;                                                         
 800ae18:	e3 ff ff d8 	bi 800ad78 <_POSIX_Thread_Translate_sched_param+0x68>
                                                                      

08009f74 <_POSIX_Threads_Delete_extension>: */ static void _POSIX_Threads_Delete_extension( Thread_Control *executing __attribute__((unused)), Thread_Control *deleted ) {
 8009f74:	37 9c ff ec 	addi sp,sp,-20                                 
 8009f78:	5b 8b 00 14 	sw (sp+20),r11                                 
 8009f7c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8009f80:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009f84:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009f88:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
  void              **value_ptr;                                      
                                                                      
  api = deleted->API_Extensions[ THREAD_API_POSIX ];                  
 8009f8c:	28 4e 01 1c 	lw r14,(r2+284)                                
                                                                      
  /*                                                                  
   *  Run the POSIX cancellation handlers                             
   */                                                                 
  _POSIX_Threads_cancel_run( deleted );                               
 8009f90:	b8 40 08 00 	mv r1,r2                                       
 */                                                                   
static void _POSIX_Threads_Delete_extension(                          
  Thread_Control *executing __attribute__((unused)),                  
  Thread_Control *deleted                                             
)                                                                     
{                                                                     
 8009f94:	b8 40 68 00 	mv r13,r2                                      
  api = deleted->API_Extensions[ THREAD_API_POSIX ];                  
                                                                      
  /*                                                                  
   *  Run the POSIX cancellation handlers                             
   */                                                                 
  _POSIX_Threads_cancel_run( deleted );                               
 8009f98:	f8 00 0a 0b 	calli 800c7c4 <_POSIX_Threads_cancel_run>      
                                                                      
  /*                                                                  
   *  Run all the key destructors                                     
   */                                                                 
  _POSIX_Keys_Run_destructors( deleted );                             
 8009f9c:	b9 a0 08 00 	mv r1,r13                                      
 8009fa0:	f8 00 0a 2d 	calli 800c854 <_POSIX_Keys_Run_destructors>    
 8009fa4:	35 cb 00 44 	addi r11,r14,68                                
                                                                      
  /*                                                                  
   *  Wakeup all the tasks which joined with this one                 
   */                                                                 
  value_ptr = (void **) deleted->Wait.return_argument;                
 8009fa8:	29 ac 00 28 	lw r12,(r13+40)                                
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
 8009fac:	e0 00 00 03 	bi 8009fb8 <_POSIX_Threads_Delete_extension+0x44>
      *(void **)the_thread->Wait.return_argument = value_ptr;         
 8009fb0:	28 23 00 28 	lw r3,(r1+40)                                  <== NOT EXECUTED
 8009fb4:	58 6c 00 00 	sw (r3+0),r12                                  <== NOT EXECUTED
  /*                                                                  
   *  Wakeup all the tasks which joined with this one                 
   */                                                                 
  value_ptr = (void **) deleted->Wait.return_argument;                
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
 8009fb8:	b9 60 08 00 	mv r1,r11                                      
 8009fbc:	fb ff f4 2d 	calli 8007070 <_Thread_queue_Dequeue>          
 8009fc0:	5c 20 ff fc 	bne r1,r0,8009fb0 <_POSIX_Threads_Delete_extension+0x3c><== NEVER TAKEN
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
 8009fc4:	29 c2 00 84 	lw r2,(r14+132)                                
 8009fc8:	34 01 00 04 	mvi r1,4                                       
 8009fcc:	44 41 00 0b 	be r2,r1,8009ff8 <_POSIX_Threads_Delete_extension+0x84>
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
                                                                      
  deleted->API_Extensions[ THREAD_API_POSIX ] = NULL;                 
 8009fd0:	59 a0 01 1c 	sw (r13+284),r0                                
                                                                      
  _Workspace_Free( api );                                             
 8009fd4:	b9 c0 08 00 	mv r1,r14                                      
 8009fd8:	fb ff f8 16 	calli 8008030 <_Workspace_Free>                
}                                                                     
 8009fdc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009fe0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009fe4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009fe8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009fec:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009ff0:	37 9c 00 14 	addi sp,sp,20                                  
 8009ff4:	c3 a0 00 00 	ret                                            
                                                                      
  while ( (the_thread = _Thread_queue_Dequeue( &api->Join_List )) )   
      *(void **)the_thread->Wait.return_argument = value_ptr;         
                                                                      
  if ( api->schedpolicy == SCHED_SPORADIC )                           
    (void) _Watchdog_Remove( &api->Sporadic_timer );                  
 8009ff8:	35 c1 00 a8 	addi r1,r14,168                                
 8009ffc:	fb ff f7 35 	calli 8007cd0 <_Watchdog_Remove>               
 800a000:	e3 ff ff f4 	bi 8009fd0 <_POSIX_Threads_Delete_extension+0x5c>
                                                                      

08009f24 <_POSIX_Threads_Exitted_extension>: * This method is invoked each time a thread exits. */ static void _POSIX_Threads_Exitted_extension( Thread_Control *executing ) {
 8009f24:	37 9c ff f8 	addi sp,sp,-8                                  
 8009f28:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009f2c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009f30:	b8 20 58 00 	mv r11,r1                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
 8009f34:	28 21 00 08 	lw r1,(r1+8)                                   
 8009f38:	34 02 00 18 	mvi r2,24                                      
 8009f3c:	f8 00 47 a7 	calli 801bdd8 <__lshrsi3>                      
 8009f40:	20 21 00 07 	andi r1,r1,0x7                                 
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
 8009f44:	34 02 00 03 	mvi r2,3                                       
 8009f48:	44 22 00 05 	be r1,r2,8009f5c <_POSIX_Threads_Exitted_extension+0x38>
    pthread_exit( executing->Wait.return_argument );                  
}                                                                     
 8009f4c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009f50:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009f54:	37 9c 00 08 	addi sp,sp,8                                   
 8009f58:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  If the executing thread was not created with the POSIX API, then this
   *  API do not get to define its exit behavior.                     
   */                                                                 
  if ( _Objects_Get_API( executing->Object.id ) == OBJECTS_POSIX_API )
    pthread_exit( executing->Wait.return_argument );                  
 8009f5c:	29 61 00 28 	lw r1,(r11+40)                                 
 8009f60:	f8 00 0b 82 	calli 800cd68 <pthread_exit>                   
}                                                                     
 8009f64:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8009f68:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8009f6c:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8009f70:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08004234 <_POSIX_Threads_Initialize_user_threads_body>: #include <rtems/posix/config.h> #include <rtems/posix/key.h> #include <rtems/posix/time.h> void _POSIX_Threads_Initialize_user_threads_body(void) {
 8004234:	37 9c ff a8 	addi sp,sp,-88                                 
 8004238:	5b 8b 00 14 	sw (sp+20),r11                                 
 800423c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004240:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004244:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004248:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
 800424c:	78 01 08 02 	mvhi r1,0x802                                  
 8004250:	38 21 00 c0 	ori r1,r1,0xc0                                 
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
 8004254:	28 2e 00 30 	lw r14,(r1+48)                                 
  uint32_t                            maximum;                        
  posix_initialization_threads_table *user_threads;                   
  pthread_t                           thread_id;                      
  pthread_attr_t                      attr;                           
                                                                      
  user_threads = Configuration_POSIX_API.User_initialization_threads_table;
 8004258:	28 2c 00 34 	lw r12,(r1+52)                                 
  maximum      = Configuration_POSIX_API.number_of_initialization_threads;
                                                                      
  if ( !user_threads || maximum == 0 )                                
 800425c:	65 c2 00 00 	cmpei r2,r14,0                                 
 8004260:	65 81 00 00 	cmpei r1,r12,0                                 
 8004264:	b8 41 08 00 	or r1,r2,r1                                    
 8004268:	5c 20 00 15 	bne r1,r0,80042bc <_POSIX_Threads_Initialize_user_threads_body+0x88><== NEVER TAKEN
 800426c:	34 0d 00 00 	mvi r13,0                                      
 8004270:	37 8b 00 18 	addi r11,sp,24                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
    /*                                                                
     * There is no way for these calls to fail in this situation.     
     */                                                               
    (void) pthread_attr_init( &attr );                                
 8004274:	b9 60 08 00 	mv r1,r11                                      
 8004278:	f8 00 1a e9 	calli 800ae1c <pthread_attr_init>              
    (void) pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
 800427c:	34 02 00 02 	mvi r2,2                                       
 8004280:	b9 60 08 00 	mv r1,r11                                      
 8004284:	f8 00 1b 1d 	calli 800aef8 <pthread_attr_setinheritsched>   
    (void) pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
 8004288:	29 82 00 04 	lw r2,(r12+4)                                  
 800428c:	b9 60 08 00 	mv r1,r11                                      
 8004290:	f8 00 1b 26 	calli 800af28 <pthread_attr_setstacksize>      
                                                                      
    status = pthread_create(                                          
 8004294:	29 83 00 00 	lw r3,(r12+0)                                  
 8004298:	37 81 00 58 	addi r1,sp,88                                  
 800429c:	b9 60 10 00 	mv r2,r11                                      
 80042a0:	34 04 00 00 	mvi r4,0                                       
 80042a4:	fb ff fe bb 	calli 8003d90 <pthread_create>                 
 80042a8:	b8 20 18 00 	mv r3,r1                                       
      &thread_id,                                                     
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
 80042ac:	5c 20 00 0b 	bne r1,r0,80042d8 <_POSIX_Threads_Initialize_user_threads_body+0xa4>
   *                                                                  
   *  Setting the attributes explicitly is critical, since we don't want
   *  to inherit the idle tasks attributes.                           
   */                                                                 
                                                                      
  for ( index=0 ; index < maximum ; index++ ) {                       
 80042b0:	35 ad 00 01 	addi r13,r13,1                                 
 80042b4:	35 8c 00 08 	addi r12,r12,8                                 
 80042b8:	55 cd ff ef 	bgu r14,r13,8004274 <_POSIX_Threads_Initialize_user_threads_body+0x40><== NEVER TAKEN
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
  }                                                                   
}                                                                     
 80042bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80042c0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80042c4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80042c8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80042cc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80042d0:	37 9c 00 58 	addi sp,sp,88                                  
 80042d4:	c3 a0 00 00 	ret                                            
      &attr,                                                          
      user_threads[ index ].thread_entry,                             
      NULL                                                            
    );                                                                
    if ( status )                                                     
      _Internal_error_Occurred( INTERNAL_ERROR_POSIX_API, true, status );
 80042d8:	34 01 00 02 	mvi r1,2                                       
 80042dc:	34 02 00 01 	mvi r2,1                                       
 80042e0:	f8 00 07 93 	calli 800612c <_Internal_error_Occurred>       
                                                                      

0800a180 <_POSIX_Threads_Sporadic_budget_TSR>: */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id __attribute__((unused)), void *argument ) {
 800a180:	37 9c ff f4 	addi sp,sp,-12                                 
 800a184:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800a188:	5b 8c 00 08 	sw (sp+8),r12                                  
 800a18c:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control     *the_thread;                                     
  POSIX_API_Control  *api;                                            
                                                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 800a190:	28 4c 01 1c 	lw r12,(r2+284)                                
 */                                                                   
void _POSIX_Threads_Sporadic_budget_TSR(                              
  Objects_Id      id __attribute__((unused)),                         
  void           *argument                                            
)                                                                     
{                                                                     
 800a194:	b8 40 58 00 	mv r11,r2                                      
  the_thread = argument;                                              
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
 800a198:	35 81 00 98 	addi r1,r12,152                                
 800a19c:	f8 00 04 8e 	calli 800b3d4 <_Timespec_To_ticks>             
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 800a1a0:	78 03 08 02 	mvhi r3,0x802                                  
 800a1a4:	38 63 00 d8 	ori r3,r3,0xd8                                 
 800a1a8:	29 84 00 88 	lw r4,(r12+136)                                
 800a1ac:	40 62 00 00 	lbu r2,(r3+0)                                  
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800a1b0:	29 63 00 1c 	lw r3,(r11+28)                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget );
                                                                      
  the_thread->cpu_time_budget = ticks;                                
 800a1b4:	59 61 00 74 	sw (r11+116),r1                                
 800a1b8:	c8 44 10 00 	sub r2,r2,r4                                   
                                                                      
  new_priority = _POSIX_Priority_To_core( api->schedparam.sched_priority );
  the_thread->real_priority = new_priority;                           
 800a1bc:	59 62 00 18 	sw (r11+24),r2                                 
   */                                                                 
  #if 0                                                               
    printk( "TSR %d %d %d\n", the_thread->resource_count,             
        the_thread->current_priority, new_priority );                 
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800a1c0:	5c 60 00 06 	bne r3,r0,800a1d8 <_POSIX_Threads_Sporadic_budget_TSR+0x58><== NEVER TAKEN
    /*                                                                
     *  If this would make them less important, then do not change it.
     */                                                               
    if ( the_thread->current_priority > new_priority ) {              
 800a1c4:	29 61 00 14 	lw r1,(r11+20)                                 
 800a1c8:	50 41 00 04 	bgeu r2,r1,800a1d8 <_POSIX_Threads_Sporadic_budget_TSR+0x58>
      _Thread_Change_priority( the_thread, new_priority, true );      
 800a1cc:	b9 60 08 00 	mv r1,r11                                      
 800a1d0:	34 03 00 01 	mvi r3,1                                       
 800a1d4:	fb ff f1 43 	calli 80066e0 <_Thread_Change_priority>        
      #endif                                                          
    }                                                                 
  }                                                                   
                                                                      
  /* ticks is guaranteed to be at least one */                        
  ticks = _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period );
 800a1d8:	35 81 00 90 	addi r1,r12,144                                
 800a1dc:	f8 00 04 7e 	calli 800b3d4 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 800a1e0:	59 81 00 b4 	sw (r12+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 800a1e4:	78 01 08 02 	mvhi r1,0x802                                  
 800a1e8:	35 82 00 a8 	addi r2,r12,168                                
 800a1ec:	38 21 09 f0 	ori r1,r1,0x9f0                                
 800a1f0:	fb ff f6 52 	calli 8007b38 <_Watchdog_Insert>               
                                                                      
  _Watchdog_Insert_ticks( &api->Sporadic_timer, ticks );              
}                                                                     
 800a1f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a1f8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800a1fc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800a200:	37 9c 00 0c 	addi sp,sp,12                                  
 800a204:	c3 a0 00 00 	ret                                            
                                                                      

0800a208 <_POSIX_Threads_Sporadic_budget_callout>: * _POSIX_Threads_Sporadic_budget_callout */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ) {
 800a208:	37 9c ff fc 	addi sp,sp,-4                                  
 800a20c:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_API_Control *api;                                             
  uint32_t           new_priority;                                    
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 800a210:	28 22 01 1c 	lw r2,(r1+284)                                 
 800a214:	78 04 08 02 	mvhi r4,0x802                                  
 800a218:	38 84 00 d8 	ori r4,r4,0xd8                                 
 800a21c:	28 42 00 8c 	lw r2,(r2+140)                                 
 800a220:	40 84 00 00 	lbu r4,(r4+0)                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800a224:	28 25 00 1c 	lw r5,(r1+28)                                  
 800a228:	c8 82 10 00 	sub r2,r4,r2                                   
                                                                      
  /*                                                                  
   *  This will prevent the thread from consuming its entire "budget" 
   *  while at low priority.                                          
   */                                                                 
  the_thread->cpu_time_budget = 0xFFFFFFFF; /* XXX should be based on MAX_U32 */
 800a22c:	34 04 ff ff 	mvi r4,-1                                      
 800a230:	58 24 00 74 	sw (r1+116),r4                                 
                                                                      
  new_priority = _POSIX_Priority_To_core(api->schedparam.sched_ss_low_priority);
  the_thread->real_priority = new_priority;                           
 800a234:	58 22 00 18 	sw (r1+24),r2                                  
   */                                                                 
  #if 0                                                               
    printk( "callout %d %d %d\n", the_thread->resource_count,         
	the_thread->current_priority, new_priority );                        
  #endif                                                              
  if ( the_thread->resource_count == 0 ) {                            
 800a238:	5c a0 00 05 	bne r5,r0,800a24c <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
    /*                                                                
     *  Make sure we are actually lowering it. If they have lowered it
     *  to logically lower than sched_ss_low_priority, then we do not want to
     *  change it.                                                    
     */                                                               
    if ( the_thread->current_priority < new_priority ) {              
 800a23c:	28 23 00 14 	lw r3,(r1+20)                                  
 800a240:	50 62 00 03 	bgeu r3,r2,800a24c <_POSIX_Threads_Sporadic_budget_callout+0x44><== NEVER TAKEN
      _Thread_Change_priority( the_thread, new_priority, true );      
 800a244:	34 03 00 01 	mvi r3,1                                       
 800a248:	fb ff f1 26 	calli 80066e0 <_Thread_Change_priority>        
      #if 0                                                           
        printk( "lower priority\n" );                                 
      #endif                                                          
    }                                                                 
  }                                                                   
}                                                                     
 800a24c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a250:	37 9c 00 04 	addi sp,sp,4                                   
 800a254:	c3 a0 00 00 	ret                                            
                                                                      

0800c7c4 <_POSIX_Threads_cancel_run>: #include <rtems/posix/threadsup.h> void _POSIX_Threads_cancel_run( Thread_Control *the_thread ) {
 800c7c4:	37 9c ff ec 	addi sp,sp,-20                                 
 800c7c8:	5b 8b 00 14 	sw (sp+20),r11                                 
 800c7cc:	5b 8c 00 10 	sw (sp+16),r12                                 
 800c7d0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800c7d4:	5b 8e 00 08 	sw (sp+8),r14                                  
 800c7d8:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_Cancel_Handler_control      *handler;                         
  Chain_Control                     *handler_stack;                   
  POSIX_API_Control                 *thread_support;                  
  ISR_Level                          level;                           
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
 800c7dc:	28 2c 01 1c 	lw r12,(r1+284)                                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c7e0:	34 01 00 01 	mvi r1,1                                       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c7e4:	29 82 00 e4 	lw r2,(r12+228)                                
                                                                      
  thread_support = the_thread->API_Extensions[ THREAD_API_POSIX ];    
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
 800c7e8:	59 81 00 d8 	sw (r12+216),r1                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800c7ec:	35 8d 00 e8 	addi r13,r12,232                               
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c7f0:	44 4d 00 12 	be r2,r13,800c838 <_POSIX_Threads_cancel_run+0x74>
    _ISR_Disable( level );                                            
 800c7f4:	34 0e ff fe 	mvi r14,-2                                     
 800c7f8:	90 00 08 00 	rcsr r1,IE                                     
 800c7fc:	a0 2e 10 00 	and r2,r1,r14                                  
 800c800:	d0 02 00 00 	wcsr IE,r2                                     
      handler = (POSIX_Cancel_Handler_control *)                      
 800c804:	29 8b 00 ec 	lw r11,(r12+236)                               
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800c808:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 800c80c:	29 62 00 04 	lw r2,(r11+4)                                  
  next->previous = previous;                                          
 800c810:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 800c814:	58 43 00 00 	sw (r2+0),r3                                   
           _Chain_Tail( handler_stack )->previous;                    
      _Chain_Extract_unprotected( &handler->Node );                   
    _ISR_Enable( level );                                             
 800c818:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    (*handler->routine)( handler->arg );                              
 800c81c:	29 62 00 08 	lw r2,(r11+8)                                  
 800c820:	29 61 00 0c 	lw r1,(r11+12)                                 
 800c824:	d8 40 00 00 	call r2                                        
                                                                      
    _Workspace_Free( handler );                                       
 800c828:	b9 60 08 00 	mv r1,r11                                      
 800c82c:	fb ff ee 01 	calli 8008030 <_Workspace_Free>                
                                                                      
  handler_stack = &thread_support->Cancellation_Handlers;             
                                                                      
  thread_support->cancelability_state = PTHREAD_CANCEL_DISABLE;       
                                                                      
  while ( !_Chain_Is_empty( handler_stack ) ) {                       
 800c830:	29 81 00 e4 	lw r1,(r12+228)                                
 800c834:	5c 2d ff f1 	bne r1,r13,800c7f8 <_POSIX_Threads_cancel_run+0x34><== NEVER TAKEN
                                                                      
    (*handler->routine)( handler->arg );                              
                                                                      
    _Workspace_Free( handler );                                       
  }                                                                   
}                                                                     
 800c838:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c83c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800c840:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800c844:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800c848:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800c84c:	37 9c 00 14 	addi sp,sp,20                                  
 800c850:	c3 a0 00 00 	ret                                            
                                                                      

08003f10 <_POSIX_Timer_TSR>: * This is the operation that is run when a timer expires */ void _POSIX_Timer_TSR( Objects_Id timer __attribute__((unused)), void *data) {
 8003f10:	37 9c ff e8 	addi sp,sp,-24                                 
 8003f14:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003f18:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003f1c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003f20:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003f24:	b8 40 58 00 	mv r11,r2                                      
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 8003f28:	28 42 00 68 	lw r2,(r2+104)                                 
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 8003f2c:	29 61 00 54 	lw r1,(r11+84)                                 
  bool                 activated;                                     
                                                                      
  ptimer = (POSIX_Timer_Control *)data;                               
                                                                      
  /* Increment the number of expirations. */                          
  ptimer->overrun = ptimer->overrun + 1;                              
 8003f30:	34 42 00 01 	addi r2,r2,1                                   
 8003f34:	59 62 00 68 	sw (r11+104),r2                                
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
 8003f38:	5c 20 00 0f 	bne r1,r0,8003f74 <_POSIX_Timer_TSR+0x64>      
 8003f3c:	29 62 00 58 	lw r2,(r11+88)                                 
 8003f40:	5c 41 00 0d 	bne r2,r1,8003f74 <_POSIX_Timer_TSR+0x64>      <== ALWAYS TAKEN
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
  } else {                                                            
   /* Indicates that the timer is stopped */                          
   ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;                     
 8003f44:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
 8003f48:	31 61 00 3c 	sb (r11+60),r1                                 <== NOT EXECUTED
  /*                                                                  
   * The sending of the signal to the process running the handling function
   * specified for that signal is simulated                           
   */                                                                 
                                                                      
  if ( pthread_kill ( ptimer->thread_id, ptimer->inf.sigev_signo ) ) {
 8003f4c:	29 61 00 38 	lw r1,(r11+56)                                 
 8003f50:	29 62 00 44 	lw r2,(r11+68)                                 
 8003f54:	f8 00 18 f2 	calli 800a31c <pthread_kill>                   
  }                                                                   
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
 8003f58:	59 60 00 68 	sw (r11+104),r0                                
}                                                                     
 8003f5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003f60:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003f64:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003f68:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003f6c:	37 9c 00 18 	addi sp,sp,24                                  
 8003f70:	c3 a0 00 00 	ret                                            
  ptimer->overrun = ptimer->overrun + 1;                              
                                                                      
  /* The timer must be reprogrammed */                                
  if ( ( ptimer->timer_data.it_interval.tv_sec  != 0 ) ||             
       ( ptimer->timer_data.it_interval.tv_nsec != 0 ) ) {            
    activated = _POSIX_Timer_Insert_helper(                           
 8003f74:	29 62 00 64 	lw r2,(r11+100)                                
 8003f78:	29 63 00 08 	lw r3,(r11+8)                                  
 8003f7c:	78 04 08 00 	mvhi r4,0x800                                  
 8003f80:	35 61 00 10 	addi r1,r11,16                                 
 8003f84:	38 84 3f 10 	ori r4,r4,0x3f10                               
 8003f88:	b9 60 28 00 	mv r5,r11                                      
 8003f8c:	f8 00 1a 4a 	calli 800a8b4 <_POSIX_Timer_Insert_helper>     
      ptimer->ticks,                                                  
      ptimer->Object.id,                                              
      _POSIX_Timer_TSR,                                               
      ptimer                                                          
    );                                                                
    if ( !activated )                                                 
 8003f90:	44 20 ff f3 	be r1,r0,8003f5c <_POSIX_Timer_TSR+0x4c>       <== NEVER TAKEN
 8003f94:	78 02 08 02 	mvhi r2,0x802                                  
 8003f98:	38 42 08 c8 	ori r2,r2,0x8c8                                
 8003f9c:	37 81 00 14 	addi r1,sp,20                                  
 8003fa0:	f8 00 05 00 	calli 80053a0 <_TOD_Get_with_nanoseconds>      
                                                                      
  /* After the signal handler returns, the count of expirations of the
   * timer must be set to 0.                                          
   */                                                                 
  ptimer->overrun = 0;                                                
}                                                                     
 8003fa4:	28 2d 00 00 	lw r13,(r1+0)                                  
 8003fa8:	28 2c 00 04 	lw r12,(r1+4)                                  
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003fac:	78 01 08 01 	mvhi r1,0x801                                  
 8003fb0:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003fb4:	28 24 00 00 	lw r4,(r1+0)                                   
 8003fb8:	34 03 00 00 	mvi r3,0                                       
 8003fbc:	b9 a0 08 00 	mv r1,r13                                      
 8003fc0:	b9 80 10 00 	mv r2,r12                                      
 8003fc4:	f8 00 4e 2a 	calli 801786c <__divdi3>                       
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003fc8:	78 01 08 01 	mvhi r1,0x801                                  
 8003fcc:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003fd0:	28 24 00 00 	lw r4,(r1+0)                                   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003fd4:	59 62 00 6c 	sw (r11+108),r2                                
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003fd8:	b9 a0 08 00 	mv r1,r13                                      
 8003fdc:	b9 80 10 00 	mv r2,r12                                      
 8003fe0:	34 03 00 00 	mvi r3,0                                       
 8003fe4:	f8 00 50 24 	calli 8018074 <__moddi3>                       
                                                                      
    /* Store the time when the timer was started again */             
    _TOD_Get( &ptimer->time );                                        
                                                                      
    /* The state really did not change but just to be safe */         
    ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                     
 8003fe8:	34 01 00 03 	mvi r1,3                                       
 8003fec:	59 62 00 70 	sw (r11+112),r2                                
 8003ff0:	31 61 00 3c 	sb (r11+60),r1                                 
 8003ff4:	e3 ff ff d6 	bi 8003f4c <_POSIX_Timer_TSR+0x3c>             
                                                                      

0800c92c <_POSIX_signals_Check_signal>: bool _POSIX_signals_Check_signal( POSIX_API_Control *api, int signo, bool is_global ) {
 800c92c:	37 9c ff a0 	addi sp,sp,-96                                 
 800c930:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800c934:	5b 8c 00 28 	sw (sp+40),r12                                 
 800c938:	5b 8d 00 24 	sw (sp+36),r13                                 
 800c93c:	5b 8e 00 20 	sw (sp+32),r14                                 
 800c940:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800c944:	5b 90 00 18 	sw (sp+24),r16                                 
 800c948:	5b 91 00 14 	sw (sp+20),r17                                 
 800c94c:	5b 92 00 10 	sw (sp+16),r18                                 
 800c950:	5b 93 00 0c 	sw (sp+12),r19                                 
 800c954:	5b 94 00 08 	sw (sp+8),r20                                  
 800c958:	5b 9d 00 04 	sw (sp+4),ra                                   
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c95c:	37 8e 00 58 	addi r14,sp,88                                 
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c960:	20 64 00 ff 	andi r4,r3,0xff                                
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c964:	34 05 00 01 	mvi r5,1                                       
 800c968:	b9 c0 18 00 	mv r3,r14                                      
bool    _POSIX_signals_Check_signal(                                  
  POSIX_API_Control  *api,                                            
  int                 signo,                                          
  bool                is_global                                       
)                                                                     
{                                                                     
 800c96c:	b8 20 68 00 	mv r13,r1                                      
 800c970:	b8 40 58 00 	mv r11,r2                                      
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c974:	f8 00 00 57 	calli 800cad0 <_POSIX_signals_Clear_signals>   
                                       is_global, true ) )            
    return false;                                                     
 800c978:	34 06 00 00 	mvi r6,0                                       
{                                                                     
  siginfo_t                   siginfo_struct;                         
  sigset_t                    saved_signals_blocked;                  
  Thread_Wait_information     stored_thread_wait_information;         
                                                                      
  if ( ! _POSIX_signals_Clear_signals( api, signo, &siginfo_struct,   
 800c97c:	44 20 00 42 	be r1,r0,800ca84 <_POSIX_signals_Check_signal+0x158>
  #endif                                                              
                                                                      
  /*                                                                  
   *  Just to prevent sending a signal which is currently being ignored.
   */                                                                 
  if ( _POSIX_signals_Vectors[ signo ].sa_handler == SIG_IGN )        
 800c980:	b5 6b 20 00 	add r4,r11,r11                                 
 800c984:	b4 8b 20 00 	add r4,r4,r11                                  
 800c988:	78 05 08 02 	mvhi r5,0x802                                  
 800c98c:	b4 84 20 00 	add r4,r4,r4                                   
 800c990:	38 a5 0e 68 	ori r5,r5,0xe68                                
 800c994:	b4 84 20 00 	add r4,r4,r4                                   
 800c998:	b4 a4 28 00 	add r5,r5,r4                                   
 800c99c:	28 a7 00 08 	lw r7,(r5+8)                                   
 800c9a0:	34 01 00 01 	mvi r1,1                                       
 800c9a4:	44 e1 00 38 	be r7,r1,800ca84 <_POSIX_signals_Check_signal+0x158><== NEVER TAKEN
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c9a8:	78 0c 08 02 	mvhi r12,0x802                                 
 800c9ac:	39 8c 0d e0 	ori r12,r12,0xde0                              
 800c9b0:	29 84 00 10 	lw r4,(r12+16)                                 
    return false;                                                     
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
 800c9b4:	29 af 00 d0 	lw r15,(r13+208)                               
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c9b8:	28 a1 00 04 	lw r1,(r5+4)                                   
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c9bc:	28 94 00 20 	lw r20,(r4+32)                                 
 800c9c0:	28 93 00 24 	lw r19,(r4+36)                                 
 800c9c4:	28 92 00 28 	lw r18,(r4+40)                                 
 800c9c8:	28 91 00 2c 	lw r17,(r4+44)                                 
 800c9cc:	28 90 00 30 	lw r16,(r4+48)                                 
 800c9d0:	28 8a 00 34 	lw r10,(r4+52)                                 
 800c9d4:	28 89 00 38 	lw r9,(r4+56)                                  
 800c9d8:	28 88 00 3c 	lw r8,(r4+60)                                  
 800c9dc:	28 86 00 40 	lw r6,(r4+64)                                  
 800c9e0:	28 83 00 44 	lw r3,(r4+68)                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800c9e4:	28 a2 00 00 	lw r2,(r5+0)                                   
                                                                      
  /*                                                                  
   *  Block the signals requested in sa_mask                          
   */                                                                 
  saved_signals_blocked = api->signals_blocked;                       
  api->signals_blocked |= _POSIX_signals_Vectors[ signo ].sa_mask;    
 800c9e8:	b8 2f 08 00 	or r1,r1,r15                                   
 800c9ec:	59 a1 00 d0 	sw (r13+208),r1                                
  /*                                                                  
   *  We have to save the blocking information of the current wait queue
   *  because the signal handler may subsequently go on and put the thread
   *  on a wait queue, for its own purposes.                          
   */                                                                 
  memcpy( &stored_thread_wait_information, &_Thread_Executing->Wait,  
 800c9f0:	5b 94 00 30 	sw (sp+48),r20                                 
 800c9f4:	5b 93 00 34 	sw (sp+52),r19                                 
 800c9f8:	5b 92 00 38 	sw (sp+56),r18                                 
 800c9fc:	5b 91 00 3c 	sw (sp+60),r17                                 
 800ca00:	5b 90 00 40 	sw (sp+64),r16                                 
 800ca04:	5b 8a 00 44 	sw (sp+68),r10                                 
 800ca08:	5b 89 00 48 	sw (sp+72),r9                                  
 800ca0c:	5b 88 00 4c 	sw (sp+76),r8                                  
 800ca10:	5b 86 00 50 	sw (sp+80),r6                                  
 800ca14:	5b 83 00 54 	sw (sp+84),r3                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
 800ca18:	34 01 00 02 	mvi r1,2                                       
 800ca1c:	44 41 00 28 	be r2,r1,800cabc <_POSIX_signals_Check_signal+0x190>
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
    default:                                                          
      (*_POSIX_signals_Vectors[ signo ].sa_handler)( signo );         
 800ca20:	b9 60 08 00 	mv r1,r11                                      
 800ca24:	d8 e0 00 00 	call r7                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800ca28:	29 82 00 10 	lw r2,(r12+16)                                 
 800ca2c:	2b 81 00 30 	lw r1,(sp+48)                                  
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
                                                                      
  return true;                                                        
 800ca30:	34 06 00 01 	mvi r6,1                                       
  }                                                                   
                                                                      
  /*                                                                  
   *  Restore the blocking information                                
   */                                                                 
  memcpy( &_Thread_Executing->Wait, &stored_thread_wait_information,  
 800ca34:	58 41 00 20 	sw (r2+32),r1                                  
 800ca38:	2b 81 00 34 	lw r1,(sp+52)                                  
 800ca3c:	58 41 00 24 	sw (r2+36),r1                                  
 800ca40:	2b 81 00 38 	lw r1,(sp+56)                                  
 800ca44:	58 41 00 28 	sw (r2+40),r1                                  
 800ca48:	2b 81 00 3c 	lw r1,(sp+60)                                  
 800ca4c:	58 41 00 2c 	sw (r2+44),r1                                  
 800ca50:	2b 81 00 40 	lw r1,(sp+64)                                  
 800ca54:	58 41 00 30 	sw (r2+48),r1                                  
 800ca58:	2b 81 00 44 	lw r1,(sp+68)                                  
 800ca5c:	58 41 00 34 	sw (r2+52),r1                                  
 800ca60:	2b 81 00 48 	lw r1,(sp+72)                                  
 800ca64:	58 41 00 38 	sw (r2+56),r1                                  
 800ca68:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800ca6c:	58 41 00 3c 	sw (r2+60),r1                                  
 800ca70:	2b 81 00 50 	lw r1,(sp+80)                                  
 800ca74:	58 41 00 40 	sw (r2+64),r1                                  
 800ca78:	2b 81 00 54 	lw r1,(sp+84)                                  
 800ca7c:	58 41 00 44 	sw (r2+68),r1                                  
          sizeof( Thread_Wait_information ));                         
                                                                      
  /*                                                                  
   *  Restore the previous set of blocked signals                     
   */                                                                 
  api->signals_blocked = saved_signals_blocked;                       
 800ca80:	59 af 00 d0 	sw (r13+208),r15                               
                                                                      
  return true;                                                        
}                                                                     
 800ca84:	b8 c0 08 00 	mv r1,r6                                       
 800ca88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ca8c:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800ca90:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800ca94:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800ca98:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800ca9c:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800caa0:	2b 90 00 18 	lw r16,(sp+24)                                 
 800caa4:	2b 91 00 14 	lw r17,(sp+20)                                 
 800caa8:	2b 92 00 10 	lw r18,(sp+16)                                 
 800caac:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800cab0:	2b 94 00 08 	lw r20,(sp+8)                                  
 800cab4:	37 9c 00 60 	addi sp,sp,96                                  
 800cab8:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Here, the signal handler function executes                      
   */                                                                 
  switch ( _POSIX_signals_Vectors[ signo ].sa_flags ) {               
    case SA_SIGINFO:                                                  
      (*_POSIX_signals_Vectors[ signo ].sa_sigaction)(                
 800cabc:	b9 60 08 00 	mv r1,r11                                      
 800cac0:	b9 c0 10 00 	mv r2,r14                                      
 800cac4:	34 03 00 00 	mvi r3,0                                       
 800cac8:	d8 e0 00 00 	call r7                                        
        signo,                                                        
        &siginfo_struct,                                              
        NULL        /* context is undefined per 1003.1b-1993, p. 66 */
      );                                                              
      break;                                                          
 800cacc:	e3 ff ff d7 	bi 800ca28 <_POSIX_signals_Check_signal+0xfc>  
                                                                      

0800d174 <_POSIX_signals_Clear_process_signals>: */ void _POSIX_signals_Clear_process_signals( int signo ) {
 800d174:	37 9c ff f4 	addi sp,sp,-12                                 
 800d178:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800d17c:	5b 8c 00 08 	sw (sp+8),r12                                  
 800d180:	5b 9d 00 04 	sw (sp+4),ra                                   
 800d184:	b8 20 10 00 	mv r2,r1                                       
  clear_signal = true;                                                
  mask         = signo_to_mask( signo );                              
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
 800d188:	90 00 60 00 	rcsr r12,IE                                    
 800d18c:	34 01 ff fe 	mvi r1,-2                                      
 800d190:	a1 81 08 00 	and r1,r12,r1                                  
 800d194:	d0 01 00 00 	wcsr IE,r1                                     
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
 800d198:	b4 42 20 00 	add r4,r2,r2                                   
 800d19c:	b4 82 20 00 	add r4,r4,r2                                   
 800d1a0:	78 01 08 02 	mvhi r1,0x802                                  
 800d1a4:	b4 84 18 00 	add r3,r4,r4                                   
 800d1a8:	38 21 0e 68 	ori r1,r1,0xe68                                
 800d1ac:	b4 63 18 00 	add r3,r3,r3                                   
 800d1b0:	b4 23 18 00 	add r3,r1,r3                                   
 800d1b4:	28 63 00 00 	lw r3,(r3+0)                                   
 800d1b8:	34 01 00 02 	mvi r1,2                                       
 800d1bc:	44 61 00 10 	be r3,r1,800d1fc <_POSIX_signals_Clear_process_signals+0x88>
 800d1c0:	34 42 ff ff 	addi r2,r2,-1                                  
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
 800d1c4:	78 0b 08 02 	mvhi r11,0x802                                 
 800d1c8:	34 01 00 01 	mvi r1,1                                       
 800d1cc:	f8 00 3a b5 	calli 801bca0 <__ashlsi3>                      
 800d1d0:	39 6b 10 5c 	ori r11,r11,0x105c                             
 800d1d4:	29 62 00 00 	lw r2,(r11+0)                                  
 800d1d8:	a4 20 08 00 	not r1,r1                                      
 800d1dc:	a0 22 08 00 	and r1,r1,r2                                   
 800d1e0:	59 61 00 00 	sw (r11+0),r1                                  
    }                                                                 
  _ISR_Enable( level );                                               
 800d1e4:	d0 0c 00 00 	wcsr IE,r12                                    
}                                                                     
 800d1e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d1ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800d1f0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800d1f4:	37 9c 00 0c 	addi sp,sp,12                                  
 800d1f8:	c3 a0 00 00 	ret                                            
 800d1fc:	78 01 08 02 	mvhi r1,0x802                                  
 800d200:	b4 84 20 00 	add r4,r4,r4                                   
 800d204:	38 21 10 60 	ori r1,r1,0x1060                               
 800d208:	b4 84 20 00 	add r4,r4,r4                                   
 800d20c:	b4 24 20 00 	add r4,r1,r4                                   
                                                                      
  ISR_Level  level;                                                   
                                                                      
  _ISR_Disable( level );                                              
    if ( _POSIX_signals_Vectors[ signo ].sa_flags == SA_SIGINFO ) {   
      if ( !_Chain_Is_empty( &_POSIX_signals_Siginfo[ signo ] ) )     
 800d210:	28 81 00 00 	lw r1,(r4+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800d214:	34 84 00 04 	addi r4,r4,4                                   
 800d218:	44 24 ff ea 	be r1,r4,800d1c0 <_POSIX_signals_Clear_process_signals+0x4c><== ALWAYS TAKEN
       clear_signal = false;                                          
    }                                                                 
    if ( clear_signal ) {                                             
      _POSIX_signals_Pending &= ~mask;                                
    }                                                                 
  _ISR_Enable( level );                                               
 800d21c:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
}                                                                     
 800d220:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800d224:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800d228:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800d22c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800d230:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08004f28 <_POSIX_signals_Get_lowest>: #include <rtems/score/isr.h> static int _POSIX_signals_Get_lowest( sigset_t set ) {
 8004f28:	37 9c ff f0 	addi sp,sp,-16                                 
 8004f2c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004f30:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004f34:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004f38:	5b 9d 00 04 	sw (sp+4),ra                                   
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 8004f3c:	34 0b 00 1b 	mvi r11,27                                     
#include <rtems/score/isr.h>                                          
                                                                      
static int _POSIX_signals_Get_lowest(                                 
  sigset_t   set                                                      
)                                                                     
{                                                                     
 8004f40:	b8 20 60 00 	mv r12,r1                                      
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 8004f44:	34 0d 00 20 	mvi r13,32                                     
 8004f48:	35 62 ff ff 	addi r2,r11,-1                                 
 8004f4c:	34 01 00 01 	mvi r1,1                                       
 8004f50:	f8 00 46 e7 	calli 8016aec <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 8004f54:	a0 2c 08 00 	and r1,r1,r12                                  
 8004f58:	5c 20 00 0d 	bne r1,r0,8004f8c <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
  sigset_t   set                                                      
)                                                                     
{                                                                     
  int signo;                                                          
                                                                      
  for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {            
 8004f5c:	35 6b 00 01 	addi r11,r11,1                                 
 8004f60:	5d 6d ff fa 	bne r11,r13,8004f48 <_POSIX_signals_Get_lowest+0x20>
 8004f64:	34 0b 00 01 	mvi r11,1                                      
   */                                                                 
                                                                      
  #if (SIGHUP != 1)                                                   
    #error "Assumption that SIGHUP==1 violated!!"                     
  #endif                                                              
  for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {        
 8004f68:	34 0d 00 1b 	mvi r13,27                                     
 8004f6c:	e0 00 00 03 	bi 8004f78 <_POSIX_signals_Get_lowest+0x50>    
 8004f70:	35 6b 00 01 	addi r11,r11,1                                 
 8004f74:	45 6d 00 06 	be r11,r13,8004f8c <_POSIX_signals_Get_lowest+0x64><== NEVER TAKEN
 8004f78:	35 62 ff ff 	addi r2,r11,-1                                 
 8004f7c:	34 01 00 01 	mvi r1,1                                       
 8004f80:	f8 00 46 db 	calli 8016aec <__ashlsi3>                      
    if ( set & signo_to_mask( signo ) ) {                             
 8004f84:	a0 2c 10 00 	and r2,r1,r12                                  
 8004f88:	44 40 ff fa 	be r2,r0,8004f70 <_POSIX_signals_Get_lowest+0x48>
   *  a return 0.  This routine will NOT be called unless a signal    
   *  is pending in the set passed in.                                
   */                                                                 
found_it:                                                             
  return signo;                                                       
}                                                                     
 8004f8c:	b9 60 08 00 	mv r1,r11                                      
 8004f90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004f94:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004f98:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004f9c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004fa0:	37 9c 00 10 	addi sp,sp,16                                  
 8004fa4:	c3 a0 00 00 	ret                                            
                                                                      

08009b48 <_POSIX_signals_Post_switch_hook>: */ static void _POSIX_signals_Post_switch_hook( Thread_Control *the_thread ) {
 8009b48:	37 9c ff dc 	addi sp,sp,-36                                 
 8009b4c:	5b 8b 00 24 	sw (sp+36),r11                                 
 8009b50:	5b 8c 00 20 	sw (sp+32),r12                                 
 8009b54:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8009b58:	5b 8e 00 18 	sw (sp+24),r14                                 
 8009b5c:	5b 8f 00 14 	sw (sp+20),r15                                 
 8009b60:	5b 90 00 10 	sw (sp+16),r16                                 
 8009b64:	5b 91 00 0c 	sw (sp+12),r17                                 
 8009b68:	5b 92 00 08 	sw (sp+8),r18                                  
 8009b6c:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
 8009b70:	78 11 08 02 	mvhi r17,0x802                                 
 8009b74:	3a 31 0d e0 	ori r17,r17,0xde0                              
 8009b78:	2a 22 00 10 	lw r2,(r17+16)                                 
  POSIX_API_Control  *api;                                            
  int                 signo;                                          
  ISR_Level           level;                                          
  int                 hold_errno;                                     
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8009b7c:	28 2c 01 1c 	lw r12,(r1+284)                                
                                                                      
  /*                                                                  
   *  We need to ensure that if the signal handler executes a call    
   *  which overwrites the unblocking status, we restore it.          
   */                                                                 
  hold_errno = _Thread_Executing->Wait.return_code;                   
 8009b80:	28 52 00 34 	lw r18,(r2+52)                                 
                                                                      
  /*                                                                  
   * api may be NULL in case of a thread close in progress            
   */                                                                 
  if ( !api )                                                         
 8009b84:	45 80 00 2b 	be r12,r0,8009c30 <_POSIX_signals_Post_switch_hook+0xe8><== NEVER TAKEN
 8009b88:	78 0f 08 02 	mvhi r15,0x802                                 
 8009b8c:	39 ef 10 5c 	ori r15,r15,0x105c                             
   *                                                                  
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
 8009b90:	34 10 ff fe 	mvi r16,-2                                     
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
 8009b94:	34 0d 00 1b 	mvi r13,27                                     
 8009b98:	34 0e 00 20 	mvi r14,32                                     
   *                                                                  
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
 8009b9c:	90 00 08 00 	rcsr r1,IE                                     
 8009ba0:	a0 30 10 00 	and r2,r1,r16                                  
 8009ba4:	d0 02 00 00 	wcsr IE,r2                                     
      if ( !(~api->signals_blocked &                                  
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
 8009ba8:	29 e4 00 00 	lw r4,(r15+0)                                  
 8009bac:	29 83 00 d4 	lw r3,(r12+212)                                
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
 8009bb0:	29 82 00 d0 	lw r2,(r12+208)                                
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
 8009bb4:	b8 83 18 00 	or r3,r4,r3                                    
   *  The first thing done is to check there are any signals to be    
   *  processed at all.  No point in doing this loop otherwise.       
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
 8009bb8:	a4 40 10 00 	not r2,r2                                      
 8009bbc:	a0 62 10 00 	and r2,r3,r2                                   
 8009bc0:	44 40 00 19 	be r2,r0,8009c24 <_POSIX_signals_Post_switch_hook+0xdc>
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
 8009bc4:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
 8009bc8:	34 0b 00 1b 	mvi r11,27                                     
      _POSIX_signals_Check_signal( api, signo, false );               
 8009bcc:	b9 60 10 00 	mv r2,r11                                      
 8009bd0:	34 03 00 00 	mvi r3,0                                       
 8009bd4:	b9 80 08 00 	mv r1,r12                                      
 8009bd8:	f8 00 0b 55 	calli 800c92c <_POSIX_signals_Check_signal>    
      _POSIX_signals_Check_signal( api, signo, true );                
 8009bdc:	b9 60 10 00 	mv r2,r11                                      
 8009be0:	b9 80 08 00 	mv r1,r12                                      
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
 8009be4:	35 6b 00 01 	addi r11,r11,1                                 
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
 8009be8:	34 03 00 01 	mvi r3,1                                       
 8009bec:	f8 00 0b 50 	calli 800c92c <_POSIX_signals_Check_signal>    
       _ISR_Enable( level );                                          
       break;                                                         
     }                                                                
    _ISR_Enable( level );                                             
                                                                      
    for ( signo = SIGRTMIN ; signo <= SIGRTMAX ; signo++ ) {          
 8009bf0:	5d 6e ff f7 	bne r11,r14,8009bcc <_POSIX_signals_Post_switch_hook+0x84>
 8009bf4:	34 0b 00 01 	mvi r11,1                                      
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
    /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
                                                                      
    for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {      
      _POSIX_signals_Check_signal( api, signo, false );               
 8009bf8:	b9 60 10 00 	mv r2,r11                                      
 8009bfc:	34 03 00 00 	mvi r3,0                                       
 8009c00:	b9 80 08 00 	mv r1,r12                                      
 8009c04:	f8 00 0b 4a 	calli 800c92c <_POSIX_signals_Check_signal>    
      _POSIX_signals_Check_signal( api, signo, true );                
 8009c08:	b9 60 10 00 	mv r2,r11                                      
 8009c0c:	b9 80 08 00 	mv r1,r12                                      
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
    /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
                                                                      
    for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {      
 8009c10:	35 6b 00 01 	addi r11,r11,1                                 
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
 8009c14:	34 03 00 01 	mvi r3,1                                       
 8009c18:	f8 00 0b 45 	calli 800c92c <_POSIX_signals_Check_signal>    
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
    /* Unfortunately - nothing like __SIGFIRSTNOTRT in newlib signal .h */
                                                                      
    for ( signo = SIGHUP ; signo <= __SIGLASTNOTRT ; signo++ ) {      
 8009c1c:	5d 6d ff f7 	bne r11,r13,8009bf8 <_POSIX_signals_Post_switch_hook+0xb0>
 8009c20:	e3 ff ff df 	bi 8009b9c <_POSIX_signals_Post_switch_hook+0x54>
   */                                                                 
  while (1) {                                                         
    _ISR_Disable( level );                                            
      if ( !(~api->signals_blocked &                                  
            (api->signals_pending | _POSIX_signals_Pending)) ) {      
       _ISR_Enable( level );                                          
 8009c24:	d0 01 00 00 	wcsr IE,r1                                     
      _POSIX_signals_Check_signal( api, signo, false );               
      _POSIX_signals_Check_signal( api, signo, true );                
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Executing->Wait.return_code = hold_errno;                   
 8009c28:	2a 21 00 10 	lw r1,(r17+16)                                 
 8009c2c:	58 32 00 34 	sw (r1+52),r18                                 
}                                                                     
 8009c30:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009c34:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8009c38:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8009c3c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8009c40:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8009c44:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8009c48:	2b 90 00 10 	lw r16,(sp+16)                                 
 8009c4c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8009c50:	2b 92 00 08 	lw r18,(sp+8)                                  
 8009c54:	37 9c 00 24 	addi sp,sp,36                                  
 8009c58:	c3 a0 00 00 	ret                                            
                                                                      

0801ca8c <_POSIX_signals_Unblock_thread>: bool _POSIX_signals_Unblock_thread( Thread_Control *the_thread, int signo, siginfo_t *info ) {
 801ca8c:	37 9c ff ec 	addi sp,sp,-20                                 
 801ca90:	5b 8b 00 14 	sw (sp+20),r11                                 
 801ca94:	5b 8c 00 10 	sw (sp+16),r12                                 
 801ca98:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801ca9c:	5b 8e 00 08 	sw (sp+8),r14                                  
 801caa0:	5b 9d 00 04 	sw (sp+4),ra                                   
 801caa4:	b8 20 58 00 	mv r11,r1                                      
 801caa8:	b8 40 70 00 	mv r14,r2                                      
 801caac:	34 01 00 01 	mvi r1,1                                       
 801cab0:	34 42 ff ff 	addi r2,r2,-1                                  
 801cab4:	b8 60 68 00 	mv r13,r3                                      
 801cab8:	fb ff fc 7a 	calli 801bca0 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 801cabc:	78 02 08 01 	mvhi r2,0x801                                  
 801cac0:	38 42 de 44 	ori r2,r2,0xde44                               
 801cac4:	29 64 00 10 	lw r4,(r11+16)                                 
 801cac8:	28 43 00 00 	lw r3,(r2+0)                                   
{                                                                     
  POSIX_API_Control  *api;                                            
  sigset_t            mask;                                           
  siginfo_t          *the_info = NULL;                                
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 801cacc:	29 65 01 1c 	lw r5,(r11+284)                                
                                                                      
  /*                                                                  
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
 801cad0:	a0 83 10 00 	and r2,r4,r3                                   
 801cad4:	44 43 00 21 	be r2,r3,801cb58 <_POSIX_signals_Unblock_thread+0xcc>
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 801cad8:	28 a2 00 d0 	lw r2,(r5+208)                                 
    } else if ( the_thread->current_state == STATES_READY ) {         
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
 801cadc:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Thread is not waiting due to a sigwait.                         
   */                                                                 
  if ( ~api->signals_blocked & mask ) {                               
 801cae0:	a4 40 10 00 	not r2,r2                                      
 801cae4:	a0 22 08 00 	and r1,r1,r2                                   
 801cae8:	44 20 00 14 	be r1,r0,801cb38 <_POSIX_signals_Unblock_thread+0xac>
 801caec:	78 01 10 00 	mvhi r1,0x1000                                 
 801caf0:	a0 81 08 00 	and r1,r4,r1                                   
     *      it is not blocked, THEN                                   
     *        we need to dispatch at the end of this ISR.             
     *    + Any other combination, do nothing.                        
     */                                                               
                                                                      
    if ( _States_Is_interruptible_by_signal( the_thread->current_state ) ) {
 801caf4:	44 20 00 31 	be r1,r0,801cbb8 <_POSIX_signals_Unblock_thread+0x12c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 801caf8:	78 03 08 01 	mvhi r3,0x801                                  
      the_thread->Wait.return_code = EINTR;                           
 801cafc:	34 01 00 04 	mvi r1,4                                       
 801cb00:	38 63 dc 04 	ori r3,r3,0xdc04                               
 801cb04:	59 61 00 34 	sw (r11+52),r1                                 
 801cb08:	28 61 00 00 	lw r1,(r3+0)                                   
 801cb0c:	a0 81 08 00 	and r1,r4,r1                                   
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
 801cb10:	5c 20 00 3a 	bne r1,r0,801cbf8 <_POSIX_signals_Unblock_thread+0x16c>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_delaying (                       
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_DELAYING);                             
 801cb14:	20 84 00 08 	andi r4,r4,0x8                                 
         _Thread_queue_Extract_with_proxy( the_thread );              
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
 801cb18:	44 8c 00 08 	be r4,r12,801cb38 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
          (void) _Watchdog_Remove( &the_thread->Timer );              
 801cb1c:	35 61 00 48 	addi r1,r11,72                                 
 801cb20:	fb ff ac 6c 	calli 8007cd0 <_Watchdog_Remove>               
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 801cb24:	78 03 08 01 	mvhi r3,0x801                                  
 801cb28:	38 63 dc 0c 	ori r3,r3,0xdc0c                               
 801cb2c:	28 62 00 00 	lw r2,(r3+0)                                   
 801cb30:	b9 60 08 00 	mv r1,r11                                      
 801cb34:	fb ff b9 39 	calli 800b018 <_Thread_Clear_state>            
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 801cb38:	b9 80 08 00 	mv r1,r12                                      
 801cb3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cb40:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801cb44:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801cb48:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801cb4c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801cb50:	37 9c 00 14 	addi sp,sp,20                                  
 801cb54:	c3 a0 00 00 	ret                                            
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 801cb58:	29 62 00 30 	lw r2,(r11+48)                                 
 801cb5c:	a0 22 10 00 	and r2,r1,r2                                   
 801cb60:	44 40 00 20 	be r2,r0,801cbe0 <_POSIX_signals_Unblock_thread+0x154>
      the_thread->Wait.return_code = EINTR;                           
 801cb64:	34 01 00 04 	mvi r1,4                                       
 801cb68:	59 61 00 34 	sw (r11+52),r1                                 
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
 801cb6c:	29 61 00 28 	lw r1,(r11+40)                                 
                                                                      
      if ( !info ) {                                                  
 801cb70:	45 a0 00 25 	be r13,r0,801cc04 <_POSIX_signals_Unblock_thread+0x178>
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
        the_info->si_value.sival_int = 0;                             
      } else {                                                        
        *the_info = *info;                                            
 801cb74:	29 a2 00 00 	lw r2,(r13+0)                                  
 801cb78:	58 22 00 00 	sw (r1+0),r2                                   
 801cb7c:	29 a2 00 04 	lw r2,(r13+4)                                  
 801cb80:	58 22 00 04 	sw (r1+4),r2                                   
 801cb84:	29 a2 00 08 	lw r2,(r13+8)                                  
 801cb88:	58 22 00 08 	sw (r1+8),r2                                   
      }                                                               
                                                                      
      _Thread_queue_Extract_with_proxy( the_thread );                 
 801cb8c:	b9 60 08 00 	mv r1,r11                                      
 801cb90:	fb ff aa 60 	calli 8007510 <_Thread_queue_Extract_with_proxy>
      return true;                                                    
 801cb94:	34 0c 00 01 	mvi r12,1                                      
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
        _Thread_Dispatch_necessary = true;                            
    }                                                                 
  }                                                                   
  return false;                                                       
}                                                                     
 801cb98:	b9 80 08 00 	mv r1,r12                                      
 801cb9c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cba0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801cba4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801cba8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801cbac:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801cbb0:	37 9c 00 14 	addi sp,sp,20                                  
 801cbb4:	c3 a0 00 00 	ret                                            
       else if ( _States_Is_delaying(the_thread->current_state) ) {   
          (void) _Watchdog_Remove( &the_thread->Timer );              
          _Thread_Unblock( the_thread );                              
       }                                                              
                                                                      
    } else if ( the_thread->current_state == STATES_READY ) {         
 801cbb8:	5c 8c ff e0 	bne r4,r12,801cb38 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
      if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 801cbbc:	78 01 08 02 	mvhi r1,0x802                                  
 801cbc0:	38 21 0d e0 	ori r1,r1,0xde0                                
 801cbc4:	28 22 00 08 	lw r2,(r1+8)                                   
 801cbc8:	44 4c ff dc 	be r2,r12,801cb38 <_POSIX_signals_Unblock_thread+0xac>
 801cbcc:	28 22 00 10 	lw r2,(r1+16)                                  
 801cbd0:	5d 62 ff da 	bne r11,r2,801cb38 <_POSIX_signals_Unblock_thread+0xac><== NEVER TAKEN
        _Thread_Dispatch_necessary = true;                            
 801cbd4:	34 02 00 01 	mvi r2,1                                       
 801cbd8:	30 22 00 0c 	sb (r1+12),r2                                  
 801cbdc:	e3 ff ff d7 	bi 801cb38 <_POSIX_signals_Unblock_thread+0xac>
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 801cbe0:	28 a2 00 d0 	lw r2,(r5+208)                                 
                                                                      
    /*                                                                
     *  This should only be reached via pthread_kill().               
     */                                                               
                                                                      
    return false;                                                     
 801cbe4:	34 0c 00 00 	mvi r12,0                                      
   *  Is the thread is specifically waiting for a signal?             
   */                                                                 
                                                                      
  if ( _States_Is_interruptible_signal( the_thread->current_state ) ) {
                                                                      
    if ( (the_thread->Wait.option & mask) || (~api->signals_blocked & mask) ) {
 801cbe8:	a4 40 10 00 	not r2,r2                                      
 801cbec:	a0 22 08 00 	and r1,r1,r2                                   
 801cbf0:	5c 2c ff dd 	bne r1,r12,801cb64 <_POSIX_signals_Unblock_thread+0xd8>
 801cbf4:	e3 ff ff d1 	bi 801cb38 <_POSIX_signals_Unblock_thread+0xac>
      /*                                                              
       *  In pthread_cond_wait, a thread will be blocking on a thread 
       *  queue, but is also interruptible by a POSIX signal.         
       */                                                             
       if ( _States_Is_waiting_on_thread_queue(the_thread->current_state) )
         _Thread_queue_Extract_with_proxy( the_thread );              
 801cbf8:	b9 60 08 00 	mv r1,r11                                      
 801cbfc:	fb ff aa 45 	calli 8007510 <_Thread_queue_Extract_with_proxy>
 801cc00:	e3 ff ff ce 	bi 801cb38 <_POSIX_signals_Unblock_thread+0xac>
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
        the_info->si_code = SI_USER;                                  
 801cc04:	34 02 00 01 	mvi r2,1                                       
      the_thread->Wait.return_code = EINTR;                           
                                                                      
      the_info = (siginfo_t *) the_thread->Wait.return_argument;      
                                                                      
      if ( !info ) {                                                  
        the_info->si_signo = signo;                                   
 801cc08:	58 2e 00 00 	sw (r1+0),r14                                  
        the_info->si_code = SI_USER;                                  
 801cc0c:	58 22 00 04 	sw (r1+4),r2                                   
        the_info->si_value.sival_int = 0;                             
 801cc10:	58 20 00 08 	sw (r1+8),r0                                   
 801cc14:	e3 ff ff de 	bi 801cb8c <_POSIX_signals_Unblock_thread+0x100>
                                                                      

0800691c <_RBTree_Extract_unprotected>: */ void _RBTree_Extract_unprotected( RBTree_Control *the_rbtree, RBTree_Node *the_node ) {
 800691c:	37 9c ff ec 	addi sp,sp,-20                                 
 8006920:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006924:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006928:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800692c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006930:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006934:	b8 40 60 00 	mv r12,r2                                      
 8006938:	b8 20 68 00 	mv r13,r1                                      
  RBTree_Node *leaf, *target;                                         
  RBTree_Color victim_color;                                          
  RBTree_Direction dir;                                               
                                                                      
  if (!the_node) return;                                              
 800693c:	44 40 00 35 	be r2,r0,8006a10 <_RBTree_Extract_unprotected+0xf4>
                                                                      
  /* check if min needs to be updated */                              
  if (the_node == the_rbtree->first[RBT_LEFT]) {                      
 8006940:	28 21 00 08 	lw r1,(r1+8)                                   
 8006944:	44 22 00 4a 	be r1,r2,8006a6c <_RBTree_Extract_unprotected+0x150>
    the_rbtree->first[RBT_LEFT] = next;                               
  }                                                                   
                                                                      
  /* Check if max needs to be updated. min=max for 1 element trees so 
   * do not use else if here. */                                      
  if (the_node == the_rbtree->first[RBT_RIGHT]) {                     
 8006948:	29 a1 00 0c 	lw r1,(r13+12)                                 
 800694c:	44 2c 00 4d 	be r1,r12,8006a80 <_RBTree_Extract_unprotected+0x164>
   * either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
   * and replace the_node with the target node. This maintains the binary
   * search tree property, but may violate the red-black properties.  
   */                                                                 
                                                                      
  if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {      
 8006950:	29 8b 00 04 	lw r11,(r12+4)                                 
 8006954:	45 60 00 53 	be r11,r0,8006aa0 <_RBTree_Extract_unprotected+0x184>
 8006958:	29 81 00 08 	lw r1,(r12+8)                                  
 800695c:	5c 20 00 03 	bne r1,r0,8006968 <_RBTree_Extract_unprotected+0x4c>
 8006960:	e0 00 00 36 	bi 8006a38 <_RBTree_Extract_unprotected+0x11c> 
    target = the_node->child[RBT_LEFT]; /* find max in node->child[RBT_LEFT] */
    while (target->child[RBT_RIGHT]) target = target->child[RBT_RIGHT];
 8006964:	b8 40 58 00 	mv r11,r2                                      
 8006968:	29 62 00 08 	lw r2,(r11+8)                                  
 800696c:	5c 40 ff fe 	bne r2,r0,8006964 <_RBTree_Extract_unprotected+0x48>
     * target's position (target is the right child of target->parent)
     * when target vacates it. if there is no child, then target->parent
     * should become NULL. This may cause the coloring to be violated.
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = target->child[RBT_LEFT];                                   
 8006970:	29 6e 00 04 	lw r14,(r11+4)                                 
    if(leaf) {                                                        
 8006974:	45 c2 00 48 	be r14,r2,8006a94 <_RBTree_Extract_unprotected+0x178>
      leaf->parent = target->parent;                                  
 8006978:	29 61 00 00 	lw r1,(r11+0)                                  
 800697c:	59 c1 00 00 	sw (r14+0),r1                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
 8006980:	29 61 00 00 	lw r1,(r11+0)                                  
    target->parent->child[dir] = leaf;                                
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
 8006984:	29 84 00 00 	lw r4,(r12+0)                                  
      leaf->parent = target->parent;                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
 8006988:	29 63 00 0c 	lw r3,(r11+12)                                 
    dir = target != target->parent->child[0];                         
 800698c:	28 22 00 04 	lw r2,(r1+4)                                   
 8006990:	fc 4b 10 00 	cmpne r2,r2,r11                                
    target->parent->child[dir] = leaf;                                
 8006994:	b4 42 10 00 	add r2,r2,r2                                   
 8006998:	b4 42 10 00 	add r2,r2,r2                                   
 800699c:	b4 22 10 00 	add r2,r1,r2                                   
 80069a0:	58 4e 00 04 	sw (r2+4),r14                                  
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
 80069a4:	28 81 00 04 	lw r1,(r4+4)                                   
 80069a8:	fc 2c 08 00 	cmpne r1,r1,r12                                
    the_node->parent->child[dir] = target;                            
 80069ac:	b4 21 08 00 	add r1,r1,r1                                   
 80069b0:	b4 21 08 00 	add r1,r1,r1                                   
 80069b4:	b4 81 08 00 	add r1,r4,r1                                   
 80069b8:	58 2b 00 04 	sw (r1+4),r11                                  
                                                                      
    /* set target's new children to the original node's children */   
    target->child[RBT_RIGHT] = the_node->child[RBT_RIGHT];            
 80069bc:	29 81 00 08 	lw r1,(r12+8)                                  
 80069c0:	59 61 00 08 	sw (r11+8),r1                                  
    if (the_node->child[RBT_RIGHT])                                   
 80069c4:	29 81 00 08 	lw r1,(r12+8)                                  
 80069c8:	44 20 00 02 	be r1,r0,80069d0 <_RBTree_Extract_unprotected+0xb4><== NEVER TAKEN
      the_node->child[RBT_RIGHT]->parent = target;                    
 80069cc:	58 2b 00 00 	sw (r1+0),r11                                  
    target->child[RBT_LEFT] = the_node->child[RBT_LEFT];              
 80069d0:	29 81 00 04 	lw r1,(r12+4)                                  
 80069d4:	59 61 00 04 	sw (r11+4),r1                                  
    if (the_node->child[RBT_LEFT])                                    
 80069d8:	29 81 00 04 	lw r1,(r12+4)                                  
 80069dc:	44 20 00 02 	be r1,r0,80069e4 <_RBTree_Extract_unprotected+0xc8>
      the_node->child[RBT_LEFT]->parent = target;                     
 80069e0:	58 2b 00 00 	sw (r1+0),r11                                  
    /* finally, update the parent node and recolor. target has completely
     * replaced the_node, and target's child has moved up the tree if needed.
     * the_node is no longer part of the tree, although it has valid pointers
     * still.                                                         
     */                                                               
    target->parent = the_node->parent;                                
 80069e4:	29 82 00 00 	lw r2,(r12+0)                                  
    target->color = the_node->color;                                  
 80069e8:	29 81 00 0c 	lw r1,(r12+12)                                 
    /* finally, update the parent node and recolor. target has completely
     * replaced the_node, and target's child has moved up the tree if needed.
     * the_node is no longer part of the tree, although it has valid pointers
     * still.                                                         
     */                                                               
    target->parent = the_node->parent;                                
 80069ec:	59 62 00 00 	sw (r11+0),r2                                  
    target->color = the_node->color;                                  
 80069f0:	59 61 00 0c 	sw (r11+12),r1                                 
  /* fix coloring. leaf has moved up the tree. The color of the deleted
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
 80069f4:	44 60 00 0e 	be r3,r0,8006a2c <_RBTree_Extract_unprotected+0x110>
                                                                      
  /* Wipe the_node */                                                 
  _RBTree_Set_off_rbtree(the_node);                                   
                                                                      
  /* set root to black, if it exists */                               
  if (the_rbtree->root) the_rbtree->root->color = RBT_BLACK;          
 80069f8:	29 a1 00 04 	lw r1,(r13+4)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree(                     
    RBTree_Node *node                                                 
    )                                                                 
{                                                                     
  node->parent = node->child[RBT_LEFT] = node->child[RBT_RIGHT] = NULL;
 80069fc:	59 80 00 08 	sw (r12+8),r0                                  
 8006a00:	59 80 00 04 	sw (r12+4),r0                                  
 8006a04:	59 80 00 00 	sw (r12+0),r0                                  
 8006a08:	44 20 00 02 	be r1,r0,8006a10 <_RBTree_Extract_unprotected+0xf4>
 8006a0c:	58 20 00 0c 	sw (r1+12),r0                                  
}                                                                     
 8006a10:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006a14:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8006a18:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8006a1c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8006a20:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8006a24:	37 9c 00 14 	addi sp,sp,20                                  
 8006a28:	c3 a0 00 00 	ret                                            
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
    if (leaf) {                                                       
 8006a2c:	45 c3 ff f3 	be r14,r3,80069f8 <_RBTree_Extract_unprotected+0xdc>
      leaf->color = RBT_BLACK; /* case 2 */                           
 8006a30:	59 c0 00 0c 	sw (r14+12),r0                                 
 8006a34:	e3 ff ff f1 	bi 80069f8 <_RBTree_Extract_unprotected+0xdc>  
   * either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
   * and replace the_node with the target node. This maintains the binary
   * search tree property, but may violate the red-black properties.  
   */                                                                 
                                                                      
  if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {      
 8006a38:	b9 60 70 00 	mv r14,r11                                     
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = the_node->child[RBT_LEFT] ?                                
              the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT]; 
    if( leaf ) {                                                      
      leaf->parent = the_node->parent;                                
 8006a3c:	29 81 00 00 	lw r1,(r12+0)                                  
 8006a40:	59 c1 00 00 	sw (r14+0),r1                                  
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
 8006a44:	29 82 00 00 	lw r2,(r12+0)                                  
      leaf->parent = the_node->parent;                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
 8006a48:	29 83 00 0c 	lw r3,(r12+12)                                 
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
 8006a4c:	28 41 00 04 	lw r1,(r2+4)                                   
 8006a50:	fc 2c 08 00 	cmpne r1,r1,r12                                
    the_node->parent->child[dir] = leaf;                              
 8006a54:	b4 21 08 00 	add r1,r1,r1                                   
 8006a58:	b4 21 08 00 	add r1,r1,r1                                   
 8006a5c:	b4 41 08 00 	add r1,r2,r1                                   
 8006a60:	58 2e 00 04 	sw (r1+4),r14                                  
  /* fix coloring. leaf has moved up the tree. The color of the deleted
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
 8006a64:	5c 60 ff e5 	bne r3,r0,80069f8 <_RBTree_Extract_unprotected+0xdc>
 8006a68:	e3 ff ff f1 	bi 8006a2c <_RBTree_Extract_unprotected+0x110> 
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor_unprotected(      
  const RBTree_Node *node                                             
)                                                                     
{                                                                     
  return _RBTree_Next_unprotected( node, RBT_RIGHT );                 
 8006a6c:	b8 40 08 00 	mv r1,r2                                       
 8006a70:	34 02 00 01 	mvi r2,1                                       
 8006a74:	f8 00 01 09 	calli 8006e98 <_RBTree_Next_unprotected>       
                                                                      
  /* check if min needs to be updated */                              
  if (the_node == the_rbtree->first[RBT_LEFT]) {                      
    RBTree_Node *next;                                                
    next = _RBTree_Successor_unprotected(the_node);                   
    the_rbtree->first[RBT_LEFT] = next;                               
 8006a78:	59 a1 00 08 	sw (r13+8),r1                                  
 8006a7c:	e3 ff ff b3 	bi 8006948 <_RBTree_Extract_unprotected+0x2c>  
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor_unprotected(    
  const RBTree_Node *node                                             
)                                                                     
{                                                                     
  return _RBTree_Next_unprotected( node, RBT_LEFT );                  
 8006a80:	b9 80 08 00 	mv r1,r12                                      
 8006a84:	34 02 00 00 	mvi r2,0                                       
 8006a88:	f8 00 01 04 	calli 8006e98 <_RBTree_Next_unprotected>       
  /* Check if max needs to be updated. min=max for 1 element trees so 
   * do not use else if here. */                                      
  if (the_node == the_rbtree->first[RBT_RIGHT]) {                     
    RBTree_Node *previous;                                            
    previous = _RBTree_Predecessor_unprotected(the_node);             
    the_rbtree->first[RBT_RIGHT] = previous;                          
 8006a8c:	59 a1 00 0c 	sw (r13+12),r1                                 
 8006a90:	e3 ff ff b0 	bi 8006950 <_RBTree_Extract_unprotected+0x34>  
    leaf = target->child[RBT_LEFT];                                   
    if(leaf) {                                                        
      leaf->parent = target->parent;                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
 8006a94:	b9 60 08 00 	mv r1,r11                                      
 8006a98:	fb ff fe e2 	calli 8006620 <_RBTree_Extract_validate_unprotected>
 8006a9c:	e3 ff ff b9 	bi 8006980 <_RBTree_Extract_unprotected+0x64>  
     * the_node's location in the tree. This may cause the coloring to be
     * violated. We will fix it later.                                
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = the_node->child[RBT_LEFT] ?                                
              the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT]; 
 8006aa0:	29 8e 00 08 	lw r14,(r12+8)                                 
    if( leaf ) {                                                      
 8006aa4:	5d cb ff e6 	bne r14,r11,8006a3c <_RBTree_Extract_unprotected+0x120>
      leaf->parent = the_node->parent;                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
 8006aa8:	b9 80 08 00 	mv r1,r12                                      
 8006aac:	fb ff fe dd 	calli 8006620 <_RBTree_Extract_validate_unprotected>
 8006ab0:	e3 ff ff e5 	bi 8006a44 <_RBTree_Extract_unprotected+0x128> 
                                                                      

08006620 <_RBTree_Extract_validate_unprotected>: * of the extract operation. */ static void _RBTree_Extract_validate_unprotected( RBTree_Node *the_node ) {
 8006620:	37 9c ff fc 	addi sp,sp,-4                                  
 8006624:	5b 8b 00 04 	sw (sp+4),r11                                  
  RBTree_Node *parent, *sibling;                                      
  RBTree_Direction dir;                                               
                                                                      
  parent = the_node->parent;                                          
 8006628:	28 22 00 00 	lw r2,(r1+0)                                   
  if(!parent->parent) return;                                         
 800662c:	28 43 00 00 	lw r3,(r2+0)                                   
 8006630:	44 60 00 23 	be r3,r0,80066bc <_RBTree_Extract_validate_unprotected+0x9c>
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
 8006634:	28 43 00 04 	lw r3,(r2+4)                                   
 8006638:	44 23 00 af 	be r1,r3,80068f4 <_RBTree_Extract_validate_unprotected+0x2d4>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 800663c:	34 04 00 01 	mvi r4,1                                       
 8006640:	e0 00 00 1a 	bi 80066a8 <_RBTree_Extract_validate_unprotected+0x88>
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
                                                                      
  /* continue to correct tree as long as the_node is black and not the root */
  while (!_RBTree_Is_red(the_node) && parent->parent) {               
 8006644:	28 45 00 00 	lw r5,(r2+0)                                   
 8006648:	44 a0 00 1a 	be r5,r0,80066b0 <_RBTree_Extract_validate_unprotected+0x90>
 800664c:	44 60 00 03 	be r3,r0,8006658 <_RBTree_Extract_validate_unprotected+0x38><== NEVER TAKEN
 8006650:	28 66 00 0c 	lw r6,(r3+12)                                  
 8006654:	44 c4 00 1d 	be r6,r4,80066c8 <_RBTree_Extract_validate_unprotected+0xa8>
      _RBTree_Rotate(parent, dir);                                    
      sibling = parent->child[_RBTree_Opposite_direction(dir)];       
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
 8006658:	28 65 00 08 	lw r5,(r3+8)                                   
 800665c:	44 a0 00 03 	be r5,r0,8006668 <_RBTree_Extract_validate_unprotected+0x48>
 8006660:	28 a6 00 0c 	lw r6,(r5+12)                                  
 8006664:	44 c4 00 4d 	be r6,r4,8006798 <_RBTree_Extract_validate_unprotected+0x178>
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
 8006668:	28 66 00 04 	lw r6,(r3+4)                                   
 800666c:	44 c0 00 03 	be r6,r0,8006678 <_RBTree_Extract_validate_unprotected+0x58>
 8006670:	28 c6 00 0c 	lw r6,(r6+12)                                  
 8006674:	44 c4 00 49 	be r6,r4,8006798 <_RBTree_Extract_validate_unprotected+0x178>
        sibling->color = RBT_RED;                                     
 8006678:	58 64 00 0c 	sw (r3+12),r4                                  
 800667c:	28 43 00 0c 	lw r3,(r2+12)                                  
 8006680:	44 64 00 3c 	be r3,r4,8006770 <_RBTree_Extract_validate_unprotected+0x150>
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
          break;                                                      
        }                                                             
        the_node = parent; /* done if parent is red */                
        parent = the_node->parent;                                    
 8006684:	28 45 00 00 	lw r5,(r2+0)                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
 8006688:	34 03 00 00 	mvi r3,0                                       
 800668c:	44 a0 00 05 	be r5,r0,80066a0 <_RBTree_Extract_validate_unprotected+0x80><== NEVER TAKEN
  if(!(the_node->parent->parent)) return NULL;                        
 8006690:	28 a1 00 00 	lw r1,(r5+0)                                   
 8006694:	44 20 00 03 	be r1,r0,80066a0 <_RBTree_Extract_validate_unprotected+0x80>
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
 8006698:	28 a3 00 04 	lw r3,(r5+4)                                   
 800669c:	44 43 00 3d 	be r2,r3,8006790 <_RBTree_Extract_validate_unprotected+0x170>
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
 80066a0:	b8 40 08 00 	mv r1,r2                                       
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
 80066a4:	b8 a0 10 00 	mv r2,r5                                       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 80066a8:	28 25 00 0c 	lw r5,(r1+12)                                  
 80066ac:	5c a4 ff e6 	bne r5,r4,8006644 <_RBTree_Extract_validate_unprotected+0x24>
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
 80066b0:	28 22 00 00 	lw r2,(r1+0)                                   
 80066b4:	28 42 00 00 	lw r2,(r2+0)                                   
 80066b8:	44 40 00 32 	be r2,r0,8006780 <_RBTree_Extract_validate_unprotected+0x160>
}                                                                     
 80066bc:	2b 8b 00 04 	lw r11,(sp+4)                                  
 80066c0:	37 9c 00 04 	addi sp,sp,4                                   
 80066c4:	c3 a0 00 00 	ret                                            
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
 80066c8:	28 46 00 04 	lw r6,(r2+4)                                   
     * then rotate parent left, making the sibling be the_node's grandparent.
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
 80066cc:	58 44 00 0c 	sw (r2+12),r4                                  
      sibling->color = RBT_BLACK;                                     
 80066d0:	58 60 00 0c 	sw (r3+12),r0                                  
      dir = the_node != parent->child[0];                             
 80066d4:	fc c1 50 00 	cmpne r10,r6,r1                                
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
 80066d8:	34 03 00 00 	mvi r3,0                                       
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
 80066dc:	19 49 00 01 	xori r9,r10,0x1                                
 80066e0:	b5 29 38 00 	add r7,r9,r9                                   
 80066e4:	b4 e7 40 00 	add r8,r7,r7                                   
 80066e8:	b4 48 40 00 	add r8,r2,r8                                   
 80066ec:	29 08 00 04 	lw r8,(r8+4)                                   
 80066f0:	45 00 ff da 	be r8,r0,8006658 <_RBTree_Extract_validate_unprotected+0x38><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 80066f4:	34 08 00 00 	mvi r8,0                                       
 80066f8:	45 20 00 03 	be r9,r0,8006704 <_RBTree_Extract_validate_unprotected+0xe4>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 80066fc:	28 46 00 08 	lw r6,(r2+8)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006700:	34 08 00 01 	mvi r8,1                                       
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
 8006704:	b5 4a 18 00 	add r3,r10,r10                                 
 8006708:	b4 63 48 00 	add r9,r3,r3                                   
 800670c:	b4 c9 48 00 	add r9,r6,r9                                   
 8006710:	b5 08 40 00 	add r8,r8,r8                                   
 8006714:	29 2a 00 04 	lw r10,(r9+4)                                  
 8006718:	b5 08 40 00 	add r8,r8,r8                                   
 800671c:	b4 48 40 00 	add r8,r2,r8                                   
 8006720:	59 0a 00 04 	sw (r8+4),r10                                  
                                                                      
  if (c->child[dir])                                                  
 8006724:	29 28 00 04 	lw r8,(r9+4)                                   
 8006728:	45 00 00 03 	be r8,r0,8006734 <_RBTree_Extract_validate_unprotected+0x114><== NEVER TAKEN
    c->child[dir]->parent = the_node;                                 
 800672c:	59 02 00 00 	sw (r8+0),r2                                   
 8006730:	28 45 00 00 	lw r5,(r2+0)                                   
                                                                      
  c->child[dir] = the_node;                                           
 8006734:	b4 63 18 00 	add r3,r3,r3                                   
 8006738:	b4 c3 18 00 	add r3,r6,r3                                   
 800673c:	58 62 00 04 	sw (r3+4),r2                                   
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006740:	28 a3 00 04 	lw r3,(r5+4)                                   
                                                                      
  c->parent = the_node->parent;                                       
 8006744:	58 c5 00 00 	sw (r6+0),r5                                   
  the_node->parent = c;                                               
 8006748:	b4 e7 38 00 	add r7,r7,r7                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 800674c:	fc 43 18 00 	cmpne r3,r2,r3                                 
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
 8006750:	b4 47 38 00 	add r7,r2,r7                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006754:	b4 63 18 00 	add r3,r3,r3                                   
 8006758:	b4 63 18 00 	add r3,r3,r3                                   
 800675c:	b4 a3 28 00 	add r5,r5,r3                                   
 8006760:	58 a6 00 04 	sw (r5+4),r6                                   
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
 8006764:	28 e3 00 04 	lw r3,(r7+4)                                   
 8006768:	58 46 00 00 	sw (r2+0),r6                                   
 800676c:	e3 ff ff bb 	bi 8006658 <_RBTree_Extract_validate_unprotected+0x38>
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
        sibling->color = RBT_RED;                                     
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
 8006770:	58 40 00 0c 	sw (r2+12),r0                                  
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
 8006774:	28 22 00 00 	lw r2,(r1+0)                                   
 8006778:	28 42 00 00 	lw r2,(r2+0)                                   
 800677c:	5c 40 ff d0 	bne r2,r0,80066bc <_RBTree_Extract_validate_unprotected+0x9c><== ALWAYS TAKEN
 8006780:	58 20 00 0c 	sw (r1+12),r0                                  
}                                                                     
 8006784:	2b 8b 00 04 	lw r11,(sp+4)                                  
 8006788:	37 9c 00 04 	addi sp,sp,4                                   
 800678c:	c3 a0 00 00 	ret                                            
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
 8006790:	28 a3 00 08 	lw r3,(r5+8)                                   
 8006794:	e3 ff ff c3 	bi 80066a0 <_RBTree_Extract_validate_unprotected+0x80>
       * cases, either the_node is to the left or the right of the parent.
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
 8006798:	28 47 00 04 	lw r7,(r2+4)                                   
 800679c:	fc e1 38 00 	cmpne r7,r7,r1                                 
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
 80067a0:	18 e8 00 01 	xori r8,r7,0x1                                 
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
 80067a4:	b5 08 20 00 	add r4,r8,r8                                   
 80067a8:	b4 84 48 00 	add r9,r4,r4                                   
 80067ac:	b4 69 30 00 	add r6,r3,r9                                   
 80067b0:	28 c6 00 04 	lw r6,(r6+4)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 80067b4:	44 c0 00 04 	be r6,r0,80067c4 <_RBTree_Extract_validate_unprotected+0x1a4>
 80067b8:	28 cb 00 0c 	lw r11,(r6+12)                                 
 80067bc:	34 0a 00 01 	mvi r10,1                                      
 80067c0:	45 6a 00 54 	be r11,r10,8006910 <_RBTree_Extract_validate_unprotected+0x2f0>
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
 80067c4:	b4 e7 48 00 	add r9,r7,r7                                   
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
 80067c8:	19 0a 00 01 	xori r10,r8,0x1                                
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
 80067cc:	b5 29 48 00 	add r9,r9,r9                                   
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
 80067d0:	b5 4a 30 00 	add r6,r10,r10                                 
 80067d4:	b4 69 48 00 	add r9,r3,r9                                   
 80067d8:	b4 c6 30 00 	add r6,r6,r6                                   
 80067dc:	29 29 00 04 	lw r9,(r9+4)                                   
 80067e0:	b4 66 30 00 	add r6,r3,r6                                   
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
 80067e4:	34 0b 00 01 	mvi r11,1                                      
 80067e8:	28 c6 00 04 	lw r6,(r6+4)                                   
 80067ec:	58 6b 00 0c 	sw (r3+12),r11                                 
        sibling->child[dir]->color = RBT_BLACK;                       
 80067f0:	59 20 00 0c 	sw (r9+12),r0                                  
 80067f4:	44 c0 00 1a 	be r6,r0,800685c <_RBTree_Extract_validate_unprotected+0x23c><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 80067f8:	5d 40 00 41 	bne r10,r0,80068fc <_RBTree_Extract_validate_unprotected+0x2dc>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 80067fc:	28 65 00 04 	lw r5,(r3+4)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006800:	34 06 00 00 	mvi r6,0                                       
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
 8006804:	b4 84 48 00 	add r9,r4,r4                                   
 8006808:	b4 a9 48 00 	add r9,r5,r9                                   
 800680c:	b4 c6 30 00 	add r6,r6,r6                                   
 8006810:	29 2a 00 04 	lw r10,(r9+4)                                  
 8006814:	b4 c6 30 00 	add r6,r6,r6                                   
 8006818:	b4 66 30 00 	add r6,r3,r6                                   
 800681c:	58 ca 00 04 	sw (r6+4),r10                                  
                                                                      
  if (c->child[dir])                                                  
 8006820:	29 26 00 04 	lw r6,(r9+4)                                   
 8006824:	44 c0 00 02 	be r6,r0,800682c <_RBTree_Extract_validate_unprotected+0x20c>
    c->child[dir]->parent = the_node;                                 
 8006828:	58 c3 00 00 	sw (r6+0),r3                                   
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 800682c:	28 66 00 00 	lw r6,(r3+0)                                   
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
 8006830:	b4 84 48 00 	add r9,r4,r4                                   
 8006834:	b4 a9 48 00 	add r9,r5,r9                                   
 8006838:	59 23 00 04 	sw (r9+4),r3                                   
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 800683c:	28 c9 00 04 	lw r9,(r6+4)                                   
                                                                      
  c->parent = the_node->parent;                                       
 8006840:	58 a6 00 00 	sw (r5+0),r6                                   
  the_node->parent = c;                                               
 8006844:	58 65 00 00 	sw (r3+0),r5                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006848:	fc 69 18 00 	cmpne r3,r3,r9                                 
 800684c:	b4 63 18 00 	add r3,r3,r3                                   
 8006850:	b4 63 18 00 	add r3,r3,r3                                   
 8006854:	b4 c3 18 00 	add r3,r6,r3                                   
 8006858:	58 65 00 04 	sw (r3+4),r5                                   
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
 800685c:	b4 84 20 00 	add r4,r4,r4                                   
 8006860:	b4 44 18 00 	add r3,r2,r4                                   
 8006864:	28 63 00 04 	lw r3,(r3+4)                                   
 8006868:	b4 64 20 00 	add r4,r3,r4                                   
 800686c:	28 86 00 04 	lw r6,(r4+4)                                   
 8006870:	b8 60 20 00 	mv r4,r3                                       
      }                                                               
      sibling->color = parent->color;                                 
 8006874:	28 45 00 0c 	lw r5,(r2+12)                                  
 8006878:	58 65 00 0c 	sw (r3+12),r5                                  
      parent->color = RBT_BLACK;                                      
 800687c:	58 40 00 0c 	sw (r2+12),r0                                  
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
 8006880:	58 c0 00 0c 	sw (r6+12),r0                                  
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
 8006884:	44 80 ff 8b 	be r4,r0,80066b0 <_RBTree_Extract_validate_unprotected+0x90><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006888:	45 00 00 1f 	be r8,r0,8006904 <_RBTree_Extract_validate_unprotected+0x2e4>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 800688c:	28 43 00 08 	lw r3,(r2+8)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006890:	34 04 00 01 	mvi r4,1                                       
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
 8006894:	b4 e7 38 00 	add r7,r7,r7                                   
 8006898:	b4 e7 28 00 	add r5,r7,r7                                   
 800689c:	b4 65 28 00 	add r5,r3,r5                                   
 80068a0:	b4 84 20 00 	add r4,r4,r4                                   
 80068a4:	28 a6 00 04 	lw r6,(r5+4)                                   
 80068a8:	b4 84 20 00 	add r4,r4,r4                                   
 80068ac:	b4 44 20 00 	add r4,r2,r4                                   
 80068b0:	58 86 00 04 	sw (r4+4),r6                                   
                                                                      
  if (c->child[dir])                                                  
 80068b4:	28 a4 00 04 	lw r4,(r5+4)                                   
 80068b8:	44 80 00 02 	be r4,r0,80068c0 <_RBTree_Extract_validate_unprotected+0x2a0>
    c->child[dir]->parent = the_node;                                 
 80068bc:	58 82 00 00 	sw (r4+0),r2                                   
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 80068c0:	28 44 00 00 	lw r4,(r2+0)                                   
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
 80068c4:	b4 e7 38 00 	add r7,r7,r7                                   
 80068c8:	b4 67 38 00 	add r7,r3,r7                                   
 80068cc:	58 e2 00 04 	sw (r7+4),r2                                   
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 80068d0:	28 85 00 04 	lw r5,(r4+4)                                   
                                                                      
  c->parent = the_node->parent;                                       
 80068d4:	58 64 00 00 	sw (r3+0),r4                                   
  the_node->parent = c;                                               
 80068d8:	58 43 00 00 	sw (r2+0),r3                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 80068dc:	fc 45 10 00 	cmpne r2,r2,r5                                 
 80068e0:	b4 42 10 00 	add r2,r2,r2                                   
 80068e4:	b4 42 10 00 	add r2,r2,r2                                   
 80068e8:	b4 82 10 00 	add r2,r4,r2                                   
 80068ec:	58 43 00 04 	sw (r2+4),r3                                   
 80068f0:	e3 ff ff 70 	bi 80066b0 <_RBTree_Extract_validate_unprotected+0x90>
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
 80068f4:	28 43 00 08 	lw r3,(r2+8)                                   
 80068f8:	e3 ff ff 51 	bi 800663c <_RBTree_Extract_validate_unprotected+0x1c>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 80068fc:	34 06 00 01 	mvi r6,1                                       
 8006900:	e3 ff ff c1 	bi 8006804 <_RBTree_Extract_validate_unprotected+0x1e4>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 8006904:	28 43 00 04 	lw r3,(r2+4)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006908:	34 04 00 00 	mvi r4,0                                       
 800690c:	e3 ff ff e2 	bi 8006894 <_RBTree_Extract_validate_unprotected+0x274>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 8006910:	b4 49 48 00 	add r9,r2,r9                                   
 8006914:	29 24 00 04 	lw r4,(r9+4)                                   
 8006918:	e3 ff ff d7 	bi 8006874 <_RBTree_Extract_validate_unprotected+0x254>
                                                                      

08006d00 <_RBTree_Find>: RBTree_Node *_RBTree_Find( RBTree_Control *the_rbtree, RBTree_Node *search_node ) {
 8006d00:	37 9c ff e8 	addi sp,sp,-24                                 
 8006d04:	5b 8b 00 18 	sw (sp+24),r11                                 
 8006d08:	5b 8c 00 14 	sw (sp+20),r12                                 
 8006d0c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8006d10:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8006d14:	5b 8f 00 08 	sw (sp+8),r15                                  
 8006d18:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006d1c:	b8 20 60 00 	mv r12,r1                                      
 8006d20:	b8 40 68 00 	mv r13,r2                                      
  ISR_Level          level;                                           
  RBTree_Node *return_node;                                           
                                                                      
  return_node = NULL;                                                 
  _ISR_Disable( level );                                              
 8006d24:	90 00 78 00 	rcsr r15,IE                                    
 8006d28:	34 01 ff fe 	mvi r1,-2                                      
 8006d2c:	a1 e1 08 00 	and r1,r15,r1                                  
 8006d30:	d0 01 00 00 	wcsr IE,r1                                     
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(           
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
 8006d34:	29 8b 00 04 	lw r11,(r12+4)                                 
  RBTree_Node* found = NULL;                                          
 8006d38:	34 0e 00 00 	mvi r14,0                                      
  int compare_result;                                                 
  while (iter_node) {                                                 
 8006d3c:	45 60 00 0f 	be r11,r0,8006d78 <_RBTree_Find+0x78>          <== NEVER TAKEN
    compare_result = the_rbtree->compare_function(the_node, iter_node);
 8006d40:	29 83 00 10 	lw r3,(r12+16)                                 
 8006d44:	b9 60 10 00 	mv r2,r11                                      
 8006d48:	b9 a0 08 00 	mv r1,r13                                      
 8006d4c:	d8 60 00 00 	call r3                                        
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
 8006d50:	68 23 00 00 	cmpgi r3,r1,0                                  
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
 8006d54:	5c 20 00 04 	bne r1,r0,8006d64 <_RBTree_Find+0x64>          
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
 8006d58:	41 82 00 14 	lbu r2,(r12+20)                                
 8006d5c:	b9 60 70 00 	mv r14,r11                                     
 8006d60:	5c 41 00 10 	bne r2,r1,8006da0 <_RBTree_Find+0xa0>          
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
 8006d64:	b4 63 18 00 	add r3,r3,r3                                   
 8006d68:	b4 63 18 00 	add r3,r3,r3                                   
 8006d6c:	b5 63 58 00 	add r11,r11,r3                                 
 8006d70:	29 6b 00 04 	lw r11,(r11+4)                                 
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
 8006d74:	5d 60 ff f3 	bne r11,r0,8006d40 <_RBTree_Find+0x40>         
      return_node = _RBTree_Find_unprotected( the_rbtree, search_node );
  _ISR_Enable( level );                                               
 8006d78:	d0 0f 00 00 	wcsr IE,r15                                    
  return return_node;                                                 
}                                                                     
 8006d7c:	b9 c0 08 00 	mv r1,r14                                      
 8006d80:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006d84:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006d88:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8006d8c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006d90:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006d94:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006d98:	37 9c 00 18 	addi sp,sp,24                                  
 8006d9c:	c3 a0 00 00 	ret                                            
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
 8006da0:	b9 60 70 00 	mv r14,r11                                     
 8006da4:	e3 ff ff f5 	bi 8006d78 <_RBTree_Find+0x78>                 
                                                                      

080071e4 <_RBTree_Initialize>: void *starting_address, size_t number_nodes, size_t node_size, bool is_unique ) {
 80071e4:	37 9c ff ec 	addi sp,sp,-20                                 
 80071e8:	5b 8b 00 14 	sw (sp+20),r11                                 
 80071ec:	5b 8c 00 10 	sw (sp+16),r12                                 
 80071f0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80071f4:	5b 8e 00 08 	sw (sp+8),r14                                  
 80071f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80071fc:	b8 20 68 00 	mv r13,r1                                      
 8007200:	b8 80 58 00 	mv r11,r4                                      
 8007204:	b8 a0 70 00 	mv r14,r5                                      
 8007208:	20 c6 00 ff 	andi r6,r6,0xff                                
  size_t      count;                                                  
  RBTree_Node *next;                                                  
                                                                      
  /* TODO: Error message? */                                          
  if (!the_rbtree) return;                                            
 800720c:	44 20 00 0f 	be r1,r0,8007248 <_RBTree_Initialize+0x64>     <== NEVER TAKEN
    RBTree_Control          *the_rbtree,                              
    RBTree_Compare_function  compare_function,                        
    bool                     is_unique                                
    )                                                                 
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
 8007210:	58 20 00 00 	sw (r1+0),r0                                   
  the_rbtree->root             = NULL;                                
 8007214:	58 20 00 04 	sw (r1+4),r0                                   
  the_rbtree->first[0]         = NULL;                                
 8007218:	58 20 00 08 	sw (r1+8),r0                                   
  the_rbtree->first[1]         = NULL;                                
 800721c:	58 20 00 0c 	sw (r1+12),r0                                  
  the_rbtree->compare_function = compare_function;                    
 8007220:	58 22 00 10 	sw (r1+16),r2                                  
  the_rbtree->is_unique        = is_unique;                           
 8007224:	30 26 00 14 	sb (r1+20),r6                                  
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
 8007228:	44 80 00 08 	be r4,r0,8007248 <_RBTree_Initialize+0x64>     <== NEVER TAKEN
                                                                      
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
 800722c:	b8 60 60 00 	mv r12,r3                                      
  while ( count-- ) {                                                 
    _RBTree_Insert_unprotected(the_rbtree, next);                     
 8007230:	b9 80 10 00 	mv r2,r12                                      
 8007234:	b9 a0 08 00 	mv r1,r13                                      
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/rbtree.h>                                       
#include <rtems/score/isr.h>                                          
                                                                      
void _RBTree_Initialize(                                              
 8007238:	35 6b ff ff 	addi r11,r11,-1                                
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
    _RBTree_Insert_unprotected(the_rbtree, next);                     
 800723c:	fb ff fe f1 	calli 8006e00 <_RBTree_Insert_unprotected>     
#include <rtems/system.h>                                             
#include <rtems/score/address.h>                                      
#include <rtems/score/rbtree.h>                                       
#include <rtems/score/isr.h>                                          
                                                                      
void _RBTree_Initialize(                                              
 8007240:	b5 8e 60 00 	add r12,r12,r14                                
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
 8007244:	5d 60 ff fb 	bne r11,r0,8007230 <_RBTree_Initialize+0x4c>   
    _RBTree_Insert_unprotected(the_rbtree, next);                     
    next           = (RBTree_Node *)                                  
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
}                                                                     
 8007248:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800724c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007250:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007254:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007258:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800725c:	37 9c 00 14 	addi sp,sp,20                                  
 8007260:	c3 a0 00 00 	ret                                            
                                                                      

08006ae8 <_RBTree_Insert_unprotected>: */ RBTree_Node *_RBTree_Insert_unprotected( RBTree_Control *the_rbtree, RBTree_Node *the_node ) {
 8006ae8:	37 9c ff e4 	addi sp,sp,-28                                 
 8006aec:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8006af0:	5b 8c 00 18 	sw (sp+24),r12                                 
 8006af4:	5b 8d 00 14 	sw (sp+20),r13                                 
 8006af8:	5b 8e 00 10 	sw (sp+16),r14                                 
 8006afc:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8006b00:	5b 90 00 08 	sw (sp+8),r16                                  
 8006b04:	5b 9d 00 04 	sw (sp+4),ra                                   
  if(!the_node) return (RBTree_Node*)-1;                              
 8006b08:	34 0d ff ff 	mvi r13,-1                                     
 */                                                                   
RBTree_Node *_RBTree_Insert_unprotected(                              
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
 8006b0c:	b8 40 58 00 	mv r11,r2                                      
 8006b10:	b8 20 60 00 	mv r12,r1                                      
  if(!the_node) return (RBTree_Node*)-1;                              
 8006b14:	44 40 00 87 	be r2,r0,8006d30 <_RBTree_Insert_unprotected+0x248><== NEVER TAKEN
                                                                      
  RBTree_Node *iter_node = the_rbtree->root;                          
 8006b18:	28 2f 00 04 	lw r15,(r1+4)                                  
  int compare_result;                                                 
                                                                      
  if (!iter_node) { /* special case: first node inserted */           
 8006b1c:	5d e0 00 03 	bne r15,r0,8006b28 <_RBTree_Insert_unprotected+0x40>
 8006b20:	e0 00 00 a3 	bi 8006dac <_RBTree_Insert_unprotected+0x2c4>  
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
 8006b24:	b9 a0 78 00 	mv r15,r13                                     
    the_node->parent = (RBTree_Node *) the_rbtree;                    
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
 8006b28:	29 83 00 10 	lw r3,(r12+16)                                 
 8006b2c:	b9 e0 10 00 	mv r2,r15                                      
 8006b30:	b9 60 08 00 	mv r1,r11                                      
 8006b34:	d8 60 00 00 	call r3                                        
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
 8006b38:	41 82 00 14 	lbu r2,(r12+20)                                
 8006b3c:	44 40 00 02 	be r2,r0,8006b44 <_RBTree_Insert_unprotected+0x5c>
 8006b40:	44 20 00 99 	be r1,r0,8006da4 <_RBTree_Insert_unprotected+0x2bc><== NEVER TAKEN
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
 8006b44:	a4 20 08 00 	not r1,r1                                      
 8006b48:	34 02 00 1f 	mvi r2,31                                      
 8006b4c:	fb ff e8 7f 	calli 8000d48 <__lshrsi3>                      
      if (!iter_node->child[dir]) {                                   
 8006b50:	b4 21 18 00 	add r3,r1,r1                                   
 8006b54:	b4 63 18 00 	add r3,r3,r3                                   
 8006b58:	b5 e3 18 00 	add r3,r15,r3                                  
 8006b5c:	28 6d 00 04 	lw r13,(r3+4)                                  
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
 8006b60:	b8 20 70 00 	mv r14,r1                                      
      if (!iter_node->child[dir]) {                                   
 8006b64:	34 63 00 04 	addi r3,r3,4                                   
 8006b68:	5d a0 ff ef 	bne r13,r0,8006b24 <_RBTree_Insert_unprotected+0x3c>
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(                      
  const RBTree_Control *the_rbtree,                                   
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return the_rbtree->first[dir];                                      
 8006b6c:	34 30 00 02 	addi r16,r1,2                                  
 8006b70:	b6 10 08 00 	add r1,r16,r16                                 
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
 8006b74:	59 60 00 08 	sw (r11+8),r0                                  
 8006b78:	59 60 00 04 	sw (r11+4),r0                                  
 8006b7c:	b4 21 08 00 	add r1,r1,r1                                   
        the_node->color = RBT_RED;                                    
        iter_node->child[dir] = the_node;                             
 8006b80:	58 6b 00 00 	sw (r3+0),r11                                  
 8006b84:	b5 81 08 00 	add r1,r12,r1                                  
        the_node->parent = iter_node;                                 
 8006b88:	59 6f 00 00 	sw (r11+0),r15                                 
        /* update min/max */                                          
        compare_result = the_rbtree->compare_function(                
 8006b8c:	28 22 00 00 	lw r2,(r1+0)                                   
 8006b90:	29 84 00 10 	lw r4,(r12+16)                                 
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
        return iter_node;                                             
      RBTree_Direction dir = !_RBTree_Is_lesser( compare_result );    
      if (!iter_node->child[dir]) {                                   
        the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;
        the_node->color = RBT_RED;                                    
 8006b94:	34 03 00 01 	mvi r3,1                                       
 8006b98:	59 63 00 0c 	sw (r11+12),r3                                 
        iter_node->child[dir] = the_node;                             
        the_node->parent = iter_node;                                 
        /* update min/max */                                          
        compare_result = the_rbtree->compare_function(                
 8006b9c:	b9 60 08 00 	mv r1,r11                                      
 8006ba0:	d8 80 00 00 	call r4                                        
            the_node,                                                 
            _RBTree_First(the_rbtree, dir)                            
        );                                                            
        if ( (!dir && _RBTree_Is_lesser(compare_result)) ||           
 8006ba4:	5d cd 00 6f 	bne r14,r13,8006d60 <_RBTree_Insert_unprotected+0x278>
 8006ba8:	49 a1 00 6f 	bg r13,r1,8006d64 <_RBTree_Insert_unprotected+0x27c>
              (dir && _RBTree_Is_greater(compare_result)) ) {         
          the_rbtree->first[dir] = the_node;                          
 8006bac:	29 63 00 00 	lw r3,(r11+0)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 8006bb0:	34 06 00 01 	mvi r6,1                                       
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(                     
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if (!the_node->parent->parent) return NULL;                         
 8006bb4:	28 62 00 00 	lw r2,(r3+0)                                   
 8006bb8:	b8 40 08 00 	mv r1,r2                                       
 8006bbc:	44 40 00 5c 	be r2,r0,8006d2c <_RBTree_Insert_unprotected+0x244>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 8006bc0:	28 64 00 0c 	lw r4,(r3+12)                                  
 8006bc4:	5c 86 00 5b 	bne r4,r6,8006d30 <_RBTree_Insert_unprotected+0x248>
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
  if(!(the_node->parent->parent->parent)) return NULL;                
 8006bc8:	28 47 00 00 	lw r7,(r2+0)                                   
 8006bcc:	44 e0 00 74 	be r7,r0,8006d9c <_RBTree_Insert_unprotected+0x2b4><== NEVER TAKEN
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
 8006bd0:	28 44 00 04 	lw r4,(r2+4)                                   
 8006bd4:	b8 80 28 00 	mv r5,r4                                       
 8006bd8:	44 64 00 60 	be r3,r4,8006d58 <_RBTree_Insert_unprotected+0x270>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
 8006bdc:	44 a0 00 03 	be r5,r0,8006be8 <_RBTree_Insert_unprotected+0x100>
 8006be0:	28 a8 00 0c 	lw r8,(r5+12)                                  
 8006be4:	45 06 00 65 	be r8,r6,8006d78 <_RBTree_Insert_unprotected+0x290>
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
 8006be8:	28 65 00 04 	lw r5,(r3+4)                                   
      RBTree_Direction pdir = the_node->parent != g->child[0];        
 8006bec:	fc 64 20 00 	cmpne r4,r3,r4                                 
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
 8006bf0:	fd 65 38 00 	cmpne r7,r11,r5                                
      RBTree_Direction pdir = the_node->parent != g->child[0];        
                                                                      
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
 8006bf4:	44 e4 00 27 	be r7,r4,8006c90 <_RBTree_Insert_unprotected+0x1a8>
 *          in an unique @a the_rbtree.                               
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
RBTree_Node *_RBTree_Insert_unprotected(                              
 8006bf8:	18 89 00 01 	xori r9,r4,0x1                                 
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
 8006bfc:	b5 29 38 00 	add r7,r9,r9                                   
 8006c00:	b4 e7 38 00 	add r7,r7,r7                                   
 8006c04:	b4 67 38 00 	add r7,r3,r7                                   
 8006c08:	28 e8 00 04 	lw r8,(r7+4)                                   
 8006c0c:	b4 84 38 00 	add r7,r4,r4                                   
 8006c10:	45 00 00 1c 	be r8,r0,8006c80 <_RBTree_Insert_unprotected+0x198><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006c14:	34 08 00 00 	mvi r8,0                                       
 8006c18:	45 20 00 03 	be r9,r0,8006c24 <_RBTree_Insert_unprotected+0x13c>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 8006c1c:	28 65 00 08 	lw r5,(r3+8)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006c20:	34 08 00 01 	mvi r8,1                                       
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
 8006c24:	b4 84 38 00 	add r7,r4,r4                                   
 8006c28:	b4 e7 48 00 	add r9,r7,r7                                   
 8006c2c:	b4 a9 48 00 	add r9,r5,r9                                   
 8006c30:	b5 08 40 00 	add r8,r8,r8                                   
 8006c34:	29 2a 00 04 	lw r10,(r9+4)                                  
 8006c38:	b5 08 40 00 	add r8,r8,r8                                   
 8006c3c:	b4 68 40 00 	add r8,r3,r8                                   
 8006c40:	59 0a 00 04 	sw (r8+4),r10                                  
                                                                      
  if (c->child[dir])                                                  
 8006c44:	29 28 00 04 	lw r8,(r9+4)                                   
 8006c48:	45 00 00 03 	be r8,r0,8006c54 <_RBTree_Insert_unprotected+0x16c>
    c->child[dir]->parent = the_node;                                 
 8006c4c:	59 03 00 00 	sw (r8+0),r3                                   
 8006c50:	28 62 00 00 	lw r2,(r3+0)                                   
                                                                      
  c->child[dir] = the_node;                                           
 8006c54:	b4 e7 40 00 	add r8,r7,r7                                   
 8006c58:	b4 a8 40 00 	add r8,r5,r8                                   
 8006c5c:	59 03 00 04 	sw (r8+4),r3                                   
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006c60:	28 48 00 04 	lw r8,(r2+4)                                   
                                                                      
  c->parent = the_node->parent;                                       
 8006c64:	58 a2 00 00 	sw (r5+0),r2                                   
  the_node->parent = c;                                               
 8006c68:	58 65 00 00 	sw (r3+0),r5                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006c6c:	fc 68 18 00 	cmpne r3,r3,r8                                 
 8006c70:	b4 63 18 00 	add r3,r3,r3                                   
 8006c74:	b4 63 18 00 	add r3,r3,r3                                   
 8006c78:	b4 43 10 00 	add r2,r2,r3                                   
 8006c7c:	58 45 00 04 	sw (r2+4),r5                                   
      RBTree_Direction pdir = the_node->parent != g->child[0];        
                                                                      
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
 8006c80:	b4 e7 38 00 	add r7,r7,r7                                   
 8006c84:	b5 67 58 00 	add r11,r11,r7                                 
 8006c88:	29 6b 00 04 	lw r11,(r11+4)                                 
 8006c8c:	29 63 00 00 	lw r3,(r11+0)                                  
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
      g->color = RBT_RED;                                             
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
 8006c90:	c8 c4 20 00 	sub r4,r6,r4                                   
 *          in an unique @a the_rbtree.                               
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
RBTree_Node *_RBTree_Insert_unprotected(                              
 8006c94:	64 85 00 00 	cmpei r5,r4,0                                  
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
 8006c98:	58 60 00 0c 	sw (r3+12),r0                                  
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
 8006c9c:	b4 a5 10 00 	add r2,r5,r5                                   
 8006ca0:	b4 42 10 00 	add r2,r2,r2                                   
 8006ca4:	b4 22 10 00 	add r2,r1,r2                                   
 8006ca8:	28 42 00 04 	lw r2,(r2+4)                                   
      g->color = RBT_RED;                                             
 8006cac:	58 26 00 0c 	sw (r1+12),r6                                  
 8006cb0:	44 40 ff c1 	be r2,r0,8006bb4 <_RBTree_Insert_unprotected+0xcc><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006cb4:	44 a0 00 37 	be r5,r0,8006d90 <_RBTree_Insert_unprotected+0x2a8>
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 8006cb8:	28 22 00 08 	lw r2,(r1+8)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006cbc:	34 03 00 01 	mvi r3,1                                       
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
 8006cc0:	b4 84 20 00 	add r4,r4,r4                                   
 8006cc4:	b4 84 28 00 	add r5,r4,r4                                   
 8006cc8:	b4 45 28 00 	add r5,r2,r5                                   
 8006ccc:	b4 63 18 00 	add r3,r3,r3                                   
 8006cd0:	28 a7 00 04 	lw r7,(r5+4)                                   
 8006cd4:	b4 63 18 00 	add r3,r3,r3                                   
 8006cd8:	b4 23 18 00 	add r3,r1,r3                                   
 8006cdc:	58 67 00 04 	sw (r3+4),r7                                   
                                                                      
  if (c->child[dir])                                                  
 8006ce0:	28 a3 00 04 	lw r3,(r5+4)                                   
 8006ce4:	44 60 00 02 	be r3,r0,8006cec <_RBTree_Insert_unprotected+0x204>
    c->child[dir]->parent = the_node;                                 
 8006ce8:	58 61 00 00 	sw (r3+0),r1                                   
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006cec:	28 25 00 00 	lw r5,(r1+0)                                   
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
                                                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
 8006cf0:	b4 84 20 00 	add r4,r4,r4                                   
 8006cf4:	b4 44 20 00 	add r4,r2,r4                                   
 8006cf8:	58 81 00 04 	sw (r4+4),r1                                   
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006cfc:	28 a3 00 04 	lw r3,(r5+4)                                   
                                                                      
  c->parent = the_node->parent;                                       
 8006d00:	58 45 00 00 	sw (r2+0),r5                                   
  the_node->parent = c;                                               
 8006d04:	58 22 00 00 	sw (r1+0),r2                                   
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006d08:	fc 23 08 00 	cmpne r1,r1,r3                                 
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
 8006d0c:	29 63 00 00 	lw r3,(r11+0)                                  
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
 8006d10:	b4 21 08 00 	add r1,r1,r1                                   
 8006d14:	b4 21 08 00 	add r1,r1,r1                                   
 8006d18:	b4 a1 08 00 	add r1,r5,r1                                   
 8006d1c:	58 22 00 04 	sw (r1+4),r2                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(                     
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if (!the_node->parent->parent) return NULL;                         
 8006d20:	28 62 00 00 	lw r2,(r3+0)                                   
 8006d24:	b8 40 08 00 	mv r1,r2                                       
 8006d28:	5c 40 ff a6 	bne r2,r0,8006bc0 <_RBTree_Insert_unprotected+0xd8><== ALWAYS TAKEN
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
    }                                                                 
  }                                                                   
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
 8006d2c:	59 60 00 0c 	sw (r11+12),r0                                 
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
}                                                                     
 8006d30:	b9 a0 08 00 	mv r1,r13                                      
 8006d34:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006d38:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8006d3c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006d40:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006d44:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006d48:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8006d4c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006d50:	37 9c 00 1c 	addi sp,sp,28                                  
 8006d54:	c3 a0 00 00 	ret                                            
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
 8006d58:	28 45 00 08 	lw r5,(r2+8)                                   
 8006d5c:	e3 ff ff a0 	bi 8006bdc <_RBTree_Insert_unprotected+0xf4>   
        compare_result = the_rbtree->compare_function(                
            the_node,                                                 
            _RBTree_First(the_rbtree, dir)                            
        );                                                            
        if ( (!dir && _RBTree_Is_lesser(compare_result)) ||           
              (dir && _RBTree_Is_greater(compare_result)) ) {         
 8006d60:	4c 01 ff 93 	bge r0,r1,8006bac <_RBTree_Insert_unprotected+0xc4>
          the_rbtree->first[dir] = the_node;                          
 8006d64:	b6 10 80 00 	add r16,r16,r16                                
 8006d68:	b6 10 80 00 	add r16,r16,r16                                
 8006d6c:	b5 90 60 00 	add r12,r12,r16                                
 8006d70:	59 8b 00 00 	sw (r12+0),r11                                 
 8006d74:	e3 ff ff 8e 	bi 8006bac <_RBTree_Insert_unprotected+0xc4>   
    u = _RBTree_Parent_sibling(the_node);                             
    g = the_node->parent->parent;                                     
                                                                      
    /* if uncle is red, repaint uncle/parent black and grandparent red */
    if(_RBTree_Is_red(u)) {                                           
      the_node->parent->color = RBT_BLACK;                            
 8006d78:	58 60 00 0c 	sw (r3+12),r0                                  
      u->color = RBT_BLACK;                                           
 8006d7c:	58 a0 00 0c 	sw (r5+12),r0                                  
      g->color = RBT_RED;                                             
 8006d80:	58 46 00 0c 	sw (r2+12),r6                                  
 8006d84:	b8 e0 18 00 	mv r3,r7                                       
 8006d88:	b8 40 58 00 	mv r11,r2                                      
 8006d8c:	e3 ff ff 8a 	bi 8006bb4 <_RBTree_Insert_unprotected+0xcc>   
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
 8006d90:	28 22 00 04 	lw r2,(r1+4)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
 8006d94:	34 03 00 00 	mvi r3,0                                       
 8006d98:	e3 ff ff ca 	bi 8006cc0 <_RBTree_Insert_unprotected+0x1d8>  
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
    }                                                                 
  }                                                                   
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
 8006d9c:	28 44 00 04 	lw r4,(r2+4)                                   <== NOT EXECUTED
 8006da0:	e3 ff ff 92 	bi 8006be8 <_RBTree_Insert_unprotected+0x100>  <== NOT EXECUTED
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
  } else {                                                            
    /* typical binary search tree insert, descend tree to leaf and insert */
    while (iter_node) {                                               
      compare_result = the_rbtree->compare_function(the_node, iter_node);
      if ( the_rbtree->is_unique && _RBTree_Is_equal( compare_result ) )
 8006da4:	b9 e0 68 00 	mv r13,r15                                     
 8006da8:	e3 ff ff e2 	bi 8006d30 <_RBTree_Insert_unprotected+0x248>  
                                                                      
  RBTree_Node *iter_node = the_rbtree->root;                          
  int compare_result;                                                 
                                                                      
  if (!iter_node) { /* special case: first node inserted */           
    the_node->color = RBT_BLACK;                                      
 8006dac:	58 40 00 0c 	sw (r2+12),r0                                  
    the_rbtree->root = the_node;                                      
 8006db0:	59 82 00 04 	sw (r12+4),r2                                  
    the_rbtree->first[0] = the_rbtree->first[1] = the_node;           
 8006db4:	59 82 00 0c 	sw (r12+12),r2                                 
 8006db8:	59 82 00 08 	sw (r12+8),r2                                  
    the_node->parent = (RBTree_Node *) the_rbtree;                    
 8006dbc:	59 61 00 00 	sw (r11+0),r1                                  
    the_node->child[RBT_LEFT] = the_node->child[RBT_RIGHT] = NULL;    
 8006dc0:	58 40 00 08 	sw (r2+8),r0                                   
 8006dc4:	58 40 00 04 	sw (r2+4),r0                                   
    } /* while(iter_node) */                                          
                                                                      
    /* verify red-black properties */                                 
    _RBTree_Validate_insert_unprotected(the_node);                    
  }                                                                   
  return (RBTree_Node*)0;                                             
 8006dc8:	34 0d 00 00 	mvi r13,0                                      
 8006dcc:	e3 ff ff d9 	bi 8006d30 <_RBTree_Insert_unprotected+0x248>  
                                                                      

08006e04 <_RBTree_Iterate_unprotected>: const RBTree_Control *rbtree, RBTree_Direction dir, RBTree_Visitor visitor, void *visitor_arg ) {
 8006e04:	37 9c ff e8 	addi sp,sp,-24                                 
 8006e08:	5b 8b 00 18 	sw (sp+24),r11                                 
 8006e0c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8006e10:	5b 8d 00 10 	sw (sp+16),r13                                 
 8006e14:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8006e18:	5b 8f 00 08 	sw (sp+8),r15                                  
 8006e1c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006e20:	b8 40 60 00 	mv r12,r2                                      
 8006e24:	64 42 00 00 	cmpei r2,r2,0                                  
 8006e28:	b8 60 78 00 	mv r15,r3                                      
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First(                      
  const RBTree_Control *the_rbtree,                                   
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return the_rbtree->first[dir];                                      
 8006e2c:	34 42 00 02 	addi r2,r2,2                                   
 8006e30:	b4 42 10 00 	add r2,r2,r2                                   
 8006e34:	b4 42 10 00 	add r2,r2,r2                                   
 8006e38:	b4 22 08 00 	add r1,r1,r2                                   
 8006e3c:	28 2b 00 00 	lw r11,(r1+0)                                  
 8006e40:	b8 80 70 00 	mv r14,r4                                      
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
 8006e44:	5d 60 00 03 	bne r11,r0,8006e50 <_RBTree_Iterate_unprotected+0x4c><== ALWAYS TAKEN
 8006e48:	e0 00 00 0c 	bi 8006e78 <_RBTree_Iterate_unprotected+0x74>  <== NOT EXECUTED
 8006e4c:	44 2d 00 0b 	be r1,r13,8006e78 <_RBTree_Iterate_unprotected+0x74>
    stop = (*visitor)( current, dir, visitor_arg );                   
 8006e50:	b9 60 08 00 	mv r1,r11                                      
 8006e54:	b9 c0 18 00 	mv r3,r14                                      
 8006e58:	b9 80 10 00 	mv r2,r12                                      
 8006e5c:	d9 e0 00 00 	call r15                                       
 8006e60:	b8 20 68 00 	mv r13,r1                                      
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
 8006e64:	b9 80 10 00 	mv r2,r12                                      
 8006e68:	b9 60 08 00 	mv r1,r11                                      
 8006e6c:	f8 00 00 0b 	calli 8006e98 <_RBTree_Next_unprotected>       
 8006e70:	b8 20 58 00 	mv r11,r1                                      
{                                                                     
  RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );       
  const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );      
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != NULL ) {                                
 8006e74:	45 a0 ff f6 	be r13,r0,8006e4c <_RBTree_Iterate_unprotected+0x48><== ALWAYS TAKEN
    stop = (*visitor)( current, dir, visitor_arg );                   
                                                                      
    current = _RBTree_Next_unprotected( current, dir );               
  }                                                                   
}                                                                     
 8006e78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006e7c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8006e80:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8006e84:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8006e88:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8006e8c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8006e90:	37 9c 00 18 	addi sp,sp,24                                  
 8006e94:	c3 a0 00 00 	ret                                            
                                                                      

08004e40 <_RTEMS_signal_Post_switch_hook>: #include <rtems/score/thread.h> #include <rtems/score/apiext.h> #include <rtems/rtems/tasks.h> static void _RTEMS_signal_Post_switch_hook( Thread_Control *executing ) {
 8004e40:	37 9c ff f0 	addi sp,sp,-16                                 
 8004e44:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004e48:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004e4c:	5b 9d 00 04 	sw (sp+4),ra                                   
  RTEMS_API_Control *api;                                             
  ASR_Information   *asr;                                             
  rtems_signal_set   signal_set;                                      
  Modes_Control      prev_mode;                                       
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 8004e50:	28 2b 01 18 	lw r11,(r1+280)                                
  if ( !api )                                                         
 8004e54:	45 60 00 1a 	be r11,r0,8004ebc <_RTEMS_signal_Post_switch_hook+0x7c><== NEVER TAKEN
   *  Signal Processing                                               
   */                                                                 
                                                                      
  asr = &api->Signal;                                                 
                                                                      
  _ISR_Disable( level );                                              
 8004e58:	90 00 10 00 	rcsr r2,IE                                     
 8004e5c:	34 01 ff fe 	mvi r1,-2                                      
 8004e60:	a0 41 08 00 	and r1,r2,r1                                   
 8004e64:	d0 01 00 00 	wcsr IE,r1                                     
    signal_set = asr->signals_posted;                                 
 8004e68:	29 6c 00 14 	lw r12,(r11+20)                                
    asr->signals_posted = 0;                                          
 8004e6c:	59 60 00 14 	sw (r11+20),r0                                 
  _ISR_Enable( level );                                               
 8004e70:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
 8004e74:	45 80 00 12 	be r12,r0,8004ebc <_RTEMS_signal_Post_switch_hook+0x7c>
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
 8004e78:	29 64 00 1c 	lw r4,(r11+28)                                 
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
 8004e7c:	29 61 00 10 	lw r1,(r11+16)                                 
 8004e80:	37 83 00 10 	addi r3,sp,16                                  
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
 8004e84:	34 84 00 01 	addi r4,r4,1                                   
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
 8004e88:	38 02 ff ff 	mvu r2,0xffff                                  
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
 8004e8c:	59 64 00 1c 	sw (r11+28),r4                                 
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
 8004e90:	f8 00 01 3d 	calli 8005384 <rtems_task_mode>                
                                                                      
  (*asr->handler)( signal_set );                                      
 8004e94:	29 62 00 0c 	lw r2,(r11+12)                                 
 8004e98:	b9 80 08 00 	mv r1,r12                                      
 8004e9c:	d8 40 00 00 	call r2                                        
                                                                      
  asr->nest_level -= 1;                                               
 8004ea0:	29 63 00 1c 	lw r3,(r11+28)                                 
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
 8004ea4:	2b 81 00 10 	lw r1,(sp+16)                                  
 8004ea8:	38 02 ff ff 	mvu r2,0xffff                                  
  asr->nest_level += 1;                                               
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
                                                                      
  (*asr->handler)( signal_set );                                      
                                                                      
  asr->nest_level -= 1;                                               
 8004eac:	34 63 ff ff 	addi r3,r3,-1                                  
 8004eb0:	59 63 00 1c 	sw (r11+28),r3                                 
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
 8004eb4:	37 83 00 10 	addi r3,sp,16                                  
 8004eb8:	f8 00 01 33 	calli 8005384 <rtems_task_mode>                
                                                                      
}                                                                     
 8004ebc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004ec0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004ec4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004ec8:	37 9c 00 10 	addi sp,sp,16                                  
 8004ecc:	c3 a0 00 00 	ret                                            
                                                                      

08004184 <_RTEMS_tasks_Initialize_user_tasks_body>: * * Output parameters: NONE */ void _RTEMS_tasks_Initialize_user_tasks_body( void ) {
 8004184:	37 9c ff e8 	addi sp,sp,-24                                 
 8004188:	5b 8b 00 14 	sw (sp+20),r11                                 
 800418c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004190:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004194:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004198:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_initialization_tasks_table *user_tasks;                       
                                                                      
  /*                                                                  
   *  Move information into local variables                           
   */                                                                 
  user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
 800419c:	78 01 08 02 	mvhi r1,0x802                                  
 80041a0:	38 21 00 a4 	ori r1,r1,0xa4                                 
 80041a4:	28 2b 00 2c 	lw r11,(r1+44)                                 
  maximum    = Configuration_RTEMS_API.number_of_initialization_tasks;
 80041a8:	28 2e 00 28 	lw r14,(r1+40)                                 
                                                                      
  /*                                                                  
   *  Verify that we have a set of user tasks to iterate              
   */                                                                 
  if ( !user_tasks )                                                  
 80041ac:	45 60 00 15 	be r11,r0,8004200 <_RTEMS_tasks_Initialize_user_tasks_body+0x7c>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 80041b0:	45 c0 00 14 	be r14,r0,8004200 <_RTEMS_tasks_Initialize_user_tasks_body+0x7c><== NEVER TAKEN
 80041b4:	34 0c 00 00 	mvi r12,0                                      
    return_value = rtems_task_create(                                 
 80041b8:	29 61 00 00 	lw r1,(r11+0)                                  
 80041bc:	29 62 00 08 	lw r2,(r11+8)                                  
 80041c0:	29 63 00 04 	lw r3,(r11+4)                                  
 80041c4:	29 64 00 14 	lw r4,(r11+20)                                 
 80041c8:	29 65 00 0c 	lw r5,(r11+12)                                 
 80041cc:	37 86 00 18 	addi r6,sp,24                                  
 80041d0:	fb ff ff 52 	calli 8003f18 <rtems_task_create>              
 80041d4:	b8 20 68 00 	mv r13,r1                                      
      user_tasks[ index ].stack_size,                                 
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 80041d8:	5c 20 00 11 	bne r1,r0,800421c <_RTEMS_tasks_Initialize_user_tasks_body+0x98>
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
                                                                      
    return_value = rtems_task_start(                                  
 80041dc:	29 63 00 18 	lw r3,(r11+24)                                 
 80041e0:	2b 81 00 18 	lw r1,(sp+24)                                  
 80041e4:	29 62 00 10 	lw r2,(r11+16)                                 
 80041e8:	f8 00 00 14 	calli 8004238 <rtems_task_start>               
 80041ec:	b8 20 18 00 	mv r3,r1                                       
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
 80041f0:	5c 2d 00 0f 	bne r1,r13,800422c <_RTEMS_tasks_Initialize_user_tasks_body+0xa8>
    return;                                                           
                                                                      
  /*                                                                  
   *  Now iterate over the initialization tasks and create/start them.
   */                                                                 
  for ( index=0 ; index < maximum ; index++ ) {                       
 80041f4:	35 8c 00 01 	addi r12,r12,1                                 
 80041f8:	35 6b 00 1c 	addi r11,r11,28                                
 80041fc:	55 cc ff ef 	bgu r14,r12,80041b8 <_RTEMS_tasks_Initialize_user_tasks_body+0x34><== NEVER TAKEN
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
  }                                                                   
}                                                                     
 8004200:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004204:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004208:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800420c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004210:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004214:	37 9c 00 18 	addi sp,sp,24                                  
 8004218:	c3 a0 00 00 	ret                                            
      user_tasks[ index ].mode_set,                                   
      user_tasks[ index ].attribute_set,                              
      &id                                                             
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
 800421c:	34 01 00 01 	mvi r1,1                                       
 8004220:	34 02 00 01 	mvi r2,1                                       
 8004224:	b9 a0 18 00 	mv r3,r13                                      
 8004228:	f8 00 04 9d 	calli 800549c <_Internal_error_Occurred>       
      id,                                                             
      user_tasks[ index ].entry_point,                                
      user_tasks[ index ].argument                                    
    );                                                                
    if ( !rtems_is_status_successful( return_value ) )                
      _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
 800422c:	34 01 00 01 	mvi r1,1                                       
 8004230:	34 02 00 01 	mvi r2,1                                       
 8004234:	f8 00 04 9a 	calli 800549c <_Internal_error_Occurred>       
                                                                      

0800a6e8 <_RTEMS_tasks_Switch_extension>: /* * Per Task Variables */ tvp = executing->task_variables;
 800a6e8:	28 21 01 24 	lw r1,(r1+292)                                 
  while (tvp) {                                                       
 800a6ec:	44 20 00 08 	be r1,r0,800a70c <_RTEMS_tasks_Switch_extension+0x24>
    tvp->tval = *tvp->ptr;                                            
 800a6f0:	28 23 00 04 	lw r3,(r1+4)                                   
    *tvp->ptr = tvp->gval;                                            
 800a6f4:	28 24 00 08 	lw r4,(r1+8)                                   
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
 800a6f8:	28 65 00 00 	lw r5,(r3+0)                                   
 800a6fc:	58 25 00 0c 	sw (r1+12),r5                                  
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 800a700:	28 21 00 00 	lw r1,(r1+0)                                   
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
 800a704:	58 64 00 00 	sw (r3+0),r4                                   
  /*                                                                  
   *  Per Task Variables                                              
   */                                                                 
                                                                      
  tvp = executing->task_variables;                                    
  while (tvp) {                                                       
 800a708:	5c 20 ff fa 	bne r1,r0,800a6f0 <_RTEMS_tasks_Switch_extension+0x8><== NEVER TAKEN
    tvp->tval = *tvp->ptr;                                            
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
 800a70c:	28 41 01 24 	lw r1,(r2+292)                                 
  while (tvp) {                                                       
 800a710:	44 20 00 08 	be r1,r0,800a730 <_RTEMS_tasks_Switch_extension+0x48>
    tvp->gval = *tvp->ptr;                                            
 800a714:	28 22 00 04 	lw r2,(r1+4)                                   
    *tvp->ptr = tvp->tval;                                            
 800a718:	28 23 00 0c 	lw r3,(r1+12)                                  
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
 800a71c:	28 44 00 00 	lw r4,(r2+0)                                   
 800a720:	58 24 00 08 	sw (r1+8),r4                                   
    *tvp->ptr = tvp->tval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
 800a724:	28 21 00 00 	lw r1,(r1+0)                                   
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
    tvp->gval = *tvp->ptr;                                            
    *tvp->ptr = tvp->tval;                                            
 800a728:	58 43 00 00 	sw (r2+0),r3                                   
    *tvp->ptr = tvp->gval;                                            
    tvp = (rtems_task_variable_t *)tvp->next;                         
  }                                                                   
                                                                      
  tvp = heir->task_variables;                                         
  while (tvp) {                                                       
 800a72c:	5c 20 ff fa 	bne r1,r0,800a714 <_RTEMS_tasks_Switch_extension+0x2c><== NEVER TAKEN
 800a730:	c3 a0 00 00 	ret                                            
                                                                      

080386d8 <_Rate_monotonic_Get_status>: bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, Rate_monotonic_Period_time_t *wall_since_last_period, Thread_CPU_usage_t *cpu_since_last_period ) {
 80386d8:	37 9c ff e4 	addi sp,sp,-28                                 
 80386dc:	5b 8b 00 14 	sw (sp+20),r11                                 
 80386e0:	5b 8c 00 10 	sw (sp+16),r12                                 
 80386e4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80386e8:	5b 8e 00 08 	sw (sp+8),r14                                  
 80386ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 80386f0:	b8 40 68 00 	mv r13,r2                                      
 */                                                                   
static inline void _TOD_Get_uptime(                                   
  Timestamp_Control *time                                             
)                                                                     
{                                                                     
  _TOD_Get_with_nanoseconds( time, &_TOD.uptime );                    
 80386f4:	78 02 08 06 	mvhi r2,0x806                                  
 80386f8:	b8 20 58 00 	mv r11,r1                                      
 80386fc:	38 42 ef e8 	ori r2,r2,0xefe8                               
 8038700:	37 81 00 18 	addi r1,sp,24                                  
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    Timestamp_Control        uptime;                                  
  #endif                                                              
    Thread_Control          *owning_thread = the_period->owner;       
 8038704:	29 6c 00 40 	lw r12,(r11+64)                                
bool _Rate_monotonic_Get_status(                                      
  Rate_monotonic_Control        *the_period,                          
  Rate_monotonic_Period_time_t  *wall_since_last_period,              
  Thread_CPU_usage_t            *cpu_since_last_period                
)                                                                     
{                                                                     
 8038708:	b8 60 70 00 	mv r14,r3                                      
 803870c:	fb ff 2f 8e 	calli 8004544 <_TOD_Get_with_nanoseconds>      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8038710:	2b 85 00 1c 	lw r5,(sp+28)                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8038714:	29 61 00 54 	lw r1,(r11+84)                                 
 8038718:	29 66 00 50 	lw r6,(r11+80)                                 
 803871c:	2b 82 00 18 	lw r2,(sp+24)                                  
 8038720:	c8 a1 08 00 	sub r1,r5,r1                                   
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    if (owning_thread == _Thread_Executing) {                         
 8038724:	78 04 08 06 	mvhi r4,0x806                                  
 8038728:	f4 25 38 00 	cmpgu r7,r1,r5                                 
 803872c:	38 84 f5 00 	ori r4,r4,0xf500                               
 8038730:	28 88 00 10 	lw r8,(r4+16)                                  
 8038734:	c8 46 30 00 	sub r6,r2,r6                                   
 8038738:	c8 c7 30 00 	sub r6,r6,r7                                   
 803873c:	59 a1 00 04 	sw (r13+4),r1                                  
 8038740:	59 a6 00 00 	sw (r13+0),r6                                  
  #endif                                                              
                                                                      
  /*                                                                  
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
 8038744:	29 83 00 80 	lw r3,(r12+128)                                
 8038748:	29 86 00 84 	lw r6,(r12+132)                                
      if (used < the_period->cpu_usage_period_initiated)              
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
 803874c:	34 01 00 01 	mvi r1,1                                       
   *  Determine cpu usage since period initiated.                     
   */                                                                 
  used = owning_thread->cpu_time_used;                                
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    if (owning_thread == _Thread_Executing) {                         
 8038750:	45 0c 00 08 	be r8,r12,8038770 <_Rate_monotonic_Get_status+0x98>
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
}                                                                     
 8038754:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8038758:	2b 8b 00 14 	lw r11,(sp+20)                                 
 803875c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8038760:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8038764:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8038768:	37 9c 00 1c 	addi sp,sp,28                                  
 803876c:	c3 a0 00 00 	ret                                            
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8038770:	28 81 00 24 	lw r1,(r4+36)                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8038774:	b4 c5 28 00 	add r5,r6,r5                                   
 8038778:	f4 c5 30 00 	cmpgu r6,r6,r5                                 
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 803877c:	28 87 00 20 	lw r7,(r4+32)                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8038780:	b4 62 10 00 	add r2,r3,r2                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8038784:	c8 a1 08 00 	sub r1,r5,r1                                   
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8038788:	b4 c2 10 00 	add r2,r6,r2                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 803878c:	f4 25 28 00 	cmpgu r5,r1,r5                                 
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8038790:	29 64 00 48 	lw r4,(r11+72)                                 
 8038794:	c8 47 10 00 	sub r2,r2,r7                                   
 8038798:	c8 45 28 00 	sub r5,r2,r5                                   
 803879c:	29 62 00 4c 	lw r2,(r11+76)                                 
                                                                      
      /*                                                              
       *  The cpu usage info was reset while executing.  Can't        
       *  determine a status.                                         
       */                                                             
      if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
 80387a0:	48 85 00 10 	bg r4,r5,80387e0 <_Rate_monotonic_Get_status+0x108><== NEVER TAKEN
 80387a4:	44 85 00 11 	be r4,r5,80387e8 <_Rate_monotonic_Get_status+0x110>
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 80387a8:	c8 22 10 00 	sub r2,r1,r2                                   
 80387ac:	f4 41 08 00 	cmpgu r1,r2,r1                                 
 80387b0:	c8 a4 20 00 	sub r4,r5,r4                                   
 80387b4:	c8 81 08 00 	sub r1,r4,r1                                   
 80387b8:	59 c1 00 00 	sw (r14+0),r1                                  
      if (used < the_period->cpu_usage_period_initiated)              
        return false;                                                 
                                                                      
      *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
  #endif                                                              
  return true;                                                        
 80387bc:	34 01 00 01 	mvi r1,1                                       
 80387c0:	59 c2 00 04 	sw (r14+4),r2                                  
}                                                                     
 80387c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80387c8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80387cc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80387d0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80387d4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80387d8:	37 9c 00 1c 	addi sp,sp,28                                  
 80387dc:	c3 a0 00 00 	ret                                            
      /*                                                              
       *  The cpu usage info was reset while executing.  Can't        
       *  determine a status.                                         
       */                                                             
      if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
        return false;                                                 
 80387e0:	34 01 00 00 	mvi r1,0                                       
 80387e4:	e3 ff ff dc 	bi 8038754 <_Rate_monotonic_Get_status+0x7c>   
                                                                      
      /*                                                              
       *  The cpu usage info was reset while executing.  Can't        
       *  determine a status.                                         
       */                                                             
      if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
 80387e8:	54 41 ff fe 	bgu r2,r1,80387e0 <_Rate_monotonic_Get_status+0x108>
 80387ec:	e3 ff ff ef 	bi 80387a8 <_Rate_monotonic_Get_status+0xd0>   
                                                                      

08038bdc <_Rate_monotonic_Timeout>: void _Rate_monotonic_Timeout( Objects_Id id, void *ignored ) {
 8038bdc:	37 9c ff f4 	addi sp,sp,-12                                 
 8038be0:	5b 8b 00 08 	sw (sp+8),r11                                  
 8038be4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8038be8:	b8 20 10 00 	mv r2,r1                                       
 8038bec:	78 01 08 06 	mvhi r1,0x806                                  
 8038bf0:	38 21 fb 30 	ori r1,r1,0xfb30                               
 8038bf4:	37 83 00 0c 	addi r3,sp,12                                  
 8038bf8:	fb ff 31 72 	calli 80051c0 <_Objects_Get>                   
  /*                                                                  
   *  When we get here, the Timer is already off the chain so we do not
   *  have to worry about that -- hence no _Watchdog_Remove().        
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
 8038bfc:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8038c00:	b8 20 58 00 	mv r11,r1                                      
 8038c04:	44 40 00 05 	be r2,r0,8038c18 <_Rate_monotonic_Timeout+0x3c><== ALWAYS TAKEN
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 8038c08:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8038c0c:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8038c10:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8038c14:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      the_thread = the_period->owner;                                 
 8038c18:	28 21 00 40 	lw r1,(r1+64)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (             
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_PERIOD);                   
 8038c1c:	28 23 00 10 	lw r3,(r1+16)                                  
 8038c20:	20 63 40 00 	andi r3,r3,0x4000                              
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
 8038c24:	44 62 00 04 	be r3,r2,8038c34 <_Rate_monotonic_Timeout+0x58>
 8038c28:	28 23 00 20 	lw r3,(r1+32)                                  
 8038c2c:	29 62 00 08 	lw r2,(r11+8)                                  
 8038c30:	44 62 00 1a 	be r3,r2,8038c98 <_Rate_monotonic_Timeout+0xbc>
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
 8038c34:	29 62 00 38 	lw r2,(r11+56)                                 
 8038c38:	34 01 00 01 	mvi r1,1                                       
 8038c3c:	44 41 00 0c 	be r2,r1,8038c6c <_Rate_monotonic_Timeout+0x90><== NEVER TAKEN
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else                                                          
        the_period->state = RATE_MONOTONIC_EXPIRED;                   
 8038c40:	34 01 00 04 	mvi r1,4                                       
 8038c44:	59 61 00 38 	sw (r11+56),r1                                 
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8038c48:	78 01 08 06 	mvhi r1,0x806                                  
 8038c4c:	38 21 f0 60 	ori r1,r1,0xf060                               
 8038c50:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    --level;                                                          
 8038c54:	34 42 ff ff 	addi r2,r2,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 8038c58:	58 22 00 00 	sw (r1+0),r2                                   
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
 8038c5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8038c60:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8038c64:	37 9c 00 0c 	addi sp,sp,12                                  
 8038c68:	c3 a0 00 00 	ret                                            
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
        the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;    
 8038c6c:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8038c70:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
      } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
        the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;    
 8038c74:	59 62 00 38 	sw (r11+56),r2                                 <== NOT EXECUTED
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8038c78:	fb ff ff 2b 	calli 8038924 <_Rate_monotonic_Initiate_statistics>
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8038c7c:	29 62 00 3c 	lw r2,(r11+60)                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038c80:	78 01 08 06 	mvhi r1,0x806                                  
 8038c84:	38 21 f0 f8 	ori r1,r1,0xf0f8                               
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8038c88:	59 62 00 1c 	sw (r11+28),r2                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038c8c:	35 62 00 10 	addi r2,r11,16                                 
 8038c90:	fb ff 38 cb 	calli 8006fbc <_Watchdog_Insert>               
 8038c94:	e3 ff ff ed 	bi 8038c48 <_Rate_monotonic_Timeout+0x6c>      
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 8038c98:	78 03 08 05 	mvhi r3,0x805                                  
 8038c9c:	38 63 e2 9c 	ori r3,r3,0xe29c                               
 8038ca0:	28 62 00 00 	lw r2,(r3+0)                                   
 8038ca4:	fb ff 54 21 	calli 800dd28 <_Thread_Clear_state>            
      the_thread = the_period->owner;                                 
      if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
            the_thread->Wait.id == the_period->Object.id ) {          
        _Thread_Unblock( the_thread );                                
                                                                      
        _Rate_monotonic_Initiate_statistics( the_period );            
 8038ca8:	b9 60 08 00 	mv r1,r11                                      
 8038cac:	e3 ff ff f3 	bi 8038c78 <_Rate_monotonic_Timeout+0x9c>      
                                                                      

080387f0 <_Rate_monotonic_Update_statistics>: } static void _Rate_monotonic_Update_statistics( Rate_monotonic_Control *the_period ) {
 80387f0:	37 9c ff e8 	addi sp,sp,-24                                 
 80387f4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80387f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80387fc:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 8038800:	28 21 00 58 	lw r1,(r1+88)                                  
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 8038804:	29 62 00 38 	lw r2,(r11+56)                                 
                                                                      
  /*                                                                  
   *  Update the counts.                                              
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
 8038808:	34 21 00 01 	addi r1,r1,1                                   
 803880c:	59 61 00 58 	sw (r11+88),r1                                 
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
 8038810:	34 01 00 04 	mvi r1,4                                       
 8038814:	44 41 00 3a 	be r2,r1,80388fc <_Rate_monotonic_Update_statistics+0x10c>
    stats->missed_count++;                                            
                                                                      
  /*                                                                  
   *  Grab status for time statistics.                                
   */                                                                 
  valid_status =                                                      
 8038818:	b9 60 08 00 	mv r1,r11                                      
 803881c:	37 82 00 0c 	addi r2,sp,12                                  
 8038820:	37 83 00 14 	addi r3,sp,20                                  
 8038824:	fb ff ff ad 	calli 80386d8 <_Rate_monotonic_Get_status>     
    _Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
  if (!valid_status)                                                  
 8038828:	44 20 00 13 	be r1,r0,8038874 <_Rate_monotonic_Update_statistics+0x84><== NEVER TAKEN
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 803882c:	2b 82 00 18 	lw r2,(sp+24)                                  
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8038830:	29 63 00 74 	lw r3,(r11+116)                                
 8038834:	29 65 00 70 	lw r5,(r11+112)                                
 8038838:	2b 81 00 14 	lw r1,(sp+20)                                  
 803883c:	b4 43 18 00 	add r3,r2,r3                                   
 8038840:	f4 43 30 00 	cmpgu r6,r2,r3                                 
 8038844:	b4 25 28 00 	add r5,r1,r5                                   
   *  Update CPU time                                                 
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
 8038848:	29 64 00 60 	lw r4,(r11+96)                                 
 803884c:	b4 c5 28 00 	add r5,r6,r5                                   
 8038850:	59 65 00 70 	sw (r11+112),r5                                
 8038854:	59 63 00 74 	sw (r11+116),r3                                
 8038858:	48 81 00 0b 	bg r4,r1,8038884 <_Rate_monotonic_Update_statistics+0x94>
 803885c:	5c 81 00 0c 	bne r4,r1,803888c <_Rate_monotonic_Update_statistics+0x9c><== NEVER TAKEN
 8038860:	29 63 00 64 	lw r3,(r11+100)                                
 8038864:	54 62 00 08 	bgu r3,r2,8038884 <_Rate_monotonic_Update_statistics+0x94>
 8038868:	e0 00 00 09 	bi 803888c <_Rate_monotonic_Update_statistics+0x9c>
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
      stats->max_wall_time = since_last_period;                       
 803886c:	59 61 00 80 	sw (r11+128),r1                                
 8038870:	59 62 00 84 	sw (r11+132),r2                                
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( since_last_period > stats->max_wall_time )                   
      stats->max_wall_time = since_last_period;                       
  #endif                                                              
}                                                                     
 8038874:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8038878:	2b 8b 00 08 	lw r11,(sp+8)                                  
 803887c:	37 9c 00 18 	addi sp,sp,24                                  
 8038880:	c3 a0 00 00 	ret                                            
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
      stats->min_cpu_time = executed;                                 
 8038884:	59 61 00 60 	sw (r11+96),r1                                 
 8038888:	59 62 00 64 	sw (r11+100),r2                                
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
 803888c:	29 63 00 68 	lw r3,(r11+104)                                
 8038890:	48 23 00 18 	bg r1,r3,80388f0 <_Rate_monotonic_Update_statistics+0x100><== NEVER TAKEN
 8038894:	44 61 00 21 	be r3,r1,8038918 <_Rate_monotonic_Update_statistics+0x128><== ALWAYS TAKEN
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8038898:	2b 82 00 10 	lw r2,(sp+16)                                  
 803889c:	29 63 00 8c 	lw r3,(r11+140)                                
 80388a0:	29 65 00 88 	lw r5,(r11+136)                                
 80388a4:	2b 81 00 0c 	lw r1,(sp+12)                                  
 80388a8:	b4 43 18 00 	add r3,r2,r3                                   
 80388ac:	f4 43 30 00 	cmpgu r6,r2,r3                                 
 80388b0:	b4 25 28 00 	add r5,r1,r5                                   
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
 80388b4:	29 64 00 78 	lw r4,(r11+120)                                
 80388b8:	b4 c5 28 00 	add r5,r6,r5                                   
 80388bc:	59 65 00 88 	sw (r11+136),r5                                
 80388c0:	59 63 00 8c 	sw (r11+140),r3                                
 80388c4:	48 81 00 08 	bg r4,r1,80388e4 <_Rate_monotonic_Update_statistics+0xf4>
 80388c8:	44 81 00 11 	be r4,r1,803890c <_Rate_monotonic_Update_statistics+0x11c><== ALWAYS TAKEN
      stats->min_wall_time = since_last_period;                       
                                                                      
    if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
 80388cc:	29 63 00 80 	lw r3,(r11+128)                                
 80388d0:	48 23 ff e7 	bg r1,r3,803886c <_Rate_monotonic_Update_statistics+0x7c><== NEVER TAKEN
 80388d4:	5c 61 ff e8 	bne r3,r1,8038874 <_Rate_monotonic_Update_statistics+0x84><== NEVER TAKEN
 80388d8:	29 63 00 84 	lw r3,(r11+132)                                
 80388dc:	54 43 ff e4 	bgu r2,r3,803886c <_Rate_monotonic_Update_statistics+0x7c>
 80388e0:	e3 ff ff e5 	bi 8038874 <_Rate_monotonic_Update_statistics+0x84>
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
      stats->min_wall_time = since_last_period;                       
 80388e4:	59 61 00 78 	sw (r11+120),r1                                
 80388e8:	59 62 00 7c 	sw (r11+124),r2                                
 80388ec:	e3 ff ff f8 	bi 80388cc <_Rate_monotonic_Update_statistics+0xdc>
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
      stats->min_cpu_time = executed;                                 
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
      stats->max_cpu_time = executed;                                 
 80388f0:	59 61 00 68 	sw (r11+104),r1                                
 80388f4:	59 62 00 6c 	sw (r11+108),r2                                
 80388f8:	e3 ff ff e8 	bi 8038898 <_Rate_monotonic_Update_statistics+0xa8>
   */                                                                 
  stats = &the_period->Statistics;                                    
  stats->count++;                                                     
                                                                      
  if ( the_period->state == RATE_MONOTONIC_EXPIRED )                  
    stats->missed_count++;                                            
 80388fc:	29 61 00 5c 	lw r1,(r11+92)                                 
 8038900:	34 21 00 01 	addi r1,r1,1                                   
 8038904:	59 61 00 5c 	sw (r11+92),r1                                 
 8038908:	e3 ff ff c4 	bi 8038818 <_Rate_monotonic_Update_statistics+0x28>
   *  Update Wall time                                                
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Add_to( &stats->total_wall_time, &since_last_period ); 
                                                                      
    if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
 803890c:	29 63 00 7c 	lw r3,(r11+124)                                
 8038910:	54 62 ff f5 	bgu r3,r2,80388e4 <_Rate_monotonic_Update_statistics+0xf4>
 8038914:	e3 ff ff ee 	bi 80388cc <_Rate_monotonic_Update_statistics+0xdc>
    _Timestamp_Add_to( &stats->total_cpu_time, &executed );           
                                                                      
    if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )    
      stats->min_cpu_time = executed;                                 
                                                                      
    if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) ) 
 8038918:	29 63 00 6c 	lw r3,(r11+108)                                
 803891c:	54 43 ff f5 	bgu r2,r3,80388f0 <_Rate_monotonic_Update_statistics+0x100>
 8038920:	e3 ff ff de 	bi 8038898 <_Rate_monotonic_Update_statistics+0xa8>
                                                                      

08006f1c <_Scheduler_CBS_Allocate>: #include <rtems/score/wkspace.h> void *_Scheduler_CBS_Allocate( Thread_Control *the_thread ) {
 8006f1c:	37 9c ff f8 	addi sp,sp,-8                                  
 8006f20:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006f24:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006f28:	b8 20 58 00 	mv r11,r1                                      
  void *sched;                                                        
  Scheduler_CBS_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
 8006f2c:	34 01 00 1c 	mvi r1,28                                      
 8006f30:	f8 00 08 07 	calli 8008f4c <_Workspace_Allocate>            
  if ( sched ) {                                                      
 8006f34:	44 20 00 06 	be r1,r0,8006f4c <_Scheduler_CBS_Allocate+0x30><== NEVER TAKEN
    the_thread->scheduler_info = sched;                               
 8006f38:	59 61 00 88 	sw (r11+136),r1                                
    schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
    schinfo->edf_per_thread.thread = the_thread;                      
    schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
 8006f3c:	34 02 00 02 	mvi r2,2                                       
                                                                      
  sched = _Workspace_Allocate(sizeof(Scheduler_CBS_Per_thread));      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_CBS_Per_thread *)(the_thread->scheduler_info);
    schinfo->edf_per_thread.thread = the_thread;                      
 8006f40:	58 2b 00 00 	sw (r1+0),r11                                  
    schinfo->edf_per_thread.queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;
 8006f44:	58 22 00 14 	sw (r1+20),r2                                  
    schinfo->cbs_server = NULL;                                       
 8006f48:	58 20 00 18 	sw (r1+24),r0                                  
  }                                                                   
                                                                      
  return sched;                                                       
}                                                                     
 8006f4c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006f50:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006f54:	37 9c 00 08 	addi sp,sp,8                                   
 8006f58:	c3 a0 00 00 	ret                                            
                                                                      

08008280 <_Scheduler_CBS_Budget_callout>: Scheduler_CBS_Server **_Scheduler_CBS_Server_list; void _Scheduler_CBS_Budget_callout( Thread_Control *the_thread ) {
 8008280:	37 9c ff f4 	addi sp,sp,-12                                 
 8008284:	5b 8b 00 08 	sw (sp+8),r11                                  
 8008288:	5b 9d 00 04 	sw (sp+4),ra                                   
 800828c:	b8 20 58 00 	mv r11,r1                                      
  Priority_Control          new_priority;                             
  Scheduler_CBS_Per_thread *sched_info;                               
  Scheduler_CBS_Server_id   server_id;                                
                                                                      
  /* Put violating task to background until the end of period. */     
  new_priority = the_thread->Start.initial_priority;                  
 8008290:	28 22 00 ac 	lw r2,(r1+172)                                 
  if ( the_thread->real_priority != new_priority )                    
 8008294:	28 21 00 18 	lw r1,(r1+24)                                  
 8008298:	44 22 00 02 	be r1,r2,80082a0 <_Scheduler_CBS_Budget_callout+0x20><== NEVER TAKEN
    the_thread->real_priority = new_priority;                         
 800829c:	59 62 00 18 	sw (r11+24),r2                                 
  if ( the_thread->current_priority != new_priority )                 
 80082a0:	29 61 00 14 	lw r1,(r11+20)                                 
 80082a4:	44 22 00 04 	be r1,r2,80082b4 <_Scheduler_CBS_Budget_callout+0x34><== NEVER TAKEN
    _Thread_Change_priority(the_thread, new_priority, true);          
 80082a8:	b9 60 08 00 	mv r1,r11                                      
 80082ac:	34 03 00 01 	mvi r3,1                                       
 80082b0:	f8 00 01 a6 	calli 8008948 <_Thread_Change_priority>        
                                                                      
  /* Invoke callback function if any. */                              
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
 80082b4:	29 6b 00 88 	lw r11,(r11+136)                               
  if ( sched_info->cbs_server->cbs_budget_overrun ) {                 
 80082b8:	29 61 00 18 	lw r1,(r11+24)                                 
 80082bc:	28 22 00 0c 	lw r2,(r1+12)                                  
 80082c0:	44 40 00 08 	be r2,r0,80082e0 <_Scheduler_CBS_Budget_callout+0x60><== NEVER TAKEN
    _Scheduler_CBS_Get_server_id(                                     
 80082c4:	28 21 00 00 	lw r1,(r1+0)                                   
 80082c8:	37 82 00 0c 	addi r2,sp,12                                  
 80082cc:	fb ff ff d6 	calli 8008224 <_Scheduler_CBS_Get_server_id>   
        sched_info->cbs_server->task_id,                              
        &server_id                                                    
    );                                                                
    sched_info->cbs_server->cbs_budget_overrun( server_id );          
 80082d0:	29 62 00 18 	lw r2,(r11+24)                                 
 80082d4:	2b 81 00 0c 	lw r1,(sp+12)                                  
 80082d8:	28 42 00 0c 	lw r2,(r2+12)                                  
 80082dc:	d8 40 00 00 	call r2                                        
  }                                                                   
}                                                                     
 80082e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80082e4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80082e8:	37 9c 00 0c 	addi sp,sp,12                                  
 80082ec:	c3 a0 00 00 	ret                                            
                                                                      

08007cec <_Scheduler_CBS_Cleanup>: #include <rtems/config.h> #include <rtems/score/scheduler.h> #include <rtems/score/schedulercbs.h> int _Scheduler_CBS_Cleanup (void) {
 8007cec:	37 9c ff ec 	addi sp,sp,-20                                 
 8007cf0:	5b 8b 00 14 	sw (sp+20),r11                                 
 8007cf4:	5b 8c 00 10 	sw (sp+16),r12                                 
 8007cf8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8007cfc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8007d00:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 8007d04:	78 0d 08 02 	mvhi r13,0x802                                 
 8007d08:	39 ad 30 18 	ori r13,r13,0x3018                             
 8007d0c:	29 a1 00 00 	lw r1,(r13+0)                                  
 8007d10:	44 20 00 1a 	be r1,r0,8007d78 <_Scheduler_CBS_Cleanup+0x8c> <== NEVER TAKEN
 8007d14:	78 0e 08 02 	mvhi r14,0x802                                 
 8007d18:	39 ce 3e e8 	ori r14,r14,0x3ee8                             
 8007d1c:	29 c2 00 00 	lw r2,(r14+0)                                  
 8007d20:	34 0c 00 00 	mvi r12,0                                      
 8007d24:	34 0b 00 00 	mvi r11,0                                      
    if ( _Scheduler_CBS_Server_list[ i ] )                            
 8007d28:	b4 4c 08 00 	add r1,r2,r12                                  
 8007d2c:	28 23 00 00 	lw r3,(r1+0)                                   
      _Scheduler_CBS_Destroy_server( i );                             
 8007d30:	b9 60 08 00 	mv r1,r11                                      
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 8007d34:	35 6b 00 01 	addi r11,r11,1                                 
    if ( _Scheduler_CBS_Server_list[ i ] )                            
 8007d38:	44 60 00 03 	be r3,r0,8007d44 <_Scheduler_CBS_Cleanup+0x58> 
      _Scheduler_CBS_Destroy_server( i );                             
 8007d3c:	f8 00 00 57 	calli 8007e98 <_Scheduler_CBS_Destroy_server>  
 8007d40:	29 c2 00 00 	lw r2,(r14+0)                                  
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 8007d44:	29 a1 00 00 	lw r1,(r13+0)                                  
 8007d48:	35 8c 00 04 	addi r12,r12,4                                 
 8007d4c:	54 2b ff f7 	bgu r1,r11,8007d28 <_Scheduler_CBS_Cleanup+0x3c>
    if ( _Scheduler_CBS_Server_list[ i ] )                            
      _Scheduler_CBS_Destroy_server( i );                             
  }                                                                   
  _Workspace_Free( _Scheduler_CBS_Server_list );                      
 8007d50:	b8 40 08 00 	mv r1,r2                                       
 8007d54:	f8 00 09 7f 	calli 800a350 <_Workspace_Free>                
  return SCHEDULER_CBS_OK;                                            
}                                                                     
 8007d58:	34 01 00 00 	mvi r1,0                                       
 8007d5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007d60:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007d64:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007d68:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007d6c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8007d70:	37 9c 00 14 	addi sp,sp,20                                  
 8007d74:	c3 a0 00 00 	ret                                            
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 8007d78:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8007d7c:	38 21 3e e8 	ori r1,r1,0x3ee8                               <== NOT EXECUTED
 8007d80:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 8007d84:	e3 ff ff f3 	bi 8007d50 <_Scheduler_CBS_Cleanup+0x64>       <== NOT EXECUTED
                                                                      

08007d88 <_Scheduler_CBS_Create_server>: int _Scheduler_CBS_Create_server ( Scheduler_CBS_Parameters *params, Scheduler_CBS_Budget_overrun budget_overrun_callback, rtems_id *server_id ) {
 8007d88:	37 9c ff e4 	addi sp,sp,-28                                 
 8007d8c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8007d90:	5b 8c 00 10 	sw (sp+16),r12                                 
 8007d94:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8007d98:	5b 8e 00 08 	sw (sp+8),r14                                  
 8007d9c:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
 8007da0:	28 24 00 04 	lw r4,(r1+4)                                   
int _Scheduler_CBS_Create_server (                                    
  Scheduler_CBS_Parameters     *params,                               
  Scheduler_CBS_Budget_overrun  budget_overrun_callback,              
  rtems_id                     *server_id                             
)                                                                     
{                                                                     
 8007da4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if ( params->budget <= 0 ||                                         
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
 8007da8:	34 01 ff ee 	mvi r1,-18                                     
)                                                                     
{                                                                     
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
 8007dac:	4c 04 00 2e 	bge r0,r4,8007e64 <_Scheduler_CBS_Create_server+0xdc>
 8007db0:	29 64 00 00 	lw r4,(r11+0)                                  
 8007db4:	4c 04 00 2c 	bge r0,r4,8007e64 <_Scheduler_CBS_Create_server+0xdc>
       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++ ) {              
 8007db8:	78 01 08 02 	mvhi r1,0x802                                  
 8007dbc:	38 21 30 18 	ori r1,r1,0x3018                               
 8007dc0:	28 24 00 00 	lw r4,(r1+0)                                   
    if ( !_Scheduler_CBS_Server_list[i] )                             
      break;                                                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
 8007dc4:	34 01 ff e6 	mvi r1,-26                                     
       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++ ) {              
 8007dc8:	44 80 00 27 	be r4,r0,8007e64 <_Scheduler_CBS_Create_server+0xdc><== NEVER TAKEN
    if ( !_Scheduler_CBS_Server_list[i] )                             
 8007dcc:	78 0e 08 02 	mvhi r14,0x802                                 
 8007dd0:	39 ce 3e e8 	ori r14,r14,0x3ee8                             
 8007dd4:	29 cd 00 00 	lw r13,(r14+0)                                 
 8007dd8:	29 a1 00 00 	lw r1,(r13+0)                                  
 8007ddc:	44 20 00 2d 	be r1,r0,8007e90 <_Scheduler_CBS_Create_server+0x108>
 8007de0:	b9 a0 08 00 	mv r1,r13                                      
 8007de4:	34 0c 00 00 	mvi r12,0                                      
       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++ ) {              
 8007de8:	35 8c 00 01 	addi r12,r12,1                                 
 8007dec:	54 8c 00 25 	bgu r4,r12,8007e80 <_Scheduler_CBS_Create_server+0xf8>
    if ( !_Scheduler_CBS_Server_list[i] )                             
      break;                                                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
 8007df0:	34 01 ff e6 	mvi r1,-26                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( !_Scheduler_CBS_Server_list[i] )                             
      break;                                                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
 8007df4:	45 84 00 1c 	be r12,r4,8007e64 <_Scheduler_CBS_Create_server+0xdc>
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
 8007df8:	58 6c 00 00 	sw (r3+0),r12                                  
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
 8007dfc:	34 01 00 10 	mvi r1,16                                      
 8007e00:	5b 82 00 1c 	sw (sp+28),r2                                  
 8007e04:	5b 83 00 18 	sw (sp+24),r3                                  
 8007e08:	f8 00 09 47 	calli 800a324 <_Workspace_Allocate>            
  the_server = _Scheduler_CBS_Server_list[*server_id];                
 8007e0c:	2b 83 00 18 	lw r3,(sp+24)                                  
 8007e10:	29 c4 00 00 	lw r4,(r14+0)                                  
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
 8007e14:	b5 8c 60 00 	add r12,r12,r12                                
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
 8007e18:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
 8007e1c:	b5 8c 60 00 	add r12,r12,r12                                
 8007e20:	b5 ac 60 00 	add r12,r13,r12                                
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
 8007e24:	b4 63 18 00 	add r3,r3,r3                                   
 8007e28:	b4 63 18 00 	add r3,r3,r3                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
 8007e2c:	59 81 00 00 	sw (r12+0),r1                                  
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
 8007e30:	b4 83 18 00 	add r3,r4,r3                                   
 8007e34:	28 63 00 00 	lw r3,(r3+0)                                   
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
 8007e38:	34 01 ff ef 	mvi r1,-17                                     
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
 8007e3c:	2b 82 00 1c 	lw r2,(sp+28)                                  
 8007e40:	44 60 00 09 	be r3,r0,8007e64 <_Scheduler_CBS_Create_server+0xdc><== NEVER TAKEN
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
 8007e44:	29 64 00 00 	lw r4,(r11+0)                                  
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
 8007e48:	34 01 00 00 	mvi r1,0                                       
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
 8007e4c:	58 64 00 04 	sw (r3+4),r4                                   
 8007e50:	29 65 00 04 	lw r5,(r11+4)                                  
  the_server->task_id = -1;                                           
 8007e54:	34 04 ff ff 	mvi r4,-1                                      
 8007e58:	58 64 00 00 	sw (r3+0),r4                                   
  the_server->cbs_budget_overrun = budget_overrun_callback;           
 8007e5c:	58 62 00 0c 	sw (r3+12),r2                                  
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
 8007e60:	58 65 00 08 	sw (r3+8),r5                                   
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
 8007e64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007e68:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007e6c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007e70:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007e74:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8007e78:	37 9c 00 1c 	addi sp,sp,28                                  
 8007e7c:	c3 a0 00 00 	ret                                            
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( !_Scheduler_CBS_Server_list[i] )                             
 8007e80:	28 25 00 04 	lw r5,(r1+4)                                   
 8007e84:	34 21 00 04 	addi r1,r1,4                                   
 8007e88:	5c a0 ff d8 	bne r5,r0,8007de8 <_Scheduler_CBS_Create_server+0x60>
 8007e8c:	e3 ff ff d9 	bi 8007df0 <_Scheduler_CBS_Create_server+0x68> 
 8007e90:	34 0c 00 00 	mvi r12,0                                      
 8007e94:	e3 ff ff d9 	bi 8007df8 <_Scheduler_CBS_Create_server+0x70> 
                                                                      

08007f38 <_Scheduler_CBS_Detach_thread>: int _Scheduler_CBS_Detach_thread ( Scheduler_CBS_Server_id server_id, rtems_id task_id ) {
 8007f38:	37 9c ff ec 	addi sp,sp,-20                                 
 8007f3c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8007f40:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8007f44:	5b 8d 00 08 	sw (sp+8),r13                                  
 8007f48:	5b 9d 00 04 	sw (sp+4),ra                                   
 8007f4c:	b8 40 68 00 	mv r13,r2                                      
 8007f50:	b8 20 60 00 	mv r12,r1                                      
  Objects_Locations location;                                         
  Thread_Control *the_thread;                                         
  Scheduler_CBS_Per_thread *sched_info;                               
                                                                      
  the_thread = _Thread_Get(task_id, &location);                       
 8007f54:	37 82 00 14 	addi r2,sp,20                                  
 8007f58:	b9 a0 08 00 	mv r1,r13                                      
 8007f5c:	f8 00 04 0a 	calli 8008f84 <_Thread_Get>                    
 8007f60:	b8 20 58 00 	mv r11,r1                                      
  /* The routine _Thread_Get may disable dispatch and not enable again. */
  if ( the_thread ) {                                                 
 8007f64:	44 20 00 02 	be r1,r0,8007f6c <_Scheduler_CBS_Detach_thread+0x34>
    _Thread_Enable_dispatch();                                        
 8007f68:	f8 00 03 fb 	calli 8008f54 <_Thread_Enable_dispatch>        
  }                                                                   
                                                                      
  if ( server_id >= _Scheduler_CBS_Maximum_servers )                  
 8007f6c:	78 03 08 02 	mvhi r3,0x802                                  
 8007f70:	38 63 30 18 	ori r3,r3,0x3018                               
 8007f74:	28 61 00 00 	lw r1,(r3+0)                                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
 8007f78:	34 03 ff ee 	mvi r3,-18                                     
  /* The routine _Thread_Get may disable dispatch and not enable again. */
  if ( the_thread ) {                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
                                                                      
  if ( server_id >= _Scheduler_CBS_Maximum_servers )                  
 8007f7c:	51 81 00 19 	bgeu r12,r1,8007fe0 <_Scheduler_CBS_Detach_thread+0xa8>
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  if ( !the_thread )                                                  
 8007f80:	45 60 00 18 	be r11,r0,8007fe0 <_Scheduler_CBS_Detach_thread+0xa8>
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  /* Server is not valid. */                                          
  if ( !_Scheduler_CBS_Server_list[server_id] )                       
 8007f84:	78 01 08 02 	mvhi r1,0x802                                  
 8007f88:	38 21 3e e8 	ori r1,r1,0x3ee8                               
 8007f8c:	28 21 00 00 	lw r1,(r1+0)                                   
 8007f90:	b5 8c 60 00 	add r12,r12,r12                                
 8007f94:	b5 8c 60 00 	add r12,r12,r12                                
 8007f98:	b4 2c 60 00 	add r12,r1,r12                                 
 8007f9c:	29 81 00 00 	lw r1,(r12+0)                                  
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
 8007fa0:	34 03 ff e7 	mvi r3,-25                                     
  if ( server_id >= _Scheduler_CBS_Maximum_servers )                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  if ( !the_thread )                                                  
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  /* Server is not valid. */                                          
  if ( !_Scheduler_CBS_Server_list[server_id] )                       
 8007fa4:	44 20 00 0f 	be r1,r0,8007fe0 <_Scheduler_CBS_Detach_thread+0xa8>
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
 8007fa8:	28 22 00 00 	lw r2,(r1+0)                                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
 8007fac:	34 03 ff ee 	mvi r3,-18                                     
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
  /* Server is not valid. */                                          
  if ( !_Scheduler_CBS_Server_list[server_id] )                       
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
 8007fb0:	5c 4d 00 0c 	bne r2,r13,8007fe0 <_Scheduler_CBS_Detach_thread+0xa8><== NEVER TAKEN
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
 8007fb4:	29 66 00 88 	lw r6,(r11+136)                                
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
 8007fb8:	41 63 00 9c 	lbu r3,(r11+156)                               
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
 8007fbc:	29 65 00 a0 	lw r5,(r11+160)                                
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
 8007fc0:	29 64 00 a4 	lw r4,(r11+164)                                
    return SCHEDULER_CBS_ERROR_NOSERVER;                              
  /* Thread and server are not attached. */                           
  if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )    
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
 8007fc4:	34 02 ff ff 	mvi r2,-1                                      
 8007fc8:	58 22 00 00 	sw (r1+0),r2                                   
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
 8007fcc:	58 c0 00 18 	sw (r6+24),r0                                  
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
 8007fd0:	31 63 00 70 	sb (r11+112),r3                                
                                                                      
  _Scheduler_CBS_Server_list[server_id]->task_id = -1;                
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  sched_info->cbs_server = NULL;                                      
                                                                      
  the_thread->budget_algorithm = the_thread->Start.budget_algorithm;  
 8007fd4:	59 65 00 78 	sw (r11+120),r5                                
  the_thread->budget_callout   = the_thread->Start.budget_callout;    
 8007fd8:	59 64 00 7c 	sw (r11+124),r4                                
  the_thread->is_preemptible   = the_thread->Start.is_preemptible;    
                                                                      
  return SCHEDULER_CBS_OK;                                            
 8007fdc:	34 03 00 00 	mvi r3,0                                       
}                                                                     
 8007fe0:	b8 60 08 00 	mv r1,r3                                       
 8007fe4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007fe8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8007fec:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8007ff0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8007ff4:	37 9c 00 14 	addi sp,sp,20                                  
 8007ff8:	c3 a0 00 00 	ret                                            
                                                                      

08008224 <_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++ ) {
 8008224:	78 03 08 02 	mvhi r3,0x802                                  
 8008228:	38 63 30 18 	ori r3,r3,0x3018                               
 800822c:	28 66 00 00 	lw r6,(r3+0)                                   
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
      return SCHEDULER_CBS_OK;                                        
    }                                                                 
  }                                                                   
  return SCHEDULER_CBS_ERROR_NOSERVER;                                
 8008230:	34 03 ff e7 	mvi r3,-25                                     
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 8008234:	44 c0 00 0d 	be r6,r0,8008268 <_Scheduler_CBS_Get_server_id+0x44><== NEVER TAKEN
 8008238:	78 03 08 02 	mvhi r3,0x802                                  
 800823c:	38 63 3e e8 	ori r3,r3,0x3ee8                               
 8008240:	28 63 00 00 	lw r3,(r3+0)                                   
 8008244:	34 04 00 00 	mvi r4,0                                       
    if ( _Scheduler_CBS_Server_list[i] &&                             
 8008248:	28 65 00 00 	lw r5,(r3+0)                                   
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 800824c:	34 63 00 04 	addi r3,r3,4                                   
    if ( _Scheduler_CBS_Server_list[i] &&                             
 8008250:	44 a0 00 03 	be r5,r0,800825c <_Scheduler_CBS_Get_server_id+0x38>
 8008254:	28 a5 00 00 	lw r5,(r5+0)                                   
 8008258:	44 a1 00 06 	be r5,r1,8008270 <_Scheduler_CBS_Get_server_id+0x4c>
  rtems_id                 task_id,                                   
  Scheduler_CBS_Server_id *server_id                                  
)                                                                     
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
 800825c:	34 84 00 01 	addi r4,r4,1                                   
 8008260:	54 c4 ff fa 	bgu r6,r4,8008248 <_Scheduler_CBS_Get_server_id+0x24>
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
      return SCHEDULER_CBS_OK;                                        
    }                                                                 
  }                                                                   
  return SCHEDULER_CBS_ERROR_NOSERVER;                                
 8008264:	34 03 ff e7 	mvi r3,-25                                     
}                                                                     
 8008268:	b8 60 08 00 	mv r1,r3                                       
 800826c:	c3 a0 00 00 	ret                                            
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( _Scheduler_CBS_Server_list[i] &&                             
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
      return SCHEDULER_CBS_OK;                                        
 8008270:	34 03 00 00 	mvi r3,0                                       
{                                                                     
  unsigned int i;                                                     
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( _Scheduler_CBS_Server_list[i] &&                             
         _Scheduler_CBS_Server_list[i]->task_id == task_id ) {        
      *server_id = i;                                                 
 8008274:	58 44 00 00 	sw (r2+0),r4                                   
      return SCHEDULER_CBS_OK;                                        
    }                                                                 
  }                                                                   
  return SCHEDULER_CBS_ERROR_NOSERVER;                                
}                                                                     
 8008278:	b8 60 08 00 	mv r1,r3                                       
 800827c:	c3 a0 00 00 	ret                                            
                                                                      

080082f0 <_Scheduler_CBS_Initialize>: int _Scheduler_CBS_Initialize(void) {
 80082f0:	37 9c ff f8 	addi sp,sp,-8                                  
 80082f4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80082f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
 80082fc:	78 0b 08 02 	mvhi r11,0x802                                 
 8008300:	39 6b 30 18 	ori r11,r11,0x3018                             
 8008304:	29 61 00 00 	lw r1,(r11+0)                                  
 8008308:	b4 21 08 00 	add r1,r1,r1                                   
 800830c:	b4 21 08 00 	add r1,r1,r1                                   
}                                                                     
                                                                      
int _Scheduler_CBS_Initialize(void)                                   
{                                                                     
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
 8008310:	f8 00 08 05 	calli 800a324 <_Workspace_Allocate>            
 8008314:	78 02 08 02 	mvhi r2,0x802                                  
 8008318:	38 42 3e e8 	ori r2,r2,0x3ee8                               
 800831c:	58 41 00 00 	sw (r2+0),r1                                   
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
 8008320:	34 02 ff ef 	mvi r2,-17                                     
int _Scheduler_CBS_Initialize(void)                                   
{                                                                     
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
 8008324:	44 20 00 09 	be r1,r0,8008348 <_Scheduler_CBS_Initialize+0x58><== NEVER TAKEN
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
 8008328:	29 63 00 00 	lw r3,(r11+0)                                  
    _Scheduler_CBS_Server_list[i] = NULL;                             
  }                                                                   
  return SCHEDULER_CBS_OK;                                            
 800832c:	34 02 00 00 	mvi r2,0                                       
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
 8008330:	44 60 00 06 	be r3,r0,8008348 <_Scheduler_CBS_Initialize+0x58><== NEVER TAKEN
    _Scheduler_CBS_Server_list[i] = NULL;                             
 8008334:	58 20 00 00 	sw (r1+0),r0                                   
  unsigned int i;                                                     
  _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
      _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
  if ( !_Scheduler_CBS_Server_list )                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
  for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {                
 8008338:	34 42 00 01 	addi r2,r2,1                                   
 800833c:	34 21 00 04 	addi r1,r1,4                                   
 8008340:	54 62 ff fd 	bgu r3,r2,8008334 <_Scheduler_CBS_Initialize+0x44>
    _Scheduler_CBS_Server_list[i] = NULL;                             
  }                                                                   
  return SCHEDULER_CBS_OK;                                            
 8008344:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 8008348:	b8 40 08 00 	mv r1,r2                                       
 800834c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008350:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8008354:	37 9c 00 08 	addi sp,sp,8                                   
 8008358:	c3 a0 00 00 	ret                                            
                                                                      

08006f5c <_Scheduler_CBS_Release_job>: void _Scheduler_CBS_Release_job( Thread_Control *the_thread, uint32_t deadline ) {
 8006f5c:	37 9c ff fc 	addi sp,sp,-4                                  
 8006f60:	5b 9d 00 04 	sw (sp+4),ra                                   
  Priority_Control new_priority;                                      
  Scheduler_CBS_Per_thread *sched_info =                              
    (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;          
  Scheduler_CBS_Server *serv_info =                                   
    (Scheduler_CBS_Server *) sched_info->cbs_server;                  
 8006f64:	28 23 00 88 	lw r3,(r1+136)                                 
                                                                      
void _Scheduler_CBS_Release_job(                                      
  Thread_Control    *the_thread,                                      
  uint32_t           deadline                                         
)                                                                     
{                                                                     
 8006f68:	b8 40 20 00 	mv r4,r2                                       
  Priority_Control new_priority;                                      
  Scheduler_CBS_Per_thread *sched_info =                              
    (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;          
  Scheduler_CBS_Server *serv_info =                                   
 8006f6c:	28 63 00 18 	lw r3,(r3+24)                                  
    (Scheduler_CBS_Server *) sched_info->cbs_server;                  
                                                                      
  if (deadline) {                                                     
 8006f70:	44 40 00 13 	be r2,r0,8006fbc <_Scheduler_CBS_Release_job+0x60>
    /* Initializing or shifting deadline. */                          
    if (serv_info)                                                    
 8006f74:	44 60 00 15 	be r3,r0,8006fc8 <_Scheduler_CBS_Release_job+0x6c>
      new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
 8006f78:	78 02 08 02 	mvhi r2,0x802                                  
 8006f7c:	38 42 2a c8 	ori r2,r2,0x2ac8                               
 8006f80:	28 64 00 04 	lw r4,(r3+4)                                   
 8006f84:	28 42 00 00 	lw r2,(r2+0)                                   
 8006f88:	78 05 08 01 	mvhi r5,0x801                                  
 8006f8c:	38 a5 fc 8c 	ori r5,r5,0xfc8c                               
 8006f90:	b4 44 10 00 	add r2,r2,r4                                   
 8006f94:	28 a4 00 00 	lw r4,(r5+0)                                   
 8006f98:	a0 44 10 00 	and r2,r2,r4                                   
    new_priority = the_thread->Start.initial_priority;                
  }                                                                   
                                                                      
  /* Budget replenishment for the next job. */                        
  if (serv_info)                                                      
    the_thread->cpu_time_budget = serv_info->parameters.budget;       
 8006f9c:	28 63 00 08 	lw r3,(r3+8)                                   
 8006fa0:	58 23 00 74 	sw (r1+116),r3                                 
                                                                      
  the_thread->real_priority = new_priority;                           
 8006fa4:	58 22 00 18 	sw (r1+24),r2                                  
  _Thread_Change_priority(the_thread, new_priority, true);            
 8006fa8:	34 03 00 01 	mvi r3,1                                       
 8006fac:	f8 00 01 4f 	calli 80074e8 <_Thread_Change_priority>        
}                                                                     
 8006fb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006fb4:	37 9c 00 04 	addi sp,sp,4                                   
 8006fb8:	c3 a0 00 00 	ret                                            
      new_priority = (_Watchdog_Ticks_since_boot + deadline)          
        & ~SCHEDULER_EDF_PRIO_MSB;                                    
  }                                                                   
  else {                                                              
    /* Switch back to background priority. */                         
    new_priority = the_thread->Start.initial_priority;                
 8006fbc:	28 22 00 ac 	lw r2,(r1+172)                                 
  }                                                                   
                                                                      
  /* Budget replenishment for the next job. */                        
  if (serv_info)                                                      
 8006fc0:	5c 64 ff f7 	bne r3,r4,8006f9c <_Scheduler_CBS_Release_job+0x40><== ALWAYS TAKEN
 8006fc4:	e3 ff ff f8 	bi 8006fa4 <_Scheduler_CBS_Release_job+0x48>   <== NOT EXECUTED
    /* Initializing or shifting deadline. */                          
    if (serv_info)                                                    
      new_priority = (_Watchdog_Ticks_since_boot + serv_info->parameters.deadline)
        & ~SCHEDULER_EDF_PRIO_MSB;                                    
    else                                                              
      new_priority = (_Watchdog_Ticks_since_boot + deadline)          
 8006fc8:	78 02 08 02 	mvhi r2,0x802                                  
 8006fcc:	38 42 2a c8 	ori r2,r2,0x2ac8                               
 8006fd0:	28 42 00 00 	lw r2,(r2+0)                                   
 8006fd4:	b4 82 10 00 	add r2,r4,r2                                   
 8006fd8:	78 04 08 01 	mvhi r4,0x801                                  
 8006fdc:	38 84 fc 8c 	ori r4,r4,0xfc8c                               
 8006fe0:	28 83 00 00 	lw r3,(r4+0)                                   
 8006fe4:	a0 43 10 00 	and r2,r2,r3                                   
 8006fe8:	e3 ff ff ef 	bi 8006fa4 <_Scheduler_CBS_Release_job+0x48>   
                                                                      

08006fec <_Scheduler_CBS_Unblock>: #include <rtems/score/schedulercbs.h> void _Scheduler_CBS_Unblock( Thread_Control *the_thread ) {
 8006fec:	37 9c ff ec 	addi sp,sp,-20                                 
 8006ff0:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006ff4:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006ff8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8006ffc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8007000:	5b 9d 00 04 	sw (sp+4),ra                                   
 8007004:	b8 20 58 00 	mv r11,r1                                      
  Scheduler_CBS_Per_thread *sched_info;                               
  Scheduler_CBS_Server *serv_info;                                    
  Priority_Control new_priority;                                      
                                                                      
  _Scheduler_EDF_Enqueue(the_thread);                                 
 8007008:	f8 00 00 59 	calli 800716c <_Scheduler_EDF_Enqueue>         
  /* TODO: flash critical section? */                                 
                                                                      
  sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
  serv_info = (Scheduler_CBS_Server *) sched_info->cbs_server;        
 800700c:	29 61 00 88 	lw r1,(r11+136)                                
 8007010:	28 2c 00 18 	lw r12,(r1+24)                                 
   * 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) {                                                    
 8007014:	45 80 00 0d 	be r12,r0,8007048 <_Scheduler_CBS_Unblock+0x5c>
    time_t deadline = serv_info->parameters.deadline;                 
    time_t budget = serv_info->parameters.budget;                     
    time_t deadline_left = the_thread->cpu_time_budget;               
    time_t budget_left = the_thread->real_priority -                  
 8007018:	78 01 08 02 	mvhi r1,0x802                                  
 800701c:	38 21 2a c8 	ori r1,r1,0x2ac8                               
 8007020:	28 21 00 00 	lw r1,(r1+0)                                   
 8007024:	29 6d 00 18 	lw r13,(r11+24)                                
                           _Watchdog_Ticks_since_boot;                
                                                                      
    if ( deadline*budget_left > budget*deadline_left ) {              
 8007028:	29 82 00 04 	lw r2,(r12+4)                                  
 800702c:	c9 a1 08 00 	sub r1,r13,r1                                  
 8007030:	f8 00 5b 5a 	calli 801dd98 <__mulsi3>                       
 8007034:	b8 20 70 00 	mv r14,r1                                      
 8007038:	29 82 00 08 	lw r2,(r12+8)                                  
 800703c:	29 61 00 74 	lw r1,(r11+116)                                
 8007040:	f8 00 5b 56 	calli 801dd98 <__mulsi3>                       
 8007044:	49 c1 00 18 	bg r14,r1,80070a4 <_Scheduler_CBS_Unblock+0xb8>
      /* Put late unblocked task to background until the end of period. */
      new_priority = the_thread->Start.initial_priority;              
      if ( the_thread->real_priority != new_priority )                
        the_thread->real_priority = new_priority;                     
      if ( the_thread->current_priority != new_priority )             
        _Thread_Change_priority(the_thread, new_priority, true);      
 8007048:	29 61 00 14 	lw r1,(r11+20)                                 
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
 800704c:	78 0c 08 02 	mvhi r12,0x802                                 
 8007050:	39 8c 2e 80 	ori r12,r12,0x2e80                             
 8007054:	29 84 00 14 	lw r4,(r12+20)                                 
 8007058:	78 02 08 02 	mvhi r2,0x802                                  
 800705c:	38 42 20 1c 	ori r2,r2,0x201c                               
 8007060:	28 43 00 30 	lw r3,(r2+48)                                  
 8007064:	28 82 00 14 	lw r2,(r4+20)                                  
 8007068:	d8 60 00 00 	call r3                                        
 800706c:	4c 01 00 07 	bge r0,r1,8007088 <_Scheduler_CBS_Unblock+0x9c>
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
 8007070:	29 81 00 10 	lw r1,(r12+16)                                 
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
 8007074:	59 8b 00 14 	sw (r12+20),r11                                
    if ( _Thread_Executing->is_preemptible ||                         
 8007078:	40 21 00 70 	lbu r1,(r1+112)                                
 800707c:	44 20 00 13 	be r1,r0,80070c8 <_Scheduler_CBS_Unblock+0xdc> 
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
 8007080:	34 01 00 01 	mvi r1,1                                       
 8007084:	31 81 00 0c 	sb (r12+12),r1                                 
  }                                                                   
}                                                                     
 8007088:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800708c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8007090:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8007094:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8007098:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800709c:	37 9c 00 14 	addi sp,sp,20                                  
 80070a0:	c3 a0 00 00 	ret                                            
    time_t budget_left = the_thread->real_priority -                  
                           _Watchdog_Ticks_since_boot;                
                                                                      
    if ( deadline*budget_left > budget*deadline_left ) {              
      /* Put late unblocked task to background until the end of period. */
      new_priority = the_thread->Start.initial_priority;              
 80070a4:	29 62 00 ac 	lw r2,(r11+172)                                
      if ( the_thread->real_priority != new_priority )                
 80070a8:	45 a2 00 02 	be r13,r2,80070b0 <_Scheduler_CBS_Unblock+0xc4>
        the_thread->real_priority = new_priority;                     
 80070ac:	59 62 00 18 	sw (r11+24),r2                                 
      if ( the_thread->current_priority != new_priority )             
 80070b0:	29 61 00 14 	lw r1,(r11+20)                                 
 80070b4:	44 22 ff e6 	be r1,r2,800704c <_Scheduler_CBS_Unblock+0x60> 
        _Thread_Change_priority(the_thread, new_priority, true);      
 80070b8:	b9 60 08 00 	mv r1,r11                                      
 80070bc:	34 03 00 01 	mvi r3,1                                       
 80070c0:	f8 00 01 0a 	calli 80074e8 <_Thread_Change_priority>        
 80070c4:	e3 ff ff e1 	bi 8007048 <_Scheduler_CBS_Unblock+0x5c>       
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_higher_than( the_thread->current_priority,
       _Thread_Heir->current_priority)) {                             
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
 80070c8:	29 62 00 14 	lw r2,(r11+20)                                 
 80070cc:	44 41 ff ed 	be r2,r1,8007080 <_Scheduler_CBS_Unblock+0x94> <== NEVER TAKEN
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
  }                                                                   
}                                                                     
 80070d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80070d4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80070d8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80070dc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80070e0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80070e4:	37 9c 00 14 	addi sp,sp,20                                  
 80070e8:	c3 a0 00 00 	ret                                            
                                                                      

08006f1c <_Scheduler_EDF_Allocate>: #include <rtems/score/wkspace.h> void *_Scheduler_EDF_Allocate( Thread_Control *the_thread ) {
 8006f1c:	37 9c ff f8 	addi sp,sp,-8                                  
 8006f20:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006f24:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006f28:	b8 20 58 00 	mv r11,r1                                      
  void *sched;                                                        
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
 8006f2c:	34 01 00 18 	mvi r1,24                                      
 8006f30:	f8 00 07 da 	calli 8008e98 <_Workspace_Allocate>            
                                                                      
  if ( sched ) {                                                      
 8006f34:	44 20 00 05 	be r1,r0,8006f48 <_Scheduler_EDF_Allocate+0x2c><== NEVER TAKEN
    the_thread->scheduler_info = sched;                               
 8006f38:	59 61 00 88 	sw (r11+136),r1                                
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
 8006f3c:	34 02 00 02 	mvi r2,2                                       
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
                                                                      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
 8006f40:	58 2b 00 00 	sw (r1+0),r11                                  
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
 8006f44:	58 22 00 14 	sw (r1+20),r2                                  
  }                                                                   
                                                                      
  return sched;                                                       
}                                                                     
 8006f48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006f4c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006f50:	37 9c 00 08 	addi sp,sp,8                                   
 8006f54:	c3 a0 00 00 	ret                                            
                                                                      

08007190 <_Scheduler_EDF_Unblock>: #include <rtems/score/scheduleredf.h> void _Scheduler_EDF_Unblock( Thread_Control *the_thread ) {
 8007190:	37 9c ff f4 	addi sp,sp,-12                                 
 8007194:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8007198:	5b 8c 00 08 	sw (sp+8),r12                                  
 800719c:	5b 9d 00 04 	sw (sp+4),ra                                   
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
 80071a0:	78 0b 08 02 	mvhi r11,0x802                                 
#include <rtems/score/scheduleredf.h>                                 
                                                                      
void _Scheduler_EDF_Unblock(                                          
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
 80071a4:	b8 20 60 00 	mv r12,r1                                      
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
 80071a8:	39 6b 2e 80 	ori r11,r11,0x2e80                             
                                                                      
void _Scheduler_EDF_Unblock(                                          
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler_EDF_Enqueue(the_thread);                                 
 80071ac:	fb ff ff 8b 	calli 8006fd8 <_Scheduler_EDF_Enqueue>         
   *    a context switch.                                             
   *  Pseudo-ISR case:                                                
   *    Even if the thread isn't preemptible, if the new heir is      
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
 80071b0:	29 61 00 14 	lw r1,(r11+20)                                 
 80071b4:	78 02 08 02 	mvhi r2,0x802                                  
 80071b8:	38 42 20 18 	ori r2,r2,0x2018                               
 80071bc:	28 43 00 30 	lw r3,(r2+48)                                  
 80071c0:	28 21 00 14 	lw r1,(r1+20)                                  
 80071c4:	29 82 00 14 	lw r2,(r12+20)                                 
 80071c8:	d8 60 00 00 	call r3                                        
 80071cc:	4c 20 00 07 	bge r1,r0,80071e8 <_Scheduler_EDF_Unblock+0x58>
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
 80071d0:	29 61 00 10 	lw r1,(r11+16)                                 
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
 80071d4:	59 6c 00 14 	sw (r11+20),r12                                
    if ( _Thread_Executing->is_preemptible ||                         
 80071d8:	40 21 00 70 	lbu r1,(r1+112)                                
 80071dc:	44 20 00 08 	be r1,r0,80071fc <_Scheduler_EDF_Unblock+0x6c> 
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
 80071e0:	34 01 00 01 	mvi r1,1                                       
 80071e4:	31 61 00 0c 	sb (r11+12),r1                                 
  }                                                                   
}                                                                     
 80071e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80071ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80071f0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80071f4:	37 9c 00 0c 	addi sp,sp,12                                  
 80071f8:	c3 a0 00 00 	ret                                            
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
 80071fc:	29 82 00 14 	lw r2,(r12+20)                                 
 8007200:	5c 41 ff fa 	bne r2,r1,80071e8 <_Scheduler_EDF_Unblock+0x58><== ALWAYS TAKEN
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
 8007204:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8007208:	31 61 00 0c 	sb (r11+12),r1                                 <== NOT EXECUTED
 800720c:	e3 ff ff f7 	bi 80071e8 <_Scheduler_EDF_Unblock+0x58>       <== NOT EXECUTED
                                                                      

0800600c <_Scheduler_priority_Block>: ) { Scheduler_priority_Per_thread *sched_info; Chain_Control *ready; sched_info = (Scheduler_priority_Per_thread *) the_thread->scheduler_info;
 800600c:	28 23 00 88 	lw r3,(r1+136)                                 
  ready      = sched_info->ready_chain;                               
 8006010:	28 62 00 00 	lw r2,(r3+0)                                   
                                                                      
  if ( _Chain_Has_only_one_node( ready ) ) {                          
 8006014:	28 45 00 00 	lw r5,(r2+0)                                   
 8006018:	28 44 00 08 	lw r4,(r2+8)                                   
 800601c:	44 a4 00 37 	be r5,r4,80060f8 <_Scheduler_priority_Block+0xec>
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 8006020:	28 23 00 00 	lw r3,(r1+0)                                   
  previous       = the_node->previous;                                
 8006024:	28 22 00 04 	lw r2,(r1+4)                                   
  next->previous = previous;                                          
 8006028:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 800602c:	58 43 00 00 	sw (r2+0),r3                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_heir (                           
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Heir );                              
 8006030:	78 02 08 02 	mvhi r2,0x802                                  
 8006034:	38 42 0d e0 	ori r2,r2,0xde0                                
{                                                                     
  _Scheduler_priority_Ready_queue_extract( the_thread );              
                                                                      
  /* TODO: flash critical section? */                                 
                                                                      
  if ( _Thread_Is_heir( the_thread ) )                                
 8006038:	28 43 00 14 	lw r3,(r2+20)                                  
 800603c:	44 23 00 07 	be r1,r3,8006058 <_Scheduler_priority_Block+0x4c>
     _Scheduler_priority_Schedule_body();                             
                                                                      
  if ( _Thread_Is_executing( the_thread ) )                           
 8006040:	28 43 00 10 	lw r3,(r2+16)                                  
 8006044:	44 23 00 02 	be r1,r3,800604c <_Scheduler_priority_Block+0x40>
 8006048:	c3 a0 00 00 	ret                                            
    _Thread_Dispatch_necessary = true;                                
 800604c:	34 01 00 01 	mvi r1,1                                       
 8006050:	30 41 00 0c 	sb (r2+12),r1                                  
 8006054:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 8006058:	78 03 08 02 	mvhi r3,0x802                                  
 800605c:	38 63 0e 20 	ori r3,r3,0xe20                                
 8006060:	2c 64 00 00 	lhu r4,(r3+0)                                  
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
 8006064:	78 03 08 02 	mvhi r3,0x802                                  
 8006068:	38 63 00 18 	ori r3,r3,0x18                                 
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 800606c:	28 67 00 00 	lw r7,(r3+0)                                   
 8006070:	20 84 ff ff 	andi r4,r4,0xffff                              
 8006074:	34 03 00 ff 	mvi r3,255                                     
 8006078:	54 83 00 3c 	bgu r4,r3,8006168 <_Scheduler_priority_Block+0x15c>
 800607c:	78 05 08 01 	mvhi r5,0x801                                  
 8006080:	38 a5 da a8 	ori r5,r5,0xdaa8                               
 8006084:	b4 a4 20 00 	add r4,r5,r4                                   
 8006088:	40 84 00 00 	lbu r4,(r4+0)                                  
 800608c:	34 84 00 08 	addi r4,r4,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8006090:	78 06 08 02 	mvhi r6,0x802                                  
 8006094:	38 c6 0e 40 	ori r6,r6,0xe40                                
 8006098:	b4 84 20 00 	add r4,r4,r4                                   
 800609c:	b4 c4 30 00 	add r6,r6,r4                                   
 80060a0:	2c c3 00 00 	lhu r3,(r6+0)                                  
 80060a4:	34 06 00 ff 	mvi r6,255                                     
 80060a8:	54 66 00 25 	bgu r3,r6,800613c <_Scheduler_priority_Block+0x130>
 80060ac:	b4 a3 18 00 	add r3,r5,r3                                   
 80060b0:	40 65 00 00 	lbu r5,(r3+0)                                  
 80060b4:	34 a5 00 08 	addi r5,r5,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 80060b8:	b4 84 18 00 	add r3,r4,r4                                   
 80060bc:	b4 63 18 00 	add r3,r3,r3                                   
 80060c0:	b4 63 18 00 	add r3,r3,r3                                   
 80060c4:	b4 a3 18 00 	add r3,r5,r3                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80060c8:	b4 63 20 00 	add r4,r3,r3                                   
 80060cc:	b4 83 18 00 	add r3,r4,r3                                   
 80060d0:	b4 63 18 00 	add r3,r3,r3                                   
 80060d4:	b4 63 18 00 	add r3,r3,r3                                   
 80060d8:	b4 e3 18 00 	add r3,r7,r3                                   
                                                                      
}                                                                     
 80060dc:	28 65 00 00 	lw r5,(r3+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 80060e0:	34 63 00 04 	addi r3,r3,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 80060e4:	34 04 00 00 	mvi r4,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80060e8:	44 a3 00 02 	be r5,r3,80060f0 <_Scheduler_priority_Block+0xe4><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 80060ec:	b8 a0 20 00 	mv r4,r5                                       
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 80060f0:	58 44 00 14 	sw (r2+20),r4                                  
 80060f4:	e3 ff ff d3 	bi 8006040 <_Scheduler_priority_Block+0x34>    
                                                                      
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (                  
  Priority_bit_map_Information *the_priority_map                      
)                                                                     
{                                                                     
  *the_priority_map->minor &= the_priority_map->block_minor;          
 80060f8:	28 64 00 04 	lw r4,(r3+4)                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 80060fc:	34 45 00 04 	addi r5,r2,4                                   
                                                                      
  head->next = tail;                                                  
 8006100:	58 45 00 00 	sw (r2+0),r5                                   
  head->previous = NULL;                                              
 8006104:	58 40 00 04 	sw (r2+4),r0                                   
  tail->previous = head;                                              
 8006108:	58 42 00 08 	sw (r2+8),r2                                   
 800610c:	2c 65 00 0e 	lhu r5,(r3+14)                                 
 8006110:	2c 82 00 00 	lhu r2,(r4+0)                                  
 8006114:	a0 45 10 00 	and r2,r2,r5                                   
 8006118:	0c 82 00 00 	sh (r4+0),r2                                   
  if ( *the_priority_map->minor == 0 )                                
 800611c:	5c 40 ff c5 	bne r2,r0,8006030 <_Scheduler_priority_Block+0x24>
    _Priority_Major_bit_map &= the_priority_map->block_major;         
 8006120:	78 02 08 02 	mvhi r2,0x802                                  
 8006124:	38 42 0e 20 	ori r2,r2,0xe20                                
 8006128:	2c 44 00 00 	lhu r4,(r2+0)                                  
 800612c:	2c 63 00 0c 	lhu r3,(r3+12)                                 
 8006130:	a0 64 18 00 	and r3,r3,r4                                   
 8006134:	0c 43 00 00 	sh (r2+0),r3                                   
 8006138:	e3 ff ff be 	bi 8006030 <_Scheduler_priority_Block+0x24>    
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 800613c:	00 63 00 01 	srui r3,r3,1                                   
 8006140:	00 63 00 01 	srui r3,r3,1                                   
 8006144:	00 63 00 01 	srui r3,r3,1                                   
 8006148:	00 63 00 01 	srui r3,r3,1                                   
 800614c:	00 63 00 01 	srui r3,r3,1                                   
 8006150:	00 63 00 01 	srui r3,r3,1                                   
 8006154:	00 63 00 01 	srui r3,r3,1                                   
 8006158:	00 63 00 01 	srui r3,r3,1                                   
 800615c:	b4 a3 18 00 	add r3,r5,r3                                   
 8006160:	40 65 00 00 	lbu r5,(r3+0)                                  
 8006164:	e3 ff ff d5 	bi 80060b8 <_Scheduler_priority_Block+0xac>    
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 8006168:	00 84 00 01 	srui r4,r4,1                                   
 800616c:	78 05 08 01 	mvhi r5,0x801                                  
 8006170:	00 84 00 01 	srui r4,r4,1                                   
 8006174:	38 a5 da a8 	ori r5,r5,0xdaa8                               
 8006178:	00 84 00 01 	srui r4,r4,1                                   
 800617c:	00 84 00 01 	srui r4,r4,1                                   
 8006180:	00 84 00 01 	srui r4,r4,1                                   
 8006184:	00 84 00 01 	srui r4,r4,1                                   
 8006188:	00 84 00 01 	srui r4,r4,1                                   
 800618c:	00 84 00 01 	srui r4,r4,1                                   
 8006190:	b4 a4 20 00 	add r4,r5,r4                                   
 8006194:	40 84 00 00 	lbu r4,(r4+0)                                  
 8006198:	e3 ff ff be 	bi 8006090 <_Scheduler_priority_Block+0x84>    
                                                                      

08006368 <_Scheduler_priority_Schedule>: RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) { Priority_bit_map_Control minor; Priority_bit_map_Control major; _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
 8006368:	78 01 08 02 	mvhi r1,0x802                                  
 800636c:	38 21 0e 20 	ori r1,r1,0xe20                                
 8006370:	2c 22 00 00 	lhu r2,(r1+0)                                  
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
    (Chain_Control *) _Scheduler.information                          
 8006374:	78 01 08 02 	mvhi r1,0x802                                  
 8006378:	38 21 00 18 	ori r1,r1,0x18                                 
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 800637c:	28 25 00 00 	lw r5,(r1+0)                                   
 8006380:	20 42 ff ff 	andi r2,r2,0xffff                              
 8006384:	34 01 00 ff 	mvi r1,255                                     
 8006388:	54 41 00 2d 	bgu r2,r1,800643c <_Scheduler_priority_Schedule+0xd4>
 800638c:	78 03 08 01 	mvhi r3,0x801                                  
 8006390:	38 63 da a8 	ori r3,r3,0xdaa8                               
 8006394:	b4 62 10 00 	add r2,r3,r2                                   
 8006398:	40 42 00 00 	lbu r2,(r2+0)                                  
 800639c:	34 42 00 08 	addi r2,r2,8                                   
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 80063a0:	78 04 08 02 	mvhi r4,0x802                                  
 80063a4:	38 84 0e 40 	ori r4,r4,0xe40                                
 80063a8:	b4 42 10 00 	add r2,r2,r2                                   
 80063ac:	b4 82 20 00 	add r4,r4,r2                                   
 80063b0:	2c 81 00 00 	lhu r1,(r4+0)                                  
 80063b4:	34 04 00 ff 	mvi r4,255                                     
 80063b8:	54 24 00 16 	bgu r1,r4,8006410 <_Scheduler_priority_Schedule+0xa8>
 80063bc:	b4 61 08 00 	add r1,r3,r1                                   
 80063c0:	40 23 00 00 	lbu r3,(r1+0)                                  
 80063c4:	34 63 00 08 	addi r3,r3,8                                   
                                                                      
  return (_Priority_Bits_index( major ) << 4) +                       
 80063c8:	b4 42 08 00 	add r1,r2,r2                                   
 80063cc:	b4 21 08 00 	add r1,r1,r1                                   
 80063d0:	b4 21 08 00 	add r1,r1,r1                                   
 80063d4:	b4 61 08 00 	add r1,r3,r1                                   
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80063d8:	b4 21 10 00 	add r2,r1,r1                                   
 80063dc:	b4 41 08 00 	add r1,r2,r1                                   
 80063e0:	b4 21 08 00 	add r1,r1,r1                                   
 80063e4:	b4 21 08 00 	add r1,r1,r1                                   
 80063e8:	b4 a1 08 00 	add r1,r5,r1                                   
#include <rtems/score/schedulerpriority.h>                            
                                                                      
void _Scheduler_priority_Schedule(void)                               
{                                                                     
  _Scheduler_priority_Schedule_body();                                
}                                                                     
 80063ec:	28 23 00 00 	lw r3,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 80063f0:	34 21 00 04 	addi r1,r1,4                                   
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
                                                                      
  return NULL;                                                        
 80063f4:	34 02 00 00 	mvi r2,0                                       
  Chain_Control       *the_ready_queue                                
)                                                                     
{                                                                     
  Priority_Control index = _Priority_bit_map_Get_highest();           
                                                                      
  if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )                
 80063f8:	44 61 00 02 	be r3,r1,8006400 <_Scheduler_priority_Schedule+0x98><== NEVER TAKEN
    return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
 80063fc:	b8 60 10 00 	mv r2,r3                                       
 *                                                                    
 *  @param[in] the_thread  - pointer to thread                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void)     
{                                                                     
  _Thread_Heir = _Scheduler_priority_Ready_queue_first(               
 8006400:	78 01 08 02 	mvhi r1,0x802                                  
 8006404:	38 21 0d e0 	ori r1,r1,0xde0                                
 8006408:	58 22 00 14 	sw (r1+20),r2                                  
 800640c:	c3 a0 00 00 	ret                                            
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );        
 8006410:	00 21 00 01 	srui r1,r1,1                                   
 8006414:	00 21 00 01 	srui r1,r1,1                                   
 8006418:	00 21 00 01 	srui r1,r1,1                                   
 800641c:	00 21 00 01 	srui r1,r1,1                                   
 8006420:	00 21 00 01 	srui r1,r1,1                                   
 8006424:	00 21 00 01 	srui r1,r1,1                                   
 8006428:	00 21 00 01 	srui r1,r1,1                                   
 800642c:	00 21 00 01 	srui r1,r1,1                                   
 8006430:	b4 61 08 00 	add r1,r3,r1                                   
 8006434:	40 23 00 00 	lbu r3,(r1+0)                                  
 8006438:	e3 ff ff e4 	bi 80063c8 <_Scheduler_priority_Schedule+0x60> 
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{                                                                     
  Priority_bit_map_Control minor;                                     
  Priority_bit_map_Control major;                                     
                                                                      
  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );         
 800643c:	00 42 00 01 	srui r2,r2,1                                   
 8006440:	78 03 08 01 	mvhi r3,0x801                                  
 8006444:	00 42 00 01 	srui r2,r2,1                                   
 8006448:	38 63 da a8 	ori r3,r3,0xdaa8                               
 800644c:	00 42 00 01 	srui r2,r2,1                                   
 8006450:	00 42 00 01 	srui r2,r2,1                                   
 8006454:	00 42 00 01 	srui r2,r2,1                                   
 8006458:	00 42 00 01 	srui r2,r2,1                                   
 800645c:	00 42 00 01 	srui r2,r2,1                                   
 8006460:	00 42 00 01 	srui r2,r2,1                                   
 8006464:	b4 62 10 00 	add r2,r3,r2                                   
 8006468:	40 42 00 00 	lbu r2,(r2+0)                                  
 800646c:	e3 ff ff cd 	bi 80063a0 <_Scheduler_priority_Schedule+0x38> 
                                                                      

08006470 <_Scheduler_priority_Tick>: #include <rtems/system.h> #include <rtems/score/schedulerpriority.h> void _Scheduler_priority_Tick( void ) {
 8006470:	37 9c ff f8 	addi sp,sp,-8                                  
 8006474:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control *executing;                                          
                                                                      
  executing = _Thread_Executing;                                      
 8006478:	78 01 08 02 	mvhi r1,0x802                                  
 800647c:	38 21 0d e0 	ori r1,r1,0xde0                                
 8006480:	28 21 00 10 	lw r1,(r1+16)                                  
  /*                                                                  
   *  If the thread is not preemptible or is not ready, then          
   *  just return.                                                    
   */                                                                 
                                                                      
  if ( !executing->is_preemptible )                                   
 8006484:	40 22 00 70 	lbu r2,(r1+112)                                
 8006488:	44 40 00 09 	be r2,r0,80064ac <_Scheduler_priority_Tick+0x3c>
    return;                                                           
                                                                      
  if ( !_States_Is_ready( executing->current_state ) )                
 800648c:	28 22 00 10 	lw r2,(r1+16)                                  
 8006490:	5c 40 00 07 	bne r2,r0,80064ac <_Scheduler_priority_Tick+0x3c>
                                                                      
  /*                                                                  
   *  The cpu budget algorithm determines what happens next.          
   */                                                                 
                                                                      
  switch ( executing->budget_algorithm ) {                            
 8006494:	28 22 00 78 	lw r2,(r1+120)                                 
 8006498:	44 40 00 05 	be r2,r0,80064ac <_Scheduler_priority_Tick+0x3c>
 800649c:	34 03 00 02 	mvi r3,2                                       
 80064a0:	50 62 00 0d 	bgeu r3,r2,80064d4 <_Scheduler_priority_Tick+0x64>
 80064a4:	34 03 00 03 	mvi r3,3                                       
 80064a8:	44 43 00 04 	be r2,r3,80064b8 <_Scheduler_priority_Tick+0x48><== ALWAYS TAKEN
	if ( --executing->cpu_time_budget == 0 )                             
	  (*executing->budget_callout)( executing );                         
	break;                                                               
    #endif                                                            
  }                                                                   
}                                                                     
 80064ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80064b0:	37 9c 00 08 	addi sp,sp,8                                   
 80064b4:	c3 a0 00 00 	ret                                            
      }                                                               
      break;                                                          
                                                                      
    #if defined(RTEMS_SCORE_THREAD_ENABLE_SCHEDULER_CALLOUT)          
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	if ( --executing->cpu_time_budget == 0 )                             
 80064b8:	28 22 00 74 	lw r2,(r1+116)                                 
 80064bc:	34 42 ff ff 	addi r2,r2,-1                                  
 80064c0:	58 22 00 74 	sw (r1+116),r2                                 
 80064c4:	5c 40 ff fa 	bne r2,r0,80064ac <_Scheduler_priority_Tick+0x3c>
	  (*executing->budget_callout)( executing );                         
 80064c8:	28 22 00 7c 	lw r2,(r1+124)                                 
 80064cc:	d8 40 00 00 	call r2                                        
 80064d0:	e3 ff ff f7 	bi 80064ac <_Scheduler_priority_Tick+0x3c>     
                                                                      
    case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:                 
    #if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)          
      case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:             
    #endif                                                            
      if ( (int)(--executing->cpu_time_budget) <= 0 ) {               
 80064d4:	28 22 00 74 	lw r2,(r1+116)                                 
 80064d8:	34 42 ff ff 	addi r2,r2,-1                                  
 80064dc:	58 22 00 74 	sw (r1+116),r2                                 
 80064e0:	48 40 ff f3 	bg r2,r0,80064ac <_Scheduler_priority_Tick+0x3c>
 *  always operates on the scheduler that 'owns' the currently executing
 *  thread.                                                           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )                    
{                                                                     
  _Scheduler.Operations.yield();                                      
 80064e4:	78 02 08 02 	mvhi r2,0x802                                  
 80064e8:	38 42 00 18 	ori r2,r2,0x18                                 
 80064ec:	28 42 00 0c 	lw r2,(r2+12)                                  
 80064f0:	5b 81 00 08 	sw (sp+8),r1                                   
 80064f4:	d8 40 00 00 	call r2                                        
         *  executing thread's timeslice is reset.  Otherwise, the    
         *  currently executing thread is placed at the rear of the   
         *  FIFO for this priority and a new heir is selected.        
         */                                                           
        _Scheduler_Yield();                                           
        executing->cpu_time_budget = _Thread_Ticks_per_timeslice;     
 80064f8:	78 02 08 02 	mvhi r2,0x802                                  
 80064fc:	38 42 08 f0 	ori r2,r2,0x8f0                                
 8006500:	28 42 00 00 	lw r2,(r2+0)                                   
 8006504:	2b 81 00 08 	lw r1,(sp+8)                                   
 8006508:	58 22 00 74 	sw (r1+116),r2                                 
 800650c:	e3 ff ff e8 	bi 80064ac <_Scheduler_priority_Tick+0x3c>     
                                                                      

0800519c <_TOD_Validate>: }; bool _TOD_Validate( const rtems_time_of_day *the_tod ) {
 800519c:	37 9c ff f4 	addi sp,sp,-12                                 
 80051a0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80051a4:	5b 8c 00 08 	sw (sp+8),r12                                  
 80051a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 80051ac:	78 02 08 01 	mvhi r2,0x801                                  
 80051b0:	38 42 fa d0 	ori r2,r2,0xfad0                               
};                                                                    
                                                                      
bool _TOD_Validate(                                                   
  const rtems_time_of_day *the_tod                                    
)                                                                     
{                                                                     
 80051b4:	b8 20 58 00 	mv r11,r1                                      
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
 80051b8:	28 42 00 0c 	lw r2,(r2+12)                                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
 80051bc:	34 0c 00 00 	mvi r12,0                                      
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
 80051c0:	44 20 00 22 	be r1,r0,8005248 <_TOD_Validate+0xac>          <== NEVER TAKEN
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
 80051c4:	78 03 08 01 	mvhi r3,0x801                                  
 80051c8:	38 63 fe 54 	ori r3,r3,0xfe54                               
 80051cc:	28 61 00 00 	lw r1,(r3+0)                                   
 80051d0:	f8 00 65 7d 	calli 801e7c4 <__udivsi3>                      
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
 80051d4:	29 62 00 18 	lw r2,(r11+24)                                 
 80051d8:	50 41 00 1c 	bgeu r2,r1,8005248 <_TOD_Validate+0xac>        
      (the_tod->ticks  >= ticks_per_second)       ||                  
 80051dc:	29 62 00 14 	lw r2,(r11+20)                                 
 80051e0:	34 01 00 3b 	mvi r1,59                                      
 80051e4:	54 41 00 19 	bgu r2,r1,8005248 <_TOD_Validate+0xac>         
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
 80051e8:	29 62 00 10 	lw r2,(r11+16)                                 
 80051ec:	54 41 00 17 	bgu r2,r1,8005248 <_TOD_Validate+0xac>         
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
 80051f0:	29 62 00 0c 	lw r2,(r11+12)                                 
 80051f4:	34 01 00 17 	mvi r1,23                                      
 80051f8:	54 41 00 14 	bgu r2,r1,8005248 <_TOD_Validate+0xac>         
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
 80051fc:	29 61 00 04 	lw r1,(r11+4)                                  
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
 8005200:	44 20 00 12 	be r1,r0,8005248 <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->month  == 0)                      ||                  
 8005204:	34 02 00 0c 	mvi r2,12                                      
 8005208:	54 22 00 10 	bgu r1,r2,8005248 <_TOD_Validate+0xac>         
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
 800520c:	29 62 00 00 	lw r2,(r11+0)                                  
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
 8005210:	34 03 07 c3 	mvi r3,1987                                    
 8005214:	50 62 00 0d 	bgeu r3,r2,8005248 <_TOD_Validate+0xac>        
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
 8005218:	29 63 00 08 	lw r3,(r11+8)                                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
 800521c:	44 60 00 0b 	be r3,r0,8005248 <_TOD_Validate+0xac>          <== NEVER TAKEN
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
 8005220:	20 42 00 03 	andi r2,r2,0x3                                 
 8005224:	5c 40 00 02 	bne r2,r0,800522c <_TOD_Validate+0x90>         
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
 8005228:	34 21 00 0d 	addi r1,r1,13                                  
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
 800522c:	78 02 08 02 	mvhi r2,0x802                                  
 8005230:	b4 21 08 00 	add r1,r1,r1                                   
 8005234:	38 42 07 d0 	ori r2,r2,0x7d0                                
 8005238:	b4 21 08 00 	add r1,r1,r1                                   
 800523c:	b4 41 08 00 	add r1,r2,r1                                   
 8005240:	28 2c 00 00 	lw r12,(r1+0)                                  
const uint32_t   _TOD_Days_per_month[ 2 ][ 13 ] = {                   
  { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },              
  { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }               
};                                                                    
                                                                      
bool _TOD_Validate(                                                   
 8005244:	f1 83 60 00 	cmpgeu r12,r12,r3                              
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
 8005248:	b9 80 08 00 	mv r1,r12                                      
 800524c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005250:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8005254:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8005258:	37 9c 00 0c 	addi sp,sp,12                                  
 800525c:	c3 a0 00 00 	ret                                            
                                                                      

080066e0 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) {
 80066e0:	37 9c ff e4 	addi sp,sp,-28                                 
 80066e4:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80066e8:	5b 8c 00 18 	sw (sp+24),r12                                 
 80066ec:	5b 8d 00 14 	sw (sp+20),r13                                 
 80066f0:	5b 8e 00 10 	sw (sp+16),r14                                 
 80066f4:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80066f8:	5b 90 00 08 	sw (sp+8),r16                                  
 80066fc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006700:	b8 20 58 00 	mv r11,r1                                      
  States_Control state, original_state;                               
                                                                      
  /*                                                                  
   * Save original state                                              
   */                                                                 
  original_state = the_thread->current_state;                         
 8006704:	28 2f 00 10 	lw r15,(r1+16)                                 
void _Thread_Change_priority(                                         
  Thread_Control   *the_thread,                                       
  Priority_Control  new_priority,                                     
  bool              prepend_it                                        
)                                                                     
{                                                                     
 8006708:	b8 40 60 00 	mv r12,r2                                      
 800670c:	20 70 00 ff 	andi r16,r3,0xff                               
  /*                                                                  
   * Set a transient state for the thread so it is pulled off the Ready chains.
   * This will prevent it from being scheduled no matter what happens in an
   * ISR.                                                             
   */                                                                 
  _Thread_Set_transient( the_thread );                                
 8006710:	f8 00 04 0c 	calli 8007740 <_Thread_Set_transient>          
                                                                      
  /*                                                                  
   *  Do not bother recomputing all the priority related information if
   *  we are not REALLY changing priority.                            
   */                                                                 
 if ( the_thread->current_priority != new_priority )                  
 8006714:	29 61 00 14 	lw r1,(r11+20)                                 
 8006718:	44 2c 00 04 	be r1,r12,8006728 <_Thread_Change_priority+0x48>
    _Thread_Set_priority( the_thread, new_priority );                 
 800671c:	b9 60 08 00 	mv r1,r11                                      
 8006720:	b9 80 10 00 	mv r2,r12                                      
 8006724:	f8 00 03 e3 	calli 80076b0 <_Thread_Set_priority>           
                                                                      
  _ISR_Disable( level );                                              
 8006728:	90 00 60 00 	rcsr r12,IE                                    
 800672c:	34 0d ff fe 	mvi r13,-2                                     
 8006730:	a1 8d 68 00 	and r13,r12,r13                                
 8006734:	d0 0d 00 00 	wcsr IE,r13                                    
                                                                      
  /*                                                                  
   *  If the thread has more than STATES_TRANSIENT set, then it is blocked,
   *  If it is blocked on a thread queue, then we need to requeue it. 
   */                                                                 
  state = the_thread->current_state;                                  
 8006738:	29 61 00 10 	lw r1,(r11+16)                                 
  if ( state != STATES_TRANSIENT ) {                                  
 800673c:	34 02 00 04 	mvi r2,4                                       
 8006740:	44 22 00 1f 	be r1,r2,80067bc <_Thread_Change_priority+0xdc>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 8006744:	21 ef 00 04 	andi r15,r15,0x4                               
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
 8006748:	45 e0 00 10 	be r15,r0,8006788 <_Thread_Change_priority+0xa8><== ALWAYS TAKEN
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
 800674c:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8006750:	78 03 08 01 	mvhi r3,0x801                                  <== NOT EXECUTED
 8006754:	38 63 dc 04 	ori r3,r3,0xdc04                               <== NOT EXECUTED
 8006758:	28 62 00 00 	lw r2,(r3+0)                                   <== NOT EXECUTED
 800675c:	a0 22 08 00 	and r1,r1,r2                                   <== NOT EXECUTED
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 8006760:	5c 20 00 13 	bne r1,r0,80067ac <_Thread_Change_priority+0xcc><== NOT EXECUTED
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
  _ISR_Enable( level );                                               
}                                                                     
 8006764:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006768:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800676c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8006770:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8006774:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8006778:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800677c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8006780:	37 9c 00 1c 	addi sp,sp,28                                  
 8006784:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
 8006788:	34 02 ff fb 	mvi r2,-5                                      
 800678c:	a0 22 10 00 	and r2,r1,r2                                   
   */                                                                 
  state = the_thread->current_state;                                  
  if ( state != STATES_TRANSIENT ) {                                  
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
 8006790:	59 62 00 10 	sw (r11+16),r2                                 
    _ISR_Enable( level );                                             
 8006794:	d0 0c 00 00 	wcsr IE,r12                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
 8006798:	78 03 08 01 	mvhi r3,0x801                                  
 800679c:	38 63 dc 04 	ori r3,r3,0xdc04                               
 80067a0:	28 62 00 00 	lw r2,(r3+0)                                   
 80067a4:	a0 22 08 00 	and r1,r1,r2                                   
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
 80067a8:	44 20 ff ef 	be r1,r0,8006764 <_Thread_Change_priority+0x84>
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
 80067ac:	29 61 00 44 	lw r1,(r11+68)                                 
 80067b0:	b9 60 10 00 	mv r2,r11                                      
 80067b4:	f8 00 03 82 	calli 80075bc <_Thread_queue_Requeue>          
 80067b8:	e3 ff ff eb 	bi 8006764 <_Thread_Change_priority+0x84>      
 80067bc:	78 0e 08 02 	mvhi r14,0x802                                 
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_transient (                      
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_TRANSIENT);                            
 80067c0:	21 ef 00 04 	andi r15,r15,0x4                               
 80067c4:	39 ce 00 18 	ori r14,r14,0x18                               
    }                                                                 
    return;                                                           
  }                                                                   
                                                                      
  /* Only clear the transient state if it wasn't set already */       
  if ( ! _States_Is_transient( original_state ) ) {                   
 80067c8:	5d e0 00 06 	bne r15,r0,80067e0 <_Thread_Change_priority+0x100><== NEVER TAKEN
     *  Interrupts are STILL disabled.                                
     *  We now know the thread will be in the READY state when we remove
     *  the TRANSIENT state.  So we have to place it on the appropriate
     *  Ready Queue with interrupts off.                              
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
 80067cc:	59 60 00 10 	sw (r11+16),r0                                 
                                                                      
    if ( prepend_it )                                                 
 80067d0:	46 0f 00 13 	be r16,r15,800681c <_Thread_Change_priority+0x13c>
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first(                   
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue_first( the_thread );                  
 80067d4:	29 c2 00 28 	lw r2,(r14+40)                                 
 80067d8:	b9 60 08 00 	mv r1,r11                                      
 80067dc:	d8 40 00 00 	call r2                                        
      _Scheduler_Enqueue_first( the_thread );                         
    else                                                              
      _Scheduler_Enqueue( the_thread );                               
  }                                                                   
                                                                      
  _ISR_Flash( level );                                                
 80067e0:	d0 0c 00 00 	wcsr IE,r12                                    
 80067e4:	d0 0d 00 00 	wcsr IE,r13                                    
 *  This kernel routine implements the scheduling decision logic for  
 *  the scheduler. It does NOT dispatch.                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void )                 
{                                                                     
  _Scheduler.Operations.schedule();                                   
 80067e8:	29 c1 00 08 	lw r1,(r14+8)                                  
 80067ec:	d8 20 00 00 	call r1                                        
 *  is also the heir thread, and false otherwise.                     
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void )  
{                                                                     
  return ( _Thread_Executing == _Thread_Heir );                       
 80067f0:	78 01 08 02 	mvhi r1,0x802                                  
 80067f4:	38 21 0d e0 	ori r1,r1,0xde0                                
 80067f8:	28 22 00 10 	lw r2,(r1+16)                                  
   *  We altered the set of thread priorities.  So let's figure out   
   *  who is the heir and if we need to switch to them.               
   */                                                                 
  _Scheduler_Schedule();                                              
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
 80067fc:	28 23 00 14 	lw r3,(r1+20)                                  
 8006800:	44 43 00 05 	be r2,r3,8006814 <_Thread_Change_priority+0x134>
 8006804:	40 42 00 70 	lbu r2,(r2+112)                                
 8006808:	44 40 00 03 	be r2,r0,8006814 <_Thread_Change_priority+0x134>
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
 800680c:	34 02 00 01 	mvi r2,1                                       
 8006810:	30 22 00 0c 	sb (r1+12),r2                                  
  _ISR_Enable( level );                                               
 8006814:	d0 0c 00 00 	wcsr IE,r12                                    
 8006818:	e3 ff ff d3 	bi 8006764 <_Thread_Change_priority+0x84>      
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue(                         
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue( the_thread );                        
 800681c:	29 c2 00 24 	lw r2,(r14+36)                                 
 8006820:	b9 60 08 00 	mv r1,r11                                      
 8006824:	d8 40 00 00 	call r2                                        
 8006828:	e3 ff ff ee 	bi 80067e0 <_Thread_Change_priority+0x100>     
                                                                      

0800d48c <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) {
 800d48c:	37 9c ff f8 	addi sp,sp,-8                                  
 800d490:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800d494:	37 82 00 08 	addi r2,sp,8                                   
 800d498:	f8 00 00 a7 	calli 800d734 <_Thread_Get>                    
  switch ( location ) {                                               
 800d49c:	2b 82 00 08 	lw r2,(sp+8)                                   
 800d4a0:	5c 40 00 0a 	bne r2,r0,800d4c8 <_Thread_Delay_ended+0x3c>   <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_Clear_state(                                            
 800d4a4:	78 03 08 02 	mvhi r3,0x802                                  
 800d4a8:	38 63 86 44 	ori r3,r3,0x8644                               
 800d4ac:	28 62 00 00 	lw r2,(r3+0)                                   
 800d4b0:	fb ff ff 65 	calli 800d244 <_Thread_Clear_state>            
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800d4b4:	78 01 08 02 	mvhi r1,0x802                                  
 800d4b8:	38 21 aa 78 	ori r1,r1,0xaa78                               
 800d4bc:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    --level;                                                          
 800d4c0:	34 42 ff ff 	addi r2,r2,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 800d4c4:	58 22 00 00 	sw (r1+0),r2                                   
          | STATES_INTERRUPTIBLE_BY_SIGNAL                            
      );                                                              
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 800d4c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d4cc:	37 9c 00 08 	addi sp,sp,8                                   
 800d4d0:	c3 a0 00 00 	ret                                            
                                                                      

08006a04 <_Thread_Dispatch>: #if defined(RTEMS_SMP) #include <rtems/score/smp.h> #endif void _Thread_Dispatch( void ) {
 8006a04:	37 9c ff bc 	addi sp,sp,-68                                 
 8006a08:	5b 8b 00 3c 	sw (sp+60),r11                                 
 8006a0c:	5b 8c 00 38 	sw (sp+56),r12                                 
 8006a10:	5b 8d 00 34 	sw (sp+52),r13                                 
 8006a14:	5b 8e 00 30 	sw (sp+48),r14                                 
 8006a18:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8006a1c:	5b 90 00 28 	sw (sp+40),r16                                 
 8006a20:	5b 91 00 24 	sw (sp+36),r17                                 
 8006a24:	5b 92 00 20 	sw (sp+32),r18                                 
 8006a28:	5b 93 00 1c 	sw (sp+28),r19                                 
 8006a2c:	5b 94 00 18 	sw (sp+24),r20                                 
 8006a30:	5b 95 00 14 	sw (sp+20),r21                                 
 8006a34:	5b 96 00 10 	sw (sp+16),r22                                 
 8006a38:	5b 97 00 0c 	sw (sp+12),r23                                 
 8006a3c:	5b 98 00 08 	sw (sp+8),r24                                  
 8006a40:	5b 9d 00 04 	sw (sp+4),ra                                   
  #endif                                                              
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
 8006a44:	78 01 08 02 	mvhi r1,0x802                                  
 8006a48:	38 21 0d e0 	ori r1,r1,0xde0                                
 8006a4c:	28 2c 00 10 	lw r12,(r1+16)                                 
  _ISR_Disable( level );                                              
 8006a50:	90 00 18 00 	rcsr r3,IE                                     
 8006a54:	34 01 ff fe 	mvi r1,-2                                      
 8006a58:	a0 61 08 00 	and r1,r3,r1                                   
 8006a5c:	d0 01 00 00 	wcsr IE,r1                                     
  while ( _Thread_Dispatch_necessary == true ) {                      
 8006a60:	78 0e 08 02 	mvhi r14,0x802                                 
 8006a64:	39 ce 0d e0 	ori r14,r14,0xde0                              
 8006a68:	41 c2 00 0c 	lbu r2,(r14+12)                                
 8006a6c:	78 11 08 02 	mvhi r17,0x802                                 
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
 8006a70:	b8 60 08 00 	mv r1,r3                                       
  while ( _Thread_Dispatch_necessary == true ) {                      
 8006a74:	20 42 00 ff 	andi r2,r2,0xff                                
 8006a78:	3a 31 09 58 	ori r17,r17,0x958                              
 8006a7c:	44 40 00 4d 	be r2,r0,8006bb0 <_Thread_Dispatch+0x1ac>      
    heir = _Thread_Heir;                                              
 8006a80:	29 cd 00 14 	lw r13,(r14+20)                                
   * This routine sets thread dispatch level to the                   
   * value passed in.                                                 
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value)
  {                                                                   
    _Thread_Dispatch_disable_level = value;                           
 8006a84:	34 01 00 01 	mvi r1,1                                       
 8006a88:	5a 21 00 00 	sw (r17+0),r1                                  
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
 8006a8c:	31 c0 00 0c 	sb (r14+12),r0                                 
    _Thread_Executing = heir;                                         
 8006a90:	59 cd 00 10 	sw (r14+16),r13                                
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
 8006a94:	b8 60 08 00 	mv r1,r3                                       
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
 8006a98:	45 8d 00 46 	be r12,r13,8006bb0 <_Thread_Dispatch+0x1ac>    
 8006a9c:	78 15 08 02 	mvhi r21,0x802                                 
 8006aa0:	78 14 08 02 	mvhi r20,0x802                                 
 8006aa4:	78 13 08 02 	mvhi r19,0x802                                 
 8006aa8:	78 0f 08 02 	mvhi r15,0x802                                 
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8006aac:	78 16 08 02 	mvhi r22,0x802                                 
 8006ab0:	37 98 00 40 	addi r24,sp,64                                 
 8006ab4:	3a b5 08 e0 	ori r21,r21,0x8e0                              
 8006ab8:	3a 94 09 c4 	ori r20,r20,0x9c4                              
 8006abc:	3a 73 01 a0 	ori r19,r19,0x1a0                              
 8006ac0:	39 ef 01 a4 	ori r15,r15,0x1a4                              
     */                                                               
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
 8006ac4:	34 12 00 01 	mvi r18,1                                      
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8006ac8:	3a d6 08 f0 	ori r22,r22,0x8f0                              
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 8006acc:	34 17 ff fe 	mvi r23,-2                                     
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 8006ad0:	b9 c0 80 00 	mv r16,r14                                     
     */                                                               
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
 8006ad4:	29 a1 00 78 	lw r1,(r13+120)                                
 8006ad8:	44 32 00 54 	be r1,r18,8006c28 <_Thread_Dispatch+0x224>     
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
                                                                      
    _ISR_Enable( level );                                             
 8006adc:	d0 03 00 00 	wcsr IE,r3                                     
 */                                                                   
static inline void _TOD_Get_uptime(                                   
  Timestamp_Control *time                                             
)                                                                     
{                                                                     
  _TOD_Get_with_nanoseconds( time, &_TOD.uptime );                    
 8006ae0:	bb 00 08 00 	mv r1,r24                                      
 8006ae4:	ba a0 10 00 	mv r2,r21                                      
 8006ae8:	fb ff f8 d7 	calli 8004e44 <_TOD_Get_with_nanoseconds>      
  #ifdef RTEMS_SMP                                                    
    _Thread_Unnest_dispatch();                                        
  #endif                                                              
                                                                      
  _API_extensions_Run_post_switch( executing );                       
}                                                                     
 8006aec:	2b 84 00 44 	lw r4,(sp+68)                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8006af0:	29 83 00 84 	lw r3,(r12+132)                                
 8006af4:	29 88 00 80 	lw r8,(r12+128)                                
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8006af8:	29 c5 00 24 	lw r5,(r14+36)                                 
 8006afc:	2b 86 00 40 	lw r6,(sp+64)                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8006b00:	b4 83 18 00 	add r3,r4,r3                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8006b04:	29 c1 00 20 	lw r1,(r14+32)                                 
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8006b08:	f4 83 48 00 	cmpgu r9,r4,r3                                 
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8006b0c:	c8 65 28 00 	sub r5,r3,r5                                   
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8006b10:	b4 c8 40 00 	add r8,r6,r8                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8006b14:	f4 a3 18 00 	cmpgu r3,r5,r3                                 
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8006b18:	b5 28 38 00 	add r7,r9,r8                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8006b1c:	c8 e1 38 00 	sub r7,r7,r1                                   
 8006b20:	c8 e3 38 00 	sub r7,r7,r3                                   
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 8006b24:	2a 83 00 00 	lw r3,(r20+0)                                  
 8006b28:	59 87 00 80 	sw (r12+128),r7                                
 8006b2c:	59 85 00 84 	sw (r12+132),r5                                
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
        _Thread_Time_of_last_context_switch = uptime;                 
 8006b30:	59 c6 00 20 	sw (r14+32),r6                                 
 8006b34:	59 c4 00 24 	sw (r14+36),r4                                 
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
 8006b38:	44 60 00 05 	be r3,r0,8006b4c <_Thread_Dispatch+0x148>      <== NEVER TAKEN
      executing->libc_reent = *_Thread_libc_reent;                    
 8006b3c:	28 61 00 00 	lw r1,(r3+0)                                   
 8006b40:	59 81 01 14 	sw (r12+276),r1                                
      *_Thread_libc_reent = heir->libc_reent;                         
 8006b44:	29 a1 01 14 	lw r1,(r13+276)                                
 8006b48:	58 61 00 00 	sw (r3+0),r1                                   
  #ifdef RTEMS_SMP                                                    
    _Thread_Unnest_dispatch();                                        
  #endif                                                              
                                                                      
  _API_extensions_Run_post_switch( executing );                       
}                                                                     
 8006b4c:	2a 6b 00 00 	lw r11,(r19+0)                                 
{                                                                     
  const Chain_Control *chain = &_User_extensions_Switches_list;       
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
 8006b50:	45 6f 00 07 	be r11,r15,8006b6c <_Thread_Dispatch+0x168>    <== NEVER TAKEN
    const User_extensions_Switch_control *extension =                 
      (const User_extensions_Switch_control *) node;                  
                                                                      
    (*extension->thread_switch)( executing, heir );                   
 8006b54:	29 63 00 08 	lw r3,(r11+8)                                  
 8006b58:	b9 80 08 00 	mv r1,r12                                      
 8006b5c:	b9 a0 10 00 	mv r2,r13                                      
 8006b60:	d8 60 00 00 	call r3                                        
 8006b64:	29 6b 00 00 	lw r11,(r11+0)                                 
{                                                                     
  const Chain_Control *chain = &_User_extensions_Switches_list;       
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
 8006b68:	5d 6f ff fb 	bne r11,r15,8006b54 <_Thread_Dispatch+0x150>   
    if ( executing->fp_context != NULL )                              
      _Context_Save_fp( &executing->fp_context );                     
#endif                                                                
#endif                                                                
                                                                      
    _Context_Switch( &executing->Registers, &heir->Registers );       
 8006b6c:	35 81 00 c0 	addi r1,r12,192                                
 8006b70:	35 a2 00 c0 	addi r2,r13,192                                
 8006b74:	f8 00 05 47 	calli 8008090 <_CPU_Context_switch>            
    if ( executing->fp_context != NULL )                              
      _Context_Restore_fp( &executing->fp_context );                  
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
 8006b78:	29 cc 00 10 	lw r12,(r14+16)                                
                                                                      
    _ISR_Disable( level );                                            
 8006b7c:	90 00 18 00 	rcsr r3,IE                                     
 8006b80:	a0 77 20 00 	and r4,r3,r23                                  
 8006b84:	d0 04 00 00 	wcsr IE,r4                                     
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
 8006b88:	42 04 00 0c 	lbu r4,(r16+12)                                
 8006b8c:	ba 00 70 00 	mv r14,r16                                     
 8006b90:	20 84 00 ff 	andi r4,r4,0xff                                
 8006b94:	44 80 00 06 	be r4,r0,8006bac <_Thread_Dispatch+0x1a8>      
    heir = _Thread_Heir;                                              
 8006b98:	2a 0d 00 14 	lw r13,(r16+20)                                
 8006b9c:	5a 32 00 00 	sw (r17+0),r18                                 
    #ifndef RTEMS_SMP                                                 
      _Thread_Dispatch_set_disable_level( 1 );                        
    #endif                                                            
    _Thread_Dispatch_necessary = false;                               
 8006ba0:	32 00 00 0c 	sb (r16+12),r0                                 
    _Thread_Executing = heir;                                         
 8006ba4:	5a 0d 00 10 	sw (r16+16),r13                                
    /*                                                                
     *  When the heir and executing are the same, then we are being   
     *  requested to do the post switch dispatching.  This is normally
     *  done to dispatch signals.                                     
     */                                                               
    if ( heir == executing )                                          
 8006ba8:	5d ac ff cb 	bne r13,r12,8006ad4 <_Thread_Dispatch+0xd0>    <== ALWAYS TAKEN
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
                                                                      
    _ISR_Disable( level );                                            
 8006bac:	b8 60 08 00 	mv r1,r3                                       
 8006bb0:	5a 20 00 00 	sw (r17+0),r0                                  
post_switch:                                                          
  #ifndef RTEMS_SMP                                                   
    _Thread_Dispatch_set_disable_level( 0 );                          
  #endif                                                              
                                                                      
  _ISR_Enable( level );                                               
 8006bb4:	d0 01 00 00 	wcsr IE,r1                                     
  #ifdef RTEMS_SMP                                                    
    _Thread_Unnest_dispatch();                                        
  #endif                                                              
                                                                      
  _API_extensions_Run_post_switch( executing );                       
}                                                                     
 8006bb8:	78 01 08 02 	mvhi r1,0x802                                  
 8006bbc:	38 21 09 c8 	ori r1,r1,0x9c8                                
 8006bc0:	28 2b 00 00 	lw r11,(r1+0)                                  
{                                                                     
  const Chain_Control *chain = &_API_extensions_Post_switch_list;     
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
 8006bc4:	78 0d 08 02 	mvhi r13,0x802                                 
 8006bc8:	39 ad 09 cc 	ori r13,r13,0x9cc                              
 8006bcc:	45 6d 00 06 	be r11,r13,8006be4 <_Thread_Dispatch+0x1e0>    
    const API_extensions_Post_switch_control *post_switch =           
      (const API_extensions_Post_switch_control *) node;              
                                                                      
    (*post_switch->hook)( executing );                                
 8006bd0:	29 62 00 08 	lw r2,(r11+8)                                  
 8006bd4:	b9 80 08 00 	mv r1,r12                                      
 8006bd8:	d8 40 00 00 	call r2                                        
 8006bdc:	29 6b 00 00 	lw r11,(r11+0)                                 
{                                                                     
  const Chain_Control *chain = &_API_extensions_Post_switch_list;     
  const Chain_Node    *tail = _Chain_Immutable_tail( chain );         
  const Chain_Node    *node = _Chain_Immutable_first( chain );        
                                                                      
  while ( node != tail ) {                                            
 8006be0:	5d 6d ff fc 	bne r11,r13,8006bd0 <_Thread_Dispatch+0x1cc>   <== NEVER TAKEN
 8006be4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006be8:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8006bec:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8006bf0:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8006bf4:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8006bf8:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8006bfc:	2b 90 00 28 	lw r16,(sp+40)                                 
 8006c00:	2b 91 00 24 	lw r17,(sp+36)                                 
 8006c04:	2b 92 00 20 	lw r18,(sp+32)                                 
 8006c08:	2b 93 00 1c 	lw r19,(sp+28)                                 
 8006c0c:	2b 94 00 18 	lw r20,(sp+24)                                 
 8006c10:	2b 95 00 14 	lw r21,(sp+20)                                 
 8006c14:	2b 96 00 10 	lw r22,(sp+16)                                 
 8006c18:	2b 97 00 0c 	lw r23,(sp+12)                                 
 8006c1c:	2b 98 00 08 	lw r24,(sp+8)                                  
 8006c20:	37 9c 00 44 	addi sp,sp,68                                  
 8006c24:	c3 a0 00 00 	ret                                            
#if __RTEMS_ADA__                                                     
    executing->rtems_ada_self = rtems_ada_self;                       
    rtems_ada_self = heir->rtems_ada_self;                            
#endif                                                                
    if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
 8006c28:	2a c1 00 00 	lw r1,(r22+0)                                  
 8006c2c:	59 a1 00 74 	sw (r13+116),r1                                
 8006c30:	e3 ff ff ab 	bi 8006adc <_Thread_Dispatch+0xd8>             
                                                                      

0800cfb4 <_Thread_Handler>: #define INIT_NAME __main #define EXECUTE_GLOBAL_CONSTRUCTORS #endif void _Thread_Handler( void ) {
 800cfb4:	37 9c ff f4 	addi sp,sp,-12                                 
 800cfb8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800cfbc:	5b 8c 00 08 	sw (sp+8),r12                                  
 800cfc0:	5b 9d 00 04 	sw (sp+4),ra                                   
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static bool doneConstructors;                                     
    bool doCons;                                                      
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
 800cfc4:	78 01 08 02 	mvhi r1,0x802                                  
 800cfc8:	38 21 0d e0 	ori r1,r1,0xde0                                
 800cfcc:	28 2b 00 10 	lw r11,(r1+16)                                 
                                                                      
  /*                                                                  
   * have to put level into a register for those cpu's that use       
   * inline asm here                                                  
   */                                                                 
  level = executing->Start.isr_level;                                 
 800cfd0:	29 61 00 a8 	lw r1,(r11+168)                                
  _ISR_Set_level(level);                                              
 800cfd4:	64 21 00 00 	cmpei r1,r1,0                                  
 800cfd8:	d0 01 00 00 	wcsr IE,r1                                     
      doCons = !doneConstructors                                      
        && _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
      if (doCons)                                                     
        doneConstructors = true;                                      
    #else                                                             
      doCons = !doneConstructors;                                     
 800cfdc:	78 03 08 02 	mvhi r3,0x802                                  
 800cfe0:	38 63 07 a8 	ori r3,r3,0x7a8                                
 800cfe4:	40 6c 00 00 	lbu r12,(r3+0)                                 
      doneConstructors = true;                                        
 800cfe8:	34 04 00 01 	mvi r4,1                                       
  );                                                                  
}                                                                     
                                                                      
static inline void _User_extensions_Thread_begin( Thread_Control *executing )
{                                                                     
  _User_extensions_Iterate(                                           
 800cfec:	78 02 08 00 	mvhi r2,0x800                                  
 800cff0:	b9 60 08 00 	mv r1,r11                                      
 800cff4:	38 42 79 78 	ori r2,r2,0x7978                               
 800cff8:	30 64 00 00 	sb (r3+0),r4                                   
 800cffc:	fb ff ea 7b 	calli 80079e8 <_User_extensions_Iterate>       
  _User_extensions_Thread_begin( executing );                         
                                                                      
  /*                                                                  
   *  At this point, the dispatch disable level BETTER be 1.          
   */                                                                 
  _Thread_Enable_dispatch();                                          
 800d000:	fb ff e7 0d 	calli 8006c34 <_Thread_Enable_dispatch>        
    /*                                                                
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (doCons) /* && (volatile void *)_init) */ {                    
 800d004:	45 80 00 0d 	be r12,r0,800d038 <_Thread_Handler+0x84>       
        _Thread_Enable_dispatch();                                    
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800d008:	29 61 00 90 	lw r1,(r11+144)                                
 800d00c:	44 20 00 0e 	be r1,r0,800d044 <_Thread_Handler+0x90>        
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
 800d010:	34 02 00 01 	mvi r2,1                                       
 800d014:	44 22 00 11 	be r1,r2,800d058 <_Thread_Handler+0xa4>        <== ALWAYS TAKEN
  }                                                                   
}                                                                     
                                                                      
static inline void _User_extensions_Thread_exitted( Thread_Control *executing )
{                                                                     
  _User_extensions_Iterate(                                           
 800d018:	78 02 08 00 	mvhi r2,0x800                                  
 800d01c:	b9 60 08 00 	mv r1,r11                                      
 800d020:	38 42 79 98 	ori r2,r2,0x7998                               
 800d024:	fb ff ea 71 	calli 80079e8 <_User_extensions_Iterate>       
   *  able to fit in a (void *).                                      
   */                                                                 
                                                                      
  _User_extensions_Thread_exitted( executing );                       
                                                                      
  _Internal_error_Occurred(                                           
 800d028:	34 01 00 00 	mvi r1,0                                       
 800d02c:	34 02 00 01 	mvi r2,1                                       
 800d030:	34 03 00 05 	mvi r3,5                                       
 800d034:	fb ff e1 1a 	calli 800549c <_Internal_error_Occurred>       
     *  _init could be a weak symbol and we SHOULD test it but it isn't
     *  in any configuration I know of and it generates a warning on every
     *  RTEMS target configuration.  --joel (12 May 2007)             
     */                                                               
    if (doCons) /* && (volatile void *)_init) */ {                    
      INIT_NAME ();                                                   
 800d038:	fb ff cb f2 	calli 8000000 <RamBase>                        
        _Thread_Enable_dispatch();                                    
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
 800d03c:	29 61 00 90 	lw r1,(r11+144)                                
 800d040:	5c 20 ff f4 	bne r1,r0,800d010 <_Thread_Handler+0x5c>       
    executing->Wait.return_argument =                                 
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
 800d044:	29 62 00 8c 	lw r2,(r11+140)                                
 800d048:	29 61 00 98 	lw r1,(r11+152)                                
 800d04c:	d8 40 00 00 	call r2                                        
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
 800d050:	59 61 00 28 	sw (r11+40),r1                                 
 800d054:	e3 ff ff f1 	bi 800d018 <_Thread_Handler+0x64>              
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
        (*(Thread_Entry_pointer) executing->Start.entry_point)(       
 800d058:	29 62 00 8c 	lw r2,(r11+140)                                
 800d05c:	29 61 00 94 	lw r1,(r11+148)                                
 800d060:	d8 40 00 00 	call r2                                        
        executing->Start.numeric_argument                             
      );                                                              
  }                                                                   
  #if defined(RTEMS_POSIX_API)                                        
    else if ( executing->Start.prototype == THREAD_START_POINTER ) {  
      executing->Wait.return_argument =                               
 800d064:	59 61 00 28 	sw (r11+40),r1                                 
 800d068:	e3 ff ff ec 	bi 800d018 <_Thread_Handler+0x64>              
                                                                      

08006fbc <_Thread_Handler_initialization>: #if defined(RTEMS_SMP) #include <rtems/bspsmp.h> #endif void _Thread_Handler_initialization(void) {
 8006fbc:	37 9c ff f4 	addi sp,sp,-12                                 
 8006fc0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8006fc4:	5b 8c 00 08 	sw (sp+8),r12                                  
 8006fc8:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t ticks_per_timeslice =                                      
 8006fcc:	78 01 08 01 	mvhi r1,0x801                                  
 8006fd0:	38 21 d2 6c 	ori r1,r1,0xd26c                               
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t maximum_proxies =                                        
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
 8006fd4:	28 23 00 28 	lw r3,(r1+40)                                  
  #include <rtems/bspsmp.h>                                           
#endif                                                                
                                                                      
void _Thread_Handler_initialization(void)                             
{                                                                     
  uint32_t ticks_per_timeslice =                                      
 8006fd8:	28 2b 00 14 	lw r11,(r1+20)                                 
    rtems_configuration_get_ticks_per_timeslice();                    
  uint32_t maximum_extensions =                                       
 8006fdc:	28 2c 00 08 	lw r12,(r1+8)                                  
    rtems_configuration_get_maximum_extensions();                     
  rtems_stack_allocate_init_hook stack_allocate_init_hook =           
 8006fe0:	28 22 00 24 	lw r2,(r1+36)                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    uint32_t maximum_proxies =                                        
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
 8006fe4:	44 60 00 1f 	be r3,r0,8007060 <_Thread_Handler_initialization+0xa4><== NEVER TAKEN
 8006fe8:	28 23 00 2c 	lw r3,(r1+44)                                  
 8006fec:	44 60 00 1d 	be r3,r0,8007060 <_Thread_Handler_initialization+0xa4>
      INTERNAL_ERROR_CORE,                                            
      true,                                                           
      INTERNAL_ERROR_BAD_STACK_HOOK                                   
    );                                                                
                                                                      
  if ( stack_allocate_init_hook != NULL )                             
 8006ff0:	44 40 00 03 	be r2,r0,8006ffc <_Thread_Handler_initialization+0x40>
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
 8006ff4:	28 21 00 04 	lw r1,(r1+4)                                   
 8006ff8:	d8 40 00 00 	call r2                                        
                                                                      
  _Thread_Dispatch_necessary = false;                                 
 8006ffc:	78 08 08 02 	mvhi r8,0x802                                  
 8007000:	39 08 0d e0 	ori r8,r8,0xde0                                
  _Thread_Heir              = NULL;                                   
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
 8007004:	78 0a 08 02 	mvhi r10,0x802                                 
                                                                      
  _Thread_Ticks_per_timeslice  = ticks_per_timeslice;                 
 8007008:	78 09 08 02 	mvhi r9,0x802                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
 800700c:	78 01 08 02 	mvhi r1,0x802                                  
    );                                                                
                                                                      
  if ( stack_allocate_init_hook != NULL )                             
    (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
                                                                      
  _Thread_Dispatch_necessary = false;                                 
 8007010:	31 00 00 0c 	sb (r8+12),r0                                  
  _Thread_Executing         = NULL;                                   
 8007014:	59 00 00 10 	sw (r8+16),r0                                  
  _Thread_Heir              = NULL;                                   
 8007018:	59 00 00 14 	sw (r8+20),r0                                  
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
 800701c:	39 4a 09 d4 	ori r10,r10,0x9d4                              
                                                                      
  _Thread_Ticks_per_timeslice  = ticks_per_timeslice;                 
 8007020:	39 29 08 f0 	ori r9,r9,0x8f0                                
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
 8007024:	38 21 0a 48 	ori r1,r1,0xa48                                
 8007028:	34 02 00 01 	mvi r2,1                                       
 800702c:	34 03 00 01 	mvi r3,1                                       
 8007030:	34 04 00 01 	mvi r4,1                                       
 8007034:	34 05 01 28 	mvi r5,296                                     
 8007038:	34 06 00 00 	mvi r6,0                                       
 800703c:	34 07 00 08 	mvi r7,8                                       
  _Thread_Heir              = NULL;                                   
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  _Thread_Allocated_fp      = NULL;                                   
#endif                                                                
                                                                      
  _Thread_Maximum_extensions = maximum_extensions;                    
 8007040:	59 4c 00 00 	sw (r10+0),r12                                 
                                                                      
  _Thread_Ticks_per_timeslice  = ticks_per_timeslice;                 
 8007044:	59 2b 00 00 	sw (r9+0),r11                                  
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if ( _System_state_Is_multiprocessing )                           
      maximum_internal_threads += 1;                                  
  #endif                                                              
                                                                      
  _Objects_Initialize_information(                                    
 8007048:	fb ff fa fb 	calli 8005c34 <_Objects_Initialize_information>
      false,                      /* true if this is a global object class */
      NULL                        /* Proxy extraction support callout */
    #endif                                                            
  );                                                                  
                                                                      
}                                                                     
 800704c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007050:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8007054:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8007058:	37 9c 00 0c 	addi sp,sp,12                                  
 800705c:	c3 a0 00 00 	ret                                            
      _Configuration_MP_table->maximum_proxies;                       
  #endif                                                              
                                                                      
  if ( rtems_configuration_get_stack_allocate_hook() == NULL ||       
       rtems_configuration_get_stack_free_hook() == NULL)             
    _Internal_error_Occurred(                                         
 8007060:	34 01 00 00 	mvi r1,0                                       
 8007064:	34 02 00 01 	mvi r2,1                                       
 8007068:	34 03 00 0e 	mvi r3,14                                      
 800706c:	fb ff f9 0c 	calli 800549c <_Internal_error_Occurred>       
                                                                      

080077f4 <_Thread_Stack_Free>: #include <rtems/config.h> void _Thread_Stack_Free( Thread_Control *the_thread ) {
 80077f4:	37 9c ff fc 	addi sp,sp,-4                                  
 80077f8:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  #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 )                    
 80077fc:	40 23 00 b0 	lbu r3,(r1+176)                                
                                                                      
void _Thread_Stack_Free(                                              
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  rtems_stack_free_hook stack_free_hook =                             
 8007800:	78 02 08 01 	mvhi r2,0x801                                  
 8007804:	38 42 d2 6c 	ori r2,r2,0xd26c                               
 8007808:	28 42 00 2c 	lw r2,(r2+44)                                  
                                                                      
  #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 )                    
 800780c:	44 60 00 03 	be r3,r0,8007818 <_Thread_Stack_Free+0x24>     <== NEVER TAKEN
   * 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 );         
 8007810:	28 21 00 b8 	lw r1,(r1+184)                                 
 8007814:	d8 40 00 00 	call r2                                        
}                                                                     
 8007818:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800781c:	37 9c 00 04 	addi sp,sp,4                                   
 8007820:	c3 a0 00 00 	ret                                            
                                                                      

0800afb8 <_Thread_blocking_operation_Cancel>: Thread_blocking_operation_States sync_state __attribute__((unused)), #endif Thread_Control *the_thread, ISR_Level level ) {
 800afb8:	37 9c ff f8 	addi sp,sp,-8                                  
 800afbc:	5b 8b 00 08 	sw (sp+8),r11                                  
 800afc0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800afc4:	b8 40 58 00 	mv r11,r2                                      
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800afc8:	28 42 00 50 	lw r2,(r2+80)                                  
  #endif                                                              
                                                                      
  /*                                                                  
   * The thread is not waiting on anything after this completes.      
   */                                                                 
  the_thread->Wait.queue = NULL;                                      
 800afcc:	59 60 00 44 	sw (r11+68),r0                                 
                                                                      
  /*                                                                  
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
 800afd0:	34 01 00 02 	mvi r1,2                                       
 800afd4:	44 41 00 0b 	be r2,r1,800b000 <_Thread_blocking_operation_Cancel+0x48><== NEVER TAKEN
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
    (void) _Watchdog_Remove( &the_thread->Timer );                    
  } else                                                              
    _ISR_Enable( level );                                             
 800afd8:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
 800afdc:	78 01 08 01 	mvhi r1,0x801                                  
 800afe0:	38 21 dc 0c 	ori r1,r1,0xdc0c                               
 800afe4:	28 22 00 00 	lw r2,(r1+0)                                   
 800afe8:	b9 60 08 00 	mv r1,r11                                      
 800afec:	f8 00 00 0b 	calli 800b018 <_Thread_Clear_state>            
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
 800aff0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aff4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800aff8:	37 9c 00 08 	addi sp,sp,8                                   
 800affc:	c3 a0 00 00 	ret                                            
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
 800b000:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 800b004:	59 61 00 50 	sw (r11+80),r1                                 <== NOT EXECUTED
   *  If the sync state is timed out, this is very likely not needed. 
   *  But better safe than sorry when it comes to critical sections.  
   */                                                                 
  if ( _Watchdog_Is_active( &the_thread->Timer ) ) {                  
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
 800b008:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
    (void) _Watchdog_Remove( &the_thread->Timer );                    
 800b00c:	35 61 00 48 	addi r1,r11,72                                 <== NOT EXECUTED
 800b010:	fb ff f3 30 	calli 8007cd0 <_Watchdog_Remove>               <== NOT EXECUTED
 800b014:	e3 ff ff f2 	bi 800afdc <_Thread_blocking_operation_Cancel+0x24><== NOT EXECUTED
                                                                      

08007070 <_Thread_queue_Dequeue>: #include <rtems/score/tqdata.h> Thread_Control *_Thread_queue_Dequeue( Thread_queue_Control *the_thread_queue ) {
 8007070:	37 9c ff f8 	addi sp,sp,-8                                  
 8007074:	5b 8b 00 08 	sw (sp+8),r11                                  
 8007078:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 800707c:	28 23 00 34 	lw r3,(r1+52)                                  
#include <rtems/score/tqdata.h>                                       
                                                                      
Thread_Control *_Thread_queue_Dequeue(                                
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
 8007080:	b8 20 58 00 	mv r11,r1                                      
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
 8007084:	78 02 08 00 	mvhi r2,0x800                                  
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8007088:	34 01 00 01 	mvi r1,1                                       
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
 800708c:	38 42 b0 d4 	ori r2,r2,0xb0d4                               
  Thread_Control *(*dequeue_p)( Thread_queue_Control * );             
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
 8007090:	44 61 00 0d 	be r3,r1,80070c4 <_Thread_queue_Dequeue+0x54>  
    dequeue_p = _Thread_queue_Dequeue_priority;                       
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
                                                                      
  the_thread = (*dequeue_p)( the_thread_queue );                      
 8007094:	b9 60 08 00 	mv r1,r11                                      
 8007098:	d8 40 00 00 	call r2                                        
  _ISR_Disable( level );                                              
 800709c:	90 00 10 00 	rcsr r2,IE                                     
 80070a0:	34 03 ff fe 	mvi r3,-2                                      
 80070a4:	a0 43 18 00 	and r3,r2,r3                                   
 80070a8:	d0 03 00 00 	wcsr IE,r3                                     
    if ( !the_thread ) {                                              
 80070ac:	44 20 00 0f 	be r1,r0,80070e8 <_Thread_queue_Dequeue+0x78>  
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
        the_thread = _Thread_Executing;                               
      }                                                               
    }                                                                 
  _ISR_Enable( level );                                               
 80070b0:	d0 02 00 00 	wcsr IE,r2                                     
  return the_thread;                                                  
}                                                                     
 80070b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80070b8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80070bc:	37 9c 00 08 	addi sp,sp,8                                   
 80070c0:	c3 a0 00 00 	ret                                            
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  Thread_blocking_operation_States  sync_state;                       
                                                                      
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
    dequeue_p = _Thread_queue_Dequeue_priority;                       
 80070c4:	78 02 08 00 	mvhi r2,0x800                                  
 80070c8:	38 42 71 10 	ori r2,r2,0x7110                               
  else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */                     
    dequeue_p = _Thread_queue_Dequeue_fifo;                           
                                                                      
  the_thread = (*dequeue_p)( the_thread_queue );                      
 80070cc:	b9 60 08 00 	mv r1,r11                                      
 80070d0:	d8 40 00 00 	call r2                                        
  _ISR_Disable( level );                                              
 80070d4:	90 00 10 00 	rcsr r2,IE                                     
 80070d8:	34 03 ff fe 	mvi r3,-2                                      
 80070dc:	a0 43 18 00 	and r3,r2,r3                                   
 80070e0:	d0 03 00 00 	wcsr IE,r3                                     
    if ( !the_thread ) {                                              
 80070e4:	5c 20 ff f3 	bne r1,r0,80070b0 <_Thread_queue_Dequeue+0x40> 
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
 80070e8:	29 64 00 30 	lw r4,(r11+48)                                 
 80070ec:	34 03 00 01 	mvi r3,1                                       
 80070f0:	34 84 ff ff 	addi r4,r4,-1                                  
 80070f4:	54 83 ff ef 	bgu r4,r3,80070b0 <_Thread_queue_Dequeue+0x40> <== ALWAYS TAKEN
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
        the_thread = _Thread_Executing;                               
 80070f8:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 80070fc:	38 21 0d e0 	ori r1,r1,0xde0                                <== NOT EXECUTED
  _ISR_Disable( level );                                              
    if ( !the_thread ) {                                              
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
 8007100:	34 03 00 03 	mvi r3,3                                       <== NOT EXECUTED
        the_thread = _Thread_Executing;                               
 8007104:	28 21 00 10 	lw r1,(r1+16)                                  <== NOT EXECUTED
  _ISR_Disable( level );                                              
    if ( !the_thread ) {                                              
      sync_state = the_thread_queue->sync_state;                      
      if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||       
           (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
        the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
 8007108:	59 63 00 30 	sw (r11+48),r3                                 <== NOT EXECUTED
 800710c:	e3 ff ff e9 	bi 80070b0 <_Thread_queue_Dequeue+0x40>        <== NOT EXECUTED
                                                                      

0800731c <_Thread_queue_Enqueue_priority>: Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p ) {
 800731c:	37 9c ff f4 	addi sp,sp,-12                                 
 8007320:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8007324:	5b 8c 00 08 	sw (sp+8),r12                                  
 8007328:	5b 8d 00 04 	sw (sp+4),r13                                  
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
 800732c:	28 45 00 14 	lw r5,(r2+20)                                  
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8007330:	34 47 00 3c 	addi r7,r2,60                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8007334:	34 46 00 38 	addi r6,r2,56                                  
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 8007338:	00 a4 00 01 	srui r4,r5,1                                   
 800733c:	78 0c 08 02 	mvhi r12,0x802                                 
 8007340:	00 84 00 01 	srui r4,r4,1                                   
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8007344:	58 47 00 38 	sw (r2+56),r7                                  
 8007348:	00 84 00 01 	srui r4,r4,1                                   
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800734c:	58 46 00 40 	sw (r2+64),r6                                  
 8007350:	00 84 00 01 	srui r4,r4,1                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 8007354:	58 40 00 3c 	sw (r2+60),r0                                  
 8007358:	00 84 00 01 	srui r4,r4,1                                   
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_reverse_search (           
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return ( the_priority & TASK_QUEUE_DATA_REVERSE_SEARCH_MASK );      
 800735c:	20 a8 00 20 	andi r8,r5,0x20                                
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
 8007360:	00 84 00 01 	srui r4,r4,1                                   
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
  block_state  = the_thread_queue->state;                             
 8007364:	28 27 00 38 	lw r7,(r1+56)                                  
 8007368:	b4 84 30 00 	add r6,r4,r4                                   
 800736c:	39 8c 00 d8 	ori r12,r12,0xd8                               
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
 8007370:	5d 00 00 18 	bne r8,r0,80073d0 <_Thread_queue_Enqueue_priority+0xb4>
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8007374:	b4 c4 20 00 	add r4,r6,r4                                   
 8007378:	b4 84 20 00 	add r4,r4,r4                                   
 800737c:	b4 84 20 00 	add r4,r4,r4                                   
 8007380:	b4 24 60 00 	add r12,r1,r4                                  
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
 8007384:	34 0d ff fe 	mvi r13,-2                                     
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 8007388:	35 8b 00 04 	addi r11,r12,4                                 
 800738c:	90 00 40 00 	rcsr r8,IE                                     
 8007390:	a1 0d 50 00 	and r10,r8,r13                                 
 8007394:	d0 0a 00 00 	wcsr IE,r10                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8007398:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
 800739c:	5c 8b 00 04 	bne r4,r11,80073ac <_Thread_queue_Enqueue_priority+0x90>
 80073a0:	e0 00 00 24 	bi 8007430 <_Thread_queue_Enqueue_priority+0x114>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
 80073a4:	28 84 00 00 	lw r4,(r4+0)                                   
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
 80073a8:	44 8b 00 23 	be r4,r11,8007434 <_Thread_queue_Enqueue_priority+0x118>
    search_priority = search_thread->current_priority;                
 80073ac:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority <= search_priority )                                
 80073b0:	50 c5 00 21 	bgeu r6,r5,8007434 <_Thread_queue_Enqueue_priority+0x118>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority <= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 80073b4:	d0 08 00 00 	wcsr IE,r8                                     
 80073b8:	d0 0a 00 00 	wcsr IE,r10                                    
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
 80073bc:	28 89 00 10 	lw r9,(r4+16)                                  
 80073c0:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 80073c4:	5d 20 ff f8 	bne r9,r0,80073a4 <_Thread_queue_Enqueue_priority+0x88>
      _ISR_Enable( level );                                           
 80073c8:	d0 08 00 00 	wcsr IE,r8                                     
      goto restart_forward_search;                                    
 80073cc:	e3 ff ff f0 	bi 800738c <_Thread_queue_Enqueue_priority+0x70>
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80073d0:	b4 c4 20 00 	add r4,r6,r4                                   
 80073d4:	b4 84 20 00 	add r4,r4,r4                                   
 80073d8:	b4 84 20 00 	add r4,r4,r4                                   
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
 80073dc:	34 0d ff fe 	mvi r13,-2                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80073e0:	b4 24 50 00 	add r10,r1,r4                                  
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
 80073e4:	41 86 00 00 	lbu r6,(r12+0)                                 
 80073e8:	34 c6 00 01 	addi r6,r6,1                                   
                                                                      
  _ISR_Disable( level );                                              
 80073ec:	90 00 40 00 	rcsr r8,IE                                     
 80073f0:	a1 0d 58 00 	and r11,r8,r13                                 
 80073f4:	d0 0b 00 00 	wcsr IE,r11                                    
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80073f8:	29 44 00 08 	lw r4,(r10+8)                                  
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
 80073fc:	5c 8a 00 04 	bne r4,r10,800740c <_Thread_queue_Enqueue_priority+0xf0>
 8007400:	e0 00 00 18 	bi 8007460 <_Thread_queue_Enqueue_priority+0x144>
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
 8007404:	28 84 00 04 	lw r4,(r4+4)                                   
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
 8007408:	44 8a 00 16 	be r4,r10,8007460 <_Thread_queue_Enqueue_priority+0x144>
    search_priority = search_thread->current_priority;                
 800740c:	28 86 00 14 	lw r6,(r4+20)                                  
    if ( priority >= search_priority )                                
 8007410:	50 a6 00 14 	bgeu r5,r6,8007460 <_Thread_queue_Enqueue_priority+0x144>
      break;                                                          
    search_priority = search_thread->current_priority;                
    if ( priority >= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
 8007414:	d0 08 00 00 	wcsr IE,r8                                     
 8007418:	d0 0b 00 00 	wcsr IE,r11                                    
 800741c:	28 89 00 10 	lw r9,(r4+16)                                  
 8007420:	a0 e9 48 00 	and r9,r7,r9                                   
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
 8007424:	5d 20 ff f8 	bne r9,r0,8007404 <_Thread_queue_Enqueue_priority+0xe8>
      _ISR_Enable( level );                                           
 8007428:	d0 08 00 00 	wcsr IE,r8                                     
      goto restart_reverse_search;                                    
 800742c:	e3 ff ff ee 	bi 80073e4 <_Thread_queue_Enqueue_priority+0xc8>
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
 8007430:	34 06 ff ff 	mvi r6,-1                                      
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 8007434:	28 27 00 30 	lw r7,(r1+48)                                  
 8007438:	34 0a 00 01 	mvi r10,1                                      
 800743c:	b9 00 48 00 	mv r9,r8                                       
 8007440:	44 ea 00 1b 	be r7,r10,80074ac <_Thread_queue_Enqueue_priority+0x190><== ALWAYS TAKEN
   *  For example, the blocking thread could have been given          
   *  the mutex by an ISR or timed out.                               
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
 8007444:	58 69 00 00 	sw (r3+0),r9                                   <== NOT EXECUTED
  return the_thread_queue->sync_state;                                
}                                                                     
 8007448:	b8 e0 08 00 	mv r1,r7                                       
 800744c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8007450:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8007454:	2b 8d 00 04 	lw r13,(sp+4)                                  
 8007458:	37 9c 00 0c 	addi sp,sp,12                                  
 800745c:	c3 a0 00 00 	ret                                            
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
 8007460:	28 27 00 30 	lw r7,(r1+48)                                  
 8007464:	34 0a 00 01 	mvi r10,1                                      
 8007468:	b9 00 48 00 	mv r9,r8                                       
 800746c:	5c ea ff f6 	bne r7,r10,8007444 <_Thread_queue_Enqueue_priority+0x128><== NEVER TAKEN
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 8007470:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 8007474:	44 a6 00 1d 	be r5,r6,80074e8 <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
 8007478:	28 83 00 00 	lw r3,(r4+0)                                   
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
 800747c:	58 44 00 04 	sw (r2+4),r4                                   
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
 8007480:	58 43 00 00 	sw (r2+0),r3                                   
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
 8007484:	58 82 00 00 	sw (r4+0),r2                                   
  next_node->previous    = the_node;                                  
 8007488:	58 62 00 04 	sw (r3+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 800748c:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 8007490:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 8007494:	b8 e0 08 00 	mv r1,r7                                       
 8007498:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800749c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80074a0:	2b 8d 00 04 	lw r13,(sp+4)                                  
 80074a4:	37 9c 00 0c 	addi sp,sp,12                                  
 80074a8:	c3 a0 00 00 	ret                                            
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
 80074ac:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  if ( priority == search_priority )                                  
 80074b0:	44 a6 00 0e 	be r5,r6,80074e8 <_Thread_queue_Enqueue_priority+0x1cc>
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
 80074b4:	28 83 00 04 	lw r3,(r4+4)                                   
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 80074b8:	58 44 00 00 	sw (r2+0),r4                                   
  the_node->previous     = previous_node;                             
 80074bc:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 80074c0:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 80074c4:	58 82 00 04 	sw (r4+4),r2                                   
  the_thread->Wait.queue = the_thread_queue;                          
 80074c8:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 80074cc:	d0 08 00 00 	wcsr IE,r8                                     
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
  return the_thread_queue->sync_state;                                
}                                                                     
 80074d0:	b8 e0 08 00 	mv r1,r7                                       
 80074d4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80074d8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80074dc:	2b 8d 00 04 	lw r13,(sp+4)                                  
 80074e0:	37 9c 00 0c 	addi sp,sp,12                                  
 80074e4:	c3 a0 00 00 	ret                                            
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
  previous_node = search_node->previous;                              
 80074e8:	28 83 00 40 	lw r3,(r4+64)                                  
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
 80074ec:	34 85 00 3c 	addi r5,r4,60                                  
  previous_node = search_node->previous;                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
 80074f0:	58 45 00 00 	sw (r2+0),r5                                   
  the_node->previous     = previous_node;                             
 80074f4:	58 43 00 04 	sw (r2+4),r3                                   
  previous_node->next    = the_node;                                  
 80074f8:	58 62 00 00 	sw (r3+0),r2                                   
  search_node->previous  = the_node;                                  
 80074fc:	58 82 00 40 	sw (r4+64),r2                                  
  the_thread->Wait.queue = the_thread_queue;                          
 8007500:	58 41 00 44 	sw (r2+68),r1                                  
  _ISR_Enable( level );                                               
 8007504:	d0 08 00 00 	wcsr IE,r8                                     
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
 8007508:	34 07 00 01 	mvi r7,1                                       
 800750c:	e3 ff ff cf 	bi 8007448 <_Thread_queue_Enqueue_priority+0x12c>
                                                                      

0800b32c <_Thread_queue_Process_timeout>: #include <rtems/score/tqdata.h> void _Thread_queue_Process_timeout( Thread_Control *the_thread ) {
 800b32c:	37 9c ff fc 	addi sp,sp,-4                                  
 800b330:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;    
 800b334:	28 23 00 44 	lw r3,(r1+68)                                  
#include <rtems/score/tqdata.h>                                       
                                                                      
void _Thread_queue_Process_timeout(                                   
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 800b338:	b8 20 20 00 	mv r4,r1                                       
   *  If it is not satisfied, then it is "nothing happened" and       
   *  this is the "timeout" transition.  After a request is satisfied,
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
 800b33c:	28 62 00 30 	lw r2,(r3+48)                                  
 800b340:	44 40 00 05 	be r2,r0,800b354 <_Thread_queue_Process_timeout+0x28>
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 800b344:	78 01 08 02 	mvhi r1,0x802                                  
 800b348:	38 21 0d e0 	ori r1,r1,0xde0                                
 800b34c:	28 21 00 10 	lw r1,(r1+16)                                  
 800b350:	44 81 00 09 	be r4,r1,800b374 <_Thread_queue_Process_timeout+0x48>
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800b354:	28 65 00 3c 	lw r5,(r3+60)                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800b358:	b8 60 08 00 	mv r1,r3                                       
 800b35c:	b8 80 10 00 	mv r2,r4                                       
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
    }                                                                 
  } else {                                                            
    the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800b360:	58 85 00 34 	sw (r4+52),r5                                  
    _Thread_queue_Extract( the_thread->Wait.queue, the_thread );      
 800b364:	fb ff ff a4 	calli 800b1f4 <_Thread_queue_Extract>          
  }                                                                   
}                                                                     
 800b368:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b36c:	37 9c 00 04 	addi sp,sp,4                                   
 800b370:	c3 a0 00 00 	ret                                            
   *  a timeout is not allowed to occur.                              
   */                                                                 
                                                                      
  if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
       _Thread_Is_executing( the_thread ) ) {                         
    if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
 800b374:	34 01 00 03 	mvi r1,3                                       
 800b378:	44 41 ff fc 	be r2,r1,800b368 <_Thread_queue_Process_timeout+0x3c><== NEVER TAKEN
      the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
 800b37c:	28 61 00 3c 	lw r1,(r3+60)                                  
 800b380:	58 81 00 34 	sw (r4+52),r1                                  
      the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
 800b384:	34 01 00 02 	mvi r1,2                                       
 800b388:	58 61 00 30 	sw (r3+48),r1                                  
 800b38c:	e3 ff ff f7 	bi 800b368 <_Thread_queue_Process_timeout+0x3c>
                                                                      

080075bc <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) {
 80075bc:	37 9c ff ec 	addi sp,sp,-20                                 
 80075c0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80075c4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80075c8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80075cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80075d0:	b8 20 58 00 	mv r11,r1                                      
 80075d4:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   * Just in case the thread really wasn't blocked on a thread queue  
   * when we get here.                                                
   */                                                                 
  if ( !the_thread_queue )                                            
 80075d8:	44 20 00 04 	be r1,r0,80075e8 <_Thread_queue_Requeue+0x2c>  <== NEVER TAKEN
                                                                      
  /*                                                                  
   * If queueing by FIFO, there is nothing to do. This only applies to
   * priority blocking discipline.                                    
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
 80075dc:	28 22 00 34 	lw r2,(r1+52)                                  
 80075e0:	34 01 00 01 	mvi r1,1                                       
 80075e4:	44 41 00 07 	be r2,r1,8007600 <_Thread_queue_Requeue+0x44>  <== ALWAYS TAKEN
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
  }                                                                   
}                                                                     
 80075e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80075ec:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 80075f0:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 80075f4:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80075f8:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 80075fc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
    Thread_queue_Control *tq = the_thread_queue;                      
    ISR_Level             level;                                      
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
 8007600:	90 00 68 00 	rcsr r13,IE                                    
 8007604:	34 01 ff fe 	mvi r1,-2                                      
 8007608:	a1 a1 08 00 	and r1,r13,r1                                  
 800760c:	d0 01 00 00 	wcsr IE,r1                                     
 8007610:	78 03 08 01 	mvhi r3,0x801                                  
 8007614:	38 63 dc 04 	ori r3,r3,0xdc04                               
 8007618:	29 82 00 10 	lw r2,(r12+16)                                 
 800761c:	28 61 00 00 	lw r1,(r3+0)                                   
 8007620:	a0 41 08 00 	and r1,r2,r1                                   
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
 8007624:	5c 20 00 08 	bne r1,r0,8007644 <_Thread_queue_Requeue+0x88> <== ALWAYS TAKEN
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
    }                                                                 
    _ISR_Enable( level );                                             
 8007628:	d0 0d 00 00 	wcsr IE,r13                                    <== NOT EXECUTED
  }                                                                   
}                                                                     
 800762c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007630:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8007634:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8007638:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800763c:	37 9c 00 14 	addi sp,sp,20                                  
 8007640:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
 8007644:	34 01 00 01 	mvi r1,1                                       
 8007648:	59 61 00 30 	sw (r11+48),r1                                 
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
 800764c:	b9 80 10 00 	mv r2,r12                                      
 8007650:	b9 60 08 00 	mv r1,r11                                      
 8007654:	34 03 00 01 	mvi r3,1                                       
 8007658:	f8 00 0e f5 	calli 800b22c <_Thread_queue_Extract_priority_helper>
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
 800765c:	b9 60 08 00 	mv r1,r11                                      
 8007660:	b9 80 10 00 	mv r2,r12                                      
 8007664:	37 83 00 14 	addi r3,sp,20                                  
 8007668:	fb ff ff 2d 	calli 800731c <_Thread_queue_Enqueue_priority> 
    }                                                                 
    _ISR_Enable( level );                                             
 800766c:	d0 0d 00 00 	wcsr IE,r13                                    
 8007670:	e3 ff ff ef 	bi 800762c <_Thread_queue_Requeue+0x70>        
                                                                      

08007674 <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) {
 8007674:	37 9c ff f8 	addi sp,sp,-8                                  
 8007678:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 800767c:	37 82 00 08 	addi r2,sp,8                                   
 8007680:	fb ff fd 79 	calli 8006c64 <_Thread_Get>                    
  switch ( location ) {                                               
 8007684:	2b 82 00 08 	lw r2,(sp+8)                                   
 8007688:	5c 40 00 07 	bne r2,r0,80076a4 <_Thread_queue_Timeout+0x30> <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
 800768c:	f8 00 0f 28 	calli 800b32c <_Thread_queue_Process_timeout>  
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8007690:	78 01 08 02 	mvhi r1,0x802                                  
 8007694:	38 21 09 58 	ori r1,r1,0x958                                
 8007698:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    --level;                                                          
 800769c:	34 42 ff ff 	addi r2,r2,-1                                  
    _Thread_Dispatch_disable_level = level;                           
 80076a0:	58 22 00 00 	sw (r1+0),r2                                   
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
 80076a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80076a8:	37 9c 00 08 	addi sp,sp,8                                   
 80076ac:	c3 a0 00 00 	ret                                            
                                                                      

080159cc <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
 80159cc:	37 9c ff a4 	addi sp,sp,-92                                 
 80159d0:	5b 8b 00 44 	sw (sp+68),r11                                 
 80159d4:	5b 8c 00 40 	sw (sp+64),r12                                 
 80159d8:	5b 8d 00 3c 	sw (sp+60),r13                                 
 80159dc:	5b 8e 00 38 	sw (sp+56),r14                                 
 80159e0:	5b 8f 00 34 	sw (sp+52),r15                                 
 80159e4:	5b 90 00 30 	sw (sp+48),r16                                 
 80159e8:	5b 91 00 2c 	sw (sp+44),r17                                 
 80159ec:	5b 92 00 28 	sw (sp+40),r18                                 
 80159f0:	5b 93 00 24 	sw (sp+36),r19                                 
 80159f4:	5b 94 00 20 	sw (sp+32),r20                                 
 80159f8:	5b 95 00 1c 	sw (sp+28),r21                                 
 80159fc:	5b 96 00 18 	sw (sp+24),r22                                 
 8015a00:	5b 97 00 14 	sw (sp+20),r23                                 
 8015a04:	5b 98 00 10 	sw (sp+16),r24                                 
 8015a08:	5b 99 00 0c 	sw (sp+12),r25                                 
 8015a0c:	5b 9b 00 08 	sw (sp+8),fp                                   
 8015a10:	5b 9d 00 04 	sw (sp+4),ra                                   
 8015a14:	78 13 08 03 	mvhi r19,0x803                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8015a18:	37 96 00 54 	addi r22,sp,84                                 
 8015a1c:	37 95 00 58 	addi r21,sp,88                                 
 8015a20:	37 8f 00 48 	addi r15,sp,72                                 
 8015a24:	37 94 00 4c 	addi r20,sp,76                                 
 8015a28:	78 0e 08 03 	mvhi r14,0x803                                 
 8015a2c:	78 17 08 03 	mvhi r23,0x803                                 
 8015a30:	b8 20 58 00 	mv r11,r1                                      
 8015a34:	5b 95 00 54 	sw (sp+84),r21                                 
  head->previous = NULL;                                              
 8015a38:	5b 80 00 58 	sw (sp+88),r0                                  
  tail->previous = head;                                              
 8015a3c:	5b 96 00 5c 	sw (sp+92),r22                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8015a40:	5b 94 00 48 	sw (sp+72),r20                                 
  head->previous = NULL;                                              
 8015a44:	5b 80 00 4c 	sw (sp+76),r0                                  
  tail->previous = head;                                              
 8015a48:	5b 8f 00 50 	sw (sp+80),r15                                 
 8015a4c:	3a 73 fe 38 	ori r19,r19,0xfe38                             
 8015a50:	34 31 00 30 	addi r17,r1,48                                 
 8015a54:	39 ce fc d0 	ori r14,r14,0xfcd0                             
 8015a58:	34 30 00 68 	addi r16,r1,104                                
 8015a5c:	3a f7 fd 50 	ori r23,r23,0xfd50                             
 8015a60:	34 3b 00 08 	addi fp,r1,8                                   
 8015a64:	34 39 00 40 	addi r25,r1,64                                 
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8015a68:	34 0d 00 03 	mvi r13,3                                      
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 8015a6c:	34 12 ff fe 	mvi r18,-2                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
 8015a70:	34 18 00 01 	mvi r24,1                                      
{                                                                     
  /*                                                                  
   *  Afterwards all timer inserts are directed to this chain and the interval
   *  and TOD chains will be no more modified by other parties.       
   */                                                                 
  ts->insert_chain = insert_chain;                                    
 8015a74:	59 76 00 78 	sw (r11+120),r22                               
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
 8015a78:	2a 64 00 00 	lw r4,(r19+0)                                  
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
 8015a7c:	29 62 00 3c 	lw r2,(r11+60)                                 
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8015a80:	ba 20 08 00 	mv r1,r17                                      
 8015a84:	b9 e0 18 00 	mv r3,r15                                      
 8015a88:	c8 82 10 00 	sub r2,r4,r2                                   
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 8015a8c:	59 64 00 3c 	sw (r11+60),r4                                 
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
 8015a90:	f8 00 15 40 	calli 801af90 <_Watchdog_Adjust_to_chain>      
 8015a94:	78 03 08 03 	mvhi r3,0x803                                  
 8015a98:	38 63 90 8c 	ori r3,r3,0x908c                               
 8015a9c:	28 64 00 00 	lw r4,(r3+0)                                   
 8015aa0:	29 c1 00 00 	lw r1,(r14+0)                                  
 8015aa4:	29 c2 00 04 	lw r2,(r14+4)                                  
 8015aa8:	34 03 00 00 	mvi r3,0                                       
 8015aac:	f8 00 56 d6 	calli 802b604 <__divdi3>                       
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
 8015ab0:	29 64 00 74 	lw r4,(r11+116)                                
 8015ab4:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   *  Process the seconds chain.  Start by checking that the Time     
   *  of Day (TOD) has not been set backwards.  If it has then        
   *  we want to adjust the watchdogs->Chain to indicate this.        
   */                                                                 
  if ( snapshot > last_snapshot ) {                                   
 8015ab8:	50 82 00 1c 	bgeu r4,r2,8015b28 <_Timer_server_Body+0x15c>  
    /*                                                                
     *  This path is for normal forward movement and cases where the  
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
 8015abc:	ba 00 08 00 	mv r1,r16                                      
 8015ac0:	c8 44 10 00 	sub r2,r2,r4                                   
 8015ac4:	b9 e0 18 00 	mv r3,r15                                      
 8015ac8:	f8 00 15 32 	calli 801af90 <_Watchdog_Adjust_to_chain>      
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
 8015acc:	59 6c 00 74 	sw (r11+116),r12                               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 8015ad0:	34 0c 00 01 	mvi r12,1                                      
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 8015ad4:	29 61 00 78 	lw r1,(r11+120)                                
 8015ad8:	f8 00 03 5c 	calli 8016848 <_Chain_Get>                     
 8015adc:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if ( timer == NULL ) {                                            
 8015ae0:	44 20 00 0b 	be r1,r0,8015b0c <_Timer_server_Body+0x140>    
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 8015ae4:	28 24 00 38 	lw r4,(r1+56)                                  
 8015ae8:	44 8c 00 16 	be r4,r12,8015b40 <_Timer_server_Body+0x174>   
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8015aec:	5c 8d ff fa 	bne r4,r13,8015ad4 <_Timer_server_Body+0x108>  <== NEVER TAKEN
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 8015af0:	34 42 00 10 	addi r2,r2,16                                  
 8015af4:	ba 00 08 00 	mv r1,r16                                      
 8015af8:	f8 00 15 4a 	calli 801b020 <_Watchdog_Insert>               
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
 8015afc:	29 61 00 78 	lw r1,(r11+120)                                
 8015b00:	f8 00 03 52 	calli 8016848 <_Chain_Get>                     
 8015b04:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if ( timer == NULL ) {                                            
 8015b08:	5c 20 ff f7 	bne r1,r0,8015ae4 <_Timer_server_Body+0x118>   <== NEVER TAKEN
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
 8015b0c:	90 00 10 00 	rcsr r2,IE                                     
 8015b10:	a0 52 18 00 	and r3,r2,r18                                  
 8015b14:	d0 03 00 00 	wcsr IE,r3                                     
    if ( _Chain_Is_empty( insert_chain ) ) {                          
 8015b18:	2b 83 00 54 	lw r3,(sp+84)                                  
 8015b1c:	44 75 00 0d 	be r3,r21,8015b50 <_Timer_server_Body+0x184>   <== ALWAYS TAKEN
      ts->insert_chain = NULL;                                        
      _ISR_Enable( level );                                           
                                                                      
      break;                                                          
    } else {                                                          
      _ISR_Enable( level );                                           
 8015b20:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
 8015b24:	e3 ff ff d5 	bi 8015a78 <_Timer_server_Body+0xac>           <== NOT EXECUTED
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
 8015b28:	50 44 ff e9 	bgeu r2,r4,8015acc <_Timer_server_Body+0x100>  
     /*                                                               
      *  The current TOD is before the last TOD which indicates that  
      *  TOD has been set backwards.                                  
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
 8015b2c:	ba 00 08 00 	mv r1,r16                                      
 8015b30:	34 02 00 01 	mvi r2,1                                       
 8015b34:	c8 8c 18 00 	sub r3,r4,r12                                  
 8015b38:	f8 00 14 d8 	calli 801ae98 <_Watchdog_Adjust>               
 8015b3c:	e3 ff ff e4 	bi 8015acc <_Timer_server_Body+0x100>          
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 8015b40:	ba 20 08 00 	mv r1,r17                                      
 8015b44:	34 42 00 10 	addi r2,r2,16                                  
 8015b48:	f8 00 15 36 	calli 801b020 <_Watchdog_Insert>               
 8015b4c:	e3 ff ff e2 	bi 8015ad4 <_Timer_server_Body+0x108>          
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
      ts->insert_chain = NULL;                                        
 8015b50:	59 60 00 78 	sw (r11+120),r0                                
      _ISR_Enable( level );                                           
 8015b54:	d0 02 00 00 	wcsr IE,r2                                     
  _Chain_Initialize_empty( &fire_chain );                             
                                                                      
  while ( true ) {                                                    
    _Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain );
                                                                      
    if ( !_Chain_Is_empty( &fire_chain ) ) {                          
 8015b58:	2b 82 00 48 	lw r2,(sp+72)                                  
 8015b5c:	5c 54 00 0b 	bne r2,r20,8015b88 <_Timer_server_Body+0x1bc>  
 8015b60:	e0 00 00 11 	bi 8015ba4 <_Timer_server_Body+0x1d8>          
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 8015b64:	28 43 00 00 	lw r3,(r2+0)                                   
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 8015b68:	58 6f 00 04 	sw (r3+4),r15                                  
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
 8015b6c:	5b 83 00 48 	sw (sp+72),r3                                  
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
 8015b70:	58 40 00 08 	sw (r2+8),r0                                   
          _ISR_Enable( level );                                       
 8015b74:	d0 04 00 00 	wcsr IE,r4                                     
        /*                                                            
         *  The timer server may block here and wait for resources or time.
         *  The system watchdogs are inactive and will remain inactive since
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
 8015b78:	28 43 00 1c 	lw r3,(r2+28)                                  
 8015b7c:	28 41 00 20 	lw r1,(r2+32)                                  
 8015b80:	28 42 00 24 	lw r2,(r2+36)                                  
 8015b84:	d8 60 00 00 	call r3                                        
                                                                      
        /*                                                            
         *  It is essential that interrupts are disable here since an interrupt
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
 8015b88:	90 00 20 00 	rcsr r4,IE                                     
 8015b8c:	a0 92 10 00 	and r2,r4,r18                                  
 8015b90:	d0 02 00 00 	wcsr IE,r2                                     
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8015b94:	2b 82 00 48 	lw r2,(sp+72)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 8015b98:	5c 54 ff f3 	bne r2,r20,8015b64 <_Timer_server_Body+0x198>  
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
          _ISR_Enable( level );                                       
        } else {                                                      
          _ISR_Enable( level );                                       
 8015b9c:	d0 04 00 00 	wcsr IE,r4                                     
 8015ba0:	e3 ff ff b5 	bi 8015a74 <_Timer_server_Body+0xa8>           
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
 8015ba4:	31 60 00 7c 	sb (r11+124),r0                                
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8015ba8:	2a e1 00 00 	lw r1,(r23+0)                                  
                                                                      
    ++level;                                                          
 8015bac:	34 21 00 01 	addi r1,r1,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8015bb0:	5a e1 00 00 	sw (r23+0),r1                                  
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
 8015bb4:	29 61 00 00 	lw r1,(r11+0)                                  
 8015bb8:	34 02 00 08 	mvi r2,8                                       
 8015bbc:	f8 00 13 9f 	calli 801aa38 <_Thread_Set_state>              
        _Timer_server_Reset_interval_system_watchdog( ts );           
 8015bc0:	b9 60 08 00 	mv r1,r11                                      
 8015bc4:	fb ff ff 40 	calli 80158c4 <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
 8015bc8:	b9 60 08 00 	mv r1,r11                                      
 8015bcc:	fb ff ff 5f 	calli 8015948 <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
 8015bd0:	f8 00 10 be 	calli 8019ec8 <_Thread_Enable_dispatch>        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 8015bd4:	bb 60 08 00 	mv r1,fp                                       
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
 8015bd8:	31 78 00 7c 	sb (r11+124),r24                               
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
 8015bdc:	f8 00 15 77 	calli 801b1b8 <_Watchdog_Remove>               
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
 8015be0:	bb 20 08 00 	mv r1,r25                                      
 8015be4:	f8 00 15 75 	calli 801b1b8 <_Watchdog_Remove>               
 8015be8:	e3 ff ff a3 	bi 8015a74 <_Timer_server_Body+0xa8>           
                                                                      

08015bec <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) {
 8015bec:	37 9c ff f0 	addi sp,sp,-16                                 
 8015bf0:	5b 8b 00 10 	sw (sp+16),r11                                 
 8015bf4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8015bf8:	5b 8d 00 08 	sw (sp+8),r13                                  
 8015bfc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8015c00:	b8 20 58 00 	mv r11,r1                                      
  if ( ts->insert_chain == NULL ) {                                   
 8015c04:	28 21 00 78 	lw r1,(r1+120)                                 
                                                                      
static void _Timer_server_Schedule_operation_method(                  
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
 8015c08:	b8 40 60 00 	mv r12,r2                                      
  if ( ts->insert_chain == NULL ) {                                   
 8015c0c:	44 20 00 09 	be r1,r0,8015c30 <_Timer_server_Schedule_operation_method+0x44>
     *  server is not preemptible, so we must be in interrupt context here.  No
     *  thread dispatch will happen until the timer server finishes its
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
 8015c10:	29 61 00 78 	lw r1,(r11+120)                                
 8015c14:	f8 00 03 01 	calli 8016818 <_Chain_Append>                  
  }                                                                   
}                                                                     
 8015c18:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8015c1c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8015c20:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8015c24:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8015c28:	37 9c 00 10 	addi sp,sp,16                                  
 8015c2c:	c3 a0 00 00 	ret                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8015c30:	78 01 08 03 	mvhi r1,0x803                                  
 8015c34:	38 21 fd 50 	ori r1,r1,0xfd50                               
 8015c38:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 8015c3c:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8015c40:	58 22 00 00 	sw (r1+0),r2                                   
   *  being inserted.  This could result in an integer overflow.      
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
 8015c44:	29 81 00 38 	lw r1,(r12+56)                                 
 8015c48:	34 02 00 01 	mvi r2,1                                       
 8015c4c:	44 22 00 30 	be r1,r2,8015d0c <_Timer_server_Schedule_operation_method+0x120>
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
                                                                      
    if ( !ts->active ) {                                              
      _Timer_server_Reset_interval_system_watchdog( ts );             
    }                                                                 
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
 8015c50:	34 02 00 03 	mvi r2,3                                       
 8015c54:	44 22 00 08 	be r1,r2,8015c74 <_Timer_server_Schedule_operation_method+0x88>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8015c58:	f8 00 10 9c 	calli 8019ec8 <_Thread_Enable_dispatch>        
     *  critical section.  We have to use the protected chain methods because
     *  we may be interrupted by a higher priority interrupt.         
     */                                                               
    _Chain_Append( ts->insert_chain, &timer->Object.Node );           
  }                                                                   
}                                                                     
 8015c5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8015c60:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8015c64:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8015c68:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8015c6c:	37 9c 00 10 	addi sp,sp,16                                  
 8015c70:	c3 a0 00 00 	ret                                            
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 8015c74:	90 00 68 00 	rcsr r13,IE                                    
 8015c78:	34 01 ff fe 	mvi r1,-2                                      
 8015c7c:	a1 a1 08 00 	and r1,r13,r1                                  
 8015c80:	d0 01 00 00 	wcsr IE,r1                                     
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
 8015c84:	78 02 08 03 	mvhi r2,0x803                                  
 8015c88:	78 03 08 03 	mvhi r3,0x803                                  
 8015c8c:	38 42 fc d0 	ori r2,r2,0xfcd0                               
 8015c90:	38 63 90 8c 	ori r3,r3,0x908c                               
 8015c94:	28 64 00 00 	lw r4,(r3+0)                                   
 8015c98:	28 41 00 00 	lw r1,(r2+0)                                   
 8015c9c:	28 42 00 04 	lw r2,(r2+4)                                   
 8015ca0:	34 03 00 00 	mvi r3,0                                       
 8015ca4:	f8 00 56 58 	calli 802b604 <__divdi3>                       
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8015ca8:	29 61 00 68 	lw r1,(r11+104)                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
 8015cac:	29 63 00 74 	lw r3,(r11+116)                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8015cb0:	35 64 00 6c 	addi r4,r11,108                                
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
 8015cb4:	44 24 00 0a 	be r1,r4,8015cdc <_Timer_server_Schedule_operation_method+0xf0>
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
 8015cb8:	28 25 00 10 	lw r5,(r1+16)                                  
        }                                                             
      } else {                                                        
        /*                                                            
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
 8015cbc:	b4 a3 20 00 	add r4,r5,r3                                   
        delta_interval += delta;                                      
 8015cc0:	c8 82 20 00 	sub r4,r4,r2                                   
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
      if ( snapshot > last_snapshot ) {                               
 8015cc4:	50 62 00 05 	bgeu r3,r2,8015cd8 <_Timer_server_Schedule_operation_method+0xec>
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
 8015cc8:	c8 43 18 00 	sub r3,r2,r3                                   
        if (delta_interval > delta) {                                 
          delta_interval -= delta;                                    
        } else {                                                      
          delta_interval = 0;                                         
 8015ccc:	34 04 00 00 	mvi r4,0                                       
      if ( snapshot > last_snapshot ) {                               
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
        if (delta_interval > delta) {                                 
 8015cd0:	50 65 00 02 	bgeu r3,r5,8015cd8 <_Timer_server_Schedule_operation_method+0xec><== NEVER TAKEN
          delta_interval -= delta;                                    
 8015cd4:	c8 a3 20 00 	sub r4,r5,r3                                   
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
        delta_interval += delta;                                      
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 8015cd8:	58 24 00 10 	sw (r1+16),r4                                  
    }                                                                 
    ts->TOD_watchdogs.last_snapshot = snapshot;                       
 8015cdc:	59 62 00 74 	sw (r11+116),r2                                
    _ISR_Enable( level );                                             
 8015ce0:	d0 0d 00 00 	wcsr IE,r13                                    
                                                                      
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
 8015ce4:	35 61 00 68 	addi r1,r11,104                                
 8015ce8:	35 82 00 10 	addi r2,r12,16                                 
 8015cec:	f8 00 14 cd 	calli 801b020 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 8015cf0:	41 61 00 7c 	lbu r1,(r11+124)                               
 8015cf4:	20 21 00 ff 	andi r1,r1,0xff                                
 8015cf8:	5c 20 ff d8 	bne r1,r0,8015c58 <_Timer_server_Schedule_operation_method+0x6c><== NEVER TAKEN
      _Timer_server_Reset_tod_system_watchdog( ts );                  
 8015cfc:	b9 60 08 00 	mv r1,r11                                      
 8015d00:	fb ff ff 12 	calli 8015948 <_Timer_server_Reset_tod_system_watchdog>
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8015d04:	f8 00 10 71 	calli 8019ec8 <_Thread_Enable_dispatch>        
 8015d08:	e3 ff ff d5 	bi 8015c5c <_Timer_server_Schedule_operation_method+0x70>
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
 8015d0c:	90 00 18 00 	rcsr r3,IE                                     
 8015d10:	34 01 ff fe 	mvi r1,-2                                      
 8015d14:	a0 61 08 00 	and r1,r3,r1                                   
 8015d18:	d0 01 00 00 	wcsr IE,r1                                     
    snapshot = _Watchdog_Ticks_since_boot;                            
 8015d1c:	78 01 08 03 	mvhi r1,0x803                                  
 8015d20:	38 21 fe 38 	ori r1,r1,0xfe38                               
      initialized = false;                                            
    }                                                                 
  #endif                                                              
                                                                      
  return status;                                                      
}                                                                     
 8015d24:	29 62 00 30 	lw r2,(r11+48)                                 
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
    snapshot = _Watchdog_Ticks_since_boot;                            
 8015d28:	28 21 00 00 	lw r1,(r1+0)                                   
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
 8015d2c:	29 65 00 3c 	lw r5,(r11+60)                                 
 8015d30:	35 64 00 34 	addi r4,r11,52                                 
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
 8015d34:	44 44 00 07 	be r2,r4,8015d50 <_Timer_server_Schedule_operation_method+0x164>
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
 8015d38:	28 46 00 10 	lw r6,(r2+16)                                  
      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
                                                                      
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
 8015d3c:	c8 25 28 00 	sub r5,r1,r5                                   
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
        delta_interval -= delta;                                      
      } else {                                                        
        delta_interval = 0;                                           
 8015d40:	34 04 00 00 	mvi r4,0                                       
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
      if (delta_interval > delta) {                                   
 8015d44:	50 a6 00 02 	bgeu r5,r6,8015d4c <_Timer_server_Schedule_operation_method+0x160>
        delta_interval -= delta;                                      
 8015d48:	c8 c5 20 00 	sub r4,r6,r5                                   
      } else {                                                        
        delta_interval = 0;                                           
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
 8015d4c:	58 44 00 10 	sw (r2+16),r4                                  
    }                                                                 
    ts->Interval_watchdogs.last_snapshot = snapshot;                  
 8015d50:	59 61 00 3c 	sw (r11+60),r1                                 
    _ISR_Enable( level );                                             
 8015d54:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
 8015d58:	35 61 00 30 	addi r1,r11,48                                 
 8015d5c:	35 82 00 10 	addi r2,r12,16                                 
 8015d60:	f8 00 14 b0 	calli 801b020 <_Watchdog_Insert>               
                                                                      
    if ( !ts->active ) {                                              
 8015d64:	41 61 00 7c 	lbu r1,(r11+124)                               
 8015d68:	20 21 00 ff 	andi r1,r1,0xff                                
 8015d6c:	5c 20 ff bb 	bne r1,r0,8015c58 <_Timer_server_Schedule_operation_method+0x6c>
      _Timer_server_Reset_interval_system_watchdog( ts );             
 8015d70:	b9 60 08 00 	mv r1,r11                                      
 8015d74:	fb ff fe d4 	calli 80158c4 <_Timer_server_Reset_interval_system_watchdog>
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
 8015d78:	f8 00 10 54 	calli 8019ec8 <_Thread_Enable_dispatch>        
 8015d7c:	e3 ff ff b8 	bi 8015c5c <_Timer_server_Schedule_operation_method+0x70>
                                                                      

08009290 <_Timespec_Add_to>: uint32_t _Timespec_Add_to( struct timespec *time, const struct timespec *add ) {
 8009290:	b8 20 20 00 	mv r4,r1                                       
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
 8009294:	28 83 00 00 	lw r3,(r4+0)                                   
uint32_t _Timespec_Add_to(                                            
  struct timespec       *time,                                        
  const struct timespec *add                                          
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
 8009298:	28 41 00 00 	lw r1,(r2+0)                                   
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
 800929c:	28 86 00 04 	lw r6,(r4+4)                                   
 80092a0:	28 42 00 04 	lw r2,(r2+4)                                   
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
 80092a4:	78 07 08 01 	mvhi r7,0x801                                  
 80092a8:	38 e7 8c 98 	ori r7,r7,0x8c98                               
 80092ac:	28 e5 00 00 	lw r5,(r7+0)                                   
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
 80092b0:	b4 61 18 00 	add r3,r3,r1                                   
  time->tv_nsec += add->tv_nsec;                                      
 80092b4:	b4 46 10 00 	add r2,r2,r6                                   
)                                                                     
{                                                                     
  uint32_t seconds = add->tv_sec;                                     
                                                                      
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
 80092b8:	58 83 00 00 	sw (r4+0),r3                                   
  time->tv_nsec += add->tv_nsec;                                      
 80092bc:	58 82 00 04 	sw (r4+4),r2                                   
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
 80092c0:	50 a2 00 0a 	bgeu r5,r2,80092e8 <_Timespec_Add_to+0x58>     
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                      
 80092c4:	78 07 08 01 	mvhi r7,0x801                                  
 80092c8:	38 e7 8c 9c 	ori r7,r7,0x8c9c                               
 80092cc:	28 e6 00 00 	lw r6,(r7+0)                                   
 80092d0:	b4 46 10 00 	add r2,r2,r6                                   
#include <sys/types.h>                                                
#include <rtems/score/timespec.h>                                     
#include <rtems/score/tod.h>                                          
#include <rtems/score/watchdog.h>                                     
                                                                      
uint32_t _Timespec_Add_to(                                            
 80092d4:	34 63 00 01 	addi r3,r3,1                                   
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
    time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                      
    time->tv_sec++;                                                   
    seconds++;                                                        
 80092d8:	34 21 00 01 	addi r1,r1,1                                   
  /* Add the basics */                                                
  time->tv_sec += add->tv_sec;                                        
  time->tv_nsec += add->tv_nsec;                                      
                                                                      
  /* Now adjust it so nanoseconds is in range */                      
  while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {             
 80092dc:	54 45 ff fd 	bgu r2,r5,80092d0 <_Timespec_Add_to+0x40>      <== NEVER TAKEN
 80092e0:	58 82 00 04 	sw (r4+4),r2                                   
 80092e4:	58 83 00 00 	sw (r4+0),r3                                   
    time->tv_sec++;                                                   
    seconds++;                                                        
  }                                                                   
                                                                      
  return seconds;                                                     
}                                                                     
 80092e8:	c3 a0 00 00 	ret                                            
                                                                      

08007aec <_User_extensions_Handler_initialization>: } } void _User_extensions_Handler_initialization(void) {
 8007aec:	37 9c ff f8 	addi sp,sp,-8                                  
 8007af0:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t number_of_initial_extensions =                             
 8007af4:	78 01 08 01 	mvhi r1,0x801                                  
 8007af8:	38 21 d2 6c 	ori r1,r1,0xd26c                               
 8007afc:	28 21 00 40 	lw r1,(r1+64)                                  
    rtems_configuration_get_number_of_initial_extensions();           
                                                                      
  if ( number_of_initial_extensions > 0 ) {                           
 8007b00:	44 20 00 0b 	be r1,r0,8007b2c <_User_extensions_Handler_initialization+0x40><== NEVER TAKEN
    User_extensions_Switch_control *initial_extension_switch_controls =
      _Workspace_Allocate_or_fatal_error(                             
        number_of_initial_extensions                                  
          * sizeof( *initial_extension_switch_controls )              
 8007b04:	b4 21 10 00 	add r2,r1,r1                                   
 8007b08:	b4 41 08 00 	add r1,r2,r1                                   
 8007b0c:	b4 21 08 00 	add r1,r1,r1                                   
 8007b10:	b4 21 08 00 	add r1,r1,r1                                   
  uint32_t number_of_initial_extensions =                             
    rtems_configuration_get_number_of_initial_extensions();           
                                                                      
  if ( number_of_initial_extensions > 0 ) {                           
    User_extensions_Switch_control *initial_extension_switch_controls =
      _Workspace_Allocate_or_fatal_error(                             
 8007b14:	f8 00 01 50 	calli 8008054 <_Workspace_Allocate_or_fatal_error>
        number_of_initial_extensions                                  
          * sizeof( *initial_extension_switch_controls )              
      );                                                              
    User_extensions_Switch_context ctx = { initial_extension_switch_controls };
                                                                      
    _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
 8007b18:	78 02 08 00 	mvhi r2,0x800                                  
    User_extensions_Switch_control *initial_extension_switch_controls =
      _Workspace_Allocate_or_fatal_error(                             
        number_of_initial_extensions                                  
          * sizeof( *initial_extension_switch_controls )              
      );                                                              
    User_extensions_Switch_context ctx = { initial_extension_switch_controls };
 8007b1c:	5b 81 00 08 	sw (sp+8),r1                                   
                                                                      
    _User_extensions_Iterate( &ctx, _User_extensions_Switch_visitor );
 8007b20:	38 42 7a ac 	ori r2,r2,0x7aac                               
 8007b24:	37 81 00 08 	addi r1,sp,8                                   
 8007b28:	fb ff ff b0 	calli 80079e8 <_User_extensions_Iterate>       
  }                                                                   
}                                                                     
 8007b2c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007b30:	37 9c 00 08 	addi sp,sp,8                                   
 8007b34:	c3 a0 00 00 	ret                                            
                                                                      

080079e8 <_User_extensions_Iterate>: void _User_extensions_Iterate( void *arg, User_extensions_Visitor visitor ) {
 80079e8:	37 9c ff e8 	addi sp,sp,-24                                 
 80079ec:	5b 8b 00 18 	sw (sp+24),r11                                 
 80079f0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80079f4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80079f8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80079fc:	5b 8f 00 08 	sw (sp+8),r15                                  
 8007a00:	5b 9d 00 04 	sw (sp+4),ra                                   
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
 8007a04:	78 04 08 01 	mvhi r4,0x801                                  
 8007a08:	38 84 d2 6c 	ori r4,r4,0xd26c                               
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
 8007a0c:	28 83 00 40 	lw r3,(r4+64)                                  
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
  Thread_Control   *executing = _Thread_Executing;                    
  const User_extensions_Table *callouts_current =                     
 8007a10:	28 8b 00 44 	lw r11,(r4+68)                                 
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
  Thread_Control   *executing = _Thread_Executing;                    
 8007a14:	78 04 08 02 	mvhi r4,0x802                                  
  const User_extensions_Table *callouts_current =                     
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
 8007a18:	b4 63 18 00 	add r3,r3,r3                                   
 8007a1c:	b4 63 18 00 	add r3,r3,r3                                   
 8007a20:	b4 63 18 00 	add r3,r3,r3                                   
 8007a24:	b4 63 18 00 	add r3,r3,r3                                   
 8007a28:	b4 63 18 00 	add r3,r3,r3                                   
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
  Thread_Control   *executing = _Thread_Executing;                    
 8007a2c:	38 84 0d e0 	ori r4,r4,0xde0                                
  const User_extensions_Table *callouts_current =                     
    rtems_configuration_get_user_extension_table();                   
  const User_extensions_Table *callouts_end =                         
 8007a30:	b5 63 78 00 	add r15,r11,r3                                 
                                                                      
void _User_extensions_Iterate(                                        
  void                    *arg,                                       
  User_extensions_Visitor  visitor                                    
)                                                                     
{                                                                     
 8007a34:	b8 20 68 00 	mv r13,r1                                      
 8007a38:	b8 40 70 00 	mv r14,r2                                      
  Thread_Control   *executing = _Thread_Executing;                    
 8007a3c:	28 8c 00 10 	lw r12,(r4+16)                                 
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
 8007a40:	45 6f 00 07 	be r11,r15,8007a5c <_User_extensions_Iterate+0x74><== NEVER TAKEN
    (*visitor)( executing, arg, callouts_current );                   
 8007a44:	b9 60 18 00 	mv r3,r11                                      
 8007a48:	b9 80 08 00 	mv r1,r12                                      
                                                                      
    ++callouts_current;                                               
 8007a4c:	35 6b 00 20 	addi r11,r11,32                                
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
    (*visitor)( executing, arg, callouts_current );                   
 8007a50:	b9 a0 10 00 	mv r2,r13                                      
 8007a54:	d9 c0 00 00 	call r14                                       
  const User_extensions_Table *callouts_end =                         
    callouts_current + rtems_configuration_get_number_of_initial_extensions();
  const Chain_Node *node;                                             
  const Chain_Node *tail;                                             
                                                                      
  while ( callouts_current != callouts_end ) {                        
 8007a58:	5d eb ff fb 	bne r15,r11,8007a44 <_User_extensions_Iterate+0x5c>
                                                                      
    (*visitor)( executing, arg, &extension->Callouts );               
                                                                      
    node = _Chain_Immutable_next( node );                             
  }                                                                   
}                                                                     
 8007a5c:	78 01 08 02 	mvhi r1,0x802                                  
 8007a60:	38 21 01 94 	ori r1,r1,0x194                                
 8007a64:	28 2b 00 00 	lw r11,(r1+0)                                  
    ++callouts_current;                                               
  }                                                                   
                                                                      
  node = _Chain_Immutable_first( &_User_extensions_List );            
  tail = _Chain_Immutable_tail( &_User_extensions_List );             
  while ( node != tail ) {                                            
 8007a68:	78 0f 08 02 	mvhi r15,0x802                                 
 8007a6c:	39 ef 01 98 	ori r15,r15,0x198                              
 8007a70:	45 6f 00 07 	be r11,r15,8007a8c <_User_extensions_Iterate+0xa4>
    const User_extensions_Control *extension =                        
      (const User_extensions_Control *) node;                         
                                                                      
    (*visitor)( executing, arg, &extension->Callouts );               
 8007a74:	35 63 00 14 	addi r3,r11,20                                 
 8007a78:	b9 80 08 00 	mv r1,r12                                      
 8007a7c:	b9 a0 10 00 	mv r2,r13                                      
 8007a80:	d9 c0 00 00 	call r14                                       
                                                                      
    node = _Chain_Immutable_next( node );                             
  }                                                                   
}                                                                     
 8007a84:	29 6b 00 00 	lw r11,(r11+0)                                 
    ++callouts_current;                                               
  }                                                                   
                                                                      
  node = _Chain_Immutable_first( &_User_extensions_List );            
  tail = _Chain_Immutable_tail( &_User_extensions_List );             
  while ( node != tail ) {                                            
 8007a88:	5d 6f ff fb 	bne r11,r15,8007a74 <_User_extensions_Iterate+0x8c>
                                                                      
    (*visitor)( executing, arg, &extension->Callouts );               
                                                                      
    node = _Chain_Immutable_next( node );                             
  }                                                                   
}                                                                     
 8007a8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007a90:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8007a94:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8007a98:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8007a9c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8007aa0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8007aa4:	37 9c 00 18 	addi sp,sp,24                                  
 8007aa8:	c3 a0 00 00 	ret                                            
                                                                      

08009a64 <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) {
 8009a64:	37 9c ff e4 	addi sp,sp,-28                                 
 8009a68:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009a6c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009a70:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009a74:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009a78:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009a7c:	5b 90 00 08 	sw (sp+8),r16                                  
 8009a80:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009a84:	b8 20 60 00 	mv r12,r1                                      
 8009a88:	b8 60 58 00 	mv r11,r3                                      
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 8009a8c:	90 00 18 00 	rcsr r3,IE                                     
 8009a90:	34 01 ff fe 	mvi r1,-2                                      
 8009a94:	a0 61 08 00 	and r1,r3,r1                                   
 8009a98:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 8009a9c:	29 81 00 00 	lw r1,(r12+0)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8009aa0:	35 8e 00 04 	addi r14,r12,4                                 
  Watchdog_Interval            units                                  
)                                                                     
{                                                                     
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
 8009aa4:	b8 60 20 00 	mv r4,r3                                       
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
 8009aa8:	44 2e 00 04 	be r1,r14,8009ab8 <_Watchdog_Adjust+0x54>      
    switch ( direction ) {                                            
 8009aac:	44 40 00 11 	be r2,r0,8009af0 <_Watchdog_Adjust+0x8c>       
 8009ab0:	34 03 00 01 	mvi r3,1                                       
 8009ab4:	44 43 00 0b 	be r2,r3,8009ae0 <_Watchdog_Adjust+0x7c>       <== ALWAYS TAKEN
        }                                                             
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
 8009ab8:	d0 04 00 00 	wcsr IE,r4                                     
                                                                      
}                                                                     
 8009abc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009ac0:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8009ac4:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8009ac8:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8009acc:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8009ad0:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8009ad4:	2b 90 00 08 	lw r16,(sp+8)                                  
 8009ad8:	37 9c 00 1c 	addi sp,sp,28                                  
 8009adc:	c3 a0 00 00 	ret                                            
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
 8009ae0:	28 22 00 10 	lw r2,(r1+16)                                  
 8009ae4:	b4 4b 58 00 	add r11,r2,r11                                 
 8009ae8:	58 2b 00 10 	sw (r1+16),r11                                 
        break;                                                        
 8009aec:	e3 ff ff f3 	bi 8009ab8 <_Watchdog_Adjust+0x54>             
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 8009af0:	b8 60 20 00 	mv r4,r3                                       
 8009af4:	45 62 ff f1 	be r11,r2,8009ab8 <_Watchdog_Adjust+0x54>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 8009af8:	28 2d 00 10 	lw r13,(r1+16)                                 
 8009afc:	55 ab 00 13 	bgu r13,r11,8009b48 <_Watchdog_Adjust+0xe4>    <== NEVER TAKEN
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 8009b00:	34 10 00 01 	mvi r16,1                                      
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009b04:	34 0f ff fe 	mvi r15,-2                                     
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
 8009b08:	58 30 00 10 	sw (r1+16),r16                                 
                                                                      
            _ISR_Enable( level );                                     
 8009b0c:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
            _Watchdog_Tickle( header );                               
 8009b10:	b9 80 08 00 	mv r1,r12                                      
 8009b14:	f8 00 00 ad 	calli 8009dc8 <_Watchdog_Tickle>               
                                                                      
            _ISR_Disable( level );                                    
 8009b18:	90 00 10 00 	rcsr r2,IE                                     
 8009b1c:	a0 4f 08 00 	and r1,r2,r15                                  
 8009b20:	d0 01 00 00 	wcsr IE,r1                                     
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
 8009b24:	29 84 00 00 	lw r4,(r12+0)                                  
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
 8009b28:	c9 6d 58 00 	sub r11,r11,r13                                
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009b2c:	b8 40 18 00 	mv r3,r2                                       
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8009b30:	b8 80 08 00 	mv r1,r4                                       
                                                                      
            if ( _Chain_Is_empty( header ) )                          
 8009b34:	45 c4 00 08 	be r14,r4,8009b54 <_Watchdog_Adjust+0xf0>      
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
 8009b38:	45 60 00 07 	be r11,r0,8009b54 <_Watchdog_Adjust+0xf0>      <== NEVER TAKEN
          if ( units < _Watchdog_First( header )->delta_interval ) {  
 8009b3c:	28 2d 00 10 	lw r13,(r1+16)                                 
 8009b40:	51 6d ff f2 	bgeu r11,r13,8009b08 <_Watchdog_Adjust+0xa4>   
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009b44:	b8 40 20 00 	mv r4,r2                                       
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
 8009b48:	c9 ab 58 00 	sub r11,r13,r11                                
 8009b4c:	58 2b 00 10 	sw (r1+16),r11                                 
            break;                                                    
 8009b50:	e3 ff ff da 	bi 8009ab8 <_Watchdog_Adjust+0x54>             
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
                                                                      
            _ISR_Disable( level );                                    
 8009b54:	b8 40 20 00 	mv r4,r2                                       
 8009b58:	e3 ff ff d8 	bi 8009ab8 <_Watchdog_Adjust+0x54>             
                                                                      

08007b38 <_Watchdog_Insert>: void _Watchdog_Insert( Chain_Control *header, Watchdog_Control *the_watchdog ) {
 8007b38:	37 9c ff f8 	addi sp,sp,-8                                  
 8007b3c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8007b40:	5b 8c 00 04 	sw (sp+4),r12                                  
  Watchdog_Control  *after;                                           
  uint32_t           insert_isr_nest_level;                           
  Watchdog_Interval  delta_interval;                                  
                                                                      
                                                                      
  insert_isr_nest_level   = _ISR_Nest_level;                          
 8007b44:	78 03 08 02 	mvhi r3,0x802                                  
 8007b48:	38 63 0d e0 	ori r3,r3,0xde0                                
 8007b4c:	28 69 00 08 	lw r9,(r3+8)                                   
                                                                      
  _ISR_Disable( level );                                              
 8007b50:	90 00 30 00 	rcsr r6,IE                                     
 8007b54:	34 08 ff fe 	mvi r8,-2                                      
 8007b58:	a0 c8 40 00 	and r8,r6,r8                                   
 8007b5c:	d0 08 00 00 	wcsr IE,r8                                     
  /*                                                                  
   *  Check to see if the watchdog has just been inserted by a        
   *  higher priority interrupt.  If so, abandon this insert.         
   */                                                                 
                                                                      
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
 8007b60:	28 43 00 08 	lw r3,(r2+8)                                   
 8007b64:	5c 60 00 32 	bne r3,r0,8007c2c <_Watchdog_Insert+0xf4>      
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
 8007b68:	78 0c 08 02 	mvhi r12,0x802                                 
 8007b6c:	39 8c 0a 3c 	ori r12,r12,0xa3c                              
 8007b70:	29 83 00 00 	lw r3,(r12+0)                                  
 8007b74:	78 07 08 02 	mvhi r7,0x802                                  
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8007b78:	34 04 00 01 	mvi r4,1                                       
  _Watchdog_Sync_count++;                                             
 8007b7c:	34 63 00 01 	addi r3,r3,1                                   
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
 8007b80:	58 44 00 08 	sw (r2+8),r4                                   
  _Watchdog_Sync_count++;                                             
 8007b84:	59 83 00 00 	sw (r12+0),r3                                  
 8007b88:	38 e7 09 dc 	ori r7,r7,0x9dc                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8007b8c:	34 0a 00 01 	mvi r10,1                                      
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
  _Watchdog_Sync_count++;                                             
                                                                      
restart:                                                              
  delta_interval = the_watchdog->initial;                             
 8007b90:	28 44 00 0c 	lw r4,(r2+12)                                  
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(               
  Chain_Control *header                                               
)                                                                     
{                                                                     
                                                                      
  return ( (Watchdog_Control *) _Chain_First( header ) );             
 8007b94:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8007b98:	44 80 00 14 	be r4,r0,8007be8 <_Watchdog_Insert+0xb0>       
 8007b9c:	28 65 00 00 	lw r5,(r3+0)                                   
 8007ba0:	44 a0 00 12 	be r5,r0,8007be8 <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8007ba4:	28 65 00 10 	lw r5,(r3+16)                                  
 8007ba8:	54 a4 00 0e 	bgu r5,r4,8007be0 <_Watchdog_Insert+0xa8>      
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8007bac:	d0 06 00 00 	wcsr IE,r6                                     
 8007bb0:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8007bb4:	28 4b 00 08 	lw r11,(r2+8)                                  
 8007bb8:	5d 6a 00 19 	bne r11,r10,8007c1c <_Watchdog_Insert+0xe4>    
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8007bbc:	28 eb 00 00 	lw r11,(r7+0)                                  
 8007bc0:	55 69 00 28 	bgu r11,r9,8007c60 <_Watchdog_Insert+0x128>    
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8007bc4:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
 8007bc8:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
 8007bcc:	44 80 00 07 	be r4,r0,8007be8 <_Watchdog_Insert+0xb0>       
 8007bd0:	28 65 00 00 	lw r5,(r3+0)                                   
 8007bd4:	44 a0 00 05 	be r5,r0,8007be8 <_Watchdog_Insert+0xb0>       
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
 8007bd8:	28 65 00 10 	lw r5,(r3+16)                                  
 8007bdc:	50 85 00 19 	bgeu r4,r5,8007c40 <_Watchdog_Insert+0x108>    
       after->delta_interval -= delta_interval;                       
 8007be0:	c8 a4 28 00 	sub r5,r5,r4                                   
 8007be4:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
 8007be8:	28 63 00 04 	lw r3,(r3+4)                                   
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8007bec:	78 01 08 02 	mvhi r1,0x802                                  
 8007bf0:	38 21 0a 40 	ori r1,r1,0xa40                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8007bf4:	28 65 00 00 	lw r5,(r3+0)                                   
 8007bf8:	28 28 00 00 	lw r8,(r1+0)                                   
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(                         
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_ACTIVE;                              
 8007bfc:	34 01 00 02 	mvi r1,2                                       
 8007c00:	58 41 00 08 	sw (r2+8),r1                                   
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
 8007c04:	58 44 00 10 	sw (r2+16),r4                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8007c08:	58 43 00 04 	sw (r2+4),r3                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8007c0c:	58 62 00 00 	sw (r3+0),r2                                   
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
 8007c10:	58 a2 00 04 	sw (r5+4),r2                                   
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
 8007c14:	58 45 00 00 	sw (r2+0),r5                                   
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
 8007c18:	58 48 00 14 	sw (r2+20),r8                                  
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
 8007c1c:	58 e9 00 00 	sw (r7+0),r9                                   
  _Watchdog_Sync_count--;                                             
 8007c20:	29 81 00 00 	lw r1,(r12+0)                                  
 8007c24:	34 21 ff ff 	addi r1,r1,-1                                  
 8007c28:	59 81 00 00 	sw (r12+0),r1                                  
  _ISR_Enable( level );                                               
 8007c2c:	d0 06 00 00 	wcsr IE,r6                                     
}                                                                     
 8007c30:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8007c34:	2b 8c 00 04 	lw r12,(sp+4)                                  
 8007c38:	37 9c 00 08 	addi sp,sp,8                                   
 8007c3c:	c3 a0 00 00 	ret                                            
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
 8007c40:	d0 06 00 00 	wcsr IE,r6                                     
 8007c44:	d0 08 00 00 	wcsr IE,r8                                     
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8007c48:	28 4b 00 08 	lw r11,(r2+8)                                  
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
 8007c4c:	c8 85 20 00 	sub r4,r4,r5                                   
                                                                      
     _ISR_Flash( level );                                             
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
 8007c50:	5d 6a ff f3 	bne r11,r10,8007c1c <_Watchdog_Insert+0xe4>    <== NEVER TAKEN
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
 8007c54:	28 e5 00 00 	lw r5,(r7+0)                                   
 8007c58:	54 a9 00 02 	bgu r5,r9,8007c60 <_Watchdog_Insert+0x128>     <== NEVER TAKEN
 8007c5c:	e3 ff ff db 	bi 8007bc8 <_Watchdog_Insert+0x90>             
       _Watchdog_Sync_level = insert_isr_nest_level;                  
 8007c60:	58 e9 00 00 	sw (r7+0),r9                                   
       goto restart;                                                  
 8007c64:	e3 ff ff cb 	bi 8007b90 <_Watchdog_Insert+0x58>             
                                                                      

08007cd0 <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level );
 8007cd0:	90 00 20 00 	rcsr r4,IE                                     
 8007cd4:	34 02 ff fe 	mvi r2,-2                                      
 8007cd8:	a0 82 10 00 	and r2,r4,r2                                   
 8007cdc:	d0 02 00 00 	wcsr IE,r2                                     
  previous_state = the_watchdog->state;                               
 8007ce0:	28 22 00 08 	lw r2,(r1+8)                                   
  switch ( previous_state ) {                                         
 8007ce4:	34 03 00 01 	mvi r3,1                                       
 8007ce8:	44 43 00 27 	be r2,r3,8007d84 <_Watchdog_Remove+0xb4>       
 8007cec:	5c 40 00 08 	bne r2,r0,8007d0c <_Watchdog_Remove+0x3c>      
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8007cf0:	78 03 08 02 	mvhi r3,0x802                                  
 8007cf4:	38 63 0a 40 	ori r3,r3,0xa40                                
 8007cf8:	28 63 00 00 	lw r3,(r3+0)                                   
 8007cfc:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8007d00:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8007d04:	b8 40 08 00 	mv r1,r2                                       
 8007d08:	c3 a0 00 00 	ret                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
  previous_state = the_watchdog->state;                               
  switch ( previous_state ) {                                         
 8007d0c:	34 03 00 03 	mvi r3,3                                       
 8007d10:	54 43 ff f8 	bgu r2,r3,8007cf0 <_Watchdog_Remove+0x20>      <== NEVER TAKEN
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
 8007d14:	28 23 00 00 	lw r3,(r1+0)                                   
      break;                                                          
                                                                      
    case WATCHDOG_ACTIVE:                                             
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
 8007d18:	58 20 00 08 	sw (r1+8),r0                                   
      next_watchdog = _Watchdog_Next( the_watchdog );                 
                                                                      
      if ( _Watchdog_Next(next_watchdog) )                            
 8007d1c:	28 65 00 00 	lw r5,(r3+0)                                   
 8007d20:	44 a0 00 05 	be r5,r0,8007d34 <_Watchdog_Remove+0x64>       
        next_watchdog->delta_interval += the_watchdog->delta_interval;
 8007d24:	28 66 00 10 	lw r6,(r3+16)                                  
 8007d28:	28 25 00 10 	lw r5,(r1+16)                                  
 8007d2c:	b4 c5 28 00 	add r5,r6,r5                                   
 8007d30:	58 65 00 10 	sw (r3+16),r5                                  
                                                                      
      if ( _Watchdog_Sync_count )                                     
 8007d34:	78 05 08 02 	mvhi r5,0x802                                  
 8007d38:	38 a5 0a 3c 	ori r5,r5,0xa3c                                
 8007d3c:	28 a5 00 00 	lw r5,(r5+0)                                   
 8007d40:	44 a0 00 07 	be r5,r0,8007d5c <_Watchdog_Remove+0x8c>       
        _Watchdog_Sync_level = _ISR_Nest_level;                       
 8007d44:	78 05 08 02 	mvhi r5,0x802                                  
 8007d48:	38 a5 0d e0 	ori r5,r5,0xde0                                
 8007d4c:	28 a6 00 08 	lw r6,(r5+8)                                   
 8007d50:	78 05 08 02 	mvhi r5,0x802                                  
 8007d54:	38 a5 09 dc 	ori r5,r5,0x9dc                                
 8007d58:	58 a6 00 00 	sw (r5+0),r6                                   
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 8007d5c:	28 25 00 04 	lw r5,(r1+4)                                   
  next->previous = previous;                                          
 8007d60:	58 65 00 04 	sw (r3+4),r5                                   
  previous->next = next;                                              
 8007d64:	58 a3 00 00 	sw (r5+0),r3                                   
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8007d68:	78 03 08 02 	mvhi r3,0x802                                  
 8007d6c:	38 63 0a 40 	ori r3,r3,0xa40                                
 8007d70:	28 63 00 00 	lw r3,(r3+0)                                   
 8007d74:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8007d78:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8007d7c:	b8 40 08 00 	mv r1,r2                                       
 8007d80:	c3 a0 00 00 	ret                                            
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8007d84:	78 03 08 02 	mvhi r3,0x802                                  
 8007d88:	38 63 0a 40 	ori r3,r3,0xa40                                
 8007d8c:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
      /*                                                              
       *  It is not actually on the chain so just change the state and
       *  the Insert operation we interrupted will be aborted.        
       */                                                             
      the_watchdog->state = WATCHDOG_INACTIVE;                        
 8007d90:	58 20 00 08 	sw (r1+8),r0                                   
        _Watchdog_Sync_level = _ISR_Nest_level;                       
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
 8007d94:	58 23 00 18 	sw (r1+24),r3                                  
                                                                      
  _ISR_Enable( level );                                               
 8007d98:	d0 04 00 00 	wcsr IE,r4                                     
  return( previous_state );                                           
}                                                                     
 8007d9c:	b8 40 08 00 	mv r1,r2                                       
 8007da0:	c3 a0 00 00 	ret                                            
                                                                      

080095ec <_Watchdog_Report_chain>: void _Watchdog_Report_chain( const char *name, Chain_Control *header ) {
 80095ec:	37 9c ff ec 	addi sp,sp,-20                                 
 80095f0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80095f4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80095f8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80095fc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009600:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009604:	b8 20 70 00 	mv r14,r1                                      
 8009608:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
 800960c:	90 00 68 00 	rcsr r13,IE                                    
 8009610:	34 01 ff fe 	mvi r1,-2                                      
 8009614:	a1 a1 08 00 	and r1,r13,r1                                  
 8009618:	d0 01 00 00 	wcsr IE,r1                                     
    printk( "Watchdog Chain: %s %p\n", name, header );                
 800961c:	78 01 08 02 	mvhi r1,0x802                                  
 8009620:	b9 80 18 00 	mv r3,r12                                      
 8009624:	38 21 00 2c 	ori r1,r1,0x2c                                 
 8009628:	b9 c0 10 00 	mv r2,r14                                      
 800962c:	fb ff e6 cd 	calli 8003160 <printk>                         
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
}                                                                     
 8009630:	29 8b 00 00 	lw r11,(r12+0)                                 
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8009634:	35 8c 00 04 	addi r12,r12,4                                 
  ISR_Level          level;                                           
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
 8009638:	45 6c 00 12 	be r11,r12,8009680 <_Watchdog_Report_chain+0x94>
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
 800963c:	b9 60 10 00 	mv r2,r11                                      
 8009640:	34 01 00 00 	mvi r1,0                                       
 8009644:	f8 00 00 13 	calli 8009690 <_Watchdog_Report>               
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
            node != _Chain_Tail(header) ;                             
            node = node->next )                                       
 8009648:	29 6b 00 00 	lw r11,(r11+0)                                 
  Chain_Node        *node;                                            
                                                                      
  _ISR_Disable( level );                                              
    printk( "Watchdog Chain: %s %p\n", name, header );                
    if ( !_Chain_Is_empty( header ) ) {                               
      for ( node = _Chain_First( header ) ;                           
 800964c:	5d 6c ff fc 	bne r11,r12,800963c <_Watchdog_Report_chain+0x50><== NEVER TAKEN
      {                                                               
        Watchdog_Control *watch = (Watchdog_Control *) node;          
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
 8009650:	78 01 08 02 	mvhi r1,0x802                                  
 8009654:	38 21 00 44 	ori r1,r1,0x44                                 
 8009658:	b9 c0 10 00 	mv r2,r14                                      
 800965c:	fb ff e6 c1 	calli 8003160 <printk>                         
    } else {                                                          
      printk( "Chain is empty\n" );                                   
    }                                                                 
  _ISR_Enable( level );                                               
 8009660:	d0 0d 00 00 	wcsr IE,r13                                    
}                                                                     
 8009664:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009668:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800966c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009670:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8009674:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009678:	37 9c 00 14 	addi sp,sp,20                                  
 800967c:	c3 a0 00 00 	ret                                            
                                                                      
        _Watchdog_Report( NULL, watch );                              
      }                                                               
      printk( "== end of %s \n", name );                              
    } else {                                                          
      printk( "Chain is empty\n" );                                   
 8009680:	78 01 08 02 	mvhi r1,0x802                                  
 8009684:	38 21 00 54 	ori r1,r1,0x54                                 
 8009688:	fb ff e6 b6 	calli 8003160 <printk>                         
 800968c:	e3 ff ff f5 	bi 8009660 <_Watchdog_Report_chain+0x74>       
                                                                      

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

08007e94 <_Workspace_Handler_initialization>: void _Workspace_Handler_initialization( Heap_Area *areas, size_t area_count, Heap_Initialization_or_extend_handler extend ) {
 8007e94:	37 9c ff d0 	addi sp,sp,-48                                 
 8007e98:	5b 8b 00 30 	sw (sp+48),r11                                 
 8007e9c:	5b 8c 00 2c 	sw (sp+44),r12                                 
 8007ea0:	5b 8d 00 28 	sw (sp+40),r13                                 
 8007ea4:	5b 8e 00 24 	sw (sp+36),r14                                 
 8007ea8:	5b 8f 00 20 	sw (sp+32),r15                                 
 8007eac:	5b 90 00 1c 	sw (sp+28),r16                                 
 8007eb0:	5b 91 00 18 	sw (sp+24),r17                                 
 8007eb4:	5b 92 00 14 	sw (sp+20),r18                                 
 8007eb8:	5b 93 00 10 	sw (sp+16),r19                                 
 8007ebc:	5b 94 00 0c 	sw (sp+12),r20                                 
 8007ec0:	5b 95 00 08 	sw (sp+8),r21                                  
 8007ec4:	5b 9d 00 04 	sw (sp+4),ra                                   
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
 8007ec8:	78 04 08 01 	mvhi r4,0x801                                  
 8007ecc:	38 84 d2 6c 	ori r4,r4,0xd26c                               
 8007ed0:	40 85 00 32 	lbu r5,(r4+50)                                 
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
 8007ed4:	b8 40 80 00 	mv r16,r2                                      
 8007ed8:	b8 60 a0 00 	mv r20,r3                                      
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
 8007edc:	28 8e 00 00 	lw r14,(r4+0)                                  
 8007ee0:	34 02 00 00 	mvi r2,0                                       
 8007ee4:	5c a0 00 02 	bne r5,r0,8007eec <_Workspace_Handler_initialization+0x58>
 8007ee8:	28 82 00 04 	lw r2,(r4+4)                                   
 8007eec:	b4 4e 70 00 	add r14,r2,r14                                 
  bool do_zero = rtems_configuration_get_do_zero_of_workspace();      
 8007ef0:	40 92 00 30 	lbu r18,(r4+48)                                
  bool unified = rtems_configuration_get_unified_work_area();         
 8007ef4:	40 95 00 31 	lbu r21,(r4+49)                                
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
 8007ef8:	46 00 00 21 	be r16,r0,8007f7c <_Workspace_Handler_initialization+0xe8><== NEVER TAKEN
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
 8007efc:	78 0f 08 00 	mvhi r15,0x800                                 
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
 8007f00:	78 11 08 02 	mvhi r17,0x802                                 
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
 8007f04:	b8 20 58 00 	mv r11,r1                                      
 8007f08:	34 0d 00 00 	mvi r13,0                                      
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
 8007f0c:	39 ef 51 d8 	ori r15,r15,0x51d8                             
                                                                      
    if ( do_zero ) {                                                  
      memset( area->begin, 0, area->size );                           
    }                                                                 
                                                                      
    if ( area->size > overhead ) {                                    
 8007f10:	34 13 00 0e 	mvi r19,14                                     
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
 8007f14:	3a 31 09 68 	ori r17,r17,0x968                              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    Heap_Area *area = &areas [i];                                     
                                                                      
    if ( do_zero ) {                                                  
 8007f18:	5e 40 00 28 	bne r18,r0,8007fb8 <_Workspace_Handler_initialization+0x124>
      memset( area->begin, 0, area->size );                           
    }                                                                 
                                                                      
    if ( area->size > overhead ) {                                    
 8007f1c:	29 6c 00 04 	lw r12,(r11+4)                                 
 8007f20:	52 6c 00 14 	bgeu r19,r12,8007f70 <_Workspace_Handler_initialization+0xdc>
      uintptr_t space_available;                                      
      uintptr_t size;                                                 
                                                                      
      if ( unified ) {                                                
 8007f24:	5e a0 00 05 	bne r21,r0,8007f38 <_Workspace_Handler_initialization+0xa4>
        size = area->size;                                            
      } else {                                                        
        if ( remaining > 0 ) {                                        
 8007f28:	45 d5 00 29 	be r14,r21,8007fcc <_Workspace_Handler_initialization+0x138><== NEVER TAKEN
          size = remaining < area->size - overhead ?                  
 8007f2c:	35 81 ff f2 	addi r1,r12,-14                                
            remaining + overhead : area->size;                        
 8007f30:	51 c1 00 02 	bgeu r14,r1,8007f38 <_Workspace_Handler_initialization+0xa4><== NEVER TAKEN
 8007f34:	35 cc 00 0e 	addi r12,r14,14                                
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
 8007f38:	29 62 00 00 	lw r2,(r11+0)                                  
 8007f3c:	b9 80 18 00 	mv r3,r12                                      
 8007f40:	ba 20 08 00 	mv r1,r17                                      
 8007f44:	34 04 00 04 	mvi r4,4                                       
 8007f48:	d9 e0 00 00 	call r15                                       
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
 8007f4c:	29 62 00 00 	lw r2,(r11+0)                                  
      area->size -= size;                                             
 8007f50:	29 63 00 04 	lw r3,(r11+4)                                  
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
 8007f54:	b4 4c 10 00 	add r2,r2,r12                                  
      area->size -= size;                                             
 8007f58:	c8 6c 60 00 	sub r12,r3,r12                                 
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
 8007f5c:	59 62 00 00 	sw (r11+0),r2                                  
      area->size -= size;                                             
 8007f60:	59 6c 00 04 	sw (r11+4),r12                                 
                                                                      
      if ( space_available < remaining ) {                            
 8007f64:	50 2e 00 21 	bgeu r1,r14,8007fe8 <_Workspace_Handler_initialization+0x154><== ALWAYS TAKEN
        remaining -= space_available;                                 
 8007f68:	c9 c1 70 00 	sub r14,r14,r1                                 <== NOT EXECUTED
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
 8007f6c:	ba 80 78 00 	mv r15,r20                                     <== NOT EXECUTED
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
 8007f70:	35 ad 00 01 	addi r13,r13,1                                 
 8007f74:	35 6b 00 08 	addi r11,r11,8                                 
 8007f78:	56 0d ff e8 	bgu r16,r13,8007f18 <_Workspace_Handler_initialization+0x84><== NEVER TAKEN
                                                                      
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
 8007f7c:	5d c0 00 1e 	bne r14,r0,8007ff4 <_Workspace_Handler_initialization+0x160>
      INTERNAL_ERROR_CORE,                                            
      true,                                                           
      INTERNAL_ERROR_TOO_LITTLE_WORKSPACE                             
    );                                                                
  }                                                                   
}                                                                     
 8007f80:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007f84:	2b 8b 00 30 	lw r11,(sp+48)                                 
 8007f88:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 8007f8c:	2b 8d 00 28 	lw r13,(sp+40)                                 
 8007f90:	2b 8e 00 24 	lw r14,(sp+36)                                 
 8007f94:	2b 8f 00 20 	lw r15,(sp+32)                                 
 8007f98:	2b 90 00 1c 	lw r16,(sp+28)                                 
 8007f9c:	2b 91 00 18 	lw r17,(sp+24)                                 
 8007fa0:	2b 92 00 14 	lw r18,(sp+20)                                 
 8007fa4:	2b 93 00 10 	lw r19,(sp+16)                                 
 8007fa8:	2b 94 00 0c 	lw r20,(sp+12)                                 
 8007fac:	2b 95 00 08 	lw r21,(sp+8)                                  
 8007fb0:	37 9c 00 30 	addi sp,sp,48                                  
 8007fb4:	c3 a0 00 00 	ret                                            
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    Heap_Area *area = &areas [i];                                     
                                                                      
    if ( do_zero ) {                                                  
      memset( area->begin, 0, area->size );                           
 8007fb8:	29 61 00 00 	lw r1,(r11+0)                                  
 8007fbc:	29 63 00 04 	lw r3,(r11+4)                                  
 8007fc0:	34 02 00 00 	mvi r2,0                                       
 8007fc4:	f8 00 17 e7 	calli 800df60 <memset>                         
 8007fc8:	e3 ff ff d5 	bi 8007f1c <_Workspace_Handler_initialization+0x88>
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
 8007fcc:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
 8007fd0:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8007fd4:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8007fd8:	34 04 00 04 	mvi r4,4                                       <== NOT EXECUTED
 8007fdc:	d9 e0 00 00 	call r15                                       <== NOT EXECUTED
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
 8007fe0:	ba 80 78 00 	mv r15,r20                                     <== NOT EXECUTED
 8007fe4:	e3 ff ff e3 	bi 8007f70 <_Workspace_Handler_initialization+0xdc><== NOT EXECUTED
 8007fe8:	ba 80 78 00 	mv r15,r20                                     
      area->size -= size;                                             
                                                                      
      if ( space_available < remaining ) {                            
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
 8007fec:	34 0e 00 00 	mvi r14,0                                      
 8007ff0:	e3 ff ff e0 	bi 8007f70 <_Workspace_Handler_initialization+0xdc>
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
    _Internal_error_Occurred(                                         
 8007ff4:	34 01 00 00 	mvi r1,0                                       
 8007ff8:	34 02 00 01 	mvi r2,1                                       
 8007ffc:	34 03 00 02 	mvi r3,2                                       
 8008000:	fb ff f5 27 	calli 800549c <_Internal_error_Occurred>       
                                                                      

08010f04 <_fat_block_read>: uint32_t start, uint32_t offset, uint32_t count, void *buff ) {
 8010f04:	37 9c ff dc 	addi sp,sp,-36                                 
 8010f08:	5b 8b 00 20 	sw (sp+32),r11                                 
 8010f0c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8010f10:	5b 8d 00 18 	sw (sp+24),r13                                 
 8010f14:	5b 8e 00 14 	sw (sp+20),r14                                 
 8010f18:	5b 8f 00 10 	sw (sp+16),r15                                 
 8010f1c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8010f20:	5b 91 00 08 	sw (sp+8),r17                                  
 8010f24:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                     rc = RC_OK;                               
    ssize_t                 cmpltd = 0;                               
 8010f28:	34 0d 00 00 	mvi r13,0                                      
    uint32_t                              start,                      
    uint32_t                              offset,                     
    uint32_t                              count,                      
    void                                 *buff                        
    )                                                                 
{                                                                     
 8010f2c:	b8 80 60 00 	mv r12,r4                                      
 8010f30:	b8 20 80 00 	mv r16,r1                                      
 8010f34:	b8 a0 88 00 	mv r17,r5                                      
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
 8010f38:	44 80 00 19 	be r4,r0,8010f9c <_fat_block_read+0x98>        <== NEVER TAKEN
 8010f3c:	b8 60 78 00 	mv r15,r3                                      
 8010f40:	b8 40 70 00 	mv r14,r2                                      
 8010f44:	e0 00 00 0f 	bi 8010f80 <_fat_block_read+0x7c>              
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 8010f48:	2e 0b 00 00 	lhu r11,(r16+0)                                
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
 8010f4c:	2b 82 00 24 	lw r2,(sp+36)                                  
 8010f50:	b6 2d 08 00 	add r1,r17,r13                                 
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 8010f54:	c9 6f 58 00 	sub r11,r11,r15                                
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
 8010f58:	b4 4f 10 00 	add r2,r2,r15                                  
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 8010f5c:	51 8b 00 02 	bgeu r12,r11,8010f64 <_fat_block_read+0x60>    
 8010f60:	b9 80 58 00 	mv r11,r12                                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
 8010f64:	b9 60 18 00 	mv r3,r11                                      
                                                                      
        count -= c;                                                   
 8010f68:	c9 8b 60 00 	sub r12,r12,r11                                
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
 8010f6c:	f8 00 31 70 	calli 801d52c <memcpy>                         
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
 8010f70:	b5 6d 68 00 	add r13,r11,r13                                
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
 8010f74:	45 80 00 0a 	be r12,r0,8010f9c <_fat_block_read+0x98>       
        c = MIN(count, (fs_info->vol.bps - ofs));                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        sec_num++;                                                    
 8010f78:	35 ce 00 01 	addi r14,r14,1                                 
        ofs = 0;                                                      
 8010f7c:	34 0f 00 00 	mvi r15,0                                      
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
 8010f80:	b9 c0 10 00 	mv r2,r14                                      
 8010f84:	37 84 00 24 	addi r4,sp,36                                  
 8010f88:	ba 00 08 00 	mv r1,r16                                      
 8010f8c:	34 03 00 01 	mvi r3,1                                       
 8010f90:	fb ff ff 98 	calli 8010df0 <fat_buf_access>                 
        if (rc != RC_OK)                                              
 8010f94:	44 20 ff ed 	be r1,r0,8010f48 <_fat_block_read+0x44>        <== ALWAYS TAKEN
            return -1;                                                
 8010f98:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
        cmpltd += c;                                                  
        sec_num++;                                                    
        ofs = 0;                                                      
    }                                                                 
    return cmpltd;                                                    
}                                                                     
 8010f9c:	b9 a0 08 00 	mv r1,r13                                      
 8010fa0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010fa4:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8010fa8:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8010fac:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8010fb0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8010fb4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8010fb8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8010fbc:	2b 91 00 08 	lw r17,(sp+8)                                  
 8010fc0:	37 9c 00 24 	addi sp,sp,36                                  
 8010fc4:	c3 a0 00 00 	ret                                            
                                                                      

08002518 <_lstat_r>: int _STAT_R_NAME( struct _reent *ptr __attribute__((unused)), const char *path, struct stat *buf ) {
 8002518:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 800251c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  return _STAT_NAME( path, buf );                                     
 8002520:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 8002524:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 8002528:	fb ff ff dd 	calli 800249c <lstat>                          <== NOT EXECUTED
}                                                                     
 800252c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8002530:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8002534:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080027c4 <_stat_r>: int _STAT_R_NAME( struct _reent *ptr __attribute__((unused)), const char *path, struct stat *buf ) {
 80027c4:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 80027c8:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  return _STAT_NAME( path, buf );                                     
 80027cc:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 80027d0:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 80027d4:	fb ff ff dd 	calli 8002748 <stat>                           <== NOT EXECUTED
}                                                                     
 80027d8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80027dc:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 80027e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003c84 <adjtime>: */ int adjtime( const struct timeval *delta, struct timeval *olddelta ) {
 8003c84:	37 9c ff dc 	addi sp,sp,-36                                 
 8003c88:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8003c8c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8003c90:	5b 8d 00 14 	sw (sp+20),r13                                 
 8003c94:	5b 8e 00 10 	sw (sp+16),r14                                 
 8003c98:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8003c9c:	5b 90 00 08 	sw (sp+8),r16                                  
 8003ca0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003ca4:	b8 20 60 00 	mv r12,r1                                      
 8003ca8:	b8 40 70 00 	mv r14,r2                                      
  long   adjustment;                                                  
                                                                      
  /*                                                                  
   * Simple validations                                               
   */                                                                 
  if ( !delta )                                                       
 8003cac:	44 20 00 06 	be r1,r0,8003cc4 <adjtime+0x40>                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
 8003cb0:	78 03 08 01 	mvhi r3,0x801                                  
 8003cb4:	38 63 6e 00 	ori r3,r3,0x6e00                               
 8003cb8:	28 22 00 04 	lw r2,(r1+4)                                   
 8003cbc:	28 61 00 00 	lw r1,(r3+0)                                   
 8003cc0:	50 22 00 0e 	bgeu r1,r2,8003cf8 <adjtime+0x74>              
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8003cc4:	f8 00 29 1e 	calli 800e13c <__errno>                        
 8003cc8:	34 02 00 16 	mvi r2,22                                      
 8003ccc:	58 22 00 00 	sw (r1+0),r2                                   
 8003cd0:	34 01 ff ff 	mvi r1,-1                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
}                                                                     
 8003cd4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003cd8:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8003cdc:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8003ce0:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8003ce4:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8003ce8:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8003cec:	2b 90 00 08 	lw r16,(sp+8)                                  
 8003cf0:	37 9c 00 24 	addi sp,sp,36                                  
 8003cf4:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
 8003cf8:	45 c0 00 04 	be r14,r0,8003d08 <adjtime+0x84>               
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
 8003cfc:	59 c0 00 04 	sw (r14+4),r0                                  
 8003d00:	29 82 00 04 	lw r2,(r12+4)                                  
                                                                      
  if ( delta->tv_usec >= TOD_MICROSECONDS_PER_SECOND )                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( olddelta ) {                                                   
    olddelta->tv_sec  = 0;                                            
 8003d04:	59 c0 00 00 	sw (r14+0),r0                                  
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003d08:	29 83 00 00 	lw r3,(r12+0)                                  
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 8003d0c:	78 01 08 01 	mvhi r1,0x801                                  
 8003d10:	38 21 6a 00 	ori r1,r1,0x6a00                               
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003d14:	b4 63 20 00 	add r4,r3,r3                                   
 8003d18:	b4 84 20 00 	add r4,r4,r4                                   
 8003d1c:	b4 84 20 00 	add r4,r4,r4                                   
 8003d20:	b4 84 28 00 	add r5,r4,r4                                   
 8003d24:	b4 a5 28 00 	add r5,r5,r5                                   
 8003d28:	b4 a5 28 00 	add r5,r5,r5                                   
 8003d2c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003d30:	b4 a5 28 00 	add r5,r5,r5                                   
 8003d34:	c8 a4 28 00 	sub r5,r5,r4                                   
 8003d38:	b4 a5 20 00 	add r4,r5,r5                                   
 8003d3c:	b4 84 20 00 	add r4,r4,r4                                   
 8003d40:	b4 84 20 00 	add r4,r4,r4                                   
 8003d44:	b4 84 20 00 	add r4,r4,r4                                   
 8003d48:	b4 84 20 00 	add r4,r4,r4                                   
 8003d4c:	b4 84 20 00 	add r4,r4,r4                                   
 8003d50:	c8 85 20 00 	sub r4,r4,r5                                   
 8003d54:	b4 83 18 00 	add r3,r4,r3                                   
 8003d58:	b4 63 18 00 	add r3,r3,r3                                   
 8003d5c:	b4 63 18 00 	add r3,r3,r3                                   
 8003d60:	b4 63 18 00 	add r3,r3,r3                                   
 8003d64:	b4 63 18 00 	add r3,r3,r3                                   
 8003d68:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 8003d6c:	28 24 00 0c 	lw r4,(r1+12)                                  
    olddelta->tv_sec  = 0;                                            
    olddelta->tv_usec = 0;                                            
  }                                                                   
                                                                      
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
 8003d70:	b4 63 18 00 	add r3,r3,r3                                   
  adjustment += delta->tv_usec;                                       
 8003d74:	b4 43 18 00 	add r3,r2,r3                                   
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
    return 0;                                                         
 8003d78:	34 01 00 00 	mvi r1,0                                       
  /* convert delta to microseconds */                                 
  adjustment  = (delta->tv_sec * TOD_MICROSECONDS_PER_SECOND);        
  adjustment += delta->tv_usec;                                       
                                                                      
  /* too small to account for */                                      
  if ( adjustment < rtems_configuration_get_microseconds_per_tick() ) 
 8003d7c:	54 83 ff d6 	bgu r4,r3,8003cd4 <adjtime+0x50>               
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8003d80:	78 01 08 01 	mvhi r1,0x801                                  
 8003d84:	38 21 8a 20 	ori r1,r1,0x8a20                               
 8003d88:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 8003d8c:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8003d90:	58 22 00 00 	sw (r1+0),r2                                   
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
 8003d94:	78 02 08 01 	mvhi r2,0x801                                  
    _TOD_Get_with_nanoseconds( &tod_as_timestamp, &_TOD.now );        
 8003d98:	37 8f 00 20 	addi r15,sp,32                                 
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
 8003d9c:	38 42 89 a0 	ori r2,r2,0x89a0                               
 8003da0:	b9 e0 08 00 	mv r1,r15                                      
 8003da4:	f8 00 07 06 	calli 80059bc <_TOD_Get_with_nanoseconds>      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
}                                                                     
 8003da8:	28 30 00 00 	lw r16,(r1+0)                                  
 8003dac:	28 2d 00 04 	lw r13,(r1+4)                                  
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003db0:	78 01 08 01 	mvhi r1,0x801                                  
 8003db4:	38 21 6d fc 	ori r1,r1,0x6dfc                               
 8003db8:	28 24 00 00 	lw r4,(r1+0)                                   
 8003dbc:	34 03 00 00 	mvi r3,0                                       
 8003dc0:	ba 00 08 00 	mv r1,r16                                      
 8003dc4:	b9 a0 10 00 	mv r2,r13                                      
 8003dc8:	f8 00 3f 0e 	calli 8013a00 <__divdi3>                       
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003dcc:	78 03 08 01 	mvhi r3,0x801                                  
 8003dd0:	38 63 6d fc 	ori r3,r3,0x6dfc                               
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
 8003dd4:	29 8b 00 00 	lw r11,(r12+0)                                 
 8003dd8:	28 64 00 00 	lw r4,(r3+0)                                   
 8003ddc:	ba 00 08 00 	mv r1,r16                                      
 8003de0:	34 03 00 00 	mvi r3,0                                       
 8003de4:	b5 62 58 00 	add r11,r11,r2                                 
 8003de8:	b9 a0 10 00 	mv r2,r13                                      
 8003dec:	f8 00 41 07 	calli 8014208 <__moddi3>                       
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003df0:	29 83 00 04 	lw r3,(r12+4)                                  
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
 8003df4:	78 01 08 01 	mvhi r1,0x801                                  
 8003df8:	38 21 70 04 	ori r1,r1,0x7004                               
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003dfc:	b4 63 18 00 	add r3,r3,r3                                   
 8003e00:	b4 63 18 00 	add r3,r3,r3                                   
 8003e04:	b4 63 18 00 	add r3,r3,r3                                   
 8003e08:	b4 63 28 00 	add r5,r3,r3                                   
 8003e0c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003e10:	b4 65 18 00 	add r3,r3,r5                                   
 8003e14:	b4 63 28 00 	add r5,r3,r3                                   
 8003e18:	b4 a5 28 00 	add r5,r5,r5                                   
 8003e1c:	b4 65 18 00 	add r3,r3,r5                                   
 8003e20:	b4 63 28 00 	add r5,r3,r3                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
 8003e24:	28 24 00 00 	lw r4,(r1+0)                                   
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003e28:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003e2c:	78 01 08 01 	mvhi r1,0x801                                  
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003e30:	b4 65 18 00 	add r3,r3,r5                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003e34:	38 21 70 08 	ori r1,r1,0x7008                               
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003e38:	b4 43 18 00 	add r3,r2,r3                                   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 8003e3c:	28 22 00 00 	lw r2,(r1+0)                                   
 8003e40:	54 62 00 bc 	bgu r3,r2,8004130 <adjtime+0x4ac>              <== NEVER TAKEN
  _Thread_Disable_dispatch();                                         
                                                                      
    _TOD_Get( &ts );                                                  
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
 8003e44:	b8 60 68 00 	mv r13,r3                                      
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
 8003e48:	78 01 08 01 	mvhi r1,0x801                                  
 8003e4c:	38 21 70 04 	ori r1,r1,0x7004                               
 8003e50:	28 22 00 00 	lw r2,(r1+0)                                   
 8003e54:	54 62 00 08 	bgu r3,r2,8003e74 <adjtime+0x1f0>              <== NEVER TAKEN
      ts.tv_nsec += TOD_NANOSECONDS_PER_SECOND;                       
 8003e58:	78 01 08 01 	mvhi r1,0x801                                  
 8003e5c:	38 21 6d fc 	ori r1,r1,0x6dfc                               
 8003e60:	28 24 00 00 	lw r4,(r1+0)                                   
 8003e64:	b4 64 18 00 	add r3,r3,r4                                   
 8003e68:	b8 60 68 00 	mv r13,r3                                      
      ts.tv_sec--;                                                    
 8003e6c:	35 6b ff ff 	addi r11,r11,-1                                
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
      ts.tv_sec++;                                                    
    }                                                                 
                                                                      
    /* if adjustment is too much negative */                          
    while ( ts.tv_nsec <= (-1 * TOD_NANOSECONDS_PER_SECOND) ) {       
 8003e70:	50 43 ff fd 	bgeu r2,r3,8003e64 <adjtime+0x1e0>             
  const struct timespec *tod_as_timespec                              
)                                                                     
{                                                                     
  Timestamp_Control tod_as_timestamp;                                 
                                                                      
  _Timestamp_Set(                                                     
 8003e74:	34 02 00 1f 	mvi r2,31                                      
 8003e78:	b9 60 08 00 	mv r1,r11                                      
 8003e7c:	f8 00 46 ce 	calli 80159b4 <__ashrsi3>                      
  Timestamp64_Control *_time,                                         
  Timestamp64_Control  _seconds,                                      
  Timestamp64_Control  _nanoseconds                                   
)                                                                     
{                                                                     
  *_time = _seconds * 1000000000L + _nanoseconds;                     
 8003e80:	b5 6b 10 00 	add r2,r11,r11                                 
 8003e84:	f5 62 28 00 	cmpgu r5,r11,r2                                
 8003e88:	b8 20 18 00 	mv r3,r1                                       
 8003e8c:	b4 42 20 00 	add r4,r2,r2                                   
 8003e90:	b4 21 08 00 	add r1,r1,r1                                   
 8003e94:	b4 a1 28 00 	add r5,r5,r1                                   
 8003e98:	f4 44 08 00 	cmpgu r1,r2,r4                                 
 8003e9c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003ea0:	b4 84 10 00 	add r2,r4,r4                                   
 8003ea4:	b4 25 08 00 	add r1,r1,r5                                   
 8003ea8:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003eac:	b4 42 28 00 	add r5,r2,r2                                   
 8003eb0:	b4 21 08 00 	add r1,r1,r1                                   
 8003eb4:	b4 81 20 00 	add r4,r4,r1                                   
 8003eb8:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003ebc:	b4 84 20 00 	add r4,r4,r4                                   
 8003ec0:	c8 ab 10 00 	sub r2,r5,r11                                  
 8003ec4:	b4 24 08 00 	add r1,r1,r4                                   
 8003ec8:	f4 45 28 00 	cmpgu r5,r2,r5                                 
 8003ecc:	b4 42 20 00 	add r4,r2,r2                                   
 8003ed0:	c8 23 08 00 	sub r1,r1,r3                                   
 8003ed4:	c8 25 28 00 	sub r5,r1,r5                                   
 8003ed8:	f4 44 08 00 	cmpgu r1,r2,r4                                 
 8003edc:	b4 a5 28 00 	add r5,r5,r5                                   
 8003ee0:	b4 84 10 00 	add r2,r4,r4                                   
 8003ee4:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003ee8:	b4 25 08 00 	add r1,r1,r5                                   
 8003eec:	b4 21 08 00 	add r1,r1,r1                                   
 8003ef0:	b4 42 28 00 	add r5,r2,r2                                   
 8003ef4:	b4 81 30 00 	add r6,r4,r1                                   
 8003ef8:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003efc:	c8 ab 20 00 	sub r4,r5,r11                                  
 8003f00:	b4 c6 30 00 	add r6,r6,r6                                   
 8003f04:	f4 85 28 00 	cmpgu r5,r4,r5                                 
 8003f08:	b4 26 08 00 	add r1,r1,r6                                   
 8003f0c:	b4 84 10 00 	add r2,r4,r4                                   
 8003f10:	c8 23 08 00 	sub r1,r1,r3                                   
 8003f14:	c8 25 08 00 	sub r1,r1,r5                                   
 8003f18:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003f1c:	b4 42 28 00 	add r5,r2,r2                                   
 8003f20:	b4 21 08 00 	add r1,r1,r1                                   
 8003f24:	b4 81 20 00 	add r4,r4,r1                                   
 8003f28:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003f2c:	b4 84 20 00 	add r4,r4,r4                                   
 8003f30:	b4 ab 10 00 	add r2,r5,r11                                  
 8003f34:	b4 24 08 00 	add r1,r1,r4                                   
 8003f38:	f4 a2 28 00 	cmpgu r5,r5,r2                                 
 8003f3c:	b4 42 20 00 	add r4,r2,r2                                   
 8003f40:	b4 23 08 00 	add r1,r1,r3                                   
 8003f44:	b4 a1 28 00 	add r5,r5,r1                                   
 8003f48:	f4 44 08 00 	cmpgu r1,r2,r4                                 
 8003f4c:	b4 a5 28 00 	add r5,r5,r5                                   
 8003f50:	b4 84 10 00 	add r2,r4,r4                                   
 8003f54:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003f58:	b4 25 08 00 	add r1,r1,r5                                   
 8003f5c:	b4 21 08 00 	add r1,r1,r1                                   
 8003f60:	b4 42 28 00 	add r5,r2,r2                                   
 8003f64:	b4 81 30 00 	add r6,r4,r1                                   
 8003f68:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003f6c:	c8 ab 20 00 	sub r4,r5,r11                                  
 8003f70:	b4 c6 30 00 	add r6,r6,r6                                   
 8003f74:	f4 85 28 00 	cmpgu r5,r4,r5                                 
 8003f78:	b4 26 08 00 	add r1,r1,r6                                   
 8003f7c:	b4 84 10 00 	add r2,r4,r4                                   
 8003f80:	c8 23 08 00 	sub r1,r1,r3                                   
 8003f84:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003f88:	c8 25 08 00 	sub r1,r1,r5                                   
 8003f8c:	b4 21 08 00 	add r1,r1,r1                                   
 8003f90:	b4 42 28 00 	add r5,r2,r2                                   
 8003f94:	b4 81 30 00 	add r6,r4,r1                                   
 8003f98:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003f9c:	c8 ab 20 00 	sub r4,r5,r11                                  
 8003fa0:	b4 c6 30 00 	add r6,r6,r6                                   
 8003fa4:	f4 85 28 00 	cmpgu r5,r4,r5                                 
 8003fa8:	b4 26 08 00 	add r1,r1,r6                                   
 8003fac:	b4 84 10 00 	add r2,r4,r4                                   
 8003fb0:	c8 23 08 00 	sub r1,r1,r3                                   
 8003fb4:	c8 25 08 00 	sub r1,r1,r5                                   
 8003fb8:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003fbc:	b4 42 28 00 	add r5,r2,r2                                   
 8003fc0:	b4 21 08 00 	add r1,r1,r1                                   
 8003fc4:	b4 81 20 00 	add r4,r4,r1                                   
 8003fc8:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 8003fcc:	b4 84 20 00 	add r4,r4,r4                                   
 8003fd0:	c8 ab 10 00 	sub r2,r5,r11                                  
 8003fd4:	b4 24 08 00 	add r1,r1,r4                                   
 8003fd8:	f4 45 28 00 	cmpgu r5,r2,r5                                 
 8003fdc:	b4 42 20 00 	add r4,r2,r2                                   
 8003fe0:	c8 23 08 00 	sub r1,r1,r3                                   
 8003fe4:	c8 25 28 00 	sub r5,r1,r5                                   
 8003fe8:	f4 44 08 00 	cmpgu r1,r2,r4                                 
 8003fec:	b4 a5 28 00 	add r5,r5,r5                                   
 8003ff0:	b4 84 10 00 	add r2,r4,r4                                   
 8003ff4:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8003ff8:	b4 25 08 00 	add r1,r1,r5                                   
 8003ffc:	b4 21 08 00 	add r1,r1,r1                                   
 8004000:	b4 42 28 00 	add r5,r2,r2                                   
 8004004:	b4 81 30 00 	add r6,r4,r1                                   
 8004008:	f4 45 08 00 	cmpgu r1,r2,r5                                 
 800400c:	b4 ab 20 00 	add r4,r5,r11                                  
 8004010:	b4 c6 30 00 	add r6,r6,r6                                   
 8004014:	b4 26 08 00 	add r1,r1,r6                                   
 8004018:	f4 a4 28 00 	cmpgu r5,r5,r4                                 
 800401c:	b4 84 10 00 	add r2,r4,r4                                   
 8004020:	b4 23 08 00 	add r1,r1,r3                                   
 8004024:	b4 a1 08 00 	add r1,r5,r1                                   
 8004028:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 800402c:	b4 42 28 00 	add r5,r2,r2                                   
 8004030:	b4 21 08 00 	add r1,r1,r1                                   
 8004034:	b4 81 20 00 	add r4,r4,r1                                   
 8004038:	f4 45 10 00 	cmpgu r2,r2,r5                                 
 800403c:	b4 ab 58 00 	add r11,r5,r11                                 
 8004040:	b4 84 20 00 	add r4,r4,r4                                   
 8004044:	b4 44 10 00 	add r2,r2,r4                                   
 8004048:	f4 ab 28 00 	cmpgu r5,r5,r11                                
 800404c:	b5 6b 20 00 	add r4,r11,r11                                 
 8004050:	b4 43 18 00 	add r3,r2,r3                                   
 8004054:	b4 a3 18 00 	add r3,r5,r3                                   
 8004058:	f5 64 58 00 	cmpgu r11,r11,r4                               
 800405c:	b4 84 10 00 	add r2,r4,r4                                   
 8004060:	b4 63 18 00 	add r3,r3,r3                                   
 8004064:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8004068:	b5 63 58 00 	add r11,r11,r3                                 
 800406c:	b5 6b 58 00 	add r11,r11,r11                                
 8004070:	b4 42 18 00 	add r3,r2,r2                                   
 8004074:	b4 8b 28 00 	add r5,r4,r11                                  
 8004078:	f4 43 20 00 	cmpgu r4,r2,r3                                 
 800407c:	b4 a5 28 00 	add r5,r5,r5                                   
 8004080:	b4 63 10 00 	add r2,r3,r3                                   
 8004084:	f4 62 08 00 	cmpgu r1,r3,r2                                 
 8004088:	b4 85 20 00 	add r4,r4,r5                                   
 800408c:	b4 42 18 00 	add r3,r2,r2                                   
 8004090:	b4 84 20 00 	add r4,r4,r4                                   
 8004094:	f4 43 28 00 	cmpgu r5,r2,r3                                 
 8004098:	b4 24 08 00 	add r1,r1,r4                                   
 800409c:	b4 63 10 00 	add r2,r3,r3                                   
 80040a0:	b4 21 08 00 	add r1,r1,r1                                   
 80040a4:	f4 62 20 00 	cmpgu r4,r3,r2                                 
 80040a8:	b4 a1 28 00 	add r5,r5,r1                                   
 80040ac:	b4 a5 28 00 	add r5,r5,r5                                   
 80040b0:	b4 42 18 00 	add r3,r2,r2                                   
 80040b4:	b4 85 20 00 	add r4,r4,r5                                   
 80040b8:	f4 43 08 00 	cmpgu r1,r2,r3                                 
 80040bc:	b4 84 20 00 	add r4,r4,r4                                   
 80040c0:	b4 63 10 00 	add r2,r3,r3                                   
 80040c4:	b4 24 08 00 	add r1,r1,r4                                   
 80040c8:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 80040cc:	b4 42 58 00 	add r11,r2,r2                                  
 80040d0:	b4 21 08 00 	add r1,r1,r1                                   
 80040d4:	f4 4b 80 00 	cmpgu r16,r2,r11                               
 80040d8:	b4 61 18 00 	add r3,r3,r1                                   
 80040dc:	b4 63 18 00 	add r3,r3,r3                                   
 80040e0:	34 02 00 1f 	mvi r2,31                                      
 80040e4:	b9 a0 08 00 	mv r1,r13                                      
 80040e8:	b5 6d 68 00 	add r13,r11,r13                                
 80040ec:	b6 03 80 00 	add r16,r16,r3                                 
 80040f0:	f5 6d 58 00 	cmpgu r11,r11,r13                              
 80040f4:	f8 00 46 30 	calli 80159b4 <__ashrsi3>                      
 80040f8:	b6 01 08 00 	add r1,r16,r1                                  
 80040fc:	b5 61 58 00 	add r11,r11,r1                                 
    &tod_as_timestamp,                                                
    tod_as_timespec->tv_sec,                                          
    tod_as_timespec->tv_nsec                                          
  );                                                                  
  _TOD_Set_with_timestamp( &tod_as_timestamp );                       
 8004100:	b9 e0 08 00 	mv r1,r15                                      
 8004104:	5b 8b 00 20 	sw (sp+32),r11                                 
 8004108:	5b 8d 00 24 	sw (sp+36),r13                                 
 800410c:	f8 00 06 56 	calli 8005a64 <_TOD_Set_with_timestamp>        
      ts.tv_sec--;                                                    
    }                                                                 
                                                                      
    _TOD_Set( &ts );                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004110:	f8 00 0d 6d 	calli 80076c4 <_Thread_Enable_dispatch>        
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
    *olddelta = *delta;                                               
                                                                      
  return 0;                                                           
 8004114:	34 01 00 00 	mvi r1,0                                       
    _TOD_Set( &ts );                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  /* set the user's output */                                         
  if ( olddelta )                                                     
 8004118:	45 c0 fe ef 	be r14,r0,8003cd4 <adjtime+0x50>               <== NEVER TAKEN
    *olddelta = *delta;                                               
 800411c:	29 82 00 00 	lw r2,(r12+0)                                  
 8004120:	59 c2 00 00 	sw (r14+0),r2                                  
 8004124:	29 82 00 04 	lw r2,(r12+4)                                  
 8004128:	59 c2 00 04 	sw (r14+4),r2                                  
 800412c:	e3 ff fe ea 	bi 8003cd4 <adjtime+0x50>                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
      ts.tv_nsec -= TOD_NANOSECONDS_PER_SECOND;                       
 8004130:	b4 64 18 00 	add r3,r3,r4                                   
 8004134:	b8 60 68 00 	mv r13,r3                                      
      ts.tv_sec++;                                                    
 8004138:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
    ts.tv_sec  += delta->tv_sec;                                      
    ts.tv_nsec += delta->tv_usec * TOD_NANOSECONDS_PER_MICROSECOND;   
                                                                      
    /* if adjustment is too much positive */                          
    while ( ts.tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {              
 800413c:	54 62 ff fd 	bgu r3,r2,8004130 <adjtime+0x4ac>              <== NEVER TAKEN
 8004140:	e3 ff ff 42 	bi 8003e48 <adjtime+0x1c4>                     
                                                                      

08003f6c <aio_cancel>: #include <stdlib.h> #include <rtems/system.h> #include <rtems/seterr.h> int aio_cancel(int fildes, struct aiocb *aiocbp) {
 8003f6c:	37 9c ff ec 	addi sp,sp,-20                                 
 8003f70:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003f74:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003f78:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003f7c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003f80:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003f84:	78 0b 08 01 	mvhi r11,0x801                                 
 8003f88:	39 6b 88 40 	ori r11,r11,0x8840                             
#include <stdlib.h>                                                   
#include <rtems/system.h>                                             
#include <rtems/seterr.h>                                             
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
 8003f8c:	b8 20 68 00 	mv r13,r1                                      
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003f90:	b9 60 08 00 	mv r1,r11                                      
#include <stdlib.h>                                                   
#include <rtems/system.h>                                             
#include <rtems/seterr.h>                                             
                                                                      
int aio_cancel(int fildes, struct aiocb  *aiocbp)                     
{                                                                     
 8003f94:	b8 40 60 00 	mv r12,r2                                      
  rtems_aio_request_chain *r_chain;                                   
  int result;                                                         
                                                                      
  pthread_mutex_lock (&aio_request_queue.mutex);                      
 8003f98:	f8 00 05 2c 	calli 8005448 <pthread_mutex_lock>             
                                                                      
  if (fcntl (fildes, F_GETFD) < 0) {                                  
 8003f9c:	b9 a0 08 00 	mv r1,r13                                      
 8003fa0:	34 02 00 01 	mvi r2,1                                       
 8003fa4:	f8 00 1d 4c 	calli 800b4d4 <fcntl>                          
 8003fa8:	4c 20 00 08 	bge r1,r0,8003fc8 <aio_cancel+0x5c>            
    pthread_mutex_unlock(&aio_request_queue.mutex);                   
 8003fac:	b9 60 08 00 	mv r1,r11                                      
 8003fb0:	f8 00 05 56 	calli 8005508 <pthread_mutex_unlock>           
    rtems_set_errno_and_return_minus_one (EBADF);                     
 8003fb4:	f8 00 2d f2 	calli 800f77c <__errno>                        
 8003fb8:	34 02 00 09 	mvi r2,9                                       
 8003fbc:	58 22 00 00 	sw (r1+0),r2                                   
 8003fc0:	34 0c ff ff 	mvi r12,-1                                     
 8003fc4:	e0 00 00 16 	bi 800401c <aio_cancel+0xb0>                   
  }                                                                   
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
 8003fc8:	45 80 00 40 	be r12,r0,80040c8 <aio_cancel+0x15c>           <== NEVER TAKEN
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
    return AIO_CANCELED;                                              
  } else {                                                            
    AIO_printf ("Cancel request\n");                                  
                                                                      
    if (aiocbp->aio_fildes != fildes) {                               
 8003fcc:	29 8e 00 00 	lw r14,(r12+0)                                 
 8003fd0:	5d cd 00 37 	bne r14,r13,80040ac <aio_cancel+0x140>         <== NEVER TAKEN
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
 8003fd4:	78 01 08 01 	mvhi r1,0x801                                  
 8003fd8:	38 21 88 88 	ori r1,r1,0x8888                               
 8003fdc:	b9 c0 10 00 	mv r2,r14                                      
 8003fe0:	34 03 00 00 	mvi r3,0                                       
 8003fe4:	f8 00 01 b5 	calli 80046b8 <rtems_aio_search_fd>            
 8003fe8:	b8 20 68 00 	mv r13,r1                                      
    if (r_chain == NULL) {                                            
 8003fec:	44 20 00 14 	be r1,r0,800403c <aio_cancel+0xd0>             
        return AIO_ALLDONE;                                           
      }                                                               
    }                                                                 
      AIO_printf ("Request on [WQ]\n");                               
                                                                      
      pthread_mutex_lock (&r_chain->mutex);                           
 8003ff0:	34 2e 00 1c 	addi r14,r1,28                                 
 8003ff4:	b9 c0 08 00 	mv r1,r14                                      
 8003ff8:	f8 00 05 14 	calli 8005448 <pthread_mutex_lock>             
      result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);        
 8003ffc:	b9 80 10 00 	mv r2,r12                                      
 8004000:	35 a1 00 08 	addi r1,r13,8                                  
 8004004:	f8 00 02 00 	calli 8004804 <rtems_aio_remove_req>           
 8004008:	b8 20 60 00 	mv r12,r1                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 800400c:	b9 c0 08 00 	mv r1,r14                                      
 8004010:	f8 00 05 3e 	calli 8005508 <pthread_mutex_unlock>           
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 8004014:	b9 60 08 00 	mv r1,r11                                      
 8004018:	f8 00 05 3c 	calli 8005508 <pthread_mutex_unlock>           
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
 800401c:	b9 80 08 00 	mv r1,r12                                      
 8004020:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004024:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004028:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800402c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004030:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004034:	37 9c 00 14 	addi sp,sp,20                                  
 8004038:	c3 a0 00 00 	ret                                            
      rtems_set_errno_and_return_minus_one (EINVAL);                  
    }                                                                 
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
 800403c:	29 62 00 54 	lw r2,(r11+84)                                 
 8004040:	78 01 08 01 	mvhi r1,0x801                                  
 8004044:	38 21 88 98 	ori r1,r1,0x8898                               
 8004048:	44 41 00 15 	be r2,r1,800409c <aio_cancel+0x130>            <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
 800404c:	78 01 08 01 	mvhi r1,0x801                                  
 8004050:	38 21 88 94 	ori r1,r1,0x8894                               
 8004054:	b9 c0 10 00 	mv r2,r14                                      
 8004058:	34 03 00 00 	mvi r3,0                                       
 800405c:	f8 00 01 97 	calli 80046b8 <rtems_aio_search_fd>            
        if (r_chain == NULL) {                                        
 8004060:	44 20 00 13 	be r1,r0,80040ac <aio_cancel+0x140>            
          rtems_set_errno_and_return_minus_one (EINVAL);              
        }                                                             
                                                                      
        AIO_printf ("Request on [IQ]\n");                             
                                                                      
        result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);      
 8004064:	b9 80 10 00 	mv r2,r12                                      
 8004068:	34 21 00 08 	addi r1,r1,8                                   
 800406c:	f8 00 01 e6 	calli 8004804 <rtems_aio_remove_req>           
 8004070:	b8 20 60 00 	mv r12,r1                                      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 8004074:	b9 60 08 00 	mv r1,r11                                      
 8004078:	f8 00 05 24 	calli 8005508 <pthread_mutex_unlock>           
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
      return result;                                                  
  }                                                                   
  return AIO_ALLDONE;                                                 
}                                                                     
 800407c:	b9 80 08 00 	mv r1,r12                                      
 8004080:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004084:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004088:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800408c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004090:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004094:	37 9c 00 14 	addi sp,sp,20                                  
 8004098:	c3 a0 00 00 	ret                                            
                                                                      
        result = rtems_aio_remove_req (&r_chain->perfd, aiocbp);      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
        return result;                                                
      } else {                                                        
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 800409c:	b9 60 08 00 	mv r1,r11                                      
 80040a0:	f8 00 05 1a 	calli 8005508 <pthread_mutex_unlock>           
        return AIO_ALLDONE;                                           
 80040a4:	34 0c 00 02 	mvi r12,2                                      
 80040a8:	e3 ff ff dd 	bi 800401c <aio_cancel+0xb0>                   
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
        if (r_chain == NULL) {                                        
          pthread_mutex_unlock (&aio_request_queue.mutex);            
 80040ac:	b9 60 08 00 	mv r1,r11                                      
 80040b0:	f8 00 05 16 	calli 8005508 <pthread_mutex_unlock>           
          rtems_set_errno_and_return_minus_one (EINVAL);              
 80040b4:	f8 00 2d b2 	calli 800f77c <__errno>                        
 80040b8:	34 02 00 16 	mvi r2,22                                      
 80040bc:	58 22 00 00 	sw (r1+0),r2                                   
 80040c0:	34 0c ff ff 	mvi r12,-1                                     
 80040c4:	e3 ff ff d6 	bi 800401c <aio_cancel+0xb0>                   
                                                                      
  /* if aiocbp is NULL remove all request for given file descriptor */
  if (aiocbp == NULL) {                                               
    AIO_printf ("Cancel all requests\n");                             
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
 80040c8:	78 01 08 01 	mvhi r1,0x801                                  
 80040cc:	38 21 88 88 	ori r1,r1,0x8888                               
 80040d0:	b9 a0 10 00 	mv r2,r13                                      
 80040d4:	34 03 00 00 	mvi r3,0                                       
 80040d8:	f8 00 01 78 	calli 80046b8 <rtems_aio_search_fd>            
 80040dc:	b8 20 70 00 	mv r14,r1                                      
    if (r_chain == NULL) {                                            
 80040e0:	44 2c 00 0e 	be r1,r12,8004118 <aio_cancel+0x1ac>           
      return AIO_ALLDONE;                                             
    }                                                                 
                                                                      
    AIO_printf ("Request chain on [WQ]\n");                           
                                                                      
    pthread_mutex_lock (&r_chain->mutex);                             
 80040e4:	34 2c 00 1c 	addi r12,r1,28                                 
 80040e8:	b9 80 08 00 	mv r1,r12                                      
 80040ec:	f8 00 04 d7 	calli 8005448 <pthread_mutex_lock>             
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 80040f0:	b9 c0 08 00 	mv r1,r14                                      
 80040f4:	f8 00 0b 07 	calli 8006d10 <_Chain_Extract>                 
    rtems_chain_extract (&r_chain->next_fd);                          
    rtems_aio_remove_fd (r_chain);                                    
 80040f8:	b9 c0 08 00 	mv r1,r14                                      
 80040fc:	f8 00 01 a7 	calli 8004798 <rtems_aio_remove_fd>            
    pthread_mutex_unlock (&r_chain->mutex);                           
 8004100:	b9 80 08 00 	mv r1,r12                                      
 8004104:	f8 00 05 01 	calli 8005508 <pthread_mutex_unlock>           
    pthread_mutex_unlock (&aio_request_queue.mutex);                  
 8004108:	b9 60 08 00 	mv r1,r11                                      
 800410c:	f8 00 04 ff 	calli 8005508 <pthread_mutex_unlock>           
    return AIO_CANCELED;                                              
 8004110:	34 0c 00 00 	mvi r12,0                                      
 8004114:	e3 ff ff c2 	bi 800401c <aio_cancel+0xb0>                   
                                                                      
    r_chain = rtems_aio_search_fd (&aio_request_queue.work_req, fildes, 0);
    if (r_chain == NULL) {                                            
      AIO_printf ("Request chain not on [WQ]\n");                     
                                                                      
      if (!rtems_chain_is_empty (&aio_request_queue.idle_req)) {      
 8004118:	29 62 00 54 	lw r2,(r11+84)                                 
 800411c:	78 01 08 01 	mvhi r1,0x801                                  
 8004120:	38 21 88 98 	ori r1,r1,0x8898                               
 8004124:	44 41 ff de 	be r2,r1,800409c <aio_cancel+0x130>            <== NEVER TAKEN
        r_chain = rtems_aio_search_fd (&aio_request_queue.idle_req, fildes, 0);
 8004128:	78 01 08 01 	mvhi r1,0x801                                  
 800412c:	38 21 88 94 	ori r1,r1,0x8894                               
 8004130:	b9 a0 10 00 	mv r2,r13                                      
 8004134:	34 03 00 00 	mvi r3,0                                       
 8004138:	f8 00 01 60 	calli 80046b8 <rtems_aio_search_fd>            
 800413c:	b8 20 60 00 	mv r12,r1                                      
        if (r_chain == NULL) {                                        
 8004140:	44 2e ff d7 	be r1,r14,800409c <aio_cancel+0x130>           
 8004144:	f8 00 0a f3 	calli 8006d10 <_Chain_Extract>                 
        }                                                             
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
 8004148:	b9 80 08 00 	mv r1,r12                                      
        pthread_mutex_destroy (&r_chain->mutex);                      
 800414c:	35 8d 00 1c 	addi r13,r12,28                                
        }                                                             
                                                                      
        AIO_printf ("Request chain on [IQ]\n");                       
                                                                      
        rtems_chain_extract (&r_chain->next_fd);                      
        rtems_aio_remove_fd (r_chain);                                
 8004150:	f8 00 01 92 	calli 8004798 <rtems_aio_remove_fd>            
        pthread_mutex_destroy (&r_chain->mutex);                      
 8004154:	b9 a0 08 00 	mv r1,r13                                      
 8004158:	f8 00 03 f4 	calli 8005128 <pthread_mutex_destroy>          
        pthread_cond_destroy (&r_chain->mutex);                       
 800415c:	b9 a0 08 00 	mv r1,r13                                      
 8004160:	f8 00 02 e1 	calli 8004ce4 <pthread_cond_destroy>           
        free (r_chain);                                               
 8004164:	b9 80 08 00 	mv r1,r12                                      
 8004168:	fb ff f6 20 	calli 80019e8 <free>                           
                                                                      
        pthread_mutex_unlock (&aio_request_queue.mutex);              
 800416c:	b9 60 08 00 	mv r1,r11                                      
 8004170:	f8 00 04 e6 	calli 8005508 <pthread_mutex_unlock>           
        return AIO_CANCELED;                                          
 8004174:	34 0c 00 00 	mvi r12,0                                      
 8004178:	e3 ff ff a9 	bi 800401c <aio_cancel+0xb0>                   
                                                                      

08004184 <aio_fsync>: int aio_fsync( int op, struct aiocb *aiocbp ) {
 8004184:	37 9c ff f4 	addi sp,sp,-12                                 
 8004188:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800418c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004190:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004194:	b8 40 58 00 	mv r11,r2                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 8004198:	34 02 20 00 	mvi r2,8192                                    
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 800419c:	34 0c 00 16 	mvi r12,22                                     
)                                                                     
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  if (op != O_SYNC)                                                   
 80041a0:	5c 22 00 09 	bne r1,r2,80041c4 <aio_fsync+0x40>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 80041a4:	29 61 00 00 	lw r1,(r11+0)                                  
 80041a8:	34 02 00 03 	mvi r2,3                                       
 80041ac:	f8 00 1c ca 	calli 800b4d4 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 80041b0:	20 21 00 03 	andi r1,r1,0x3                                 
 80041b4:	34 21 ff ff 	addi r1,r1,-1                                  
 80041b8:	34 02 00 01 	mvi r2,1                                       
 80041bc:	50 41 00 0d 	bgeu r2,r1,80041f0 <aio_fsync+0x6c>            
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 80041c0:	34 0c 00 09 	mvi r12,9                                      
 80041c4:	34 01 ff ff 	mvi r1,-1                                      
 80041c8:	59 6c 00 2c 	sw (r11+44),r12                                
 80041cc:	59 61 00 30 	sw (r11+48),r1                                 
 80041d0:	f8 00 2d 6b 	calli 800f77c <__errno>                        
 80041d4:	58 2c 00 00 	sw (r1+0),r12                                  
 80041d8:	34 01 ff ff 	mvi r1,-1                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
                                                                      
}                                                                     
 80041dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041e0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80041e4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80041e8:	37 9c 00 0c 	addi sp,sp,12                                  
 80041ec:	c3 a0 00 00 	ret                                            
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 80041f0:	34 01 00 18 	mvi r1,24                                      
 80041f4:	fb ff f7 6b 	calli 8001fa0 <malloc>                         
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 80041f8:	34 0c 00 0b 	mvi r12,11                                     
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 80041fc:	44 20 ff f2 	be r1,r0,80041c4 <aio_fsync+0x40>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
 8004200:	34 03 00 03 	mvi r3,3                                       
 8004204:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004208:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_SYNC;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 800420c:	f8 00 01 9d 	calli 8004880 <rtems_aio_enqueue>              
                                                                      
}                                                                     
 8004210:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004214:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004218:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800421c:	37 9c 00 0c 	addi sp,sp,12                                  
 8004220:	c3 a0 00 00 	ret                                            
                                                                      

08004a90 <aio_read>: * 0 - otherwise */ int aio_read (struct aiocb *aiocbp) {
 8004a90:	37 9c ff f4 	addi sp,sp,-12                                 
 8004a94:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004a98:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004a9c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004aa0:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004aa4:	28 21 00 00 	lw r1,(r1+0)                                   
 8004aa8:	34 02 00 03 	mvi r2,3                                       
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8004aac:	34 0c 00 09 	mvi r12,9                                      
aio_read (struct aiocb *aiocbp)                                       
{                                                                     
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004ab0:	f8 00 1a 89 	calli 800b4d4 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8004ab4:	20 21 00 03 	andi r1,r1,0x3                                 
 8004ab8:	7c 22 00 02 	cmpnei r2,r1,2                                 
 8004abc:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8004ac0:	a0 41 08 00 	and r1,r2,r1                                   
 8004ac4:	5c 20 00 06 	bne r1,r0,8004adc <aio_read+0x4c>              
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 8004ac8:	29 6c 00 10 	lw r12,(r11+16)                                
 8004acc:	5d 81 00 03 	bne r12,r1,8004ad8 <aio_read+0x48>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 8004ad0:	29 61 00 04 	lw r1,(r11+4)                                  
 8004ad4:	4c 2c 00 09 	bge r1,r12,8004af8 <aio_read+0x68>             
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_RDONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004ad8:	34 0c 00 16 	mvi r12,22                                     
 8004adc:	34 01 ff ff 	mvi r1,-1                                      
 8004ae0:	59 6c 00 2c 	sw (r11+44),r12                                
 8004ae4:	59 61 00 30 	sw (r11+48),r1                                 
 8004ae8:	f8 00 2b 25 	calli 800f77c <__errno>                        
 8004aec:	58 2c 00 00 	sw (r1+0),r12                                  
 8004af0:	34 01 ff ff 	mvi r1,-1                                      
 8004af4:	e0 00 00 08 	bi 8004b14 <aio_read+0x84>                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 8004af8:	34 01 00 18 	mvi r1,24                                      
 8004afc:	fb ff f5 29 	calli 8001fa0 <malloc>                         
  if (req == NULL)                                                    
 8004b00:	44 2c 00 0a 	be r1,r12,8004b28 <aio_read+0x98>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
 8004b04:	34 03 00 01 	mvi r3,1                                       
 8004b08:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004b0c:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_READ;                             
                                                                      
  return rtems_aio_enqueue (req);                                     
 8004b10:	fb ff ff 5c 	calli 8004880 <rtems_aio_enqueue>              
}                                                                     
 8004b14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b18:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004b1c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004b20:	37 9c 00 0c 	addi sp,sp,12                                  
 8004b24:	c3 a0 00 00 	ret                                            
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8004b28:	34 0c 00 0b 	mvi r12,11                                     <== NOT EXECUTED
 8004b2c:	e3 ff ff ec 	bi 8004adc <aio_read+0x4c>                     <== NOT EXECUTED
                                                                      

08004b38 <aio_write>: * 0 - otherwise */ int aio_write (struct aiocb *aiocbp) {
 8004b38:	37 9c ff f4 	addi sp,sp,-12                                 
 8004b3c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8004b40:	5b 8c 00 08 	sw (sp+8),r12                                  
 8004b44:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004b48:	b8 20 58 00 	mv r11,r1                                      
  rtems_aio_request *req;                                             
  int mode;                                                           
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
 8004b4c:	28 21 00 00 	lw r1,(r1+0)                                   
 8004b50:	34 02 00 03 	mvi r2,3                                       
 8004b54:	f8 00 1a 60 	calli 800b4d4 <fcntl>                          
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
 8004b58:	20 21 00 03 	andi r1,r1,0x3                                 
 8004b5c:	34 21 ff ff 	addi r1,r1,-1                                  
 8004b60:	34 02 00 01 	mvi r2,1                                       
 8004b64:	50 41 00 09 	bgeu r2,r1,8004b88 <aio_write+0x50>            
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
 8004b68:	34 0c 00 09 	mvi r12,9                                      
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004b6c:	34 01 ff ff 	mvi r1,-1                                      
 8004b70:	59 6c 00 2c 	sw (r11+44),r12                                
 8004b74:	59 61 00 30 	sw (r11+48),r1                                 
 8004b78:	f8 00 2b 01 	calli 800f77c <__errno>                        
 8004b7c:	58 2c 00 00 	sw (r1+0),r12                                  
 8004b80:	34 01 ff ff 	mvi r1,-1                                      
 8004b84:	e0 00 00 0f 	bi 8004bc0 <aio_write+0x88>                    
                                                                      
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
 8004b88:	29 61 00 10 	lw r1,(r11+16)                                 
 8004b8c:	5c 20 00 03 	bne r1,r0,8004b98 <aio_write+0x60>             
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  if (aiocbp->aio_offset < 0)                                         
 8004b90:	29 62 00 04 	lw r2,(r11+4)                                  
 8004b94:	4c 41 00 03 	bge r2,r1,8004ba0 <aio_write+0x68>             
  mode = fcntl (aiocbp->aio_fildes, F_GETFL);                         
  if (!(((mode & O_ACCMODE) == O_WRONLY) || ((mode & O_ACCMODE) == O_RDWR)))
    rtems_aio_set_errno_return_minus_one (EBADF, aiocbp);             
                                                                      
  if (aiocbp->aio_reqprio < 0 || aiocbp->aio_reqprio > AIO_PRIO_DELTA_MAX)
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
 8004b98:	34 0c 00 16 	mvi r12,22                                     
 8004b9c:	e3 ff ff f4 	bi 8004b6c <aio_write+0x34>                    
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
 8004ba0:	34 01 00 18 	mvi r1,24                                      
 8004ba4:	fb ff f4 ff 	calli 8001fa0 <malloc>                         
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
 8004ba8:	34 0c 00 0b 	mvi r12,11                                     
                                                                      
  if (aiocbp->aio_offset < 0)                                         
    rtems_aio_set_errno_return_minus_one (EINVAL, aiocbp);            
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
 8004bac:	44 20 ff f0 	be r1,r0,8004b6c <aio_write+0x34>              <== NEVER TAKEN
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
 8004bb0:	34 03 00 02 	mvi r3,2                                       
 8004bb4:	59 63 00 28 	sw (r11+40),r3                                 
                                                                      
  req = malloc (sizeof (rtems_aio_request));                          
  if (req == NULL)                                                    
    rtems_aio_set_errno_return_minus_one (EAGAIN, aiocbp);            
                                                                      
  req->aiocbp = aiocbp;                                               
 8004bb8:	58 2b 00 14 	sw (r1+20),r11                                 
  req->aiocbp->aio_lio_opcode = LIO_WRITE;                            
                                                                      
  return rtems_aio_enqueue (req);                                     
 8004bbc:	fb ff ff 31 	calli 8004880 <rtems_aio_enqueue>              
}                                                                     
 8004bc0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004bc4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8004bc8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8004bcc:	37 9c 00 0c 	addi sp,sp,12                                  
 8004bd0:	c3 a0 00 00 	ret                                            
                                                                      

080049f4 <check_and_merge>: rtems_chain_control *free_chain, rtems_rbtree_control *chunk_tree, rtems_rbheap_chunk *a, rtems_rbheap_chunk *b ) {
 80049f4:	37 9c ff fc 	addi sp,sp,-4                                  
 80049f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80049fc:	b8 20 28 00 	mv r5,r1                                       
  if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {              
 8004a00:	34 01 ff f8 	mvi r1,-8                                      
 8004a04:	44 81 00 15 	be r4,r1,8004a58 <check_and_merge+0x64>        
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004a08:	28 86 00 00 	lw r6,(r4+0)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 8004a0c:	44 c0 00 1b 	be r6,r0,8004a78 <check_and_merge+0x84>        
  rtems_rbheap_chunk *a,                                              
  rtems_rbheap_chunk *b                                               
)                                                                     
{                                                                     
  if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {              
    if (b->begin < a->begin) {                                        
 8004a10:	28 81 00 18 	lw r1,(r4+24)                                  
 8004a14:	28 67 00 18 	lw r7,(r3+24)                                  
 8004a18:	54 e1 00 13 	bgu r7,r1,8004a64 <check_and_merge+0x70>       
                                                                      
      a = b;                                                          
      b = t;                                                          
    }                                                                 
                                                                      
    a->size += b->size;                                               
 8004a1c:	28 69 00 1c 	lw r9,(r3+28)                                  
 8004a20:	28 88 00 1c 	lw r8,(r4+28)                                  
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 8004a24:	28 87 00 04 	lw r7,(r4+4)                                   
    rtems_chain_extract_unprotected(&b->chain_node);                  
    add_to_chain(free_chain, b);                                      
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
 8004a28:	b8 40 08 00 	mv r1,r2                                       
                                                                      
      a = b;                                                          
      b = t;                                                          
    }                                                                 
                                                                      
    a->size += b->size;                                               
 8004a2c:	b5 28 10 00 	add r2,r9,r8                                   
 8004a30:	58 62 00 1c 	sw (r3+28),r2                                  
  next->previous = previous;                                          
  previous->next = next;                                              
 8004a34:	58 e6 00 00 	sw (r7+0),r6                                   
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8004a38:	28 a2 00 00 	lw r2,(r5+0)                                   
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
 8004a3c:	58 c7 00 04 	sw (r6+4),r7                                   
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8004a40:	58 85 00 04 	sw (r4+4),r5                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8004a44:	58 a4 00 00 	sw (r5+0),r4                                   
  the_node->next        = before_node;                                
 8004a48:	58 82 00 00 	sw (r4+0),r2                                   
  before_node->previous = the_node;                                   
 8004a4c:	58 44 00 04 	sw (r2+4),r4                                   
    rtems_chain_extract_unprotected(&b->chain_node);                  
    add_to_chain(free_chain, b);                                      
    _RBTree_Extract_unprotected(chunk_tree, &b->tree_node);           
 8004a50:	34 82 00 08 	addi r2,r4,8                                   
 8004a54:	f8 00 07 b2 	calli 800691c <_RBTree_Extract_unprotected>    
  }                                                                   
}                                                                     
 8004a58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a5c:	37 9c 00 04 	addi sp,sp,4                                   
 8004a60:	c3 a0 00 00 	ret                                            
  rtems_rbheap_chunk *a,                                              
  rtems_rbheap_chunk *b                                               
)                                                                     
{                                                                     
  if (b != NULL_PAGE && rtems_rbheap_is_chunk_free(b)) {              
    if (b->begin < a->begin) {                                        
 8004a64:	b8 60 08 00 	mv r1,r3                                       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 8004a68:	28 66 00 00 	lw r6,(r3+0)                                   
 8004a6c:	b8 80 18 00 	mv r3,r4                                       
 8004a70:	b8 20 20 00 	mv r4,r1                                       
 8004a74:	e3 ff ff ea 	bi 8004a1c <check_and_merge+0x28>              
 8004a78:	28 81 00 04 	lw r1,(r4+4)                                   
 8004a7c:	5c 26 ff e5 	bne r1,r6,8004a10 <check_and_merge+0x1c>       <== NEVER TAKEN
 8004a80:	e3 ff ff f6 	bi 8004a58 <check_and_merge+0x64>              
                                                                      

08002128 <chroot>: #include <unistd.h> #include <rtems/libio_.h> int chroot( const char *path ) {
 8002128:	37 9c ff 98 	addi sp,sp,-104                                
 800212c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8002130:	5b 8c 00 10 	sw (sp+16),r12                                 
 8002134:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8002138:	5b 8e 00 08 	sw (sp+8),r14                                  
 800213c:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   * We use the global environment for path evaluation.  This makes it possible
   * to escape from a chroot environment referencing an unmounted file system.
   */                                                                 
  rtems_filesystem_eval_path_start_with_root_and_current(             
 8002140:	78 04 08 01 	mvhi r4,0x801                                  
 8002144:	37 8d 00 18 	addi r13,sp,24                                 
 8002148:	78 05 08 01 	mvhi r5,0x801                                  
 800214c:	34 03 00 19 	mvi r3,25                                      
 8002150:	38 84 41 20 	ori r4,r4,0x4120                               
 8002154:	38 a5 41 1c 	ori r5,r5,0x411c                               
 8002158:	b8 20 10 00 	mv r2,r1                                       
 800215c:	b9 a0 08 00 	mv r1,r13                                      
 8002160:	f8 00 05 7e 	calli 8003758 <rtems_filesystem_eval_path_start_with_root_and_current>
    eval_flags,                                                       
    &rtems_global_user_env.root_directory,                            
    &rtems_global_user_env.current_directory                          
  );                                                                  
                                                                      
  rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );        
 8002164:	37 8b 00 50 	addi r11,sp,80                                 
 8002168:	37 82 00 30 	addi r2,sp,48                                  
 800216c:	b9 60 08 00 	mv r1,r11                                      
 8002170:	f8 00 07 2c 	calli 8003e20 <rtems_filesystem_location_copy_and_detach>
  new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
 8002174:	b9 60 08 00 	mv r1,r11                                      
 8002178:	f8 00 07 f1 	calli 800413c <rtems_filesystem_location_transform_to_global>
  if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
 800217c:	28 22 00 10 	lw r2,(r1+16)                                  
 8002180:	78 0b 08 01 	mvhi r11,0x801                                 
    &rtems_global_user_env.root_directory,                            
    &rtems_global_user_env.current_directory                          
  );                                                                  
                                                                      
  rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );        
  new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
 8002184:	5b 81 00 68 	sw (sp+104),r1                                 
  if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
 8002188:	39 6b 34 40 	ori r11,r11,0x3440                             
 800218c:	44 4b 00 11 	be r2,r11,80021d0 <chroot+0xa8>                
    rtems_filesystem_global_location_t *new_root_loc =                
 8002190:	37 81 00 68 	addi r1,sp,104                                 
 8002194:	f8 00 07 b1 	calli 8004058 <rtems_filesystem_global_location_obtain>
      rtems_filesystem_global_location_obtain( &new_current_loc );    
    rtems_filesystem_node_types_t type =                              
      (*new_root_loc->location.mt_entry->ops->node_type_h)(           
 8002198:	28 22 00 14 	lw r2,(r1+20)                                  
  );                                                                  
                                                                      
  rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );        
  new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
  if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
    rtems_filesystem_global_location_t *new_root_loc =                
 800219c:	b8 20 60 00 	mv r12,r1                                      
      rtems_filesystem_global_location_obtain( &new_current_loc );    
    rtems_filesystem_node_types_t type =                              
      (*new_root_loc->location.mt_entry->ops->node_type_h)(           
 80021a0:	28 42 00 0c 	lw r2,(r2+12)                                  
  rtems_filesystem_eval_path_extract_currentloc( &ctx, &loc );        
  new_current_loc = rtems_filesystem_location_transform_to_global( &loc );
  if ( !rtems_filesystem_global_location_is_null( new_current_loc ) ) {
    rtems_filesystem_global_location_t *new_root_loc =                
      rtems_filesystem_global_location_obtain( &new_current_loc );    
    rtems_filesystem_node_types_t type =                              
 80021a4:	28 42 00 14 	lw r2,(r2+20)                                  
 80021a8:	d8 40 00 00 	call r2                                        
 80021ac:	b8 20 70 00 	mv r14,r1                                      
      (*new_root_loc->location.mt_entry->ops->node_type_h)(           
        &new_root_loc->location                                       
      );                                                              
                                                                      
    if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {                       
 80021b0:	44 20 00 14 	be r1,r0,8002200 <chroot+0xd8>                 
static inline void rtems_filesystem_location_error(                   
  const rtems_filesystem_location_info_t *loc,                        
  int eno                                                             
)                                                                     
{                                                                     
  if ( !rtems_filesystem_location_is_null( loc ) ) {                  
 80021b4:	29 81 00 10 	lw r1,(r12+16)                                 
 80021b8:	44 2b 00 04 	be r1,r11,80021c8 <chroot+0xa0>                <== NEVER TAKEN
    errno = eno;                                                      
 80021bc:	f8 00 27 f7 	calli 800c198 <__errno>                        
 80021c0:	34 02 00 14 	mvi r2,20                                      
 80021c4:	58 22 00 00 	sw (r1+0),r2                                   
      rtems_filesystem_location_error( &new_root_loc->location, ENOTDIR );
      rv = -1;                                                        
    }                                                                 
                                                                      
    if ( rv != 0 ) {                                                  
      rtems_filesystem_global_location_release( new_root_loc );       
 80021c8:	b9 80 08 00 	mv r1,r12                                      
 80021cc:	f8 00 07 78 	calli 8003fac <rtems_filesystem_global_location_release>
    }                                                                 
  } else {                                                            
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 80021d0:	b9 a0 08 00 	mv r1,r13                                      
 80021d4:	f8 00 05 d3 	calli 8003920 <rtems_filesystem_eval_path_cleanup>
                                                                      
  if ( rv != 0 ) {                                                    
    rtems_filesystem_global_location_release( new_current_loc );      
 80021d8:	2b 81 00 68 	lw r1,(sp+104)                                 
 80021dc:	f8 00 07 74 	calli 8003fac <rtems_filesystem_global_location_release>
 80021e0:	34 01 ff ff 	mvi r1,-1                                      
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 80021e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80021e8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80021ec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80021f0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80021f4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80021f8:	37 9c 00 68 	addi sp,sp,104                                 
 80021fc:	c3 a0 00 00 	ret                                            
      (*new_root_loc->location.mt_entry->ops->node_type_h)(           
        &new_root_loc->location                                       
      );                                                              
                                                                      
    if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {                       
      sc = rtems_libio_set_private_env();                             
 8002200:	f8 00 03 27 	calli 8002e9c <rtems_libio_set_private_env>    
      if (sc == RTEMS_SUCCESSFUL) {                                   
 8002204:	44 2e 00 07 	be r1,r14,8002220 <chroot+0xf8>                
        rtems_filesystem_global_location_assign(                      
          &rtems_filesystem_current,                                  
          new_current_loc                                             
        );                                                            
      } else {                                                        
        if (sc != RTEMS_UNSATISFIED) {                                
 8002208:	34 02 00 0d 	mvi r2,13                                      
 800220c:	44 22 ff ef 	be r1,r2,80021c8 <chroot+0xa0>                 <== NEVER TAKEN
          errno = ENOMEM;                                             
 8002210:	f8 00 27 e2 	calli 800c198 <__errno>                        
 8002214:	34 02 00 0c 	mvi r2,12                                      
 8002218:	58 22 00 00 	sw (r1+0),r2                                   
 800221c:	e3 ff ff eb 	bi 80021c8 <chroot+0xa0>                       
      );                                                              
                                                                      
    if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {                       
      sc = rtems_libio_set_private_env();                             
      if (sc == RTEMS_SUCCESSFUL) {                                   
        rtems_filesystem_global_location_assign(                      
 8002220:	78 0b 08 01 	mvhi r11,0x801                                 
 8002224:	39 6b 41 48 	ori r11,r11,0x4148                             
 8002228:	29 61 00 00 	lw r1,(r11+0)                                  
 800222c:	b9 80 10 00 	mv r2,r12                                      
 8002230:	34 21 00 04 	addi r1,r1,4                                   
 8002234:	f8 00 07 7b 	calli 8004020 <rtems_filesystem_global_location_assign>
          &rtems_filesystem_root,                                     
          new_root_loc                                                
        );                                                            
        rtems_filesystem_global_location_assign(                      
 8002238:	2b 82 00 68 	lw r2,(sp+104)                                 
 800223c:	29 61 00 00 	lw r1,(r11+0)                                  
 8002240:	f8 00 07 78 	calli 8004020 <rtems_filesystem_global_location_assign>
    }                                                                 
  } else {                                                            
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 8002244:	b9 a0 08 00 	mv r1,r13                                      
 8002248:	f8 00 05 b6 	calli 8003920 <rtems_filesystem_eval_path_cleanup>
 800224c:	34 01 00 00 	mvi r1,0                                       
 8002250:	e3 ff ff e5 	bi 80021e4 <chroot+0xbc>                       
                                                                      

08003a90 <clock_gettime>: int clock_gettime( clockid_t clock_id, struct timespec *tp ) {
 8003a90:	37 9c ff e8 	addi sp,sp,-24                                 
 8003a94:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003a98:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003a9c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003aa0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003aa4:	b8 40 58 00 	mv r11,r2                                      
  if ( !tp )                                                          
 8003aa8:	44 40 00 09 	be r2,r0,8003acc <clock_gettime+0x3c>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 8003aac:	34 02 00 01 	mvi r2,1                                       
 8003ab0:	44 22 00 24 	be r1,r2,8003b40 <clock_gettime+0xb0>          
    _TOD_Get(tp);                                                     
    return 0;                                                         
  }                                                                   
#ifdef CLOCK_MONOTONIC                                                
  if ( clock_id == CLOCK_MONOTONIC ) {                                
 8003ab4:	34 02 00 04 	mvi r2,4                                       
 8003ab8:	44 22 00 19 	be r1,r2,8003b1c <clock_gettime+0x8c>          <== NEVER TAKEN
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME_ID ) {                       
 8003abc:	34 02 00 02 	mvi r2,2                                       
 8003ac0:	44 22 00 17 	be r1,r2,8003b1c <clock_gettime+0x8c>          
    return 0;                                                         
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
 8003ac4:	34 02 00 03 	mvi r2,3                                       
 8003ac8:	44 22 00 0b 	be r1,r2,8003af4 <clock_gettime+0x64>          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003acc:	f8 00 2a 39 	calli 800e3b0 <__errno>                        
 8003ad0:	34 02 00 16 	mvi r2,22                                      
 8003ad4:	58 22 00 00 	sw (r1+0),r2                                   
 8003ad8:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 8003adc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ae0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003ae4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003ae8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003aec:	37 9c 00 18 	addi sp,sp,24                                  
 8003af0:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_THREAD_CPUTIME                                          
  if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                          
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 8003af4:	f8 00 2a 2f 	calli 800e3b0 <__errno>                        
 8003af8:	34 02 00 58 	mvi r2,88                                      
 8003afc:	58 22 00 00 	sw (r1+0),r2                                   
 8003b00:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 8003b04:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003b08:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003b0c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003b10:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003b14:	37 9c 00 18 	addi sp,sp,24                                  
 8003b18:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
#ifdef _POSIX_CPUTIME                                                 
  if ( clock_id == CLOCK_PROCESS_CPUTIME_ID ) {                       
    _TOD_Get_uptime_as_timespec( tp );                                
 8003b1c:	b9 60 08 00 	mv r1,r11                                      
 8003b20:	f8 00 08 67 	calli 8005cbc <_TOD_Get_uptime_as_timespec>    
    return 0;                                                         
 8003b24:	34 01 00 00 	mvi r1,0                                       
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
                                                                      
  return 0;                                                           
}                                                                     
 8003b28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003b2c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003b30:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003b34:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003b38:	37 9c 00 18 	addi sp,sp,24                                  
 8003b3c:	c3 a0 00 00 	ret                                            
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
 8003b40:	78 02 08 01 	mvhi r2,0x801                                  
 8003b44:	38 42 98 b8 	ori r2,r2,0x98b8                               
 8003b48:	37 81 00 14 	addi r1,sp,20                                  
 8003b4c:	f8 00 08 3e 	calli 8005c44 <_TOD_Get_with_nanoseconds>      
 8003b50:	28 2d 00 00 	lw r13,(r1+0)                                  
 8003b54:	28 2c 00 04 	lw r12,(r1+4)                                  
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003b58:	78 01 08 01 	mvhi r1,0x801                                  
 8003b5c:	38 21 79 10 	ori r1,r1,0x7910                               
 8003b60:	28 24 00 00 	lw r4,(r1+0)                                   
 8003b64:	34 03 00 00 	mvi r3,0                                       
 8003b68:	b9 a0 08 00 	mv r1,r13                                      
 8003b6c:	b9 80 10 00 	mv r2,r12                                      
 8003b70:	f8 00 42 71 	calli 8014534 <__divdi3>                       
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003b74:	78 01 08 01 	mvhi r1,0x801                                  
 8003b78:	38 21 79 10 	ori r1,r1,0x7910                               
 8003b7c:	28 24 00 00 	lw r4,(r1+0)                                   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003b80:	59 62 00 00 	sw (r11+0),r2                                  
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003b84:	b9 a0 08 00 	mv r1,r13                                      
 8003b88:	b9 80 10 00 	mv r2,r12                                      
 8003b8c:	34 03 00 00 	mvi r3,0                                       
 8003b90:	f8 00 44 6b 	calli 8014d3c <__moddi3>                       
 8003b94:	59 62 00 04 	sw (r11+4),r2                                  
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    _TOD_Get(tp);                                                     
    return 0;                                                         
 8003b98:	34 01 00 00 	mvi r1,0                                       
 8003b9c:	e3 ff ff d0 	bi 8003adc <clock_gettime+0x4c>                
                                                                      

08027d78 <clock_settime>: int clock_settime( clockid_t clock_id, const struct timespec *tp ) {
 8027d78:	37 9c ff e8 	addi sp,sp,-24                                 
 8027d7c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8027d80:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8027d84:	5b 8d 00 08 	sw (sp+8),r13                                  
 8027d88:	5b 9d 00 04 	sw (sp+4),ra                                   
 8027d8c:	b8 40 60 00 	mv r12,r2                                      
  if ( !tp )                                                          
 8027d90:	44 40 00 07 	be r2,r0,8027dac <clock_settime+0x34>          <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
 8027d94:	34 02 00 01 	mvi r2,1                                       
 8027d98:	44 22 00 0f 	be r1,r2,8027dd4 <clock_settime+0x5c>          
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
  }                                                                   
#ifdef _POSIX_CPUTIME                                                 
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
 8027d9c:	34 02 00 02 	mvi r2,2                                       
 8027da0:	44 22 00 c8 	be r1,r2,80280c0 <clock_settime+0x348>         
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
 8027da4:	34 02 00 03 	mvi r2,3                                       
 8027da8:	44 22 00 c6 	be r1,r2,80280c0 <clock_settime+0x348>         
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8027dac:	f8 00 56 9c 	calli 803d81c <__errno>                        
 8027db0:	34 02 00 16 	mvi r2,22                                      
 8027db4:	58 22 00 00 	sw (r1+0),r2                                   
 8027db8:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  return 0;                                                           
}                                                                     
 8027dbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8027dc0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8027dc4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8027dc8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8027dcc:	37 9c 00 18 	addi sp,sp,24                                  
 8027dd0:	c3 a0 00 00 	ret                                            
{                                                                     
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( clock_id == CLOCK_REALTIME ) {                                 
    if ( tp->tv_sec < TOD_SECONDS_1970_THROUGH_1988 )                 
 8027dd4:	78 03 08 06 	mvhi r3,0x806                                  
 8027dd8:	38 63 4e 10 	ori r3,r3,0x4e10                               
 8027ddc:	29 82 00 00 	lw r2,(r12+0)                                  
 8027de0:	28 61 00 00 	lw r1,(r3+0)                                   
 8027de4:	54 41 00 02 	bgu r2,r1,8027dec <clock_settime+0x74>         
 8027de8:	e3 ff ff f1 	bi 8027dac <clock_settime+0x34>                
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8027dec:	78 01 08 06 	mvhi r1,0x806                                  
 8027df0:	38 21 f0 60 	ori r1,r1,0xf060                               
 8027df4:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 8027df8:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8027dfc:	58 22 00 00 	sw (r1+0),r2                                   
  const struct timespec *tod_as_timespec                              
)                                                                     
{                                                                     
  Timestamp_Control tod_as_timestamp;                                 
                                                                      
  _Timestamp_Set(                                                     
 8027e00:	29 8b 00 00 	lw r11,(r12+0)                                 
 8027e04:	34 02 00 1f 	mvi r2,31                                      
 8027e08:	b9 60 08 00 	mv r1,r11                                      
 8027e0c:	f8 00 d4 a4 	calli 805d09c <__ashrsi3>                      
  Timestamp64_Control *_time,                                         
  Timestamp64_Control  _seconds,                                      
  Timestamp64_Control  _nanoseconds                                   
)                                                                     
{                                                                     
  *_time = _seconds * 1000000000L + _nanoseconds;                     
 8027e10:	b5 6b 10 00 	add r2,r11,r11                                 
 8027e14:	f5 62 28 00 	cmpgu r5,r11,r2                                
 8027e18:	b4 42 18 00 	add r3,r2,r2                                   
 8027e1c:	b4 21 20 00 	add r4,r1,r1                                   
 8027e20:	b4 a4 20 00 	add r4,r5,r4                                   
 8027e24:	f4 43 28 00 	cmpgu r5,r2,r3                                 
 8027e28:	b4 84 20 00 	add r4,r4,r4                                   
 8027e2c:	b4 63 10 00 	add r2,r3,r3                                   
 8027e30:	b4 a4 28 00 	add r5,r5,r4                                   
 8027e34:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027e38:	b4 42 20 00 	add r4,r2,r2                                   
 8027e3c:	b4 a5 28 00 	add r5,r5,r5                                   
 8027e40:	b4 65 18 00 	add r3,r3,r5                                   
 8027e44:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027e48:	b4 63 18 00 	add r3,r3,r3                                   
 8027e4c:	c8 8b 10 00 	sub r2,r4,r11                                  
 8027e50:	b4 a3 28 00 	add r5,r5,r3                                   
 8027e54:	f4 44 20 00 	cmpgu r4,r2,r4                                 
 8027e58:	b4 42 18 00 	add r3,r2,r2                                   
 8027e5c:	c8 a1 28 00 	sub r5,r5,r1                                   
 8027e60:	c8 a4 20 00 	sub r4,r5,r4                                   
 8027e64:	f4 43 28 00 	cmpgu r5,r2,r3                                 
 8027e68:	b4 84 20 00 	add r4,r4,r4                                   
 8027e6c:	b4 63 10 00 	add r2,r3,r3                                   
 8027e70:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027e74:	b4 a4 28 00 	add r5,r5,r4                                   
 8027e78:	b4 a5 28 00 	add r5,r5,r5                                   
 8027e7c:	b4 42 20 00 	add r4,r2,r2                                   
 8027e80:	b4 65 30 00 	add r6,r3,r5                                   
 8027e84:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027e88:	c8 8b 18 00 	sub r3,r4,r11                                  
 8027e8c:	b4 c6 30 00 	add r6,r6,r6                                   
 8027e90:	f4 64 20 00 	cmpgu r4,r3,r4                                 
 8027e94:	b4 a6 28 00 	add r5,r5,r6                                   
 8027e98:	b4 63 10 00 	add r2,r3,r3                                   
 8027e9c:	c8 a1 28 00 	sub r5,r5,r1                                   
 8027ea0:	c8 a4 28 00 	sub r5,r5,r4                                   
 8027ea4:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027ea8:	b4 42 20 00 	add r4,r2,r2                                   
 8027eac:	b4 a5 28 00 	add r5,r5,r5                                   
 8027eb0:	b4 65 18 00 	add r3,r3,r5                                   
 8027eb4:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027eb8:	b4 63 18 00 	add r3,r3,r3                                   
 8027ebc:	b4 8b 10 00 	add r2,r4,r11                                  
 8027ec0:	b4 a3 28 00 	add r5,r5,r3                                   
 8027ec4:	f4 82 20 00 	cmpgu r4,r4,r2                                 
 8027ec8:	b4 42 18 00 	add r3,r2,r2                                   
 8027ecc:	b4 a1 28 00 	add r5,r5,r1                                   
 8027ed0:	b4 85 20 00 	add r4,r4,r5                                   
 8027ed4:	f4 43 28 00 	cmpgu r5,r2,r3                                 
 8027ed8:	b4 84 20 00 	add r4,r4,r4                                   
 8027edc:	b4 63 10 00 	add r2,r3,r3                                   
 8027ee0:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027ee4:	b4 a4 28 00 	add r5,r5,r4                                   
 8027ee8:	b4 a5 28 00 	add r5,r5,r5                                   
 8027eec:	b4 42 20 00 	add r4,r2,r2                                   
 8027ef0:	b4 65 30 00 	add r6,r3,r5                                   
 8027ef4:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027ef8:	c8 8b 18 00 	sub r3,r4,r11                                  
 8027efc:	b4 c6 30 00 	add r6,r6,r6                                   
 8027f00:	f4 64 20 00 	cmpgu r4,r3,r4                                 
 8027f04:	b4 a6 28 00 	add r5,r5,r6                                   
 8027f08:	b4 63 10 00 	add r2,r3,r3                                   
 8027f0c:	c8 a1 28 00 	sub r5,r5,r1                                   
 8027f10:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027f14:	c8 a4 28 00 	sub r5,r5,r4                                   
 8027f18:	b4 a5 28 00 	add r5,r5,r5                                   
 8027f1c:	b4 42 20 00 	add r4,r2,r2                                   
 8027f20:	b4 65 30 00 	add r6,r3,r5                                   
 8027f24:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027f28:	c8 8b 18 00 	sub r3,r4,r11                                  
 8027f2c:	b4 c6 30 00 	add r6,r6,r6                                   
 8027f30:	f4 64 20 00 	cmpgu r4,r3,r4                                 
 8027f34:	b4 a6 28 00 	add r5,r5,r6                                   
 8027f38:	b4 63 10 00 	add r2,r3,r3                                   
 8027f3c:	c8 a1 28 00 	sub r5,r5,r1                                   
 8027f40:	c8 a4 28 00 	sub r5,r5,r4                                   
 8027f44:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027f48:	b4 42 20 00 	add r4,r2,r2                                   
 8027f4c:	b4 a5 28 00 	add r5,r5,r5                                   
 8027f50:	b4 65 18 00 	add r3,r3,r5                                   
 8027f54:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027f58:	b4 63 18 00 	add r3,r3,r3                                   
 8027f5c:	c8 8b 10 00 	sub r2,r4,r11                                  
 8027f60:	b4 a3 28 00 	add r5,r5,r3                                   
 8027f64:	f4 44 20 00 	cmpgu r4,r2,r4                                 
 8027f68:	b4 42 18 00 	add r3,r2,r2                                   
 8027f6c:	c8 a1 28 00 	sub r5,r5,r1                                   
 8027f70:	c8 a4 20 00 	sub r4,r5,r4                                   
 8027f74:	f4 43 28 00 	cmpgu r5,r2,r3                                 
 8027f78:	b4 84 20 00 	add r4,r4,r4                                   
 8027f7c:	b4 63 10 00 	add r2,r3,r3                                   
 8027f80:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027f84:	b4 a4 28 00 	add r5,r5,r4                                   
 8027f88:	b4 a5 28 00 	add r5,r5,r5                                   
 8027f8c:	b4 42 20 00 	add r4,r2,r2                                   
 8027f90:	b4 65 30 00 	add r6,r3,r5                                   
 8027f94:	f4 44 28 00 	cmpgu r5,r2,r4                                 
 8027f98:	b4 c6 30 00 	add r6,r6,r6                                   
 8027f9c:	b4 8b 18 00 	add r3,r4,r11                                  
 8027fa0:	b4 a6 28 00 	add r5,r5,r6                                   
 8027fa4:	f4 83 20 00 	cmpgu r4,r4,r3                                 
 8027fa8:	b4 63 10 00 	add r2,r3,r3                                   
 8027fac:	b4 a1 28 00 	add r5,r5,r1                                   
 8027fb0:	b4 85 28 00 	add r5,r4,r5                                   
 8027fb4:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8027fb8:	b4 42 20 00 	add r4,r2,r2                                   
 8027fbc:	b4 a5 28 00 	add r5,r5,r5                                   
 8027fc0:	f4 44 10 00 	cmpgu r2,r2,r4                                 
 8027fc4:	b4 65 18 00 	add r3,r3,r5                                   
 8027fc8:	b4 8b 58 00 	add r11,r4,r11                                 
 8027fcc:	b4 63 18 00 	add r3,r3,r3                                   
 8027fd0:	b4 43 18 00 	add r3,r2,r3                                   
 8027fd4:	f4 8b 20 00 	cmpgu r4,r4,r11                                
 8027fd8:	b5 6b 10 00 	add r2,r11,r11                                 
 8027fdc:	b4 61 08 00 	add r1,r3,r1                                   
 8027fe0:	f5 62 58 00 	cmpgu r11,r11,r2                               
 8027fe4:	b4 81 20 00 	add r4,r4,r1                                   
 8027fe8:	b4 42 18 00 	add r3,r2,r2                                   
 8027fec:	b4 84 20 00 	add r4,r4,r4                                   
 8027ff0:	b5 64 08 00 	add r1,r11,r4                                  
 8027ff4:	f4 43 58 00 	cmpgu r11,r2,r3                                
 8027ff8:	b4 21 08 00 	add r1,r1,r1                                   
 8027ffc:	b4 63 10 00 	add r2,r3,r3                                   
 8028000:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 8028004:	b5 61 58 00 	add r11,r11,r1                                 
 8028008:	b5 6b 58 00 	add r11,r11,r11                                
 802800c:	b4 42 08 00 	add r1,r2,r2                                   
 8028010:	b4 6b 20 00 	add r4,r3,r11                                  
 8028014:	f4 41 18 00 	cmpgu r3,r2,r1                                 
 8028018:	b4 84 20 00 	add r4,r4,r4                                   
 802801c:	b4 21 10 00 	add r2,r1,r1                                   
 8028020:	f4 22 28 00 	cmpgu r5,r1,r2                                 
 8028024:	b4 64 18 00 	add r3,r3,r4                                   
 8028028:	b4 42 08 00 	add r1,r2,r2                                   
 802802c:	b4 63 18 00 	add r3,r3,r3                                   
 8028030:	f4 41 10 00 	cmpgu r2,r2,r1                                 
 8028034:	b4 a3 28 00 	add r5,r5,r3                                   
 8028038:	b4 a5 28 00 	add r5,r5,r5                                   
 802803c:	b4 21 18 00 	add r3,r1,r1                                   
 8028040:	b4 45 20 00 	add r4,r2,r5                                   
 8028044:	f4 23 08 00 	cmpgu r1,r1,r3                                 
 8028048:	b4 63 10 00 	add r2,r3,r3                                   
 802804c:	b4 84 20 00 	add r4,r4,r4                                   
 8028050:	29 8c 00 04 	lw r12,(r12+4)                                 
 8028054:	b4 24 08 00 	add r1,r1,r4                                   
 8028058:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 802805c:	b4 42 58 00 	add r11,r2,r2                                  
 8028060:	b4 21 08 00 	add r1,r1,r1                                   
 8028064:	f4 4b 68 00 	cmpgu r13,r2,r11                               
 8028068:	b4 61 18 00 	add r3,r3,r1                                   
 802806c:	b4 63 18 00 	add r3,r3,r3                                   
 8028070:	34 02 00 1f 	mvi r2,31                                      
 8028074:	b9 80 08 00 	mv r1,r12                                      
 8028078:	b5 a3 68 00 	add r13,r13,r3                                 
 802807c:	f8 00 d4 08 	calli 805d09c <__ashrsi3>                      
 8028080:	b5 6c 20 00 	add r4,r11,r12                                 
 8028084:	f5 64 58 00 	cmpgu r11,r11,r4                               
 8028088:	b5 a1 08 00 	add r1,r13,r1                                  
 802808c:	b5 61 58 00 	add r11,r11,r1                                 
    &tod_as_timestamp,                                                
    tod_as_timespec->tv_sec,                                          
    tod_as_timespec->tv_nsec                                          
  );                                                                  
  _TOD_Set_with_timestamp( &tod_as_timestamp );                       
 8028090:	37 81 00 14 	addi r1,sp,20                                  
 8028094:	5b 84 00 18 	sw (sp+24),r4                                  
 8028098:	5b 8b 00 14 	sw (sp+20),r11                                 
 802809c:	f8 00 06 5f 	calli 8029a18 <_TOD_Set_with_timestamp>        
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    _Thread_Disable_dispatch();                                       
      _TOD_Set( tp );                                                 
    _Thread_Enable_dispatch();                                        
 80280a0:	fb ff 78 16 	calli 80060f8 <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
 80280a4:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80280a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80280ac:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80280b0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80280b4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80280b8:	37 9c 00 18 	addi sp,sp,24                                  
 80280bc:	c3 a0 00 00 	ret                                            
  else if ( clock_id == CLOCK_PROCESS_CPUTIME_ID )                    
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
#endif                                                                
#ifdef _POSIX_THREAD_CPUTIME                                          
  else if ( clock_id == CLOCK_THREAD_CPUTIME_ID )                     
    rtems_set_errno_and_return_minus_one( ENOSYS );                   
 80280c0:	f8 00 55 d7 	calli 803d81c <__errno>                        
 80280c4:	34 02 00 58 	mvi r2,88                                      
 80280c8:	58 22 00 00 	sw (r1+0),r2                                   
 80280cc:	34 01 ff ff 	mvi r1,-1                                      
#endif                                                                
  else                                                                
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  return 0;                                                           
}                                                                     
 80280d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80280d4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80280d8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80280dc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80280e0:	37 9c 00 18 	addi sp,sp,24                                  
 80280e4:	c3 a0 00 00 	ret                                            
                                                                      

08001478 <create_disk>: dev_t dev, const char *name, rtems_disk_device **dd_ptr, char **alloc_name_ptr ) {
 8001478:	37 9c ff cc 	addi sp,sp,-52                                 
 800147c:	5b 8b 00 34 	sw (sp+52),r11                                 
 8001480:	5b 8c 00 30 	sw (sp+48),r12                                 
 8001484:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8001488:	5b 8e 00 28 	sw (sp+40),r14                                 
 800148c:	5b 8f 00 24 	sw (sp+36),r15                                 
 8001490:	5b 90 00 20 	sw (sp+32),r16                                 
 8001494:	5b 91 00 1c 	sw (sp+28),r17                                 
 8001498:	5b 92 00 18 	sw (sp+24),r18                                 
 800149c:	5b 93 00 14 	sw (sp+20),r19                                 
 80014a0:	5b 94 00 10 	sw (sp+16),r20                                 
 80014a4:	5b 95 00 0c 	sw (sp+12),r21                                 
 80014a8:	5b 96 00 08 	sw (sp+8),r22                                  
 80014ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
 80014b0:	78 0b 08 01 	mvhi r11,0x801                                 
 80014b4:	39 6b a7 54 	ori r11,r11,0xa754                             
 80014b8:	29 6e 00 00 	lw r14,(r11+0)                                 
  dev_t dev,                                                          
  const char *name,                                                   
  rtems_disk_device **dd_ptr,                                         
  char **alloc_name_ptr                                               
)                                                                     
{                                                                     
 80014bc:	b8 20 78 00 	mv r15,r1                                      
 80014c0:	b8 40 80 00 	mv r16,r2                                      
 80014c4:	b8 60 98 00 	mv r19,r3                                      
 80014c8:	b8 80 a0 00 	mv r20,r4                                      
 80014cc:	b8 a0 a8 00 	mv r21,r5                                      
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
 80014d0:	50 2e 00 51 	bgeu r1,r14,8001614 <create_disk+0x19c>        
 80014d4:	78 0c 08 01 	mvhi r12,0x801                                 
 80014d8:	39 8c a7 50 	ori r12,r12,0xa750                             
 80014dc:	29 91 00 00 	lw r17,(r12+0)                                 
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
    disktab = table;                                                  
    disktab_size = new_size;                                          
  }                                                                   
                                                                      
  if (disktab [major].minor == NULL || minor >= disktab[major].size) {
 80014e0:	b5 ef 58 00 	add r11,r15,r15                                
 80014e4:	b5 6b 58 00 	add r11,r11,r11                                
 80014e8:	b5 6b 58 00 	add r11,r11,r11                                
 80014ec:	b6 2b 10 00 	add r2,r17,r11                                 
 80014f0:	28 4e 00 00 	lw r14,(r2+0)                                  
 80014f4:	45 c0 00 6b 	be r14,r0,80016a0 <create_disk+0x228>          
 80014f8:	28 51 00 04 	lw r17,(r2+4)                                  
 80014fc:	56 30 00 19 	bgu r17,r16,8001560 <create_disk+0xe8>         
    rtems_disk_device **table = disktab [major].minor;                
    rtems_device_minor_number old_size = disktab [major].size;        
    rtems_device_minor_number new_size = 0;                           
                                                                      
    if (old_size == 0) {                                              
      new_size = DISKTAB_INITIAL_SIZE;                                
 8001500:	34 12 00 08 	mvi r18,8                                      
  if (disktab [major].minor == NULL || minor >= disktab[major].size) {
    rtems_disk_device **table = disktab [major].minor;                
    rtems_device_minor_number old_size = disktab [major].size;        
    rtems_device_minor_number new_size = 0;                           
                                                                      
    if (old_size == 0) {                                              
 8001504:	46 20 00 02 	be r17,r0,800150c <create_disk+0x94>           
      new_size = DISKTAB_INITIAL_SIZE;                                
    } else {                                                          
      new_size = 2 * old_size;                                        
 8001508:	b6 31 90 00 	add r18,r17,r17                                
    }                                                                 
    if (minor >= new_size) {                                          
 800150c:	56 50 00 02 	bgu r18,r16,8001514 <create_disk+0x9c>         
      new_size = minor + 1;                                           
 8001510:	36 12 00 01 	addi r18,r16,1                                 
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
 8001514:	b6 52 10 00 	add r2,r18,r18                                 
 8001518:	b9 c0 08 00 	mv r1,r14                                      
 800151c:	b4 42 10 00 	add r2,r2,r2                                   
 8001520:	f8 00 09 93 	calli 8003b6c <realloc>                        
 8001524:	b8 20 70 00 	mv r14,r1                                      
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
 8001528:	34 0d 00 1a 	mvi r13,26                                     
    if (minor >= new_size) {                                          
      new_size = minor + 1;                                           
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
    if (table == NULL) {                                              
 800152c:	44 20 00 15 	be r1,r0,8001580 <create_disk+0x108>           
      return NULL;                                                    
    }                                                                 
                                                                      
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
 8001530:	ca 51 18 00 	sub r3,r18,r17                                 
 8001534:	b6 31 88 00 	add r17,r17,r17                                
 8001538:	b4 63 18 00 	add r3,r3,r3                                   
 800153c:	b6 31 88 00 	add r17,r17,r17                                
 8001540:	b4 63 18 00 	add r3,r3,r3                                   
 8001544:	b4 31 08 00 	add r1,r1,r17                                  
 8001548:	34 02 00 00 	mvi r2,0                                       
 800154c:	f8 00 47 77 	calli 8013328 <memset>                         
    disktab [major].minor = table;                                    
 8001550:	29 81 00 00 	lw r1,(r12+0)                                  
 8001554:	b4 2b 58 00 	add r11,r1,r11                                 
 8001558:	59 6e 00 00 	sw (r11+0),r14                                 
    disktab [major].size = new_size;                                  
 800155c:	59 72 00 04 	sw (r11+4),r18                                 
  }                                                                   
                                                                      
  return disktab [major].minor + minor;                               
 8001560:	b6 10 30 00 	add r6,r16,r16                                 
 8001564:	b4 c6 30 00 	add r6,r6,r6                                   
 8001568:	b5 c6 70 00 	add r14,r14,r6                                 
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
 800156c:	34 0d 00 1a 	mvi r13,26                                     
{                                                                     
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
 8001570:	45 c0 00 04 	be r14,r0,8001580 <create_disk+0x108>          <== NEVER TAKEN
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (*dd_entry != NULL) {                                            
 8001574:	29 cb 00 00 	lw r11,(r14+0)                                 
    return RTEMS_RESOURCE_IN_USE;                                     
 8001578:	34 0d 00 0c 	mvi r13,12                                     
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (*dd_entry != NULL) {                                            
 800157c:	45 60 00 11 	be r11,r0,80015c0 <create_disk+0x148>          
  *dd_entry = dd;                                                     
  *dd_ptr = dd;                                                       
  *alloc_name_ptr = alloc_name;                                       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001580:	b9 a0 08 00 	mv r1,r13                                      
 8001584:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001588:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800158c:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8001590:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8001594:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8001598:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800159c:	2b 90 00 20 	lw r16,(sp+32)                                 
 80015a0:	2b 91 00 1c 	lw r17,(sp+28)                                 
 80015a4:	2b 92 00 18 	lw r18,(sp+24)                                 
 80015a8:	2b 93 00 14 	lw r19,(sp+20)                                 
 80015ac:	2b 94 00 10 	lw r20,(sp+16)                                 
 80015b0:	2b 95 00 0c 	lw r21,(sp+12)                                 
 80015b4:	2b 96 00 08 	lw r22,(sp+8)                                  
 80015b8:	37 9c 00 34 	addi sp,sp,52                                  
 80015bc:	c3 a0 00 00 	ret                                            
                                                                      
  if (*dd_entry != NULL) {                                            
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  dd = malloc(sizeof(*dd));                                           
 80015c0:	34 01 00 78 	mvi r1,120                                     
 80015c4:	f8 00 06 52 	calli 8002f0c <malloc>                         
 80015c8:	b8 20 60 00 	mv r12,r1                                      
  if (dd == NULL) {                                                   
    return RTEMS_NO_MEMORY;                                           
 80015cc:	34 0d 00 1a 	mvi r13,26                                     
  if (*dd_entry != NULL) {                                            
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  dd = malloc(sizeof(*dd));                                           
  if (dd == NULL) {                                                   
 80015d0:	44 2b ff ec 	be r1,r11,8001580 <create_disk+0x108>          <== NEVER TAKEN
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
 80015d4:	46 60 00 31 	be r19,r0,8001698 <create_disk+0x220>          
    alloc_name = strdup(name);                                        
 80015d8:	ba 60 08 00 	mv r1,r19                                      
 80015dc:	f8 00 48 9a 	calli 8013844 <strdup>                         
 80015e0:	b8 20 58 00 	mv r11,r1                                      
 80015e4:	b8 20 88 00 	mv r17,r1                                      
                                                                      
    if (alloc_name == NULL) {                                         
 80015e8:	44 20 00 30 	be r1,r0,80016a8 <create_disk+0x230>           <== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {                 
 80015ec:	34 02 61 ff 	mvi r2,25087                                   
 80015f0:	b9 e0 18 00 	mv r3,r15                                      
 80015f4:	ba 00 20 00 	mv r4,r16                                      
 80015f8:	f8 00 06 b0 	calli 80030b8 <mknod>                          
 80015fc:	48 01 00 21 	bg r0,r1,8001680 <create_disk+0x208>           <== NEVER TAKEN
      free(dd);                                                       
      return RTEMS_UNSATISFIED;                                       
    }                                                                 
  }                                                                   
                                                                      
  *dd_entry = dd;                                                     
 8001600:	59 cc 00 00 	sw (r14+0),r12                                 
  *dd_ptr = dd;                                                       
 8001604:	5a 8c 00 00 	sw (r20+0),r12                                 
  *alloc_name_ptr = alloc_name;                                       
 8001608:	5a b1 00 00 	sw (r21+0),r17                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800160c:	34 0d 00 00 	mvi r13,0                                      
 8001610:	e3 ff ff dc 	bi 8001580 <create_disk+0x108>                 
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
    rtems_disk_device_table *table = disktab;                         
 8001614:	78 0c 08 01 	mvhi r12,0x801                                 
 8001618:	39 8c a7 50 	ori r12,r12,0xa750                             
    rtems_device_major_number old_size = disktab_size;                
    rtems_device_major_number new_size = 2 * old_size;                
 800161c:	b5 ce b0 00 	add r22,r14,r14                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
    rtems_disk_device_table *table = disktab;                         
 8001620:	29 81 00 00 	lw r1,(r12+0)                                  
    rtems_device_major_number old_size = disktab_size;                
    rtems_device_major_number new_size = 2 * old_size;                
 8001624:	ba c0 90 00 	mv r18,r22                                     
                                                                      
    if (major >= new_size) {                                          
 8001628:	56 cf 00 02 	bgu r22,r15,8001630 <create_disk+0x1b8>        <== NEVER TAKEN
      new_size = major + 1;                                           
 800162c:	35 f2 00 01 	addi r18,r15,1                                 
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
 8001630:	b6 52 10 00 	add r2,r18,r18                                 
 8001634:	b4 42 10 00 	add r2,r2,r2                                   
 8001638:	b4 42 10 00 	add r2,r2,r2                                   
 800163c:	f8 00 09 4c 	calli 8003b6c <realloc>                        
 8001640:	b8 20 88 00 	mv r17,r1                                      
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
 8001644:	34 0d 00 1a 	mvi r13,26                                     
    if (major >= new_size) {                                          
      new_size = major + 1;                                           
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
    if (table == NULL) {                                              
 8001648:	44 20 ff ce 	be r1,r0,8001580 <create_disk+0x108>           <== ALWAYS TAKEN
      return NULL;                                                    
    }                                                                 
                                                                      
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
 800164c:	ca 4e 70 00 	sub r14,r18,r14                                <== NOT EXECUTED
 8001650:	b5 ce 70 00 	add r14,r14,r14                                <== NOT EXECUTED
 8001654:	b5 ce 70 00 	add r14,r14,r14                                <== NOT EXECUTED
 8001658:	b6 d6 b0 00 	add r22,r22,r22                                <== NOT EXECUTED
 800165c:	b5 ce 70 00 	add r14,r14,r14                                <== NOT EXECUTED
 8001660:	b6 d6 b0 00 	add r22,r22,r22                                <== NOT EXECUTED
 8001664:	b4 36 08 00 	add r1,r1,r22                                  <== NOT EXECUTED
 8001668:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800166c:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8001670:	f8 00 47 2e 	calli 8013328 <memset>                         <== NOT EXECUTED
    disktab = table;                                                  
 8001674:	59 91 00 00 	sw (r12+0),r17                                 <== NOT EXECUTED
    disktab_size = new_size;                                          
 8001678:	59 72 00 00 	sw (r11+0),r18                                 <== NOT EXECUTED
 800167c:	e3 ff ff 99 	bi 80014e0 <create_disk+0x68>                  <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {                 
      free(alloc_name);                                               
 8001680:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8001684:	f8 00 04 8e 	calli 80028bc <free>                           <== NOT EXECUTED
      free(dd);                                                       
 8001688:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800168c:	f8 00 04 8c 	calli 80028bc <free>                           <== NOT EXECUTED
      return RTEMS_UNSATISFIED;                                       
 8001690:	34 0d 00 0d 	mvi r13,13                                     <== NOT EXECUTED
 8001694:	e3 ff ff bb 	bi 8001580 <create_disk+0x108>                 <== NOT EXECUTED
  char **alloc_name_ptr                                               
)                                                                     
{                                                                     
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
 8001698:	34 11 00 00 	mvi r17,0                                      
 800169c:	e3 ff ff d9 	bi 8001600 <create_disk+0x188>                 
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
    disktab = table;                                                  
    disktab_size = new_size;                                          
  }                                                                   
                                                                      
  if (disktab [major].minor == NULL || minor >= disktab[major].size) {
 80016a0:	28 51 00 04 	lw r17,(r2+4)                                  
 80016a4:	e3 ff ff 97 	bi 8001500 <create_disk+0x88>                  
                                                                      
  if (name != NULL) {                                                 
    alloc_name = strdup(name);                                        
                                                                      
    if (alloc_name == NULL) {                                         
      free(dd);                                                       
 80016a8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80016ac:	f8 00 04 84 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
      return RTEMS_NO_MEMORY;                                         
 80016b0:	e3 ff ff b4 	bi 8001580 <create_disk+0x108>                 <== NOT EXECUTED
                                                                      

0800118c <ctermid>: */ char *ctermid( char *s ) { if ( !s )
 800118c:	44 20 00 18 	be r1,r0,80011ec <ctermid+0x60>                <== NOT EXECUTED
  /*                                                                  
   *  We have no way of knowing the length of the user provided buffer.
   *  It may not be large enough but there is no way to know that. :( 
   *  So this is a potential buffer owerrun that we can do nothing about.
   */                                                                 
  strcpy( s, ctermid_name );                                          
 8001190:	34 04 00 2f 	mvi r4,47                                      <== NOT EXECUTED
 8001194:	30 24 00 00 	sb (r1+0),r4                                   <== NOT EXECUTED
 8001198:	30 24 00 04 	sb (r1+4),r4                                   <== NOT EXECUTED
 800119c:	34 04 00 63 	mvi r4,99                                      <== NOT EXECUTED
 80011a0:	34 03 00 6f 	mvi r3,111                                     <== NOT EXECUTED
 80011a4:	34 05 00 64 	mvi r5,100                                     <== NOT EXECUTED
 80011a8:	30 24 00 05 	sb (r1+5),r4                                   <== NOT EXECUTED
 80011ac:	34 04 00 6e 	mvi r4,110                                     <== NOT EXECUTED
 80011b0:	34 02 00 65 	mvi r2,101                                     <== NOT EXECUTED
 80011b4:	30 25 00 01 	sb (r1+1),r5                                   <== NOT EXECUTED
 80011b8:	30 23 00 06 	sb (r1+6),r3                                   <== NOT EXECUTED
 80011bc:	34 05 00 76 	mvi r5,118                                     <== NOT EXECUTED
 80011c0:	30 24 00 07 	sb (r1+7),r4                                   <== NOT EXECUTED
 80011c4:	30 23 00 09 	sb (r1+9),r3                                   <== NOT EXECUTED
 80011c8:	34 04 00 73 	mvi r4,115                                     <== NOT EXECUTED
 80011cc:	34 03 00 6c 	mvi r3,108                                     <== NOT EXECUTED
 80011d0:	30 22 00 02 	sb (r1+2),r2                                   <== NOT EXECUTED
 80011d4:	30 25 00 03 	sb (r1+3),r5                                   <== NOT EXECUTED
 80011d8:	30 24 00 08 	sb (r1+8),r4                                   <== NOT EXECUTED
 80011dc:	30 23 00 0a 	sb (r1+10),r3                                  <== NOT EXECUTED
 80011e0:	30 22 00 0b 	sb (r1+11),r2                                  <== NOT EXECUTED
 80011e4:	30 20 00 0c 	sb (r1+12),r0                                  <== NOT EXECUTED
  return s;                                                           
 80011e8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
char *ctermid(                                                        
  char *s                                                             
)                                                                     
{                                                                     
  if ( !s )                                                           
    return ctermid_name;                                              
 80011ec:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 80011f0:	38 21 0e 18 	ori r1,r1,0xe18                                <== NOT EXECUTED
   *  It may not be large enough but there is no way to know that. :( 
   *  So this is a potential buffer owerrun that we can do nothing about.
   */                                                                 
  strcpy( s, ctermid_name );                                          
  return s;                                                           
}                                                                     
 80011f4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800321c <data_to_part_desc>: * RTEMS_NO_MEMOTY, if cannot allocate memory for part_desc_t strucure; * RTEMS_INTERNAL_ERROR, if other error occurs. */ static rtems_status_code data_to_part_desc(uint8_t *data, rtems_part_desc_t **new_part_desc) {
 800321c:	37 9c ff e0 	addi sp,sp,-32                                 
 8003220:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8003224:	5b 8c 00 18 	sw (sp+24),r12                                 
 8003228:	5b 8d 00 14 	sw (sp+20),r13                                 
 800322c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8003230:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8003234:	5b 90 00 08 	sw (sp+8),r16                                  
 8003238:	5b 9d 00 04 	sw (sp+4),ra                                   
 800323c:	b8 20 58 00 	mv r11,r1                                      
 8003240:	b8 40 68 00 	mv r13,r2                                      
    rtems_part_desc_t *part_desc;                                     
    uint32_t           temp;                                          
                                                                      
    if (new_part_desc == NULL)                                        
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
 8003244:	34 01 00 19 	mvi r1,25                                      
data_to_part_desc(uint8_t *data, rtems_part_desc_t **new_part_desc)   
{                                                                     
    rtems_part_desc_t *part_desc;                                     
    uint32_t           temp;                                          
                                                                      
    if (new_part_desc == NULL)                                        
 8003248:	44 40 00 72 	be r2,r0,8003410 <data_to_part_desc+0x1f4>     <== NEVER TAKEN
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    *new_part_desc = NULL;                                            
 800324c:	58 40 00 00 	sw (r2+0),r0                                   
                                                                      
    if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)   
 8003250:	34 01 00 01 	mvi r1,1                                       
 8003254:	34 02 00 28 	mvi r2,40                                      
 8003258:	f8 00 03 c6 	calli 8004170 <calloc>                         
 800325c:	b8 20 60 00 	mv r12,r1                                      
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
 8003260:	34 01 00 1a 	mvi r1,26                                      
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    *new_part_desc = NULL;                                            
                                                                      
    if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)   
 8003264:	45 80 00 6b 	be r12,r0,8003410 <data_to_part_desc+0x1f4>    <== NEVER TAKEN
    part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
                                                                      
    /* read the offset start position and partition size in sectors */
                                                                      
    /* due to incorrect data alignment one have to align data first */
    memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
 8003268:	35 61 00 08 	addi r1,r11,8                                  
 800326c:	41 64 00 08 	lbu r4,(r11+8)                                 
 8003270:	40 23 00 01 	lbu r3,(r1+1)                                  
 8003274:	40 22 00 02 	lbu r2,(r1+2)                                  
 8003278:	40 21 00 03 	lbu r1,(r1+3)                                  
 800327c:	33 84 00 20 	sb (sp+32),r4                                  
 8003280:	33 82 00 22 	sb (sp+34),r2                                  
 8003284:	33 81 00 23 	sb (sp+35),r1                                  
 8003288:	33 83 00 21 	sb (sp+33),r3                                  
    part_desc->start = LE_TO_CPU_U32(temp);                           
 800328c:	2b 8f 00 20 	lw r15,(sp+32)                                 
    if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)   
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    part_desc->bootable = *(data + RTEMS_IDE_PARTITION_BOOTABLE_OFFSET);
 8003290:	41 63 00 00 	lbu r3,(r11+0)                                 
    part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
 8003294:	41 6e 00 04 	lbu r14,(r11+4)                                
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8003298:	34 02 00 18 	mvi r2,24                                      
 800329c:	21 e1 00 ff 	andi r1,r15,0xff                               
    if ((part_desc = calloc(1, sizeof(rtems_part_desc_t))) == NULL)   
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    part_desc->bootable = *(data + RTEMS_IDE_PARTITION_BOOTABLE_OFFSET);
 80032a0:	31 83 00 00 	sb (r12+0),r3                                  
    part_desc->sys_type = *(data + RTEMS_IDE_PARTITION_SYS_TYPE_OFFSET);
 80032a4:	31 8e 00 01 	sb (r12+1),r14                                 
 80032a8:	f8 00 8c 48 	calli 80263c8 <__ashlsi3>                      
 80032ac:	b8 20 80 00 	mv r16,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 80032b0:	34 02 00 18 	mvi r2,24                                      
 80032b4:	b9 e0 08 00 	mv r1,r15                                      
 80032b8:	f8 00 8c 92 	calli 8026500 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 80032bc:	01 e4 00 01 	srui r4,r15,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 80032c0:	ba 01 80 00 	or r16,r16,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 80032c4:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 80032c8:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 80032cc:	00 84 00 01 	srui r4,r4,1                                   
 80032d0:	00 84 00 01 	srui r4,r4,1                                   
 80032d4:	00 84 00 01 	srui r4,r4,1                                   
 80032d8:	00 84 00 01 	srui r4,r4,1                                   
 80032dc:	00 84 00 01 	srui r4,r4,1                                   
 80032e0:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 80032e4:	20 81 00 ff 	andi r1,r4,0xff                                
 80032e8:	f8 00 8c 38 	calli 80263c8 <__ashlsi3>                      
 80032ec:	ba 01 80 00 	or r16,r16,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 80032f0:	34 02 00 10 	mvi r2,16                                      
 80032f4:	b9 e0 08 00 	mv r1,r15                                      
 80032f8:	f8 00 8c 82 	calli 8026500 <__lshrsi3>                      
 80032fc:	20 23 00 ff 	andi r3,r1,0xff                                
                                                                      
    /* due to incorrect data alignment one have to align data first */
    memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
    part_desc->start = LE_TO_CPU_U32(temp);                           
                                                                      
    memcpy(&temp, data + RTEMS_IDE_PARTITION_SIZE_OFFSET, sizeof(uint32_t));
 8003300:	35 62 00 0c 	addi r2,r11,12                                 
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8003304:	b4 63 18 00 	add r3,r3,r3                                   
 8003308:	40 45 00 01 	lbu r5,(r2+1)                                  
 800330c:	40 44 00 02 	lbu r4,(r2+2)                                  
 8003310:	40 41 00 03 	lbu r1,(r2+3)                                  
 8003314:	b4 63 18 00 	add r3,r3,r3                                   
 8003318:	41 62 00 0c 	lbu r2,(r11+12)                                
 800331c:	b4 63 18 00 	add r3,r3,r3                                   
 8003320:	b4 63 18 00 	add r3,r3,r3                                   
 8003324:	33 85 00 21 	sb (sp+33),r5                                  
 8003328:	33 84 00 22 	sb (sp+34),r4                                  
 800332c:	33 82 00 20 	sb (sp+32),r2                                  
 8003330:	33 81 00 23 	sb (sp+35),r1                                  
 8003334:	b4 63 18 00 	add r3,r3,r3                                   
    part_desc->size = LE_TO_CPU_U32(temp);                            
 8003338:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800333c:	b4 63 18 00 	add r3,r3,r3                                   
 8003340:	b4 63 18 00 	add r3,r3,r3                                   
 8003344:	b4 63 18 00 	add r3,r3,r3                                   
 8003348:	ba 03 18 00 	or r3,r16,r3                                   
 800334c:	34 02 00 18 	mvi r2,24                                      
 8003350:	21 61 00 ff 	andi r1,r11,0xff                               
                                                                      
    /* read the offset start position and partition size in sectors */
                                                                      
    /* due to incorrect data alignment one have to align data first */
    memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
    part_desc->start = LE_TO_CPU_U32(temp);                           
 8003354:	59 83 00 04 	sw (r12+4),r3                                  
 8003358:	f8 00 8c 1c 	calli 80263c8 <__ashlsi3>                      
 800335c:	b8 20 78 00 	mv r15,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8003360:	34 02 00 18 	mvi r2,24                                      
 8003364:	b9 60 08 00 	mv r1,r11                                      
 8003368:	f8 00 8c 66 	calli 8026500 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 800336c:	01 64 00 01 	srui r4,r11,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8003370:	b9 e1 78 00 	or r15,r15,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8003374:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8003378:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 800337c:	00 84 00 01 	srui r4,r4,1                                   
 8003380:	00 84 00 01 	srui r4,r4,1                                   
 8003384:	00 84 00 01 	srui r4,r4,1                                   
 8003388:	00 84 00 01 	srui r4,r4,1                                   
 800338c:	00 84 00 01 	srui r4,r4,1                                   
 8003390:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8003394:	20 81 00 ff 	andi r1,r4,0xff                                
 8003398:	f8 00 8c 0c 	calli 80263c8 <__ashlsi3>                      
 800339c:	b9 e1 78 00 	or r15,r15,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 80033a0:	34 02 00 10 	mvi r2,16                                      
 80033a4:	b9 60 08 00 	mv r1,r11                                      
 80033a8:	f8 00 8c 56 	calli 8026500 <__lshrsi3>                      
 80033ac:	20 23 00 ff 	andi r3,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 80033b0:	b4 63 18 00 	add r3,r3,r3                                   
 80033b4:	b4 63 18 00 	add r3,r3,r3                                   
 80033b8:	b4 63 18 00 	add r3,r3,r3                                   
 80033bc:	b4 63 18 00 	add r3,r3,r3                                   
 80033c0:	b4 63 18 00 	add r3,r3,r3                                   
 80033c4:	b4 63 18 00 	add r3,r3,r3                                   
 80033c8:	b4 63 18 00 	add r3,r3,r3                                   
 80033cc:	b4 63 18 00 	add r3,r3,r3                                   
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 80033d0:	65 cb 00 85 	cmpei r11,r14,133                              
 80033d4:	65 c2 00 05 	cmpei r2,r14,5                                 
 80033d8:	b9 e3 78 00 	or r15,r15,r3                                  
    /* due to incorrect data alignment one have to align data first */
    memcpy(&temp, data + RTEMS_IDE_PARTITION_START_OFFSET, sizeof(uint32_t));
    part_desc->start = LE_TO_CPU_U32(temp);                           
                                                                      
    memcpy(&temp, data + RTEMS_IDE_PARTITION_SIZE_OFFSET, sizeof(uint32_t));
    part_desc->size = LE_TO_CPU_U32(temp);                            
 80033dc:	59 8f 00 08 	sw (r12+8),r15                                 
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 80033e0:	b9 62 58 00 	or r11,r11,r2                                  
     * use partitions that are                                        
     * - extended                                                     
     * or                                                             
     * - FAT type and non-zero                                        
     */                                                               
    if (is_extended(part_desc->sys_type) ||                           
 80033e4:	5d 60 00 14 	bne r11,r0,8003434 <data_to_part_desc+0x218>   
    DOS_P32MB_PARTITION,                                              
    FAT32_PARTITION    ,FAT32_LBA_PARTITION,                          
    FAT16_LBA_PARTITION                                               
  };                                                                  
                                                                      
  return (NULL != memchr(fat_part_types,type,sizeof(fat_part_types)));
 80033e8:	78 01 08 02 	mvhi r1,0x802                                  
 80033ec:	38 21 73 d8 	ori r1,r1,0x73d8                               
 80033f0:	b9 c0 10 00 	mv r2,r14                                      
 80033f4:	34 03 00 06 	mvi r3,6                                       
 80033f8:	f8 00 46 d7 	calli 8014f54 <memchr>                         
     * use partitions that are                                        
     * - extended                                                     
     * or                                                             
     * - FAT type and non-zero                                        
     */                                                               
    if (is_extended(part_desc->sys_type) ||                           
 80033fc:	44 2b 00 02 	be r1,r11,8003404 <data_to_part_desc+0x1e8>    
       ((is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0))) {
 8003400:	5d e0 00 0d 	bne r15,r0,8003434 <data_to_part_desc+0x218>   <== ALWAYS TAKEN
      *new_part_desc = part_desc;                                     
    }                                                                 
    else {                                                            
      /* empty partition */                                           
      free(part_desc);                                                
 8003404:	b9 80 08 00 	mv r1,r12                                      
 8003408:	f8 00 03 a8 	calli 80042a8 <free>                           
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
 800340c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8003410:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003414:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8003418:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800341c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8003420:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8003424:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8003428:	2b 90 00 08 	lw r16,(sp+8)                                  
 800342c:	37 9c 00 20 	addi sp,sp,32                                  
 8003430:	c3 a0 00 00 	ret                                            
     * or                                                             
     * - FAT type and non-zero                                        
     */                                                               
    if (is_extended(part_desc->sys_type) ||                           
       ((is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0))) {
      *new_part_desc = part_desc;                                     
 8003434:	59 ac 00 00 	sw (r13+0),r12                                 
    }                                                                 
    else {                                                            
      /* empty partition */                                           
      free(part_desc);                                                
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
 8003438:	34 01 00 00 	mvi r1,0                                       
     * or                                                             
     * - FAT type and non-zero                                        
     */                                                               
    if (is_extended(part_desc->sys_type) ||                           
       ((is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0))) {
      *new_part_desc = part_desc;                                     
 800343c:	e3 ff ff f5 	bi 8003410 <data_to_part_desc+0x1f4>           
                                                                      

08000970 <devFS_Show>: #endif #include "devfs.h" void devFS_Show(void) {
 8000970:	37 9c ff dc 	addi sp,sp,-36                                 
 8000974:	5b 8b 00 24 	sw (sp+36),r11                                 
 8000978:	5b 8c 00 20 	sw (sp+32),r12                                 
 800097c:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8000980:	5b 8e 00 18 	sw (sp+24),r14                                 
 8000984:	5b 8f 00 14 	sw (sp+20),r15                                 
 8000988:	5b 90 00 10 	sw (sp+16),r16                                 
 800098c:	5b 91 00 0c 	sw (sp+12),r17                                 
 8000990:	5b 92 00 08 	sw (sp+8),r18                                  
 8000994:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
 8000998:	78 01 08 01 	mvhi r1,0x801                                  
 800099c:	38 21 21 80 	ori r1,r1,0x2180                               
 80009a0:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
  if (rootloc->mt_entry->ops == &devFS_ops) {                         
 80009a4:	78 01 08 01 	mvhi r1,0x801                                  
 80009a8:	38 21 08 58 	ori r1,r1,0x858                                
                                                                      
#include "devfs.h"                                                    
                                                                      
void devFS_Show(void)                                                 
{                                                                     
  rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
 80009ac:	28 42 00 04 	lw r2,(r2+4)                                   
                                                                      
  if (rootloc->mt_entry->ops == &devFS_ops) {                         
 80009b0:	28 42 00 14 	lw r2,(r2+20)                                  
 80009b4:	28 43 00 0c 	lw r3,(r2+12)                                  
 80009b8:	44 61 00 0c 	be r3,r1,80009e8 <devFS_Show+0x78>             <== ALWAYS TAKEN
          (unsigned long) current->minor                              
        );                                                            
      }                                                               
    }                                                                 
  }                                                                   
}                                                                     
 80009bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80009c0:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80009c4:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80009c8:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80009cc:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80009d0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 80009d4:	2b 90 00 10 	lw r16,(sp+16)                                 
 80009d8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80009dc:	2b 92 00 08 	lw r18,(sp+8)                                  
 80009e0:	37 9c 00 24 	addi sp,sp,36                                  
 80009e4:	c3 a0 00 00 	ret                                            
                                                                      
static inline const devFS_data *devFS_get_data(                       
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  return (const devFS_data *) loc->mt_entry->immutable_fs_info;       
 80009e8:	28 41 00 10 	lw r1,(r2+16)                                  
  rtems_filesystem_location_info_t *rootloc = &rtems_filesystem_root->location;
                                                                      
  if (rootloc->mt_entry->ops == &devFS_ops) {                         
    const devFS_data *data = devFS_get_data(rootloc);                 
    size_t i = 0;                                                     
    size_t n = data->count;                                           
 80009ec:	28 32 00 04 	lw r18,(r1+4)                                  
    devFS_node *nodes = data->nodes;                                  
 80009f0:	28 2c 00 00 	lw r12,(r1+0)                                  
                                                                      
    for (i = 0; i < n; ++i) {                                         
 80009f4:	46 40 ff f2 	be r18,r0,80009bc <devFS_Show+0x4c>            <== NEVER TAKEN
                                                                      
      if (current->name != NULL) {                                    
        size_t j = 0;                                                 
        size_t m = current->namelen;                                  
                                                                      
        printk("/");                                                  
 80009f8:	78 11 08 01 	mvhi r17,0x801                                 
        for (j = 0; j < m; ++j) {                                     
          printk("%c", current->name [j]);                            
        }                                                             
        printk(                                                       
 80009fc:	78 10 08 01 	mvhi r16,0x801                                 
 8000a00:	78 0d 08 01 	mvhi r13,0x801                                 
    const devFS_data *data = devFS_get_data(rootloc);                 
    size_t i = 0;                                                     
    size_t n = data->count;                                           
    devFS_node *nodes = data->nodes;                                  
                                                                      
    for (i = 0; i < n; ++i) {                                         
 8000a04:	34 0f 00 00 	mvi r15,0                                      
                                                                      
      if (current->name != NULL) {                                    
        size_t j = 0;                                                 
        size_t m = current->namelen;                                  
                                                                      
        printk("/");                                                  
 8000a08:	3a 31 08 d8 	ori r17,r17,0x8d8                              
        for (j = 0; j < m; ++j) {                                     
          printk("%c", current->name [j]);                            
        }                                                             
        printk(                                                       
 8000a0c:	3a 10 08 e0 	ori r16,r16,0x8e0                              
 8000a10:	39 ad 08 dc 	ori r13,r13,0x8dc                              
    devFS_node *nodes = data->nodes;                                  
                                                                      
    for (i = 0; i < n; ++i) {                                         
      devFS_node *current = nodes + i;                                
                                                                      
      if (current->name != NULL) {                                    
 8000a14:	29 81 00 00 	lw r1,(r12+0)                                  
 8000a18:	44 20 00 11 	be r1,r0,8000a5c <devFS_Show+0xec>             
        size_t j = 0;                                                 
        size_t m = current->namelen;                                  
 8000a1c:	29 8e 00 04 	lw r14,(r12+4)                                 
                                                                      
        printk("/");                                                  
 8000a20:	ba 20 08 00 	mv r1,r17                                      
 8000a24:	f8 00 04 19 	calli 8001a88 <printk>                         
        for (j = 0; j < m; ++j) {                                     
 8000a28:	45 c0 00 09 	be r14,r0,8000a4c <devFS_Show+0xdc>            <== NEVER TAKEN
 8000a2c:	34 0b 00 00 	mvi r11,0                                      
          printk("%c", current->name [j]);                            
 8000a30:	29 82 00 00 	lw r2,(r12+0)                                  
 8000a34:	b9 a0 08 00 	mv r1,r13                                      
 8000a38:	b4 4b 10 00 	add r2,r2,r11                                  
 8000a3c:	40 42 00 00 	lbu r2,(r2+0)                                  
      if (current->name != NULL) {                                    
        size_t j = 0;                                                 
        size_t m = current->namelen;                                  
                                                                      
        printk("/");                                                  
        for (j = 0; j < m; ++j) {                                     
 8000a40:	35 6b 00 01 	addi r11,r11,1                                 
          printk("%c", current->name [j]);                            
 8000a44:	f8 00 04 11 	calli 8001a88 <printk>                         
      if (current->name != NULL) {                                    
        size_t j = 0;                                                 
        size_t m = current->namelen;                                  
                                                                      
        printk("/");                                                  
        for (j = 0; j < m; ++j) {                                     
 8000a48:	55 cb ff fa 	bgu r14,r11,8000a30 <devFS_Show+0xc0>          
          printk("%c", current->name [j]);                            
        }                                                             
        printk(                                                       
 8000a4c:	29 82 00 08 	lw r2,(r12+8)                                  
 8000a50:	29 83 00 0c 	lw r3,(r12+12)                                 
 8000a54:	ba 00 08 00 	mv r1,r16                                      
 8000a58:	f8 00 04 0c 	calli 8001a88 <printk>                         
    const devFS_data *data = devFS_get_data(rootloc);                 
    size_t i = 0;                                                     
    size_t n = data->count;                                           
    devFS_node *nodes = data->nodes;                                  
                                                                      
    for (i = 0; i < n; ++i) {                                         
 8000a5c:	35 ef 00 01 	addi r15,r15,1                                 
 8000a60:	35 8c 00 14 	addi r12,r12,20                                
 8000a64:	56 4f ff ec 	bgu r18,r15,8000a14 <devFS_Show+0xa4>          
 8000a68:	e3 ff ff d5 	bi 80009bc <devFS_Show+0x4c>                   
                                                                      

0800a0c8 <devFS_eval_path>: } void devFS_eval_path( rtems_filesystem_eval_path_context_t *ctx ) {
 800a0c8:	37 9c ff dc 	addi sp,sp,-36                                 
 800a0cc:	5b 8b 00 24 	sw (sp+36),r11                                 
 800a0d0:	5b 8c 00 20 	sw (sp+32),r12                                 
 800a0d4:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800a0d8:	5b 8e 00 18 	sw (sp+24),r14                                 
 800a0dc:	5b 8f 00 14 	sw (sp+20),r15                                 
 800a0e0:	5b 90 00 10 	sw (sp+16),r16                                 
 800a0e4:	5b 91 00 0c 	sw (sp+12),r17                                 
 800a0e8:	5b 92 00 08 	sw (sp+8),r18                                  
 800a0ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a0f0:	b8 20 80 00 	mv r16,r1                                      
                                                                      
static inline const devFS_data *devFS_get_data(                       
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  return (const devFS_data *) loc->mt_entry->immutable_fs_info;       
 800a0f4:	28 21 00 2c 	lw r1,(r1+44)                                  
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
 800a0f8:	2a 12 00 00 	lw r18,(r16+0)                                 
 800a0fc:	2a 0f 00 04 	lw r15,(r16+4)                                 
 800a100:	28 21 00 10 	lw r1,(r1+16)                                  
  size_t pathlen,                                                     
  devFS_node **free_node_ptr                                          
)                                                                     
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
 800a104:	28 31 00 04 	lw r17,(r1+4)                                  
  devFS_node *nodes = data->nodes;                                    
 800a108:	28 2b 00 00 	lw r11,(r1+0)                                  
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
 800a10c:	46 20 00 2c 	be r17,r0,800a1bc <devFS_eval_path+0xf4>       
)                                                                     
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
 800a110:	34 0d 00 00 	mvi r13,0                                      
  devFS_node *free_node = NULL;                                       
 800a114:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
 800a118:	34 0c 00 00 	mvi r12,0                                      
    devFS_node *current = nodes + i;                                  
                                                                      
    if (current->name != NULL) {                                      
 800a11c:	29 61 00 00 	lw r1,(r11+0)                                  
 800a120:	44 20 00 21 	be r1,r0,800a1a4 <devFS_eval_path+0xdc>        
      if (                                                            
 800a124:	29 63 00 04 	lw r3,(r11+4)                                  
 800a128:	45 e3 00 19 	be r15,r3,800a18c <devFS_eval_path+0xc4>       
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
 800a12c:	65 a5 00 00 	cmpei r5,r13,0                                 
 800a130:	65 c4 00 00 	cmpei r4,r14,0                                 
 800a134:	35 8c 00 01 	addi r12,r12,1                                 
 800a138:	b8 a4 20 00 	or r4,r5,r4                                    
 800a13c:	44 80 00 03 	be r4,r0,800a148 <devFS_eval_path+0x80>        
 800a140:	35 6b 00 14 	addi r11,r11,20                                
 800a144:	56 2c ff f6 	bgu r17,r12,800a11c <devFS_eval_path+0x54>     
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
 800a148:	2a 01 00 10 	lw r1,(r16+16)                                 
    rtems_filesystem_eval_path_get_pathlen(ctx),                      
    &free_node                                                        
  );                                                                  
  int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);         
                                                                      
  if (node != NULL) {                                                 
 800a14c:	45 a0 00 1e 	be r13,r0,800a1c4 <devFS_eval_path+0xfc>       
    if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {                     
 800a150:	20 21 00 40 	andi r1,r1,0x40                                
 800a154:	5c 20 00 16 	bne r1,r0,800a1ac <devFS_eval_path+0xe4>       
      currentloc->node_access = node;                                 
 800a158:	5a 0d 00 20 	sw (r16+32),r13                                
                                                                      
static inline void rtems_filesystem_eval_path_clear_path(             
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->pathlen = 0;                                                   
 800a15c:	5a 00 00 04 	sw (r16+4),r0                                  
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
 800a160:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a164:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800a168:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800a16c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800a170:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800a174:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800a178:	2b 90 00 10 	lw r16,(sp+16)                                 
 800a17c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800a180:	2b 92 00 08 	lw r18,(sp+8)                                  
 800a184:	37 9c 00 24 	addi sp,sp,36                                  
 800a188:	c3 a0 00 00 	ret                                            
    devFS_node *current = nodes + i;                                  
                                                                      
    if (current->name != NULL) {                                      
      if (                                                            
        current->namelen == pathlen                                   
          && memcmp(current->name, path, pathlen) == 0                
 800a18c:	ba 40 10 00 	mv r2,r18                                      
 800a190:	b9 e0 18 00 	mv r3,r15                                      
 800a194:	f8 00 10 a9 	calli 800e438 <memcmp>                         
 800a198:	5c 20 ff e5 	bne r1,r0,800a12c <devFS_eval_path+0x64>       
 800a19c:	b9 60 68 00 	mv r13,r11                                     
 800a1a0:	e3 ff ff e3 	bi 800a12c <devFS_eval_path+0x64>              
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
    devFS_node *current = nodes + i;                                  
                                                                      
    if (current->name != NULL) {                                      
 800a1a4:	b9 60 70 00 	mv r14,r11                                     
 800a1a8:	e3 ff ff e1 	bi 800a12c <devFS_eval_path+0x64>              
  if (node != NULL) {                                                 
    if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {                     
      currentloc->node_access = node;                                 
      rtems_filesystem_eval_path_clear_path(ctx);                     
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, EEXIST);                  
 800a1ac:	ba 00 08 00 	mv r1,r16                                      
 800a1b0:	34 02 00 11 	mvi r2,17                                      
 800a1b4:	fb ff ea 36 	calli 8004a8c <rtems_filesystem_eval_path_error>
 800a1b8:	e3 ff ff ea 	bi 800a160 <devFS_eval_path+0x98>              
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
 800a1bc:	2a 01 00 10 	lw r1,(r16+16)                                 
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
 800a1c0:	34 0e 00 00 	mvi r14,0                                      
      rtems_filesystem_eval_path_clear_path(ctx);                     
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, EEXIST);                  
    }                                                                 
  } else {                                                            
    if ((eval_flags & RTEMS_FS_MAKE) != 0) {                          
 800a1c4:	20 21 00 20 	andi r1,r1,0x20                                
 800a1c8:	44 20 00 09 	be r1,r0,800a1ec <devFS_eval_path+0x124>       <== NEVER TAKEN
      if (free_node != NULL) {                                        
 800a1cc:	45 c0 00 0c 	be r14,r0,800a1fc <devFS_eval_path+0x134>      
        free_node->mode = S_IRWXU | S_IRWXG | S_IRWXO;                
 800a1d0:	34 01 01 ff 	mvi r1,511                                     
 800a1d4:	59 c1 00 10 	sw (r14+16),r1                                 
        currentloc->node_access = free_node;                          
 800a1d8:	5a 0e 00 20 	sw (r16+32),r14                                
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  ctx->token = token;                                                 
 800a1dc:	5a 12 00 08 	sw (r16+8),r18                                 
  ctx->tokenlen = tokenlen;                                           
 800a1e0:	5a 0f 00 0c 	sw (r16+12),r15                                
                                                                      
static inline void rtems_filesystem_eval_path_clear_path(             
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->pathlen = 0;                                                   
 800a1e4:	5a 00 00 04 	sw (r16+4),r0                                  
 800a1e8:	e3 ff ff de 	bi 800a160 <devFS_eval_path+0x98>              
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
 800a1ec:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 800a1f0:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a1f4:	fb ff ea 26 	calli 8004a8c <rtems_filesystem_eval_path_error><== NOT EXECUTED
 800a1f8:	e3 ff ff da 	bi 800a160 <devFS_eval_path+0x98>              <== NOT EXECUTED
          rtems_filesystem_eval_path_get_path(ctx),                   
          rtems_filesystem_eval_path_get_pathlen(ctx)                 
        );                                                            
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
 800a1fc:	ba 00 08 00 	mv r1,r16                                      
 800a200:	34 02 00 1c 	mvi r2,28                                      
 800a204:	fb ff ea 22 	calli 8004a8c <rtems_filesystem_eval_path_error>
 800a208:	e3 ff ff d6 	bi 800a160 <devFS_eval_path+0x98>              
                                                                      

080036d8 <devFS_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
 80036d8:	37 9c ff e4 	addi sp,sp,-28                                 
 80036dc:	5b 8b 00 18 	sw (sp+24),r11                                 
 80036e0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80036e4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80036e8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80036ec:	5b 8f 00 08 	sw (sp+8),r15                                  
 80036f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80036f4:	b8 60 58 00 	mv r11,r3                                      
  int rv = 0;                                                         
                                                                      
  if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
 80036f8:	34 03 00 03 	mvi r3,3                                       
  const char *name,                                                   
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
 80036fc:	b8 20 78 00 	mv r15,r1                                      
 8003700:	b8 80 60 00 	mv r12,r4                                      
 8003704:	b8 a0 70 00 	mv r14,r5                                      
 8003708:	b8 c0 68 00 	mv r13,r6                                      
  int rv = 0;                                                         
                                                                      
  if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
 800370c:	45 63 00 1c 	be r11,r3,800377c <devFS_mknod+0xa4>           
    if (S_ISBLK(mode) || S_ISCHR(mode)) {                             
 8003710:	21 83 f0 00 	andi r3,r12,0xf000                             
 8003714:	64 64 20 00 	cmpei r4,r3,8192                               
 8003718:	64 63 60 00 	cmpei r3,r3,24576                              
 800371c:	b8 83 18 00 	or r3,r4,r3                                    
 8003720:	44 60 00 24 	be r3,r0,80037b0 <devFS_mknod+0xd8>            
      char *dupname = malloc(namelen);                                
 8003724:	b9 60 08 00 	mv r1,r11                                      
 8003728:	5b 82 00 1c 	sw (sp+28),r2                                  
 800372c:	f8 00 01 2b 	calli 8003bd8 <malloc>                         
                                                                      
      if (dupname != NULL) {                                          
 8003730:	2b 82 00 1c 	lw r2,(sp+28)                                  
 8003734:	44 20 00 24 	be r1,r0,80037c4 <devFS_mknod+0xec>            
        devFS_node *node = parentloc->node_access;                    
 8003738:	29 e7 00 08 	lw r7,(r15+8)                                  
        node->name = dupname;                                         
        node->namelen = namelen;                                      
        node->major = rtems_filesystem_dev_major_t(dev);              
        node->minor = rtems_filesystem_dev_minor_t(dev);              
        node->mode = mode;                                            
        memcpy(dupname, name, namelen);                               
 800373c:	b9 60 18 00 	mv r3,r11                                      
      char *dupname = malloc(namelen);                                
                                                                      
      if (dupname != NULL) {                                          
        devFS_node *node = parentloc->node_access;                    
                                                                      
        node->name = dupname;                                         
 8003740:	58 e1 00 00 	sw (r7+0),r1                                   
        node->namelen = namelen;                                      
 8003744:	58 eb 00 04 	sw (r7+4),r11                                  
        node->major = rtems_filesystem_dev_major_t(dev);              
 8003748:	58 ee 00 08 	sw (r7+8),r14                                  
        node->minor = rtems_filesystem_dev_minor_t(dev);              
 800374c:	58 ed 00 0c 	sw (r7+12),r13                                 
        node->mode = mode;                                            
 8003750:	58 ec 00 10 	sw (r7+16),r12                                 
        memcpy(dupname, name, namelen);                               
 8003754:	f8 00 2b 5a 	calli 800e4bc <memcpy>                         
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
  int rv = 0;                                                         
 8003758:	34 01 00 00 	mvi r1,0                                       
      rv = -1;                                                        
    }                                                                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 800375c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003760:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003764:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003768:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800376c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003770:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003774:	37 9c 00 1c 	addi sp,sp,28                                  
 8003778:	c3 a0 00 00 	ret                                            
  dev_t dev                                                           
)                                                                     
{                                                                     
  int rv = 0;                                                         
                                                                      
  if (namelen != 3 || name [0] != 'd' || name [1] != 'e' || name [2] != 'v') {
 800377c:	40 43 00 00 	lbu r3,(r2+0)                                  
 8003780:	34 01 00 64 	mvi r1,100                                     
 8003784:	5c 61 ff e3 	bne r3,r1,8003710 <devFS_mknod+0x38>           <== NEVER TAKEN
 8003788:	40 43 00 01 	lbu r3,(r2+1)                                  
 800378c:	34 01 00 65 	mvi r1,101                                     
 8003790:	5c 61 ff e0 	bne r3,r1,8003710 <devFS_mknod+0x38>           <== NEVER TAKEN
 8003794:	40 43 00 02 	lbu r3,(r2+2)                                  
 8003798:	34 01 00 76 	mvi r1,118                                     
 800379c:	5c 61 ff dd 	bne r3,r1,8003710 <devFS_mknod+0x38>           <== NEVER TAKEN
    } else {                                                          
      errno = ENOTSUP;                                                
      rv = -1;                                                        
    }                                                                 
  } else {                                                            
    if (!S_ISDIR(mode)) {                                             
 80037a0:	20 8c f0 00 	andi r12,r4,0xf000                             
 80037a4:	34 02 40 00 	mvi r2,16384                                   
  size_t namelen,                                                     
  mode_t mode,                                                        
  dev_t dev                                                           
)                                                                     
{                                                                     
  int rv = 0;                                                         
 80037a8:	34 01 00 00 	mvi r1,0                                       
    } else {                                                          
      errno = ENOTSUP;                                                
      rv = -1;                                                        
    }                                                                 
  } else {                                                            
    if (!S_ISDIR(mode)) {                                             
 80037ac:	45 82 ff ec 	be r12,r2,800375c <devFS_mknod+0x84>           <== ALWAYS TAKEN
      errno = ENOTSUP;                                                
 80037b0:	f8 00 27 fe 	calli 800d7a8 <__errno>                        
 80037b4:	34 02 00 86 	mvi r2,134                                     
 80037b8:	58 22 00 00 	sw (r1+0),r2                                   
      rv = -1;                                                        
 80037bc:	34 01 ff ff 	mvi r1,-1                                      
 80037c0:	e3 ff ff e7 	bi 800375c <devFS_mknod+0x84>                  
        node->major = rtems_filesystem_dev_major_t(dev);              
        node->minor = rtems_filesystem_dev_minor_t(dev);              
        node->mode = mode;                                            
        memcpy(dupname, name, namelen);                               
      } else {                                                        
        errno = ENOMEM;                                               
 80037c4:	f8 00 27 f9 	calli 800d7a8 <__errno>                        
 80037c8:	34 02 00 0c 	mvi r2,12                                      
 80037cc:	58 22 00 00 	sw (r1+0),r2                                   
        rv = -1;                                                      
 80037d0:	34 01 ff ff 	mvi r1,-1                                      
 80037d4:	e3 ff ff e2 	bi 800375c <devFS_mknod+0x84>                  
                                                                      

080013e8 <disk_lock>: */ static volatile bool diskdevs_protected; static rtems_status_code disk_lock(void) {
 80013e8:	37 9c ff fc 	addi sp,sp,-4                                  
 80013ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 80013f0:	78 01 08 01 	mvhi r1,0x801                                  
 80013f4:	38 21 a7 58 	ori r1,r1,0xa758                               
 80013f8:	28 21 00 00 	lw r1,(r1+0)                                   
 80013fc:	34 02 00 00 	mvi r2,0                                       
 8001400:	34 03 00 00 	mvi r3,0                                       
 8001404:	f8 00 0f b4 	calli 80052d4 <rtems_semaphore_obtain>         
  if (sc == RTEMS_SUCCESSFUL) {                                       
    diskdevs_protected = true;                                        
                                                                      
    return RTEMS_SUCCESSFUL;                                          
  } else {                                                            
    return RTEMS_NOT_CONFIGURED;                                      
 8001408:	34 02 00 16 	mvi r2,22                                      
disk_lock(void)                                                       
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_semaphore_obtain(diskdevs_mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800140c:	5c 20 00 06 	bne r1,r0,8001424 <disk_lock+0x3c>             <== NEVER TAKEN
    diskdevs_protected = true;                                        
 8001410:	78 01 08 01 	mvhi r1,0x801                                  
 8001414:	34 02 00 01 	mvi r2,1                                       
 8001418:	38 21 a7 5c 	ori r1,r1,0xa75c                               
 800141c:	30 22 00 00 	sb (r1+0),r2                                   
                                                                      
    return RTEMS_SUCCESSFUL;                                          
 8001420:	34 02 00 00 	mvi r2,0                                       
  } else {                                                            
    return RTEMS_NOT_CONFIGURED;                                      
  }                                                                   
}                                                                     
 8001424:	b8 40 08 00 	mv r1,r2                                       
 8001428:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800142c:	37 9c 00 04 	addi sp,sp,4                                   
 8001430:	c3 a0 00 00 	ret                                            
                                                                      

08001434 <disk_unlock>: static void disk_unlock(void) {
 8001434:	37 9c ff fc 	addi sp,sp,-4                                  
 8001438:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  diskdevs_protected = false;                                         
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
 800143c:	78 01 08 01 	mvhi r1,0x801                                  
 8001440:	38 21 a7 58 	ori r1,r1,0xa758                               
static void                                                           
disk_unlock(void)                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  diskdevs_protected = false;                                         
 8001444:	78 02 08 01 	mvhi r2,0x801                                  
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
 8001448:	28 21 00 00 	lw r1,(r1+0)                                   
static void                                                           
disk_unlock(void)                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  diskdevs_protected = false;                                         
 800144c:	38 42 a7 5c 	ori r2,r2,0xa75c                               
 8001450:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
 8001454:	f8 00 0f fc 	calli 8005444 <rtems_semaphore_release>        
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001458:	5c 20 00 04 	bne r1,r0,8001468 <disk_unlock+0x34>           <== NEVER TAKEN
    /* FIXME: Error number */                                         
    rtems_fatal_error_occurred(0xdeadbeef);                           
  }                                                                   
}                                                                     
 800145c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001460:	37 9c 00 04 	addi sp,sp,4                                   
 8001464:	c3 a0 00 00 	ret                                            
  diskdevs_protected = false;                                         
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
  if (sc != RTEMS_SUCCESSFUL) {                                       
    /* FIXME: Error number */                                         
    rtems_fatal_error_occurred(0xdeadbeef);                           
 8001468:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800146c:	38 42 92 bc 	ori r2,r2,0x92bc                               <== NOT EXECUTED
 8001470:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8001474:	f8 00 10 fc 	calli 8005864 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004318 <drainOutput>: /* * Drain output queue */ static void drainOutput (struct rtems_termios_tty *tty) {
 8004318:	37 9c ff f0 	addi sp,sp,-16                                 
 800431c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004320:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004324:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004328:	5b 9d 00 04 	sw (sp+4),ra                                   
 800432c:	b8 20 58 00 	mv r11,r1                                      
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
 8004330:	28 21 00 b4 	lw r1,(r1+180)                                 
 8004334:	44 20 00 18 	be r1,r0,8004394 <drainOutput+0x7c>            
    rtems_interrupt_disable (level);                                  
 8004338:	90 00 08 00 	rcsr r1,IE                                     
 800433c:	34 02 ff fe 	mvi r2,-2                                      
 8004340:	a0 22 10 00 	and r2,r1,r2                                   
 8004344:	d0 02 00 00 	wcsr IE,r2                                     
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
 8004348:	29 63 00 84 	lw r3,(r11+132)                                
 800434c:	29 62 00 80 	lw r2,(r11+128)                                
 8004350:	44 62 00 10 	be r3,r2,8004390 <drainOutput+0x78>            <== ALWAYS TAKEN
      tty->rawOutBufState = rob_wait;                                 
 8004354:	34 0c 00 02 	mvi r12,2                                      <== NOT EXECUTED
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
 8004358:	34 0d ff fe 	mvi r13,-2                                     <== NOT EXECUTED
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    rtems_interrupt_disable (level);                                  
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
      tty->rawOutBufState = rob_wait;                                 
 800435c:	59 6c 00 94 	sw (r11+148),r12                               <== NOT EXECUTED
      rtems_interrupt_enable (level);                                 
 8004360:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      sc = rtems_semaphore_obtain(                                    
 8004364:	29 61 00 8c 	lw r1,(r11+140)                                <== NOT EXECUTED
 8004368:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800436c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8004370:	f8 00 0a 79 	calli 8006d54 <rtems_semaphore_obtain>         <== NOT EXECUTED
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004374:	5c 20 00 0e 	bne r1,r0,80043ac <drainOutput+0x94>           <== NOT EXECUTED
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
 8004378:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 800437c:	a0 2d 10 00 	and r2,r1,r13                                  <== NOT EXECUTED
 8004380:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    rtems_interrupt_disable (level);                                  
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
 8004384:	29 63 00 84 	lw r3,(r11+132)                                <== NOT EXECUTED
 8004388:	29 62 00 80 	lw r2,(r11+128)                                <== NOT EXECUTED
 800438c:	5c 62 ff f4 	bne r3,r2,800435c <drainOutput+0x44>           <== NOT EXECUTED
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    rtems_interrupt_enable (level);                                   
 8004390:	d0 01 00 00 	wcsr IE,r1                                     
  }                                                                   
}                                                                     
 8004394:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004398:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800439c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80043a0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80043a4:	37 9c 00 10 	addi sp,sp,16                                  
 80043a8:	c3 a0 00 00 	ret                                            
      tty->rawOutBufState = rob_wait;                                 
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
 80043ac:	f8 00 0d 00 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08001be4 <dup2>: */ int dup2( int fildes, int fildes2 ) {
 8001be4:	37 9c ff a4 	addi sp,sp,-92                                 
 8001be8:	5b 8b 00 14 	sw (sp+20),r11                                 
 8001bec:	5b 8c 00 10 	sw (sp+16),r12                                 
 8001bf0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001bf4:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001bf8:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  If fildes is not valid, then fildes2 should not be closed.      
   */                                                                 
                                                                      
  status = fstat( fildes, &buf );                                     
 8001bfc:	37 8c 00 18 	addi r12,sp,24                                 
 */                                                                   
int dup2(                                                             
  int fildes,                                                         
  int fildes2                                                         
)                                                                     
{                                                                     
 8001c00:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  /*                                                                  
   *  If fildes is not valid, then fildes2 should not be closed.      
   */                                                                 
                                                                      
  status = fstat( fildes, &buf );                                     
 8001c04:	b9 80 10 00 	mv r2,r12                                      
  if ( status == -1 )                                                 
    return -1;                                                        
 8001c08:	34 0b ff ff 	mvi r11,-1                                     
 */                                                                   
int dup2(                                                             
  int fildes,                                                         
  int fildes2                                                         
)                                                                     
{                                                                     
 8001c0c:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  /*                                                                  
   *  If fildes is not valid, then fildes2 should not be closed.      
   */                                                                 
                                                                      
  status = fstat( fildes, &buf );                                     
 8001c10:	f8 00 01 61 	calli 8002194 <fstat>                          
  if ( status == -1 )                                                 
 8001c14:	5c 2b 00 09 	bne r1,r11,8001c38 <dup2+0x54>                 
  /*                                                                  
   *  This fcntl handles everything else.                             
   */                                                                 
                                                                      
  return fcntl( fildes, F_DUPFD, fildes2 );                           
}                                                                     
 8001c18:	b9 60 08 00 	mv r1,r11                                      
 8001c1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001c20:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001c24:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001c28:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001c2c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001c30:	37 9c 00 5c 	addi sp,sp,92                                  
 8001c34:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  If fildes2 is not valid, then we should not do anything either. 
   */                                                                 
                                                                      
  status = fstat( fildes2, &buf );                                    
 8001c38:	b9 a0 08 00 	mv r1,r13                                      
 8001c3c:	b9 80 10 00 	mv r2,r12                                      
 8001c40:	f8 00 01 55 	calli 8002194 <fstat>                          
  if ( status == -1 )                                                 
 8001c44:	44 2b ff f5 	be r1,r11,8001c18 <dup2+0x34>                  <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  This fcntl handles everything else.                             
   */                                                                 
                                                                      
  return fcntl( fildes, F_DUPFD, fildes2 );                           
 8001c48:	b9 c0 08 00 	mv r1,r14                                      
 8001c4c:	34 02 00 00 	mvi r2,0                                       
 8001c50:	b9 a0 18 00 	mv r3,r13                                      
 8001c54:	f8 00 00 0b 	calli 8001c80 <fcntl>                          
 8001c58:	b8 20 58 00 	mv r11,r1                                      
 8001c5c:	e3 ff ff ef 	bi 8001c18 <dup2+0x34>                         
                                                                      

080052b8 <echo>: /* * Echo a typed character */ static void echo (unsigned char c, struct rtems_termios_tty *tty) {
 80052b8:	37 9c ff f4 	addi sp,sp,-12                                 
 80052bc:	5b 8b 00 08 	sw (sp+8),r11                                  
 80052c0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80052c4:	b8 40 58 00 	mv r11,r2                                      
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
 80052c8:	28 42 00 3c 	lw r2,(r2+60)                                  
 80052cc:	20 42 02 00 	andi r2,r2,0x200                               
 80052d0:	44 40 00 0b 	be r2,r0,80052fc <echo+0x44>                   <== NEVER TAKEN
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 80052d4:	78 02 08 02 	mvhi r2,0x802                                  
 80052d8:	38 42 82 e0 	ori r2,r2,0x82e0                               
 80052dc:	28 42 00 00 	lw r2,(r2+0)                                   
 80052e0:	7c 23 00 09 	cmpnei r3,r1,9                                 
 80052e4:	b4 41 10 00 	add r2,r2,r1                                   
 80052e8:	40 42 00 01 	lbu r2,(r2+1)                                  
 80052ec:	20 42 00 20 	andi r2,r2,0x20                                
 * Echo a typed character                                             
 */                                                                   
static void                                                           
echo (unsigned char c, struct rtems_termios_tty *tty)                 
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
 80052f0:	7c 42 00 00 	cmpnei r2,r2,0                                 
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 80052f4:	a0 43 10 00 	and r2,r2,r3                                   
 80052f8:	5c 40 00 07 	bne r2,r0,8005314 <echo+0x5c>                  
    echobuf[0] = '^';                                                 
    echobuf[1] = c ^ 0x40;                                            
    rtems_termios_puts (echobuf, 2, tty);                             
    tty->column += 2;                                                 
  } else {                                                            
    oproc (c, tty);                                                   
 80052fc:	b9 60 10 00 	mv r2,r11                                      
 8005300:	fb ff ff 8c 	calli 8005130 <oproc>                          
  }                                                                   
}                                                                     
 8005304:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005308:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800530c:	37 9c 00 0c 	addi sp,sp,12                                  
 8005310:	c3 a0 00 00 	ret                                            
 */                                                                   
static void                                                           
echo (unsigned char c, struct rtems_termios_tty *tty)                 
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
 8005314:	34 02 00 0a 	mvi r2,10                                      
 8005318:	44 22 ff f9 	be r1,r2,80052fc <echo+0x44>                   
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
    echobuf[1] = c ^ 0x40;                                            
 800531c:	18 24 00 40 	xori r4,r1,0x40                                
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
 8005320:	34 05 00 5e 	mvi r5,94                                      
    echobuf[1] = c ^ 0x40;                                            
    rtems_termios_puts (echobuf, 2, tty);                             
 8005324:	37 81 00 0c 	addi r1,sp,12                                  
 8005328:	34 02 00 02 	mvi r2,2                                       
 800532c:	b9 60 18 00 	mv r3,r11                                      
{                                                                     
  if ((tty->termios.c_lflag & ECHOCTL) &&                             
       iscntrl(c) && (c != '\t') && (c != '\n')) {                    
    char echobuf[2];                                                  
                                                                      
    echobuf[0] = '^';                                                 
 8005330:	33 85 00 0c 	sb (sp+12),r5                                  
    echobuf[1] = c ^ 0x40;                                            
 8005334:	33 84 00 0d 	sb (sp+13),r4                                  
    rtems_termios_puts (echobuf, 2, tty);                             
 8005338:	fb ff ff 25 	calli 8004fcc <rtems_termios_puts>             
    tty->column += 2;                                                 
 800533c:	29 61 00 28 	lw r1,(r11+40)                                 
 8005340:	34 21 00 02 	addi r1,r1,2                                   
 8005344:	59 61 00 28 	sw (r11+40),r1                                 
  } else {                                                            
    oproc (c, tty);                                                   
  }                                                                   
}                                                                     
 8005348:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800534c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005350:	37 9c 00 0c 	addi sp,sp,12                                  
 8005354:	c3 a0 00 00 	ret                                            
                                                                      

080267b8 <endgrent>: void endgrent(void) {
 80267b8:	37 9c ff fc 	addi sp,sp,-4                                  
 80267bc:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (group_fp != NULL)                                               
 80267c0:	78 01 08 06 	mvhi r1,0x806                                  
 80267c4:	38 21 ea 8c 	ori r1,r1,0xea8c                               
 80267c8:	28 21 00 00 	lw r1,(r1+0)                                   
 80267cc:	44 20 00 02 	be r1,r0,80267d4 <endgrent+0x1c>               <== NEVER TAKEN
    fclose(group_fp);                                                 
 80267d0:	f8 00 5c 6b 	calli 803d97c <fclose>                         
}                                                                     
 80267d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80267d8:	37 9c 00 04 	addi sp,sp,4                                   
 80267dc:	c3 a0 00 00 	ret                                            
                                                                      

080265e0 <endpwent>: void endpwent(void) {
 80265e0:	37 9c ff fc 	addi sp,sp,-4                                  
 80265e4:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (passwd_fp != NULL)                                              
 80265e8:	78 01 08 06 	mvhi r1,0x806                                  
 80265ec:	38 21 eb 68 	ori r1,r1,0xeb68                               
 80265f0:	28 21 00 00 	lw r1,(r1+0)                                   
 80265f4:	44 20 00 02 	be r1,r0,80265fc <endpwent+0x1c>               <== NEVER TAKEN
    fclose(passwd_fp);                                                
 80265f8:	f8 00 5c e1 	calli 803d97c <fclose>                         
}                                                                     
 80265fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026600:	37 9c 00 04 	addi sp,sp,4                                   
 8026604:	c3 a0 00 00 	ret                                            
                                                                      

08005358 <erase>: * FIXME: Needs support for WERASE and ECHOPRT. * FIXME: Some of the tests should check for IEXTEN, too. */ static void erase (struct rtems_termios_tty *tty, int lineFlag) {
 8005358:	37 9c ff e0 	addi sp,sp,-32                                 
 800535c:	5b 8b 00 20 	sw (sp+32),r11                                 
 8005360:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8005364:	5b 8d 00 18 	sw (sp+24),r13                                 
 8005368:	5b 8e 00 14 	sw (sp+20),r14                                 
 800536c:	5b 8f 00 10 	sw (sp+16),r15                                 
 8005370:	5b 90 00 0c 	sw (sp+12),r16                                 
 8005374:	5b 91 00 08 	sw (sp+8),r17                                  
 8005378:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (tty->ccount == 0)                                               
 800537c:	28 24 00 20 	lw r4,(r1+32)                                  
 * FIXME: Needs support for WERASE and ECHOPRT.                       
 * FIXME: Some of the tests should check for IEXTEN, too.             
 */                                                                   
static void                                                           
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
 8005380:	b8 20 58 00 	mv r11,r1                                      
 8005384:	b8 40 68 00 	mv r13,r2                                      
  if (tty->ccount == 0)                                               
 8005388:	44 80 00 27 	be r4,r0,8005424 <erase+0xcc>                  
    return;                                                           
  if (lineFlag) {                                                     
 800538c:	5c 40 00 30 	bne r2,r0,800544c <erase+0xf4>                 
        echo ('\n', tty);                                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
 8005390:	28 25 00 3c 	lw r5,(r1+60)                                  
 8005394:	20 a2 00 08 	andi r2,r5,0x8                                 
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 8005398:	78 0f 08 02 	mvhi r15,0x802                                 
 800539c:	78 11 08 02 	mvhi r17,0x802                                 
 80053a0:	78 0e 08 02 	mvhi r14,0x802                                 
    unsigned char c = tty->cbuf[--tty->ccount];                       
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
 80053a4:	34 10 00 09 	mvi r16,9                                      
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 80053a8:	39 ef 82 e0 	ori r15,r15,0x82e0                             
 80053ac:	3a 31 61 84 	ori r17,r17,0x6184                             
 80053b0:	39 ce 61 80 	ori r14,r14,0x6180                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
 80053b4:	29 67 00 1c 	lw r7,(r11+28)                                 
 80053b8:	34 84 ff ff 	addi r4,r4,-1                                  
 80053bc:	59 64 00 20 	sw (r11+32),r4                                 
 80053c0:	b4 e4 18 00 	add r3,r7,r4                                   
 80053c4:	40 63 00 00 	lbu r3,(r3+0)                                  
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
 80053c8:	44 40 00 0e 	be r2,r0,8005400 <erase+0xa8>                  <== NEVER TAKEN
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
 80053cc:	5d a0 00 03 	bne r13,r0,80053d8 <erase+0x80>                
 80053d0:	20 a1 00 10 	andi r1,r5,0x10                                
 80053d4:	44 2d 00 11 	be r1,r13,8005418 <erase+0xc0>                 <== NEVER TAKEN
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
 80053d8:	44 70 00 45 	be r3,r16,80054ec <erase+0x194>                
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
 80053dc:	29 e2 00 00 	lw r2,(r15+0)                                  
 80053e0:	34 6c 00 01 	addi r12,r3,1                                  
 80053e4:	ba 20 08 00 	mv r1,r17                                      
 80053e8:	b4 4c 10 00 	add r2,r2,r12                                  
 80053ec:	40 42 00 00 	lbu r2,(r2+0)                                  
 80053f0:	20 42 00 20 	andi r2,r2,0x20                                
 80053f4:	44 40 00 36 	be r2,r0,80054cc <erase+0x174>                 <== ALWAYS TAKEN
 80053f8:	20 a5 02 00 	andi r5,r5,0x200                               <== NOT EXECUTED
 80053fc:	5c a0 00 24 	bne r5,r0,800548c <erase+0x134>                <== NOT EXECUTED
          if (tty->column)                                            
            tty->column--;                                            
        }                                                             
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
 8005400:	45 a0 00 09 	be r13,r0,8005424 <erase+0xcc>                 
        echo ('\n', tty);                                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
 8005404:	29 64 00 20 	lw r4,(r11+32)                                 
 8005408:	44 80 00 07 	be r4,r0,8005424 <erase+0xcc>                  
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
      tty->ccount = 0;                                                
      echo (tty->termios.c_cc[VKILL], tty);                           
      if (tty->termios.c_lflag & ECHOK)                               
        echo ('\n', tty);                                             
 800540c:	29 65 00 3c 	lw r5,(r11+60)                                 
 8005410:	20 a2 00 08 	andi r2,r5,0x8                                 
 8005414:	e3 ff ff e8 	bi 80053b4 <erase+0x5c>                        
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
 8005418:	41 61 00 43 	lbu r1,(r11+67)                                <== NOT EXECUTED
 800541c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8005420:	fb ff ff a6 	calli 80052b8 <echo>                           <== NOT EXECUTED
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
      break;                                                          
  }                                                                   
}                                                                     
 8005424:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005428:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800542c:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8005430:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8005434:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8005438:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800543c:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8005440:	2b 91 00 08 	lw r17,(sp+8)                                  
 8005444:	37 9c 00 20 	addi sp,sp,32                                  
 8005448:	c3 a0 00 00 	ret                                            
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
 800544c:	28 25 00 3c 	lw r5,(r1+60)                                  
 8005450:	20 a2 00 08 	andi r2,r5,0x8                                 
 8005454:	44 40 00 48 	be r2,r0,8005574 <erase+0x21c>                 <== NEVER TAKEN
      tty->ccount = 0;                                                
      return;                                                         
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
 8005458:	20 ac 00 10 	andi r12,r5,0x10                               
 800545c:	5d 80 ff cf 	bne r12,r0,8005398 <erase+0x40>                <== ALWAYS TAKEN
      tty->ccount = 0;                                                
      echo (tty->termios.c_cc[VKILL], tty);                           
 8005460:	40 21 00 44 	lbu r1,(r1+68)                                 <== NOT EXECUTED
    if (!(tty->termios.c_lflag & ECHO)) {                             
      tty->ccount = 0;                                                
      return;                                                         
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
      tty->ccount = 0;                                                
 8005464:	59 60 00 20 	sw (r11+32),r0                                 <== NOT EXECUTED
      echo (tty->termios.c_cc[VKILL], tty);                           
 8005468:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800546c:	fb ff ff 93 	calli 80052b8 <echo>                           <== NOT EXECUTED
      if (tty->termios.c_lflag & ECHOK)                               
 8005470:	29 61 00 3c 	lw r1,(r11+60)                                 <== NOT EXECUTED
 8005474:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 8005478:	44 2c ff eb 	be r1,r12,8005424 <erase+0xcc>                 <== NOT EXECUTED
        echo ('\n', tty);                                             
 800547c:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8005480:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8005484:	fb ff ff 8d 	calli 80052b8 <echo>                           <== NOT EXECUTED
 8005488:	e3 ff ff e7 	bi 8005424 <erase+0xcc>                        <== NOT EXECUTED
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
          rtems_termios_puts ("\b \b", 3, tty);                       
 800548c:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 8005490:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8005494:	fb ff fe ce 	calli 8004fcc <rtems_termios_puts>             <== NOT EXECUTED
          if (tty->column)                                            
 8005498:	29 62 00 28 	lw r2,(r11+40)                                 <== NOT EXECUTED
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
          rtems_termios_puts ("\b \b", 3, tty);                       
 800549c:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
          if (tty->column)                                            
 80054a0:	44 40 00 03 	be r2,r0,80054ac <erase+0x154>                 <== NOT EXECUTED
            tty->column--;                                            
 80054a4:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
 80054a8:	59 62 00 28 	sw (r11+40),r2                                 <== NOT EXECUTED
        }                                                             
        if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {       
 80054ac:	29 e2 00 00 	lw r2,(r15+0)                                  <== NOT EXECUTED
 80054b0:	b4 4c 60 00 	add r12,r2,r12                                 <== NOT EXECUTED
 80054b4:	41 82 00 00 	lbu r2,(r12+0)                                 <== NOT EXECUTED
 80054b8:	20 42 00 20 	andi r2,r2,0x20                                <== NOT EXECUTED
 80054bc:	44 40 00 04 	be r2,r0,80054cc <erase+0x174>                 <== NOT EXECUTED
 80054c0:	29 62 00 3c 	lw r2,(r11+60)                                 <== NOT EXECUTED
 80054c4:	20 42 02 00 	andi r2,r2,0x200                               <== NOT EXECUTED
 80054c8:	44 40 ff ce 	be r2,r0,8005400 <erase+0xa8>                  <== NOT EXECUTED
          rtems_termios_puts ("\b \b", 3, tty);                       
 80054cc:	34 02 00 03 	mvi r2,3                                       
 80054d0:	b9 60 18 00 	mv r3,r11                                      
 80054d4:	fb ff fe be 	calli 8004fcc <rtems_termios_puts>             
          if (tty->column)                                            
 80054d8:	29 61 00 28 	lw r1,(r11+40)                                 
 80054dc:	44 20 ff c9 	be r1,r0,8005400 <erase+0xa8>                  <== NEVER TAKEN
            tty->column--;                                            
 80054e0:	34 21 ff ff 	addi r1,r1,-1                                  
 80054e4:	59 61 00 28 	sw (r11+40),r1                                 
 80054e8:	e3 ff ff c6 	bi 8005400 <erase+0xa8>                        
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
        int col = tty->read_start_column;                             
 80054ec:	29 6c 00 2c 	lw r12,(r11+44)                                
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 80054f0:	44 80 00 0f 	be r4,r0,800552c <erase+0x1d4>                 
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 80054f4:	29 e1 00 00 	lw r1,(r15+0)                                  
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
        int col = tty->read_start_column;                             
        int i = 0;                                                    
 80054f8:	34 03 00 00 	mvi r3,0                                       
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
            if (tty->termios.c_lflag & ECHOCTL)                       
 80054fc:	20 a5 02 00 	andi r5,r5,0x200                               
 * Erase a character or line                                          
 * FIXME: Needs support for WERASE and ECHOPRT.                       
 * FIXME: Some of the tests should check for IEXTEN, too.             
 */                                                                   
static void                                                           
erase (struct rtems_termios_tty *tty, int lineFlag)                   
 8005500:	b4 e3 10 00 	add r2,r7,r3                                   
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
 8005504:	40 46 00 00 	lbu r6,(r2+0)                                  
 8005508:	34 63 00 01 	addi r3,r3,1                                   
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 800550c:	b4 26 10 00 	add r2,r1,r6                                   
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
 8005510:	44 d0 00 15 	be r6,r16,8005564 <erase+0x20c>                
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
 8005514:	40 42 00 01 	lbu r2,(r2+1)                                  
 8005518:	20 42 00 20 	andi r2,r2,0x20                                
 800551c:	44 40 00 0f 	be r2,r0,8005558 <erase+0x200>                 <== ALWAYS TAKEN
            if (tty->termios.c_lflag & ECHOCTL)                       
 8005520:	44 a0 00 02 	be r5,r0,8005528 <erase+0x1d0>                 <== NOT EXECUTED
              col += 2;                                               
 8005524:	35 8c 00 02 	addi r12,r12,2                                 <== NOT EXECUTED
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 8005528:	5c 83 ff f6 	bne r4,r3,8005500 <erase+0x1a8>                <== NOT EXECUTED
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
 800552c:	29 61 00 28 	lw r1,(r11+40)                                 
 8005530:	4d 81 ff b4 	bge r12,r1,8005400 <erase+0xa8>                <== NEVER TAKEN
          rtems_termios_puts ("\b", 1, tty);                          
 8005534:	b9 60 18 00 	mv r3,r11                                      
 8005538:	b9 c0 08 00 	mv r1,r14                                      
 800553c:	34 02 00 01 	mvi r2,1                                       
 8005540:	fb ff fe a3 	calli 8004fcc <rtems_termios_puts>             
          tty->column--;                                              
 8005544:	29 63 00 28 	lw r3,(r11+40)                                 
 8005548:	34 63 ff ff 	addi r3,r3,-1                                  
 800554c:	59 63 00 28 	sw (r11+40),r3                                 
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
 8005550:	48 6c ff f9 	bg r3,r12,8005534 <erase+0x1dc>                
 8005554:	e3 ff ff ab 	bi 8005400 <erase+0xa8>                        
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
            if (tty->termios.c_lflag & ECHOCTL)                       
              col += 2;                                               
          } else {                                                    
            col++;                                                    
 8005558:	35 8c 00 01 	addi r12,r12,1                                 
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 800555c:	5c 83 ff e9 	bne r4,r3,8005500 <erase+0x1a8>                
 8005560:	e3 ff ff f3 	bi 800552c <erase+0x1d4>                       
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
 8005564:	39 8c 00 07 	ori r12,r12,0x7                                
 8005568:	35 8c 00 01 	addi r12,r12,1                                 
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
 800556c:	5c 83 ff e5 	bne r4,r3,8005500 <erase+0x1a8>                <== ALWAYS TAKEN
 8005570:	e3 ff ff ef 	bi 800552c <erase+0x1d4>                       <== NOT EXECUTED
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
      tty->ccount = 0;                                                
 8005574:	58 20 00 20 	sw (r1+32),r0                                  <== NOT EXECUTED
      return;                                                         
 8005578:	e3 ff ff ab 	bi 8005424 <erase+0xcc>                        <== NOT EXECUTED
                                                                      

08010df0 <fat_buf_access>: int fat_buf_access(fat_fs_info_t *fs_info, const uint32_t sec_num, const int op_type, uint8_t **sec_buf) {
 8010df0:	37 9c ff e0 	addi sp,sp,-32                                 
 8010df4:	5b 8b 00 20 	sw (sp+32),r11                                 
 8010df8:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8010dfc:	5b 8d 00 18 	sw (sp+24),r13                                 
 8010e00:	5b 8e 00 14 	sw (sp+20),r14                                 
 8010e04:	5b 8f 00 10 	sw (sp+16),r15                                 
 8010e08:	5b 90 00 0c 	sw (sp+12),r16                                 
 8010e0c:	5b 91 00 08 	sw (sp+8),r17                                  
 8010e10:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010e14:	40 2e 00 02 	lbu r14,(r1+2)                                 
 8010e18:	40 2f 00 0c 	lbu r15,(r1+12)                                
 8010e1c:	b8 20 58 00 	mv r11,r1                                      
 8010e20:	b8 40 60 00 	mv r12,r2                                      
 8010e24:	c9 ee 78 00 	sub r15,r15,r14                                
 8010e28:	b8 40 08 00 	mv r1,r2                                       
 8010e2c:	b9 e0 10 00 	mv r2,r15                                      
 8010e30:	b8 60 88 00 	mv r17,r3                                      
 8010e34:	b8 80 80 00 	mv r16,r4                                      
 8010e38:	f8 00 78 70 	calli 802eff8 <__lshrsi3>                      
 8010e3c:	b8 20 68 00 	mv r13,r1                                      
                                                         sec_num);    
    uint32_t          blk_ofs = fat_sector_offset_to_block_offset (fs_info,
                                                                   sec_num,
                                                                   0);
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
 8010e40:	41 61 00 89 	lbu r1,(r11+137)                               
 8010e44:	44 20 00 03 	be r1,r0,8010e50 <fat_buf_access+0x60>         
 8010e48:	29 61 00 84 	lw r1,(r11+132)                                
 8010e4c:	44 2c 00 0e 	be r1,r12,8010e84 <fat_buf_access+0x94>        
    {                                                                 
        fat_buf_release(fs_info);                                     
 8010e50:	b9 60 08 00 	mv r1,r11                                      
 8010e54:	fb ff ff 6c 	calli 8010c04 <fat_buf_release>                
                                                                      
        if (op_type == FAT_OP_TYPE_READ)                              
 8010e58:	34 01 00 01 	mvi r1,1                                       
 8010e5c:	46 21 00 20 	be r17,r1,8010edc <fat_buf_access+0xec>        
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
 8010e60:	29 61 00 64 	lw r1,(r11+100)                                
 8010e64:	b9 a0 10 00 	mv r2,r13                                      
 8010e68:	35 63 00 8c 	addi r3,r11,140                                
 8010e6c:	fb ff f5 9b 	calli 800e4d8 <rtems_bdbuf_get>                
        if (sc != RTEMS_SUCCESSFUL)                                   
 8010e70:	5c 20 00 20 	bne r1,r0,8010ef0 <fat_buf_access+0x100>       <== NEVER TAKEN
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
        fs_info->c.modified = 0;                                      
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
 8010e74:	34 01 00 01 	mvi r1,1                                       
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
 8010e78:	59 6c 00 84 	sw (r11+132),r12                               
        fs_info->c.modified = 0;                                      
 8010e7c:	31 60 00 88 	sb (r11+136),r0                                
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
 8010e80:	31 61 00 89 	sb (r11+137),r1                                
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010e84:	b9 e0 10 00 	mv r2,r15                                      
 8010e88:	b9 a0 08 00 	mv r1,r13                                      
 8010e8c:	fb ff c0 b6 	calli 8001164 <__ashlsi3>                      
    }                                                                 
    *sec_buf = &fs_info->c.buf->buffer[blk_ofs];                      
 8010e90:	29 6b 00 8c 	lw r11,(r11+140)                               
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
              fat_block_num_to_sector_num (fs_info,                   
                  fat_sector_num_to_block_num (fs_info, sector)))     
            << fs_info->vol.sec_log2);                                
 8010e94:	b9 c0 10 00 	mv r2,r14                                      
 8010e98:	c9 81 08 00 	sub r1,r12,r1                                  
 8010e9c:	fb ff c0 b2 	calli 8001164 <__ashlsi3>                      
 8010ea0:	29 63 00 1c 	lw r3,(r11+28)                                 
    return RC_OK;                                                     
 8010ea4:	34 02 00 00 	mvi r2,0                                       
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
        fs_info->c.modified = 0;                                      
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
    }                                                                 
    *sec_buf = &fs_info->c.buf->buffer[blk_ofs];                      
 8010ea8:	b4 61 08 00 	add r1,r3,r1                                   
 8010eac:	5a 01 00 00 	sw (r16+0),r1                                  
    return RC_OK;                                                     
}                                                                     
 8010eb0:	b8 40 08 00 	mv r1,r2                                       
 8010eb4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010eb8:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8010ebc:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8010ec0:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8010ec4:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8010ec8:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8010ecc:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8010ed0:	2b 91 00 08 	lw r17,(sp+8)                                  
 8010ed4:	37 9c 00 20 	addi sp,sp,32                                  
 8010ed8:	c3 a0 00 00 	ret                                            
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
    {                                                                 
        fat_buf_release(fs_info);                                     
                                                                      
        if (op_type == FAT_OP_TYPE_READ)                              
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
 8010edc:	29 61 00 64 	lw r1,(r11+100)                                
 8010ee0:	b9 a0 10 00 	mv r2,r13                                      
 8010ee4:	35 63 00 8c 	addi r3,r11,140                                
 8010ee8:	fb ff f5 c6 	calli 800e600 <rtems_bdbuf_read>               
 8010eec:	e3 ff ff e1 	bi 8010e70 <fat_buf_access+0x80>               
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
 8010ef0:	f8 00 2e 41 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010ef4:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8010ef8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010efc:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8010f00:	e3 ff ff ec 	bi 8010eb0 <fat_buf_access+0xc0>               <== NOT EXECUTED
                                                                      

08010c04 <fat_buf_release>: return RC_OK; } int fat_buf_release(fat_fs_info_t *fs_info) {
 8010c04:	37 9c ff e0 	addi sp,sp,-32                                 
 8010c08:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8010c0c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8010c10:	5b 8d 00 14 	sw (sp+20),r13                                 
 8010c14:	5b 8e 00 10 	sw (sp+16),r14                                 
 8010c18:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8010c1c:	5b 90 00 08 	sw (sp+8),r16                                  
 8010c20:	5b 9d 00 04 	sw (sp+4),ra                                   
 8010c24:	b8 20 58 00 	mv r11,r1                                      
    rtems_status_code sc = RTEMS_SUCCESSFUL;                          
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)                          
 8010c28:	40 21 00 89 	lbu r1,(r1+137)                                
        return RC_OK;                                                 
 8010c2c:	34 0c 00 00 	mvi r12,0                                      
int                                                                   
fat_buf_release(fat_fs_info_t *fs_info)                               
{                                                                     
    rtems_status_code sc = RTEMS_SUCCESSFUL;                          
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)                          
 8010c30:	44 20 00 44 	be r1,r0,8010d40 <fat_buf_release+0x13c>       
        return RC_OK;                                                 
                                                                      
    if (fs_info->c.modified)                                          
 8010c34:	41 61 00 88 	lbu r1,(r11+136)                               
 8010c38:	44 20 00 4c 	be r1,r0,8010d68 <fat_buf_release+0x164>       
    {                                                                 
        uint32_t sec_num = fs_info->c.blk_num;                        
 8010c3c:	29 6c 00 84 	lw r12,(r11+132)                               
        bool     sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&   
 8010c40:	2d 61 00 18 	lhu r1,(r11+24)                                
 8010c44:	34 0d 00 00 	mvi r13,0                                      
 8010c48:	54 2c 00 08 	bgu r1,r12,8010c68 <fat_buf_release+0x64>      
 8010c4c:	29 61 00 20 	lw r1,(r11+32)                                 
 8010c50:	51 81 00 06 	bgeu r12,r1,8010c68 <fat_buf_release+0x64>     
        uint32_t blk = fat_sector_num_to_block_num(fs_info, sec_num); 
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
 8010c54:	41 61 00 54 	lbu r1,(r11+84)                                
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
 8010c58:	41 6e 00 02 	lbu r14,(r11+2)                                
 8010c5c:	41 6f 00 0c 	lbu r15,(r11+12)                               
        return RC_OK;                                                 
                                                                      
    if (fs_info->c.modified)                                          
    {                                                                 
        uint32_t sec_num = fs_info->c.blk_num;                        
        bool     sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&   
 8010c60:	34 0d 00 01 	mvi r13,1                                      
        uint32_t blk = fat_sector_num_to_block_num(fs_info, sec_num); 
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
 8010c64:	44 20 00 49 	be r1,r0,8010d88 <fat_buf_release+0x184>       <== ALWAYS TAKEN
            memcpy(fs_info->sec_buf,                                  
                   fs_info->c.buf->buffer + blk_ofs,                  
                   fs_info->vol.bps);                                 
                                                                      
        sc = rtems_bdbuf_release_modified(fs_info->c.buf);            
 8010c68:	29 61 00 8c 	lw r1,(r11+140)                                
 8010c6c:	fb ff f7 31 	calli 800e930 <rtems_bdbuf_release_modified>   
        if (sc != RTEMS_SUCCESSFUL)                                   
 8010c70:	5c 20 00 41 	bne r1,r0,8010d74 <fat_buf_release+0x170>      <== NEVER TAKEN
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.modified = 0;                                      
 8010c74:	31 60 00 88 	sb (r11+136),r0                                
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
 8010c78:	45 a1 00 30 	be r13,r1,8010d38 <fat_buf_release+0x134>      
 8010c7c:	41 61 00 54 	lbu r1,(r11+84)                                
 8010c80:	5c 20 00 2e 	bne r1,r0,8010d38 <fat_buf_release+0x134>      <== NEVER TAKEN
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
 8010c84:	41 61 00 0d 	lbu r1,(r11+13)                                
 8010c88:	34 02 00 01 	mvi r2,1                                       
 8010c8c:	50 41 00 2b 	bgeu r2,r1,8010d38 <fat_buf_release+0x134>     <== NEVER TAKEN
 8010c90:	34 0c 00 01 	mvi r12,1                                      
            {                                                         
                rtems_bdbuf_buffer *bd;                               
                                                                      
                sec_num = fs_info->c.blk_num + fs_info->vol.fat_length * i,
 8010c94:	29 62 00 1c 	lw r2,(r11+28)                                 
 8010c98:	b9 80 08 00 	mv r1,r12                                      
 8010c9c:	fb ff c1 80 	calli 800129c <__mulsi3>                       
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010ca0:	41 6e 00 02 	lbu r14,(r11+2)                                
 8010ca4:	29 6d 00 84 	lw r13,(r11+132)                               
 8010ca8:	41 6f 00 0c 	lbu r15,(r11+12)                               
 8010cac:	b4 2d 68 00 	add r13,r1,r13                                 
 8010cb0:	c9 ee 78 00 	sub r15,r15,r14                                
 8010cb4:	b9 e0 10 00 	mv r2,r15                                      
 8010cb8:	b9 a0 08 00 	mv r1,r13                                      
 8010cbc:	f8 00 78 cf 	calli 802eff8 <__lshrsi3>                      
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010cc0:	b9 e0 10 00 	mv r2,r15                                      
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010cc4:	b8 20 80 00 	mv r16,r1                                      
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010cc8:	fb ff c1 27 	calli 8001164 <__ashlsi3>                      
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
              fat_block_num_to_sector_num (fs_info,                   
                  fat_sector_num_to_block_num (fs_info, sector)))     
            << fs_info->vol.sec_log2);                                
 8010ccc:	b9 c0 10 00 	mv r2,r14                                      
 8010cd0:	c9 a1 08 00 	sub r1,r13,r1                                  
 8010cd4:	fb ff c1 24 	calli 8001164 <__ashlsi3>                      
 8010cd8:	b8 20 70 00 	mv r14,r1                                      
                {                                                     
                    sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);  
                }                                                     
                else                                                  
                {                                                     
                    sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd); 
 8010cdc:	ba 00 10 00 	mv r2,r16                                      
 8010ce0:	37 83 00 20 	addi r3,sp,32                                  
                blk = fat_sector_num_to_block_num(fs_info, sec_num);  
                blk_ofs = fat_sector_offset_to_block_offset(fs_info,  
                                                            sec_num,  
                                                            0);       
                                                                      
                if (blk_ofs == 0                                      
 8010ce4:	5c 20 00 04 	bne r1,r0,8010cf4 <fat_buf_release+0xf0>       
                    && fs_info->vol.bps == fs_info->vol.bytes_per_block)
 8010ce8:	2d 64 00 00 	lhu r4,(r11+0)                                 
 8010cec:	2d 61 00 0a 	lhu r1,(r11+10)                                
 8010cf0:	44 81 00 37 	be r4,r1,8010dcc <fat_buf_release+0x1c8>       
                {                                                     
                    sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);  
                }                                                     
                else                                                  
                {                                                     
                    sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd); 
 8010cf4:	29 61 00 64 	lw r1,(r11+100)                                
 8010cf8:	fb ff f6 42 	calli 800e600 <rtems_bdbuf_read>               
 8010cfc:	b8 20 68 00 	mv r13,r1                                      
                }                                                     
                if ( sc != RTEMS_SUCCESSFUL)                          
 8010d00:	5d a0 00 37 	bne r13,r0,8010ddc <fat_buf_release+0x1d8>     <== NEVER TAKEN
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
 8010d04:	2b 81 00 20 	lw r1,(sp+32)                                  
 8010d08:	29 62 00 90 	lw r2,(r11+144)                                
 8010d0c:	2d 63 00 00 	lhu r3,(r11+0)                                 
 8010d10:	28 21 00 1c 	lw r1,(r1+28)                                  
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
 8010d14:	35 8c 00 01 	addi r12,r12,1                                 
 8010d18:	21 8c 00 ff 	andi r12,r12,0xff                              
                {                                                     
                    sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd); 
                }                                                     
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
 8010d1c:	b4 2e 08 00 	add r1,r1,r14                                  
 8010d20:	f8 00 32 03 	calli 801d52c <memcpy>                         
                sc = rtems_bdbuf_release_modified(bd);                
 8010d24:	2b 81 00 20 	lw r1,(sp+32)                                  
 8010d28:	fb ff f7 02 	calli 800e930 <rtems_bdbuf_release_modified>   
                if ( sc != RTEMS_SUCCESSFUL)                          
 8010d2c:	5c 2d 00 2c 	bne r1,r13,8010ddc <fat_buf_release+0x1d8>     <== NEVER TAKEN
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
 8010d30:	41 61 00 0d 	lbu r1,(r11+13)                                
 8010d34:	54 2c ff d8 	bgu r1,r12,8010c94 <fat_buf_release+0x90>      <== NEVER TAKEN
    {                                                                 
        sc = rtems_bdbuf_release(fs_info->c.buf);                     
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
    }                                                                 
    fs_info->c.state = FAT_CACHE_EMPTY;                               
 8010d38:	31 60 00 89 	sb (r11+137),r0                                
    return RC_OK;                                                     
 8010d3c:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 8010d40:	b9 80 08 00 	mv r1,r12                                      
 8010d44:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010d48:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8010d4c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8010d50:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8010d54:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8010d58:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8010d5c:	2b 90 00 08 	lw r16,(sp+8)                                  
 8010d60:	37 9c 00 20 	addi sp,sp,32                                  
 8010d64:	c3 a0 00 00 	ret                                            
            }                                                         
        }                                                             
    }                                                                 
    else                                                              
    {                                                                 
        sc = rtems_bdbuf_release(fs_info->c.buf);                     
 8010d68:	29 61 00 8c 	lw r1,(r11+140)                                
 8010d6c:	fb ff f6 b6 	calli 800e844 <rtems_bdbuf_release>            
        if (sc != RTEMS_SUCCESSFUL)                                   
 8010d70:	44 2c ff f2 	be r1,r12,8010d38 <fat_buf_release+0x134>      <== ALWAYS TAKEN
            rtems_set_errno_and_return_minus_one(EIO);                
 8010d74:	f8 00 2e a0 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010d78:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8010d7c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010d80:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8010d84:	e3 ff ff ef 	bi 8010d40 <fat_buf_release+0x13c>             <== NOT EXECUTED
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010d88:	c9 ee 78 00 	sub r15,r15,r14                                
 8010d8c:	b9 e0 10 00 	mv r2,r15                                      
 8010d90:	b9 80 08 00 	mv r1,r12                                      
 8010d94:	f8 00 78 99 	calli 802eff8 <__lshrsi3>                      
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8010d98:	b9 e0 10 00 	mv r2,r15                                      
 8010d9c:	fb ff c0 f2 	calli 8001164 <__ashlsi3>                      
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
            memcpy(fs_info->sec_buf,                                  
                   fs_info->c.buf->buffer + blk_ofs,                  
 8010da0:	29 6f 00 8c 	lw r15,(r11+140)                               
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
              fat_block_num_to_sector_num (fs_info,                   
                  fat_sector_num_to_block_num (fs_info, sector)))     
            << fs_info->vol.sec_log2);                                
 8010da4:	b9 c0 10 00 	mv r2,r14                                      
 8010da8:	c9 81 08 00 	sub r1,r12,r1                                  
 8010dac:	fb ff c0 ee 	calli 8001164 <__ashlsi3>                      
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
            memcpy(fs_info->sec_buf,                                  
 8010db0:	29 e2 00 1c 	lw r2,(r15+28)                                 
 8010db4:	29 64 00 90 	lw r4,(r11+144)                                
 8010db8:	2d 63 00 00 	lhu r3,(r11+0)                                 
 8010dbc:	b4 41 10 00 	add r2,r2,r1                                   
 8010dc0:	b8 80 08 00 	mv r1,r4                                       
 8010dc4:	f8 00 31 da 	calli 801d52c <memcpy>                         
 8010dc8:	e3 ff ff a8 	bi 8010c68 <fat_buf_release+0x64>              
                                                            0);       
                                                                      
                if (blk_ofs == 0                                      
                    && fs_info->vol.bps == fs_info->vol.bytes_per_block)
                {                                                     
                    sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);  
 8010dcc:	29 61 00 64 	lw r1,(r11+100)                                
 8010dd0:	fb ff f5 c2 	calli 800e4d8 <rtems_bdbuf_get>                
 8010dd4:	b8 20 68 00 	mv r13,r1                                      
 8010dd8:	e3 ff ff ca 	bi 8010d00 <fat_buf_release+0xfc>              
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
                sc = rtems_bdbuf_release_modified(bd);                
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
 8010ddc:	f8 00 2e 86 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010de0:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8010de4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010de8:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8010dec:	e3 ff ff d5 	bi 8010d40 <fat_buf_release+0x13c>             <== NOT EXECUTED
                                                                      

080110d8 <fat_cluster_set>: fat_fs_info_t *fs_info, const uint32_t start_cln, const uint32_t offset, const uint32_t count, const uint8_t pattern) {
 80110d8:	37 9c ff cc 	addi sp,sp,-52                                 
 80110dc:	5b 8b 00 30 	sw (sp+48),r11                                 
 80110e0:	5b 8c 00 2c 	sw (sp+44),r12                                 
 80110e4:	5b 8d 00 28 	sw (sp+40),r13                                 
 80110e8:	5b 8e 00 24 	sw (sp+36),r14                                 
 80110ec:	5b 8f 00 20 	sw (sp+32),r15                                 
 80110f0:	5b 90 00 1c 	sw (sp+28),r16                                 
 80110f4:	5b 91 00 18 	sw (sp+24),r17                                 
 80110f8:	5b 92 00 14 	sw (sp+20),r18                                 
 80110fc:	5b 93 00 10 	sw (sp+16),r19                                 
 8011100:	5b 94 00 0c 	sw (sp+12),r20                                 
 8011104:	5b 95 00 08 	sw (sp+8),r21                                  
 8011108:	5b 9d 00 04 	sw (sp+4),ra                                   
 801110c:	b8 20 58 00 	mv r11,r1                                      
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 8011110:	2c 21 00 06 	lhu r1,(r1+6)                                  
     fat_fs_info_t                        *fs_info,                   
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
 8011114:	b8 60 78 00 	mv r15,r3                                      
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 8011118:	b8 80 70 00 	mv r14,r4                                      
 801111c:	c8 23 08 00 	sub r1,r1,r3                                   
     fat_fs_info_t                        *fs_info,                   
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
 8011120:	20 b5 00 ff 	andi r21,r5,0xff                               
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 8011124:	50 24 00 02 	bgeu r1,r4,801112c <fat_cluster_set+0x54>      <== ALWAYS TAKEN
 8011128:	b8 20 70 00 	mv r14,r1                                      <== NOT EXECUTED
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 801112c:	5c 40 00 04 	bne r2,r0,801113c <fat_cluster_set+0x64>       <== ALWAYS TAKEN
 8011130:	41 61 00 0e 	lbu r1,(r11+14)                                <== NOT EXECUTED
 8011134:	20 21 00 03 	andi r1,r1,0x3                                 <== NOT EXECUTED
 8011138:	5c 22 00 5b 	bne r1,r2,80112a4 <fat_cluster_set+0x1cc>      <== NOT EXECUTED
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
 801113c:	41 63 00 08 	lbu r3,(r11+8)                                 
 8011140:	41 6c 00 0c 	lbu r12,(r11+12)                               
 8011144:	34 41 ff fe 	addi r1,r2,-2                                  
 8011148:	c8 6c 10 00 	sub r2,r3,r12                                  
 801114c:	fb ff c0 06 	calli 8001164 <__ashlsi3>                      
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 8011150:	41 62 00 02 	lbu r2,(r11+2)                                 
 8011154:	b8 20 88 00 	mv r17,r1                                      
 8011158:	29 61 00 34 	lw r1,(r11+52)                                 
 801115c:	c9 82 10 00 	sub r2,r12,r2                                  
 8011160:	f8 00 77 a6 	calli 802eff8 <__lshrsi3>                      
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
 8011164:	b6 21 88 00 	add r17,r17,r1                                 
     const uint8_t                         pattern)                   
{                                                                     
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
 8011168:	b9 e0 08 00 	mv r1,r15                                      
 801116c:	b9 80 10 00 	mv r2,r12                                      
 8011170:	f8 00 77 a2 	calli 802eff8 <__lshrsi3>                      
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 8011174:	b9 80 10 00 	mv r2,r12                                      
     const uint8_t                         pattern)                   
{                                                                     
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
 8011178:	b8 20 68 00 	mv r13,r1                                      
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 801117c:	fb ff bf fa 	calli 8001164 <__ashlsi3>                      
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
  ssize_t             rc               = RC_OK;                       
 8011180:	34 04 00 00 	mvi r4,0                                       
 8011184:	7d d2 00 00 	cmpnei r18,r14,0                               
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
 8011188:	64 83 00 00 	cmpei r3,r4,0                                  
{                                                                     
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 801118c:	c9 e1 78 00 	sub r15,r15,r1                                 
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
 8011190:	a2 43 18 00 	and r3,r18,r3                                  
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
 8011194:	b5 b1 88 00 	add r17,r13,r17                                
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
  ssize_t             bytes_written    = 0;                           
 8011198:	34 13 00 00 	mvi r19,0                                      
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 801119c:	34 14 00 01 	mvi r20,1                                      
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
 80111a0:	44 60 00 1c 	be r3,r0,8011210 <fat_cluster_set+0x138>       <== NEVER TAKEN
         && (0 < bytes_to_write))                                     
  {                                                                   
    uint32_t c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
 80111a4:	2d 70 00 0a 	lhu r16,(r11+10)                               
 80111a8:	ca 0f 30 00 	sub r6,r16,r15                                 
 80111ac:	b8 c0 60 00 	mv r12,r6                                      
 80111b0:	51 c6 00 02 	bgeu r14,r6,80111b8 <fat_cluster_set+0xe0>     <== ALWAYS TAKEN
 80111b4:	b9 c0 60 00 	mv r12,r14                                     <== NOT EXECUTED
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
 80111b8:	b9 80 68 00 	mv r13,r12                                     
 80111bc:	50 cc 00 02 	bgeu r6,r12,80111c4 <fat_cluster_set+0xec>     <== ALWAYS TAKEN
 80111c0:	b8 c0 68 00 	mv r13,r6                                      <== NOT EXECUTED
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
 80111c4:	41 63 00 02 	lbu r3,(r11+2)                                 
 80111c8:	41 64 00 0c 	lbu r4,(r11+12)                                
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
 80111cc:	45 a0 00 2f 	be r13,r0,8011288 <fat_cluster_set+0x1b0>      <== NEVER TAKEN
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 80111d0:	c8 83 10 00 	sub r2,r4,r3                                   
 80111d4:	ba 20 08 00 	mv r1,r17                                      
 80111d8:	fb ff bf e3 	calli 8001164 <__ashlsi3>                      
 80111dc:	b8 20 10 00 	mv r2,r1                                       
    {                                                                 
        if (bytes_to_write == fs_info->vol.bytes_per_block)           
 80111e0:	46 0d 00 2c 	be r16,r13,8011290 <fat_cluster_set+0x1b8>     
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
        }                                                             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
 80111e4:	b9 60 08 00 	mv r1,r11                                      
 80111e8:	34 03 00 01 	mvi r3,1                                       
 80111ec:	37 84 00 34 	addi r4,sp,52                                  
 80111f0:	fb ff ff 00 	calli 8010df0 <fat_buf_access>                 
                                                                      
        if (RC_OK == rc)                                              
 80111f4:	44 20 00 1f 	be r1,r0,8011270 <fat_cluster_set+0x198>       <== ALWAYS TAKEN
        cur_blk,                                                      
        ofs_blk,                                                      
        c,                                                            
        pattern);                                                     
    if (c != ret)                                                     
      rc = -1;                                                        
 80111f8:	34 04 ff ff 	mvi r4,-1                                      
        fs_info,                                                      
        cur_blk,                                                      
        ofs_blk,                                                      
        c,                                                            
        pattern);                                                     
    if (c != ret)                                                     
 80111fc:	44 2c 00 16 	be r1,r12,8011254 <fat_cluster_set+0x17c>      <== ALWAYS TAKEN
      rc = -1;                                                        
    else                                                              
    {                                                                 
        bytes_to_write -= ret;                                        
        bytes_written  += ret;                                        
        ++cur_blk;                                                    
 8011200:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
 8011204:	64 83 00 00 	cmpei r3,r4,0                                  
 8011208:	a2 43 18 00 	and r3,r18,r3                                  
 801120c:	5c 60 ff e6 	bne r3,r0,80111a4 <fat_cluster_set+0xcc>       <== NEVER TAKEN
        bytes_written  += ret;                                        
        ++cur_blk;                                                    
    }                                                                 
    ofs_blk = 0;                                                      
  }                                                                   
  if (RC_OK != rc)                                                    
 8011210:	5c 83 00 02 	bne r4,r3,8011218 <fat_cluster_set+0x140>      <== NEVER TAKEN
 8011214:	ba 60 20 00 	mv r4,r19                                      
    return rc;                                                        
  else                                                                
    return bytes_written;                                             
}                                                                     
 8011218:	b8 80 08 00 	mv r1,r4                                       
 801121c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011220:	2b 8b 00 30 	lw r11,(sp+48)                                 
 8011224:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 8011228:	2b 8d 00 28 	lw r13,(sp+40)                                 
 801122c:	2b 8e 00 24 	lw r14,(sp+36)                                 
 8011230:	2b 8f 00 20 	lw r15,(sp+32)                                 
 8011234:	2b 90 00 1c 	lw r16,(sp+28)                                 
 8011238:	2b 91 00 18 	lw r17,(sp+24)                                 
 801123c:	2b 92 00 14 	lw r18,(sp+20)                                 
 8011240:	2b 93 00 10 	lw r19,(sp+16)                                 
 8011244:	2b 94 00 0c 	lw r20,(sp+12)                                 
 8011248:	2b 95 00 08 	lw r21,(sp+8)                                  
 801124c:	37 9c 00 34 	addi sp,sp,52                                  
 8011250:	c3 a0 00 00 	ret                                            
        pattern);                                                     
    if (c != ret)                                                     
      rc = -1;                                                        
    else                                                              
    {                                                                 
        bytes_to_write -= ret;                                        
 8011254:	c9 c1 70 00 	sub r14,r14,r1                                 
 8011258:	7d d2 00 00 	cmpnei r18,r14,0                               
        bytes_written  += ret;                                        
 801125c:	b6 61 98 00 	add r19,r19,r1                                 
        ++cur_blk;                                                    
 8011260:	36 31 00 01 	addi r17,r17,1                                 
 8011264:	34 04 00 00 	mvi r4,0                                       
 8011268:	34 0f 00 00 	mvi r15,0                                      
 801126c:	e3 ff ff e6 	bi 8011204 <fat_cluster_set+0x12c>             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
                                                                      
        if (RC_OK == rc)                                              
        {                                                             
            memset(blk_buf + offset, pattern, bytes_to_write);        
 8011270:	2b 81 00 34 	lw r1,(sp+52)                                  
 8011274:	ba a0 10 00 	mv r2,r21                                      
 8011278:	b9 a0 18 00 	mv r3,r13                                      
 801127c:	b4 2f 08 00 	add r1,r1,r15                                  
 8011280:	f8 00 30 ec 	calli 801d630 <memset>                         
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 8011284:	31 74 00 88 	sb (r11+136),r20                               
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
 8011288:	b9 a0 08 00 	mv r1,r13                                      
 801128c:	e3 ff ff db 	bi 80111f8 <fat_cluster_set+0x120>             
                                                                      
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (bytes_to_write == fs_info->vol.bytes_per_block)           
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
 8011290:	b9 60 08 00 	mv r1,r11                                      
 8011294:	34 03 00 02 	mvi r3,2                                       
 8011298:	37 84 00 34 	addi r4,sp,52                                  
 801129c:	fb ff fe d5 	calli 8010df0 <fat_buf_access>                 
 80112a0:	e3 ff ff d5 	bi 80111f4 <fat_cluster_set+0x11c>             
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 80112a4:	41 6c 00 0c 	lbu r12,(r11+12)                               <== NOT EXECUTED
 80112a8:	41 62 00 02 	lbu r2,(r11+2)                                 <== NOT EXECUTED
 80112ac:	29 61 00 20 	lw r1,(r11+32)                                 <== NOT EXECUTED
 80112b0:	c9 82 10 00 	sub r2,r12,r2                                  <== NOT EXECUTED
 80112b4:	f8 00 77 51 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
 80112b8:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
 80112bc:	e3 ff ff ab 	bi 8011168 <fat_cluster_set+0x90>              <== NOT EXECUTED
                                                                      

080112c0 <fat_cluster_write>: const uint32_t start_cln, const uint32_t offset, const uint32_t count, const void *buff, const bool overwrite_cluster) {
 80112c0:	37 9c ff c8 	addi sp,sp,-56                                 
 80112c4:	5b 8b 00 34 	sw (sp+52),r11                                 
 80112c8:	5b 8c 00 30 	sw (sp+48),r12                                 
 80112cc:	5b 8d 00 2c 	sw (sp+44),r13                                 
 80112d0:	5b 8e 00 28 	sw (sp+40),r14                                 
 80112d4:	5b 8f 00 24 	sw (sp+36),r15                                 
 80112d8:	5b 90 00 20 	sw (sp+32),r16                                 
 80112dc:	5b 91 00 1c 	sw (sp+28),r17                                 
 80112e0:	5b 92 00 18 	sw (sp+24),r18                                 
 80112e4:	5b 93 00 14 	sw (sp+20),r19                                 
 80112e8:	5b 94 00 10 	sw (sp+16),r20                                 
 80112ec:	5b 95 00 0c 	sw (sp+12),r21                                 
 80112f0:	5b 96 00 08 	sw (sp+8),r22                                  
 80112f4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80112f8:	b8 20 58 00 	mv r11,r1                                      
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 80112fc:	2c 21 00 06 	lhu r1,(r1+6)                                  
    const uint32_t                        start_cln,                  
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
 8011300:	b8 60 78 00 	mv r15,r3                                      
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 8011304:	b8 80 68 00 	mv r13,r4                                      
 8011308:	c8 23 08 00 	sub r1,r1,r3                                   
    const uint32_t                        start_cln,                  
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
 801130c:	b8 a0 b0 00 	mv r22,r5                                      
 8011310:	20 d4 00 ff 	andi r20,r6,0xff                               
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
 8011314:	50 24 00 02 	bgeu r1,r4,801131c <fat_cluster_write+0x5c>    <== ALWAYS TAKEN
 8011318:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 801131c:	5c 40 00 04 	bne r2,r0,801132c <fat_cluster_write+0x6c>     
 8011320:	41 61 00 0e 	lbu r1,(r11+14)                                
 8011324:	20 21 00 03 	andi r1,r1,0x3                                 
 8011328:	5c 22 00 5d 	bne r1,r2,801149c <fat_cluster_write+0x1dc>    <== ALWAYS TAKEN
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
 801132c:	41 63 00 08 	lbu r3,(r11+8)                                 
 8011330:	41 6c 00 0c 	lbu r12,(r11+12)                               
 8011334:	34 41 ff fe 	addi r1,r2,-2                                  
 8011338:	c8 6c 10 00 	sub r2,r3,r12                                  
 801133c:	fb ff bf 8a 	calli 8001164 <__ashlsi3>                      
 8011340:	41 62 00 02 	lbu r2,(r11+2)                                 
 8011344:	b8 20 88 00 	mv r17,r1                                      
 8011348:	29 61 00 34 	lw r1,(r11+52)                                 
 801134c:	c9 82 10 00 	sub r2,r12,r2                                  
 8011350:	f8 00 77 2a 	calli 802eff8 <__lshrsi3>                      
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
 8011354:	b6 21 88 00 	add r17,r17,r1                                 
    const bool                            overwrite_cluster)          
{                                                                     
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
 8011358:	b9 e0 08 00 	mv r1,r15                                      
 801135c:	b9 80 10 00 	mv r2,r12                                      
 8011360:	f8 00 77 26 	calli 802eff8 <__lshrsi3>                      
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 8011364:	b9 80 10 00 	mv r2,r12                                      
    const bool                            overwrite_cluster)          
{                                                                     
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
 8011368:	b8 20 70 00 	mv r14,r1                                      
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 801136c:	fb ff bf 7e 	calli 8001164 <__ashlsi3>                      
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
    ssize_t             rc               = RC_OK;                     
 8011370:	34 02 00 00 	mvi r2,0                                       
 8011374:	7d b2 00 00 	cmpnei r18,r13,0                               
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
 8011378:	64 43 00 00 	cmpei r3,r2,0                                  
{                                                                     
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
 801137c:	c9 e1 78 00 	sub r15,r15,r1                                 
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
 8011380:	a2 43 18 00 	and r3,r18,r3                                  
    ssize_t             bytes_written    = 0;                         
    uint8_t             *buffer          = (uint8_t*)buff;            
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
 8011384:	b5 d1 88 00 	add r17,r14,r17                                
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
    ssize_t             bytes_written    = 0;                         
 8011388:	34 13 00 00 	mvi r19,0                                      
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 801138c:	34 15 00 01 	mvi r21,1                                      
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
 8011390:	44 60 00 1d 	be r3,r0,8011404 <fat_cluster_write+0x144>     <== NEVER TAKEN
           && (0 < bytes_to_write))                                   
    {                                                                 
      c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
 8011394:	2d 70 00 0a 	lhu r16,(r11+10)                               
 8011398:	ca 0f 10 00 	sub r2,r16,r15                                 
 801139c:	b8 40 60 00 	mv r12,r2                                      
 80113a0:	51 a2 00 02 	bgeu r13,r2,80113a8 <fat_cluster_write+0xe8>   
 80113a4:	b9 a0 60 00 	mv r12,r13                                     
    const uint32_t                        count,                      
    const void                           *buf,                        
    const bool                            overwrite_block)            
{                                                                     
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
 80113a8:	b9 80 70 00 	mv r14,r12                                     
 80113ac:	50 4c 00 02 	bgeu r2,r12,80113b4 <fat_cluster_write+0xf4>   <== ALWAYS TAKEN
 80113b0:	b8 40 70 00 	mv r14,r2                                      <== NOT EXECUTED
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
 80113b4:	41 62 00 02 	lbu r2,(r11+2)                                 
 80113b8:	41 63 00 0c 	lbu r3,(r11+12)                                
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
 80113bc:	45 c0 00 31 	be r14,r0,8011480 <fat_cluster_write+0x1c0>    <== NEVER TAKEN
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 80113c0:	c8 62 10 00 	sub r2,r3,r2                                   
 80113c4:	ba 20 08 00 	mv r1,r17                                      
 80113c8:	fb ff bf 67 	calli 8001164 <__ashlsi3>                      
 80113cc:	b8 20 10 00 	mv r2,r1                                       
    {                                                                 
        if (   overwrite_block                                        
 80113d0:	5e 80 00 2e 	bne r20,r0,8011488 <fat_cluster_write+0x1c8>   
            || (bytes_to_write == fs_info->vol.bytes_per_block))      
 80113d4:	46 0e 00 2d 	be r16,r14,8011488 <fat_cluster_write+0x1c8>   
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
        }                                                             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
 80113d8:	b9 60 08 00 	mv r1,r11                                      
 80113dc:	34 03 00 01 	mvi r3,1                                       
 80113e0:	37 84 00 38 	addi r4,sp,56                                  
 80113e4:	fb ff fe 83 	calli 8010df0 <fat_buf_access>                 
                                                                      
        if (RC_OK == rc)                                              
 80113e8:	44 20 00 20 	be r1,r0,8011468 <fat_cluster_write+0x1a8>     <== ALWAYS TAKEN
          ofs_blk,                                                    
          c,                                                          
          &buffer[bytes_written],                                     
          overwrite_cluster);                                         
      if (c != ret)                                                   
        rc = -1;                                                      
 80113ec:	34 02 ff ff 	mvi r2,-1                                      
          cur_blk,                                                    
          ofs_blk,                                                    
          c,                                                          
          &buffer[bytes_written],                                     
          overwrite_cluster);                                         
      if (c != ret)                                                   
 80113f0:	44 2c 00 17 	be r1,r12,801144c <fat_cluster_write+0x18c>    <== ALWAYS TAKEN
        rc = -1;                                                      
      else                                                            
      {                                                               
          bytes_to_write -= ret;                                      
          bytes_written  += ret;                                      
          ++cur_blk;                                                  
 80113f4:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
 80113f8:	64 43 00 00 	cmpei r3,r2,0                                  
 80113fc:	a2 43 18 00 	and r3,r18,r3                                  
 8011400:	5c 60 ff e5 	bne r3,r0,8011394 <fat_cluster_write+0xd4>     <== NEVER TAKEN
          bytes_written  += ret;                                      
          ++cur_blk;                                                  
      }                                                               
      ofs_blk = 0;                                                    
    }                                                                 
    if (RC_OK != rc)                                                  
 8011404:	5c 43 00 02 	bne r2,r3,801140c <fat_cluster_write+0x14c>    <== NEVER TAKEN
 8011408:	ba 60 10 00 	mv r2,r19                                      
      return rc;                                                      
    else                                                              
      return bytes_written;                                           
}                                                                     
 801140c:	b8 40 08 00 	mv r1,r2                                       
 8011410:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011414:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8011418:	2b 8c 00 30 	lw r12,(sp+48)                                 
 801141c:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8011420:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8011424:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8011428:	2b 90 00 20 	lw r16,(sp+32)                                 
 801142c:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8011430:	2b 92 00 18 	lw r18,(sp+24)                                 
 8011434:	2b 93 00 14 	lw r19,(sp+20)                                 
 8011438:	2b 94 00 10 	lw r20,(sp+16)                                 
 801143c:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8011440:	2b 96 00 08 	lw r22,(sp+8)                                  
 8011444:	37 9c 00 38 	addi sp,sp,56                                  
 8011448:	c3 a0 00 00 	ret                                            
          overwrite_cluster);                                         
      if (c != ret)                                                   
        rc = -1;                                                      
      else                                                            
      {                                                               
          bytes_to_write -= ret;                                      
 801144c:	c9 a1 68 00 	sub r13,r13,r1                                 
 8011450:	7d b2 00 00 	cmpnei r18,r13,0                               
          bytes_written  += ret;                                      
 8011454:	b6 61 98 00 	add r19,r19,r1                                 
          ++cur_blk;                                                  
 8011458:	36 31 00 01 	addi r17,r17,1                                 
 801145c:	34 02 00 00 	mvi r2,0                                       
 8011460:	34 0f 00 00 	mvi r15,0                                      
 8011464:	e3 ff ff e5 	bi 80113f8 <fat_cluster_write+0x138>           
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
                                                                      
        if (RC_OK == rc)                                              
        {                                                             
            memcpy(blk_buf + offset, buf, bytes_to_write);            
 8011468:	2b 81 00 38 	lw r1,(sp+56)                                  
 801146c:	b6 d3 10 00 	add r2,r22,r19                                 
 8011470:	b9 c0 18 00 	mv r3,r14                                      
 8011474:	b4 2f 08 00 	add r1,r1,r15                                  
 8011478:	f8 00 30 2d 	calli 801d52c <memcpy>                         
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 801147c:	31 75 00 88 	sb (r11+136),r21                               
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
 8011480:	b9 c0 08 00 	mv r1,r14                                      
 8011484:	e3 ff ff da 	bi 80113ec <fat_cluster_write+0x12c>           
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (   overwrite_block                                        
            || (bytes_to_write == fs_info->vol.bytes_per_block))      
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
 8011488:	b9 60 08 00 	mv r1,r11                                      
 801148c:	34 03 00 02 	mvi r3,2                                       
 8011490:	37 84 00 38 	addi r4,sp,56                                  
 8011494:	fb ff fe 57 	calli 8010df0 <fat_buf_access>                 
 8011498:	e3 ff ff d4 	bi 80113e8 <fat_cluster_write+0x128>           
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
 801149c:	41 6c 00 0c 	lbu r12,(r11+12)                               
 80114a0:	41 62 00 02 	lbu r2,(r11+2)                                 
 80114a4:	29 61 00 20 	lw r1,(r11+32)                                 
 80114a8:	c9 82 10 00 	sub r2,r12,r2                                  
 80114ac:	f8 00 76 d3 	calli 802eff8 <__lshrsi3>                      
 80114b0:	b8 20 88 00 	mv r17,r1                                      
 80114b4:	e3 ff ff a9 	bi 8011358 <fat_cluster_write+0x98>            
                                                                      

080103d8 <fat_file_close>: int fat_file_close( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd ) {
 80103d8:	37 9c ff f0 	addi sp,sp,-16                                 
 80103dc:	5b 8b 00 10 	sw (sp+16),r11                                 
 80103e0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80103e4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80103e8:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    /*                                                                
     * if links_num field of fat-file descriptor is greater than 1    
     * decrement the count of links and return                        
     */                                                               
    if (fat_fd->links_num > 1)                                        
 80103ec:	28 43 00 08 	lw r3,(r2+8)                                   
 80103f0:	34 04 00 01 	mvi r4,1                                       
int                                                                   
fat_file_close(                                                       
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 80103f4:	b8 40 58 00 	mv r11,r2                                      
 80103f8:	b8 20 68 00 	mv r13,r1                                      
                                                                      
    /*                                                                
     * if links_num field of fat-file descriptor is greater than 1    
     * decrement the count of links and return                        
     */                                                               
    if (fat_fd->links_num > 1)                                        
 80103fc:	50 83 00 0b 	bgeu r4,r3,8010428 <fat_file_close+0x50>       
    {                                                                 
        fat_fd->links_num--;                                          
 8010400:	34 63 ff ff 	addi r3,r3,-1                                  
 8010404:	58 43 00 08 	sw (r2+8),r3                                   
        return rc;                                                    
 8010408:	34 0c 00 00 	mvi r12,0                                      
     * flush any modified "cached" buffer back to disk                
     */                                                               
    rc = fat_buf_release(fs_info);                                    
                                                                      
    return rc;                                                        
}                                                                     
 801040c:	b9 80 08 00 	mv r1,r12                                      
 8010410:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010414:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010418:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801041c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8010420:	37 9c 00 10 	addi sp,sp,16                                  
 8010424:	c3 a0 00 00 	ret                                            
        return rc;                                                    
    }                                                                 
                                                                      
    key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname);         
                                                                      
    if (fat_fd->flags & FAT_FILE_REMOVED)                             
 8010428:	40 4c 00 30 	lbu r12,(r2+48)                                
 801042c:	21 8c 00 01 	andi r12,r12,0x1                               
 8010430:	45 80 00 0e 	be r12,r0,8010468 <fat_file_close+0x90>        
    {                                                                 
        rc = fat_file_truncate(fs_info, fat_fd, 0);                   
 8010434:	34 03 00 00 	mvi r3,0                                       
 8010438:	fb ff ff 9a 	calli 80102a0 <fat_file_truncate>              
 801043c:	b8 20 60 00 	mv r12,r1                                      
        if ( rc != RC_OK )                                            
 8010440:	5c 20 ff f3 	bne r1,r0,801040c <fat_file_close+0x34>        <== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8010444:	b9 60 08 00 	mv r1,r11                                      
 8010448:	f8 00 13 fd 	calli 801543c <_Chain_Extract>                 
            return rc;                                                
                                                                      
        _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);       
                                                                      
        if ( fat_ino_is_unique(fs_info, fat_fd->ino) )                
 801044c:	29 62 00 0c 	lw r2,(r11+12)                                 
 8010450:	b9 a0 08 00 	mv r1,r13                                      
 8010454:	f8 00 07 dc 	calli 80123c4 <fat_ino_is_unique>              
 8010458:	5c 2c 00 15 	bne r1,r12,80104ac <fat_file_close+0xd4>       <== NEVER TAKEN
            fat_fd->links_num = 0;                                    
        }                                                             
        else                                                          
        {                                                             
            _hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);   
            free(fat_fd);                                             
 801045c:	b9 60 08 00 	mv r1,r11                                      
 8010460:	fb ff ca fa 	calli 8003048 <free>                           
 8010464:	e0 00 00 05 	bi 8010478 <fat_file_close+0xa0>               
                                                                      
        free(fat_fd);                                                 
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_ino_is_unique(fs_info, fat_fd->ino))                  
 8010468:	28 42 00 0c 	lw r2,(r2+12)                                  
 801046c:	f8 00 07 d6 	calli 80123c4 <fat_ino_is_unique>              
 8010470:	44 2c 00 0c 	be r1,r12,80104a0 <fat_file_close+0xc8>        
        {                                                             
            fat_fd->links_num = 0;                                    
 8010474:	59 60 00 08 	sw (r11+8),r0                                  
        }                                                             
    }                                                                 
    /*                                                                
     * flush any modified "cached" buffer back to disk                
     */                                                               
    rc = fat_buf_release(fs_info);                                    
 8010478:	b9 a0 08 00 	mv r1,r13                                      
 801047c:	f8 00 01 e2 	calli 8010c04 <fat_buf_release>                
 8010480:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    return rc;                                                        
}                                                                     
 8010484:	b9 80 08 00 	mv r1,r12                                      
 8010488:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801048c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010490:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8010494:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8010498:	37 9c 00 10 	addi sp,sp,16                                  
 801049c:	c3 a0 00 00 	ret                                            
 80104a0:	b9 60 08 00 	mv r1,r11                                      
 80104a4:	f8 00 13 e6 	calli 801543c <_Chain_Extract>                 
 80104a8:	e3 ff ff ed 	bi 801045c <fat_file_close+0x84>               
            return rc;                                                
                                                                      
        _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);       
                                                                      
        if ( fat_ino_is_unique(fs_info, fat_fd->ino) )                
            fat_free_unique_ino(fs_info, fat_fd->ino);                
 80104ac:	29 62 00 0c 	lw r2,(r11+12)                                 <== NOT EXECUTED
 80104b0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80104b4:	f8 00 07 af 	calli 8012370 <fat_free_unique_ino>            <== NOT EXECUTED
 80104b8:	e3 ff ff e9 	bi 801045c <fat_file_close+0x84>               <== NOT EXECUTED
                                                                      

080105ac <fat_file_extend>: fat_file_fd_t *fat_fd, bool zero_fill, uint32_t new_length, uint32_t *a_length ) {
 80105ac:	37 9c ff c4 	addi sp,sp,-60                                 
 80105b0:	5b 8b 00 28 	sw (sp+40),r11                                 
 80105b4:	5b 8c 00 24 	sw (sp+36),r12                                 
 80105b8:	5b 8d 00 20 	sw (sp+32),r13                                 
 80105bc:	5b 8e 00 1c 	sw (sp+28),r14                                 
 80105c0:	5b 8f 00 18 	sw (sp+24),r15                                 
 80105c4:	5b 90 00 14 	sw (sp+20),r16                                 
 80105c8:	5b 91 00 10 	sw (sp+16),r17                                 
 80105cc:	5b 92 00 0c 	sw (sp+12),r18                                 
 80105d0:	5b 93 00 08 	sw (sp+8),r19                                  
 80105d4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80105d8:	b8 a0 88 00 	mv r17,r5                                      
    uint32_t       last_cl = 0;                                       
    uint32_t       bytes_remain = 0;                                  
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
 80105dc:	5a 24 00 00 	sw (r17+0),r4                                  
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
 80105e0:	28 47 00 18 	lw r7,(r2+24)                                  
    uint32_t                              new_length,                 
    uint32_t                             *a_length                    
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       chain = 0;                                         
 80105e4:	5b 80 00 3c 	sw (sp+60),r0                                  
    uint32_t       bytes2add = 0;                                     
    uint32_t       cls2add = 0;                                       
    uint32_t       old_last_cl;                                       
    uint32_t       last_cl = 0;                                       
 80105e8:	5b 80 00 34 	sw (sp+52),r0                                  
    fat_file_fd_t                        *fat_fd,                     
    bool                                  zero_fill,                  
    uint32_t                              new_length,                 
    uint32_t                             *a_length                    
    )                                                                 
{                                                                     
 80105ec:	b8 80 68 00 	mv r13,r4                                      
 80105f0:	b8 40 58 00 	mv r11,r2                                      
 80105f4:	b8 20 70 00 	mv r14,r1                                      
 80105f8:	20 72 00 ff 	andi r18,r3,0xff                               
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
        return RC_OK;                                                 
 80105fc:	34 0c 00 00 	mvi r12,0                                      
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
 8010600:	50 e4 00 11 	bgeu r7,r4,8010644 <fat_file_extend+0x98>      
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010604:	28 42 00 20 	lw r2,(r2+32)                                  
 8010608:	34 01 00 01 	mvi r1,1                                       
 801060c:	44 41 00 49 	be r2,r1,8010730 <fat_file_extend+0x184>       
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
 8010610:	2d cf 00 06 	lhu r15,(r14+6)                                
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
                   (fs_info->vol.bpc - 1);                            
                                                                      
    bytes2add = new_length - fat_fd->fat_file_size;                   
 8010614:	c9 a7 10 00 	sub r2,r13,r7                                  
                                                                      
    if (bytes2add > bytes_remain)                                     
        bytes2add -= bytes_remain;                                    
    else                                                              
        bytes2add = 0;                                                
 8010618:	34 10 00 00 	mvi r16,0                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
 801061c:	35 e1 ff ff 	addi r1,r15,-1                                 
 8010620:	a0 27 98 00 	and r19,r1,r7                                  
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
 8010624:	c9 f3 78 00 	sub r15,r15,r19                                
 8010628:	a1 e1 78 00 	and r15,r15,r1                                 
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
                   (fs_info->vol.bpc - 1);                            
                                                                      
    bytes2add = new_length - fat_fd->fat_file_size;                   
                                                                      
    if (bytes2add > bytes_remain)                                     
 801062c:	51 e2 00 02 	bgeu r15,r2,8010634 <fat_file_extend+0x88>     
        bytes2add -= bytes_remain;                                    
 8010630:	c8 4f 80 00 	sub r16,r2,r15                                 
    else                                                              
        bytes2add = 0;                                                
                                                                      
    if (zero_fill && bytes_remain > 0) {                              
 8010634:	46 40 00 02 	be r18,r0,801063c <fat_file_extend+0x90>       
 8010638:	5d e0 00 48 	bne r15,r0,8010758 <fat_file_extend+0x1ac>     
     * if in last cluster allocated for the file there is enough room to
     * handle extention (hence we don't need to add even one cluster to the
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
        return RC_OK;                                                 
 801063c:	34 0c 00 00 	mvi r12,0                                      
    /*                                                                
     * if in last cluster allocated for the file there is enough room to
     * handle extention (hence we don't need to add even one cluster to the
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
 8010640:	5e 00 00 0e 	bne r16,r0,8010678 <fat_file_extend+0xcc>      
                                                                      
    *a_length = new_length;                                           
    fat_fd->fat_file_size = new_length;                               
                                                                      
    return RC_OK;                                                     
}                                                                     
 8010644:	b9 80 08 00 	mv r1,r12                                      
 8010648:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801064c:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8010650:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8010654:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8010658:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 801065c:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8010660:	2b 90 00 14 	lw r16,(sp+20)                                 
 8010664:	2b 91 00 10 	lw r17,(sp+16)                                 
 8010668:	2b 92 00 0c 	lw r18,(sp+12)                                 
 801066c:	2b 93 00 08 	lw r19,(sp+8)                                  
 8010670:	37 9c 00 3c 	addi sp,sp,60                                  
 8010674:	c3 a0 00 00 	ret                                            
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
        return RC_OK;                                                 
                                                                      
    cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;         
 8010678:	41 c2 00 08 	lbu r2,(r14+8)                                 
 801067c:	36 01 ff ff 	addi r1,r16,-1                                 
 8010680:	f8 00 7a 5e 	calli 802eff8 <__lshrsi3>                      
 8010684:	34 33 00 01 	addi r19,r1,1                                  
                                                                      
    rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,     
 8010688:	37 82 00 3c 	addi r2,sp,60                                  
 801068c:	b9 c0 08 00 	mv r1,r14                                      
 8010690:	ba 60 18 00 	mv r3,r19                                      
 8010694:	37 84 00 30 	addi r4,sp,48                                  
 8010698:	37 85 00 34 	addi r5,sp,52                                  
 801069c:	ba 40 30 00 	mv r6,r18                                      
 80106a0:	f8 00 27 d7 	calli 801a5fc <fat_scan_fat_for_free_clusters> 
 80106a4:	b8 20 60 00 	mv r12,r1                                      
                                        &cls_added, &last_cl, zero_fill);
                                                                      
    /* this means that low level I/O error occured */                 
    if (rc != RC_OK)                                                  
 80106a8:	5c 20 ff e7 	bne r1,r0,8010644 <fat_file_extend+0x98>       <== NEVER TAKEN
        return rc;                                                    
                                                                      
    /* this means that no space left on device */                     
    if ((cls_added == 0) && (bytes_remain == 0))                      
 80106ac:	2b 92 00 30 	lw r18,(sp+48)                                 
 80106b0:	b9 f2 78 00 	or r15,r15,r18                                 
 80106b4:	45 e1 00 24 	be r15,r1,8010744 <fat_file_extend+0x198>      <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
                                                                      
    /*  check wether we satisfied request for 'cls2add' clusters */   
    if (cls2add != cls_added)                                         
 80106b8:	46 72 00 09 	be r19,r18,80106dc <fat_file_extend+0x130>     <== ALWAYS TAKEN
    {                                                                 
        new_length -= bytes2add & (fs_info->vol.bpc - 1);             
 80106bc:	2d c3 00 06 	lhu r3,(r14+6)                                 <== NOT EXECUTED
        new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2; 
 80106c0:	41 c2 00 08 	lbu r2,(r14+8)                                 <== NOT EXECUTED
 80106c4:	ca 72 08 00 	sub r1,r19,r18                                 <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
                                                                      
    /*  check wether we satisfied request for 'cls2add' clusters */   
    if (cls2add != cls_added)                                         
    {                                                                 
        new_length -= bytes2add & (fs_info->vol.bpc - 1);             
 80106c8:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
 80106cc:	a2 03 80 00 	and r16,r16,r3                                 <== NOT EXECUTED
 80106d0:	c9 b0 68 00 	sub r13,r13,r16                                <== NOT EXECUTED
        new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2; 
 80106d4:	fb ff c2 a4 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 80106d8:	c9 a1 68 00 	sub r13,r13,r1                                 <== NOT EXECUTED
    }                                                                 
                                                                      
    /* add new chain to the end of existed */                         
    if ( fat_fd->fat_file_size == 0 )                                 
 80106dc:	29 64 00 18 	lw r4,(r11+24)                                 
 80106e0:	5c 80 00 34 	bne r4,r0,80107b0 <fat_file_extend+0x204>      
    {                                                                 
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
 80106e4:	2b 81 00 3c 	lw r1,(sp+60)                                  
        fat_fd->map.file_cln = 0;                                     
 80106e8:	59 60 00 34 	sw (r11+52),r0                                 
    }                                                                 
                                                                      
    /* add new chain to the end of existed */                         
    if ( fat_fd->fat_file_size == 0 )                                 
    {                                                                 
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
 80106ec:	59 61 00 1c 	sw (r11+28),r1                                 
 80106f0:	59 61 00 38 	sw (r11+56),r1                                 
        }                                                             
        fat_buf_release(fs_info);                                     
    }                                                                 
                                                                      
    /* update number of the last cluster of the file if it changed */ 
    if (cls_added != 0)                                               
 80106f4:	46 40 00 2c 	be r18,r0,80107a4 <fat_file_extend+0x1f8>      <== NEVER TAKEN
    {                                                                 
        fat_fd->map.last_cln = last_cl;                               
 80106f8:	2b 81 00 34 	lw r1,(sp+52)                                  
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
 80106fc:	29 6f 00 10 	lw r15,(r11+16)                                
    }                                                                 
                                                                      
    /* update number of the last cluster of the file if it changed */ 
    if (cls_added != 0)                                               
    {                                                                 
        fat_fd->map.last_cln = last_cl;                               
 8010700:	59 61 00 3c 	sw (r11+60),r1                                 
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
 8010704:	5d e0 00 28 	bne r15,r0,80107a4 <fat_file_extend+0x1f8>     
        {                                                             
            rc = fat_init_clusters_chain(fs_info, chain);             
 8010708:	2b 82 00 3c 	lw r2,(sp+60)                                  
 801070c:	b9 c0 08 00 	mv r1,r14                                      
 8010710:	f8 00 06 a2 	calli 8012198 <fat_init_clusters_chain>        
 8010714:	b8 20 18 00 	mv r3,r1                                       
            if ( rc != RC_OK )                                        
 8010718:	44 2f 00 23 	be r1,r15,80107a4 <fat_file_extend+0x1f8>      <== ALWAYS TAKEN
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
 801071c:	2b 82 00 3c 	lw r2,(sp+60)                                  <== NOT EXECUTED
 8010720:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
                return rc;                                            
 8010724:	b8 60 60 00 	mv r12,r3                                      <== NOT EXECUTED
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
        {                                                             
            rc = fat_init_clusters_chain(fs_info, chain);             
            if ( rc != RC_OK )                                        
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
 8010728:	f8 00 27 73 	calli 801a4f4 <fat_free_fat_clusters_chain>    <== NOT EXECUTED
                return rc;                                            
 801072c:	e3 ff ff c6 	bi 8010644 <fat_file_extend+0x98>              <== NOT EXECUTED
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010730:	29 61 00 24 	lw r1,(r11+36)                                 
 8010734:	5c 20 ff b7 	bne r1,r0,8010610 <fat_file_extend+0x64>       <== NEVER TAKEN
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
 8010738:	41 c1 00 0e 	lbu r1,(r14+14)                                
 801073c:	20 21 00 03 	andi r1,r1,0x3                                 
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010740:	44 2c ff b4 	be r1,r12,8010610 <fat_file_extend+0x64>       <== NEVER TAKEN
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    /* this means that no space left on device */                     
    if ((cls_added == 0) && (bytes_remain == 0))                      
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
 8010744:	f8 00 30 2c 	calli 801c7f4 <__errno>                        
 8010748:	34 02 00 1c 	mvi r2,28                                      
 801074c:	58 22 00 00 	sw (r1+0),r2                                   
 8010750:	34 0c ff ff 	mvi r12,-1                                     
 8010754:	e3 ff ff bc 	bi 8010644 <fat_file_extend+0x98>              
    else                                                              
        bytes2add = 0;                                                
                                                                      
    if (zero_fill && bytes_remain > 0) {                              
        uint32_t start = fat_fd->fat_file_size;                       
        uint32_t cl_start = start >> fs_info->vol.bpc_log2;           
 8010758:	41 c2 00 08 	lbu r2,(r14+8)                                 
 801075c:	b8 e0 08 00 	mv r1,r7                                       
 8010760:	f8 00 7a 26 	calli 802eff8 <__lshrsi3>                      
 8010764:	b8 20 18 00 	mv r3,r1                                       
        uint32_t ofs = start & (fs_info->vol.bpc - 1);                
        uint32_t cur_cln;                                             
                                                                      
        rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);     
 8010768:	b9 60 10 00 	mv r2,r11                                      
 801076c:	b9 c0 08 00 	mv r1,r14                                      
 8010770:	37 84 00 2c 	addi r4,sp,44                                  
 8010774:	fb ff fd 31 	calli 800fc38 <fat_file_lseek>                 
 8010778:	b8 20 60 00 	mv r12,r1                                      
        if (rc != RC_OK)                                              
 801077c:	5c 20 ff b2 	bne r1,r0,8010644 <fat_file_extend+0x98>       <== NEVER TAKEN
            return rc;                                                
                                                                      
        bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);
 8010780:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8010784:	b9 c0 08 00 	mv r1,r14                                      
 8010788:	ba 60 18 00 	mv r3,r19                                      
 801078c:	b9 e0 20 00 	mv r4,r15                                      
 8010790:	34 05 00 00 	mvi r5,0                                       
 8010794:	f8 00 02 51 	calli 80110d8 <fat_cluster_set>                
        if (bytes_remain != bytes_written)                            
            return -1;                                                
 8010798:	34 0c ff ff 	mvi r12,-1                                     
        rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);     
        if (rc != RC_OK)                                              
            return rc;                                                
                                                                      
        bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);
        if (bytes_remain != bytes_written)                            
 801079c:	5c 2f ff aa 	bne r1,r15,8010644 <fat_file_extend+0x98>      <== NEVER TAKEN
 80107a0:	e3 ff ff a7 	bi 801063c <fat_file_extend+0x90>              
                return rc;                                            
            }                                                         
        }                                                             
    }                                                                 
                                                                      
    *a_length = new_length;                                           
 80107a4:	5a 2d 00 00 	sw (r17+0),r13                                 
    fat_fd->fat_file_size = new_length;                               
 80107a8:	59 6d 00 18 	sw (r11+24),r13                                
                                                                      
    return RC_OK;                                                     
 80107ac:	e3 ff ff a6 	bi 8010644 <fat_file_extend+0x98>              
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
        fat_fd->map.file_cln = 0;                                     
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)              
 80107b0:	29 62 00 3c 	lw r2,(r11+60)                                 
 80107b4:	34 01 ff ff 	mvi r1,-1                                      
 80107b8:	44 41 00 0c 	be r2,r1,80107e8 <fat_file_extend+0x23c>       <== NEVER TAKEN
        {                                                             
            old_last_cl = fat_fd->map.last_cln;                       
 80107bc:	5b 82 00 38 	sw (sp+56),r2                                  
                fat_free_fat_clusters_chain(fs_info, chain);          
                return rc;                                            
            }                                                         
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);        
 80107c0:	2b 83 00 3c 	lw r3,(sp+60)                                  
 80107c4:	b9 c0 08 00 	mv r1,r14                                      
 80107c8:	f8 00 26 3c 	calli 801a0b8 <fat_set_fat_cluster>            
 80107cc:	b8 20 18 00 	mv r3,r1                                       
        if ( rc != RC_OK )                                            
 80107d0:	5c 20 ff d3 	bne r1,r0,801071c <fat_file_extend+0x170>      <== NEVER TAKEN
        {                                                             
            fat_free_fat_clusters_chain(fs_info, chain);              
            return rc;                                                
        }                                                             
        fat_buf_release(fs_info);                                     
 80107d4:	b9 c0 08 00 	mv r1,r14                                      
 80107d8:	f8 00 01 0b 	calli 8010c04 <fat_buf_release>                
 80107dc:	2b 92 00 30 	lw r18,(sp+48)                                 
    }                                                                 
                                                                      
    /* update number of the last cluster of the file if it changed */ 
    if (cls_added != 0)                                               
 80107e0:	46 40 ff f1 	be r18,r0,80107a4 <fat_file_extend+0x1f8>      <== NEVER TAKEN
 80107e4:	e3 ff ff c5 	bi 80106f8 <fat_file_extend+0x14c>             
        {                                                             
            old_last_cl = fat_fd->map.last_cln;                       
        }                                                             
        else                                                          
        {                                                             
            rc = fat_file_ioctl(fs_info, fat_fd, F_CLU_NUM,           
 80107e8:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80107ec:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80107f0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80107f4:	34 84 ff ff 	addi r4,r4,-1                                  <== NOT EXECUTED
 80107f8:	37 85 00 38 	addi r5,sp,56                                  <== NOT EXECUTED
 80107fc:	fb ff ff 30 	calli 80104bc <fat_file_ioctl>                 <== NOT EXECUTED
 8010800:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
                                (fat_fd->fat_file_size - 1), &old_last_cl);
            if ( rc != RC_OK )                                        
 8010804:	5c 20 ff c6 	bne r1,r0,801071c <fat_file_extend+0x170>      <== NOT EXECUTED
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
                return rc;                                            
 8010808:	2b 82 00 38 	lw r2,(sp+56)                                  <== NOT EXECUTED
 801080c:	e3 ff ff ed 	bi 80107c0 <fat_file_extend+0x214>             <== NOT EXECUTED
                                                                      

080104bc <fat_file_ioctl>: fat_file_ioctl( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, int cmd, ...) {
 80104bc:	37 9c ff d4 	addi sp,sp,-44                                 
 80104c0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80104c4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80104c8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80104cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80104d0:	b8 20 60 00 	mv r12,r1                                      
 80104d4:	5b 83 00 18 	sw (sp+24),r3                                  
 80104d8:	5b 84 00 1c 	sw (sp+28),r4                                  
 80104dc:	5b 85 00 20 	sw (sp+32),r5                                  
 80104e0:	5b 86 00 24 	sw (sp+36),r6                                  
 80104e4:	5b 87 00 28 	sw (sp+40),r7                                  
 80104e8:	5b 88 00 2c 	sw (sp+44),r8                                  
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
 80104ec:	5b 80 00 14 	sw (sp+20),r0                                  
    uint32_t      *ret;                                               
    va_list        ap;                                                
                                                                      
    va_start(ap, cmd);                                                
                                                                      
    switch (cmd)                                                      
 80104f0:	34 01 00 01 	mvi r1,1                                       
fat_file_ioctl(                                                       
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd,                     
    int                                   cmd,                        
    ...)                                                              
{                                                                     
 80104f4:	b8 40 58 00 	mv r11,r2                                      
    uint32_t      *ret;                                               
    va_list        ap;                                                
                                                                      
    va_start(ap, cmd);                                                
                                                                      
    switch (cmd)                                                      
 80104f8:	44 61 00 0b 	be r3,r1,8010524 <fat_file_ioctl+0x68>         <== ALWAYS TAKEN
                                                                      
            *ret = cur_cln;                                           
            break;                                                    
                                                                      
        default:                                                      
            errno = EINVAL;                                           
 80104fc:	f8 00 30 be 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010500:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8010504:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
            rc = -1;                                                  
 8010508:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
            break;                                                    
    }                                                                 
    va_end(ap);                                                       
    return rc;                                                        
}                                                                     
 801050c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010510:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010514:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8010518:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801051c:	37 9c 00 2c 	addi sp,sp,44                                  
 8010520:	c3 a0 00 00 	ret                                            
        case F_CLU_NUM:                                               
            pos = va_arg(ap, uint32_t);                               
            ret = va_arg(ap, uint32_t *);                             
                                                                      
            /* sanity check */                                        
            if ( pos >= fat_fd->fat_file_size ) {                     
 8010524:	28 41 00 18 	lw r1,(r2+24)                                  
                                                                      
    switch (cmd)                                                      
    {                                                                 
        case F_CLU_NUM:                                               
            pos = va_arg(ap, uint32_t);                               
            ret = va_arg(ap, uint32_t *);                             
 8010528:	b8 a0 68 00 	mv r13,r5                                      
                                                                      
            /* sanity check */                                        
            if ( pos >= fat_fd->fat_file_size ) {                     
 801052c:	54 24 00 06 	bgu r1,r4,8010544 <fat_file_ioctl+0x88>        <== ALWAYS TAKEN
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
 8010530:	f8 00 30 b1 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010534:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8010538:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801053c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8010540:	e3 ff ff f3 	bi 801050c <fat_file_ioctl+0x50>               <== NOT EXECUTED
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
 8010544:	28 41 00 20 	lw r1,(r2+32)                                  
 8010548:	44 23 00 12 	be r1,r3,8010590 <fat_file_ioctl+0xd4>         
                *ret  = 0;                                            
                rc = RC_OK;                                           
                break;                                                
            }                                                         
                                                                      
            cl_start = pos >> fs_info->vol.bpc_log2;                  
 801054c:	41 82 00 08 	lbu r2,(r12+8)                                 
 8010550:	b8 80 08 00 	mv r1,r4                                       
 8010554:	f8 00 7a a9 	calli 802eff8 <__lshrsi3>                      
 8010558:	b8 20 18 00 	mv r3,r1                                       
                                                                      
            rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln); 
 801055c:	b9 60 10 00 	mv r2,r11                                      
 8010560:	b9 80 08 00 	mv r1,r12                                      
 8010564:	37 84 00 14 	addi r4,sp,20                                  
 8010568:	fb ff fd b4 	calli 800fc38 <fat_file_lseek>                 
            if ( rc != RC_OK )                                        
 801056c:	5c 20 ff e8 	bne r1,r0,801050c <fat_file_ioctl+0x50>        <== NEVER TAKEN
                break;                                                
                                                                      
            *ret = cur_cln;                                           
 8010570:	2b 82 00 14 	lw r2,(sp+20)                                  
 8010574:	59 a2 00 00 	sw (r13+0),r2                                  
            rc = -1;                                                  
            break;                                                    
    }                                                                 
    va_end(ap);                                                       
    return rc;                                                        
}                                                                     
 8010578:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801057c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010580:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8010584:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8010588:	37 9c 00 2c 	addi sp,sp,44                                  
 801058c:	c3 a0 00 00 	ret                                            
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
 8010590:	28 41 00 24 	lw r1,(r2+36)                                  
 8010594:	5c 20 ff ee 	bne r1,r0,801054c <fat_file_ioctl+0x90>        <== NEVER TAKEN
                (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))        
 8010598:	41 82 00 0e 	lbu r2,(r12+14)                                
 801059c:	20 42 00 03 	andi r2,r2,0x3                                 
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
 80105a0:	44 41 ff eb 	be r2,r1,801054c <fat_file_ioctl+0x90>         
                (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))        
            {                                                         
                /* cluster 0 (zero) reserved for root dir */          
                *ret  = 0;                                            
 80105a4:	58 a0 00 00 	sw (r5+0),r0                                   
                rc = RC_OK;                                           
                break;                                                
 80105a8:	e3 ff ff d9 	bi 801050c <fat_file_ioctl+0x50>               
                                                                      

0800fc38 <fat_file_lseek>: fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, uint32_t file_cln, uint32_t *disk_cln ) {
 800fc38:	37 9c ff e0 	addi sp,sp,-32                                 
 800fc3c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800fc40:	5b 8c 00 18 	sw (sp+24),r12                                 
 800fc44:	5b 8d 00 14 	sw (sp+20),r13                                 
 800fc48:	5b 8e 00 10 	sw (sp+16),r14                                 
 800fc4c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800fc50:	5b 90 00 08 	sw (sp+8),r16                                  
 800fc54:	5b 9d 00 04 	sw (sp+4),ra                                   
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
 800fc58:	28 4c 00 34 	lw r12,(r2+52)                                 
    fat_fs_info_t                         *fs_info,                   
    fat_file_fd_t                         *fat_fd,                    
    uint32_t                               file_cln,                  
    uint32_t                              *disk_cln                   
    )                                                                 
{                                                                     
 800fc5c:	b8 40 78 00 	mv r15,r2                                      
 800fc60:	b8 60 70 00 	mv r14,r3                                      
 800fc64:	b8 20 68 00 	mv r13,r1                                      
 800fc68:	b8 80 80 00 	mv r16,r4                                      
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
 800fc6c:	45 83 00 22 	be r12,r3,800fcf4 <fat_file_lseek+0xbc>        
    {                                                                 
        uint32_t   cur_cln;                                           
        uint32_t   count;                                             
        uint32_t   i;                                                 
                                                                      
        if (file_cln > fat_fd->map.file_cln)                          
 800fc70:	51 83 00 17 	bgeu r12,r3,800fccc <fat_file_lseek+0x94>      <== NEVER TAKEN
        {                                                             
            cur_cln = fat_fd->map.disk_cln;                           
 800fc74:	28 42 00 38 	lw r2,(r2+56)                                  
            count = file_cln - fat_fd->map.file_cln;                  
 800fc78:	c8 6c 60 00 	sub r12,r3,r12                                 
        uint32_t   count;                                             
        uint32_t   i;                                                 
                                                                      
        if (file_cln > fat_fd->map.file_cln)                          
        {                                                             
            cur_cln = fat_fd->map.disk_cln;                           
 800fc7c:	5b 82 00 20 	sw (sp+32),r2                                  
            cur_cln = fat_fd->cln;                                    
            count = file_cln;                                         
        }                                                             
                                                                      
        /* skip over the clusters */                                  
        for (i = 0; i < count; i++)                                   
 800fc80:	45 80 00 18 	be r12,r0,800fce0 <fat_file_lseek+0xa8>        <== NEVER TAKEN
 800fc84:	34 0b 00 00 	mvi r11,0                                      
 800fc88:	e0 00 00 03 	bi 800fc94 <fat_file_lseek+0x5c>               
 800fc8c:	51 6c 00 14 	bgeu r11,r12,800fcdc <fat_file_lseek+0xa4>     
 800fc90:	2b 82 00 20 	lw r2,(sp+32)                                  
        {                                                             
            rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);     
 800fc94:	b9 a0 08 00 	mv r1,r13                                      
 800fc98:	37 83 00 20 	addi r3,sp,32                                  
 800fc9c:	f8 00 28 4a 	calli 8019dc4 <fat_get_fat_cluster>            
            cur_cln = fat_fd->cln;                                    
            count = file_cln;                                         
        }                                                             
                                                                      
        /* skip over the clusters */                                  
        for (i = 0; i < count; i++)                                   
 800fca0:	35 6b 00 01 	addi r11,r11,1                                 
        {                                                             
            rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);     
            if ( rc != RC_OK )                                        
 800fca4:	44 20 ff fa 	be r1,r0,800fc8c <fat_file_lseek+0x54>         <== ALWAYS TAKEN
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
 800fca8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800fcac:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800fcb0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800fcb4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800fcb8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800fcbc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800fcc0:	2b 90 00 08 	lw r16,(sp+8)                                  
 800fcc4:	37 9c 00 20 	addi sp,sp,32                                  
 800fcc8:	c3 a0 00 00 	ret                                            
            cur_cln = fat_fd->map.disk_cln;                           
            count = file_cln - fat_fd->map.file_cln;                  
        }                                                             
        else                                                          
        {                                                             
            cur_cln = fat_fd->cln;                                    
 800fccc:	28 42 00 1c 	lw r2,(r2+28)                                  
 800fcd0:	b8 60 60 00 	mv r12,r3                                      
 800fcd4:	5b 82 00 20 	sw (sp+32),r2                                  
 800fcd8:	e3 ff ff ea 	bi 800fc80 <fat_file_lseek+0x48>               
            count = file_cln;                                         
        }                                                             
                                                                      
        /* skip over the clusters */                                  
        for (i = 0; i < count; i++)                                   
 800fcdc:	2b 82 00 20 	lw r2,(sp+32)                                  
            if ( rc != RC_OK )                                        
                return rc;                                            
        }                                                             
                                                                      
        /* update cache */                                            
        fat_fd->map.file_cln = file_cln;                              
 800fce0:	59 ee 00 34 	sw (r15+52),r14                                
        fat_fd->map.disk_cln = cur_cln;                               
 800fce4:	59 e2 00 38 	sw (r15+56),r2                                 
                                                                      
        *disk_cln = cur_cln;                                          
 800fce8:	5a 02 00 00 	sw (r16+0),r2                                  
    }                                                                 
    return RC_OK;                                                     
 800fcec:	34 01 00 00 	mvi r1,0                                       
 800fcf0:	e3 ff ff ee 	bi 800fca8 <fat_file_lseek+0x70>               
    )                                                                 
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
        *disk_cln = fat_fd->map.disk_cln;                             
 800fcf4:	28 42 00 38 	lw r2,(r2+56)                                  
        fat_fd->map.file_cln = file_cln;                              
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
 800fcf8:	34 01 00 00 	mvi r1,0                                       
    )                                                                 
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
        *disk_cln = fat_fd->map.disk_cln;                             
 800fcfc:	58 82 00 00 	sw (r4+0),r2                                   
 800fd00:	e3 ff ff ea 	bi 800fca8 <fat_file_lseek+0x70>               
                                                                      

0800fd04 <fat_file_open>: fat_file_open( fat_fs_info_t *fs_info, fat_dir_pos_t *dir_pos, fat_file_fd_t **fat_fd ) {
 800fd04:	37 9c ff d4 	addi sp,sp,-44                                 
 800fd08:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800fd0c:	5b 8c 00 28 	sw (sp+40),r12                                 
 800fd10:	5b 8d 00 24 	sw (sp+36),r13                                 
 800fd14:	5b 8e 00 20 	sw (sp+32),r14                                 
 800fd18:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800fd1c:	5b 90 00 18 	sw (sp+24),r16                                 
 800fd20:	5b 91 00 14 	sw (sp+20),r17                                 
 800fd24:	5b 92 00 10 	sw (sp+16),r18                                 
 800fd28:	5b 93 00 0c 	sw (sp+12),r19                                 
 800fd2c:	5b 94 00 08 	sw (sp+8),r20                                  
 800fd30:	5b 9d 00 04 	sw (sp+4),ra                                   
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800fd34:	28 45 00 00 	lw r5,(r2+0)                                   
 800fd38:	b8 20 60 00 	mv r12,r1                                      
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800fd3c:	34 01 00 01 	mvi r1,1                                       
 800fd40:	b8 40 80 00 	mv r16,r2                                      
 800fd44:	b8 60 a0 00 	mv r20,r3                                      
        return 1;                                                     
 800fd48:	34 0b 00 01 	mvi r11,1                                      
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800fd4c:	44 a1 00 0a 	be r5,r1,800fd74 <fat_file_open+0x70>          
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800fd50:	44 a0 00 58 	be r5,r0,800feb0 <fat_file_open+0x1ac>         
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 800fd54:	41 82 00 05 	lbu r2,(r12+5)                                 
 800fd58:	34 a1 ff fe 	addi r1,r5,-2                                  
 800fd5c:	fb ff c5 02 	calli 8001164 <__ashlsi3>                      
 800fd60:	29 82 00 34 	lw r2,(r12+52)                                 
 800fd64:	b4 22 08 00 	add r1,r1,r2                                   
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
 800fd68:	41 82 00 03 	lbu r2,(r12+3)                                 
 800fd6c:	fb ff c4 fe 	calli 8001164 <__ashlsi3>                      
 800fd70:	b8 20 58 00 	mv r11,r1                                      
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fd74:	2a 0d 00 04 	lw r13,(r16+4)                                 
 800fd78:	34 02 00 09 	mvi r2,9                                       
 800fd7c:	b9 a0 08 00 	mv r1,r13                                      
 800fd80:	f8 00 7c 9e 	calli 802eff8 <__lshrsi3>                      
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fd84:	01 a5 00 01 	srui r5,r13,1                                  
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800fd88:	b5 61 20 00 	add r4,r11,r1                                  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fd8c:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fd90:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fd94:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fd98:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fd9c:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fda0:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fda4:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fda8:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fdac:	20 ad 00 0f 	andi r13,r5,0xf                                
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800fdb0:	b4 8d 68 00 	add r13,r4,r13                                 
    uint32_t                               key1,                      
    uint32_t                               key2,                      
    fat_file_fd_t                          **ret                      
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
 800fdb4:	21 a1 00 01 	andi r1,r13,0x1                                
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
 800fdb8:	b4 21 88 00 	add r17,r1,r1                                  
 800fdbc:	b6 21 88 00 	add r17,r17,r1                                 
 800fdc0:	29 81 00 6c 	lw r1,(r12+108)                                
 800fdc4:	b6 31 88 00 	add r17,r17,r17                                
 800fdc8:	b6 31 88 00 	add r17,r17,r17                                
 800fdcc:	b4 31 08 00 	add r1,r1,r17                                  
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
 800fdd0:	28 2b 00 00 	lw r11,(r1+0)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 800fdd4:	34 32 00 04 	addi r18,r1,4                                  
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
 800fdd8:	45 72 00 3d 	be r11,r18,800fecc <fat_file_open+0x1c8>       
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800fddc:	34 13 00 01 	mvi r19,1                                      
 800fde0:	29 62 00 20 	lw r2,(r11+32)                                 
        return 1;                                                     
 800fde4:	34 0e 00 01 	mvi r14,1                                      
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 800fde8:	34 41 ff fe 	addi r1,r2,-2                                  
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800fdec:	44 53 00 09 	be r2,r19,800fe10 <fat_file_open+0x10c>        
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800fdf0:	44 40 00 2b 	be r2,r0,800fe9c <fat_file_open+0x198>         
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 800fdf4:	41 82 00 05 	lbu r2,(r12+5)                                 
 800fdf8:	fb ff c4 db 	calli 8001164 <__ashlsi3>                      
 800fdfc:	29 82 00 34 	lw r2,(r12+52)                                 
 800fe00:	b4 22 08 00 	add r1,r1,r2                                   
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
 800fe04:	41 82 00 03 	lbu r2,(r12+3)                                 
 800fe08:	fb ff c4 d7 	calli 8001164 <__ashlsi3>                      
 800fe0c:	b8 20 70 00 	mv r14,r1                                      
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fe10:	29 6f 00 24 	lw r15,(r11+36)                                
 800fe14:	34 02 00 09 	mvi r2,9                                       
 800fe18:	b9 e0 08 00 	mv r1,r15                                      
 800fe1c:	f8 00 7c 77 	calli 802eff8 <__lshrsi3>                      
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe20:	01 e5 00 01 	srui r5,r15,1                                  
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800fe24:	b5 c1 20 00 	add r4,r14,r1                                  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe28:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fe2c:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe30:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fe34:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe38:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fe3c:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe40:	00 a5 00 01 	srui r5,r5,1                                   
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800fe44:	b4 84 20 00 	add r4,r4,r4                                   
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800fe48:	20 a5 00 0f 	andi r5,r5,0xf                                 
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800fe4c:	b4 85 20 00 	add r4,r4,r5                                   
    {                                                                 
        fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;               
        uint32_t       ck =  fat_construct_key(fs_info, &ffd->dir_pos.sname);
                                                                      
        if ( (key1) == ck)                                            
 800fe50:	5d a4 00 1d 	bne r13,r4,800fec4 <fat_file_open+0x1c0>       
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
        lfat_fd->links_num++;                                         
 800fe54:	29 62 00 08 	lw r2,(r11+8)                                  
    /* access "valid" hash table */                                   
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
 800fe58:	5a 8b 00 00 	sw (r20+0),r11                                 
        lfat_fd->links_num++;                                         
        return rc;                                                    
 800fe5c:	34 01 00 00 	mvi r1,0                                       
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
        lfat_fd->links_num++;                                         
 800fe60:	34 42 00 01 	addi r2,r2,1                                   
 800fe64:	59 62 00 08 	sw (r11+8),r2                                  
     * other fields of fat-file descriptor will be initialized on upper
     * level                                                          
     */                                                               
                                                                      
    return RC_OK;                                                     
}                                                                     
 800fe68:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800fe6c:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 800fe70:	2b 8c 00 28 	lw r12,(sp+40)                                 
 800fe74:	2b 8d 00 24 	lw r13,(sp+36)                                 
 800fe78:	2b 8e 00 20 	lw r14,(sp+32)                                 
 800fe7c:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 800fe80:	2b 90 00 18 	lw r16,(sp+24)                                 
 800fe84:	2b 91 00 14 	lw r17,(sp+20)                                 
 800fe88:	2b 92 00 10 	lw r18,(sp+16)                                 
 800fe8c:	2b 93 00 0c 	lw r19,(sp+12)                                 
 800fe90:	2b 94 00 08 	lw r20,(sp+8)                                  
 800fe94:	37 9c 00 2c 	addi sp,sp,44                                  
 800fe98:	c3 a0 00 00 	ret                                            
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800fe9c:	41 83 00 0e 	lbu r3,(r12+14)                                
 800fea0:	20 63 00 03 	andi r3,r3,0x3                                 
 800fea4:	44 62 ff d4 	be r3,r2,800fdf4 <fat_file_open+0xf0>          <== NEVER TAKEN
        return fs_info->vol.rdir_loc;                                 
 800fea8:	29 81 00 20 	lw r1,(r12+32)                                 
 800feac:	e3 ff ff d6 	bi 800fe04 <fat_file_open+0x100>               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800feb0:	41 81 00 0e 	lbu r1,(r12+14)                                
 800feb4:	20 21 00 03 	andi r1,r1,0x3                                 
 800feb8:	44 25 ff a7 	be r1,r5,800fd54 <fat_file_open+0x50>          <== NEVER TAKEN
        return fs_info->vol.rdir_loc;                                 
 800febc:	29 81 00 20 	lw r1,(r12+32)                                 
 800fec0:	e3 ff ff aa 	bi 800fd68 <fat_file_open+0x64>                
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
 800fec4:	29 6b 00 00 	lw r11,(r11+0)                                 
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
 800fec8:	5d 72 ff c6 	bne r11,r18,800fde0 <fat_file_open+0xdc>       
    uint32_t                               key2,                      
    fat_file_fd_t                          **ret                      
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
 800fecc:	29 93 00 70 	lw r19,(r12+112)                               
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800fed0:	34 12 00 01 	mvi r18,1                                      
 800fed4:	b6 71 98 00 	add r19,r19,r17                                
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
 800fed8:	2a 6b 00 00 	lw r11,(r19+0)                                 
 800fedc:	36 73 00 04 	addi r19,r19,4                                 
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
 800fee0:	5e 6b 00 1f 	bne r19,r11,800ff5c <fat_file_open+0x258>      <== NEVER TAKEN
 800fee4:	e0 00 00 48 	bi 8010004 <fat_file_open+0x300>               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800fee8:	41 82 00 0e 	lbu r2,(r12+14)                                <== NOT EXECUTED
 800feec:	20 42 00 03 	andi r2,r2,0x3                                 <== NOT EXECUTED
 800fef0:	44 45 00 20 	be r2,r5,800ff70 <fat_file_open+0x26c>         <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
 800fef4:	29 81 00 20 	lw r1,(r12+32)                                 <== NOT EXECUTED
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
 800fef8:	41 82 00 03 	lbu r2,(r12+3)                                 <== NOT EXECUTED
 800fefc:	fb ff c4 9a 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 800ff00:	b8 20 70 00 	mv r14,r1                                      <== NOT EXECUTED
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800ff04:	29 6f 00 24 	lw r15,(r11+36)                                <== NOT EXECUTED
 800ff08:	34 02 00 09 	mvi r2,9                                       <== NOT EXECUTED
 800ff0c:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 800ff10:	f8 00 7c 3a 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff14:	01 e5 00 01 	srui r5,r15,1                                  <== NOT EXECUTED
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800ff18:	b5 c1 20 00 	add r4,r14,r1                                  <== NOT EXECUTED
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff1c:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800ff20:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff24:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800ff28:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff2c:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800ff30:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff34:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
 800ff38:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
 800ff3c:	20 a5 00 0f 	andi r5,r5,0xf                                 <== NOT EXECUTED
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
 800ff40:	b4 85 20 00 	add r4,r4,r5                                   <== NOT EXECUTED
    {                                                                 
        fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;               
        uint32_t       ck =  fat_construct_key(fs_info, &ffd->dir_pos.sname);
                                                                      
        if ( (key1) == ck)                                            
 800ff44:	5d a4 00 04 	bne r13,r4,800ff54 <fat_file_open+0x250>       <== NOT EXECUTED
        {                                                             
            if ( ((key2) == 0) || ((key2) == ffd->ino) )              
 800ff48:	45 a0 00 0f 	be r13,r0,800ff84 <fat_file_open+0x280>        <== NOT EXECUTED
 800ff4c:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 800ff50:	45 a1 00 0d 	be r13,r1,800ff84 <fat_file_open+0x280>        <== NOT EXECUTED
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
 800ff54:	29 6b 00 00 	lw r11,(r11+0)                                 <== NOT EXECUTED
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
 800ff58:	46 6b 00 2b 	be r19,r11,8010004 <fat_file_open+0x300>       <== NOT EXECUTED
 800ff5c:	29 65 00 20 	lw r5,(r11+32)                                 <== NOT EXECUTED
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
 800ff60:	34 0e 00 01 	mvi r14,1                                      <== NOT EXECUTED
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 800ff64:	34 a1 ff fe 	addi r1,r5,-2                                  <== NOT EXECUTED
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
 800ff68:	44 b2 ff e7 	be r5,r18,800ff04 <fat_file_open+0x200>        <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 800ff6c:	44 a0 ff df 	be r5,r0,800fee8 <fat_file_open+0x1e4>         <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 800ff70:	41 82 00 05 	lbu r2,(r12+5)                                 <== NOT EXECUTED
 800ff74:	fb ff c4 7c 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 800ff78:	29 82 00 34 	lw r2,(r12+52)                                 <== NOT EXECUTED
 800ff7c:	b4 22 08 00 	add r1,r1,r2                                   <== NOT EXECUTED
 800ff80:	e3 ff ff de 	bi 800fef8 <fat_file_open+0x1f4>               <== NOT EXECUTED
        if ( (key1) == ck)                                            
        {                                                             
            if ( ((key2) == 0) || ((key2) == ffd->ino) )              
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
 800ff84:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
    }                                                                 
                                                                      
    /* access "removed-but-still-open" hash table */                  
    rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);   
                                                                      
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
 800ff88:	34 01 00 44 	mvi r1,68                                      
 800ff8c:	fb ff cd d5 	calli 80036e0 <malloc>                         
 800ff90:	5a 81 00 00 	sw (r20+0),r1                                  
 800ff94:	b8 20 58 00 	mv r11,r1                                      
    if ( lfat_fd == NULL )                                            
 800ff98:	44 20 00 23 	be r1,r0,8010024 <fat_file_open+0x320>         <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
 800ff9c:	34 02 00 00 	mvi r2,0                                       
 800ffa0:	34 03 00 44 	mvi r3,68                                      
 800ffa4:	f8 00 35 a3 	calli 801d630 <memset>                         
                                                                      
    lfat_fd->links_num = 1;                                           
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
 800ffa8:	41 64 00 30 	lbu r4,(r11+48)                                
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
 800ffac:	2a 03 00 00 	lw r3,(r16+0)                                  
 800ffb0:	2a 02 00 04 	lw r2,(r16+4)                                  
 800ffb4:	2a 01 00 08 	lw r1,(r16+8)                                  
 800ffb8:	2a 06 00 0c 	lw r6,(r16+12)                                 
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
                                                                      
    lfat_fd->links_num = 1;                                           
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
 800ffbc:	20 84 00 fe 	andi r4,r4,0xfe                                
    if ( lfat_fd == NULL )                                            
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
                                                                      
    lfat_fd->links_num = 1;                                           
 800ffc0:	34 05 00 01 	mvi r5,1                                       
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
 800ffc4:	31 64 00 30 	sb (r11+48),r4                                 
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
 800ffc8:	34 04 ff ff 	mvi r4,-1                                      
    if ( lfat_fd == NULL )                                            
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
                                                                      
    lfat_fd->links_num = 1;                                           
 800ffcc:	59 65 00 08 	sw (r11+8),r5                                  
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
 800ffd0:	59 64 00 3c 	sw (r11+60),r4                                 
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
 800ffd4:	59 63 00 20 	sw (r11+32),r3                                 
 800ffd8:	59 62 00 24 	sw (r11+36),r2                                 
 800ffdc:	59 61 00 28 	sw (r11+40),r1                                 
 800ffe0:	59 66 00 2c 	sw (r11+44),r6                                 
                                                                      
    if ( rc != RC_OK )                                                
 800ffe4:	45 c0 00 0a 	be r14,r0,801000c <fat_file_open+0x308>        <== NEVER TAKEN
        lfat_fd->ino = key;                                           
 800ffe8:	59 6d 00 0c 	sw (r11+12),r13                                
 */                                                                   
static inline void                                                    
_hash_insert(rtems_chain_control *hash, uint32_t   key1, uint32_t   key2,
             fat_file_fd_t *el)                                       
{                                                                     
    rtems_chain_append((hash) + ((key1) % FAT_HASH_MODULE), &(el)->link);
 800ffec:	29 81 00 6c 	lw r1,(r12+108)                                
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
 800fff0:	b9 60 10 00 	mv r2,r11                                      
 800fff4:	b4 31 08 00 	add r1,r1,r17                                  
 800fff8:	fb ff d9 cc 	calli 8006728 <_Chain_Append>                  
    /*                                                                
     * other fields of fat-file descriptor will be initialized on upper
     * level                                                          
     */                                                               
                                                                      
    return RC_OK;                                                     
 800fffc:	34 01 00 00 	mvi r1,0                                       
 8010000:	e3 ff ff 9a 	bi 800fe68 <fat_file_open+0x164>               
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
    }                                                                 
    return -1;                                                        
 8010004:	34 0e ff ff 	mvi r14,-1                                     
 8010008:	e3 ff ff e0 	bi 800ff88 <fat_file_open+0x284>               
                                                                      
    if ( rc != RC_OK )                                                
        lfat_fd->ino = key;                                           
    else                                                              
    {                                                                 
        lfat_fd->ino = fat_get_unique_ino(fs_info);                   
 801000c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010010:	f8 00 08 85 	calli 8012224 <fat_get_unique_ino>             <== NOT EXECUTED
 8010014:	59 61 00 0c 	sw (r11+12),r1                                 <== NOT EXECUTED
                                                                      
        if ( lfat_fd->ino == 0 )                                      
 8010018:	5c 2e ff f5 	bne r1,r14,800ffec <fat_file_open+0x2e8>       <== NOT EXECUTED
        {                                                             
            free((*fat_fd));                                          
 801001c:	2a 81 00 00 	lw r1,(r20+0)                                  <== NOT EXECUTED
 8010020:	fb ff cc 0a 	calli 8003048 <free>                           <== NOT EXECUTED
            /*                                                        
             * XXX: kernel resource is unsufficient, but not the memory,
             * but there is no suitable errno :(                      
             */                                                       
            rtems_set_errno_and_return_minus_one( ENOMEM );           
 8010024:	f8 00 31 f4 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010028:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 801002c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010030:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8010034:	e3 ff ff 8d 	bi 800fe68 <fat_file_open+0x164>               <== NOT EXECUTED
                                                                      

08010050 <fat_file_read>: fat_file_fd_t *fat_fd, uint32_t start, uint32_t count, uint8_t *buf ) {
 8010050:	37 9c ff c8 	addi sp,sp,-56                                 
 8010054:	5b 8b 00 34 	sw (sp+52),r11                                 
 8010058:	5b 8c 00 30 	sw (sp+48),r12                                 
 801005c:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8010060:	5b 8e 00 28 	sw (sp+40),r14                                 
 8010064:	5b 8f 00 24 	sw (sp+36),r15                                 
 8010068:	5b 90 00 20 	sw (sp+32),r16                                 
 801006c:	5b 91 00 1c 	sw (sp+28),r17                                 
 8010070:	5b 92 00 18 	sw (sp+24),r18                                 
 8010074:	5b 93 00 14 	sw (sp+20),r19                                 
 8010078:	5b 94 00 10 	sw (sp+16),r20                                 
 801007c:	5b 95 00 0c 	sw (sp+12),r21                                 
 8010080:	5b 96 00 08 	sw (sp+8),r22                                  
 8010084:	5b 9d 00 04 	sw (sp+4),ra                                   
    int            rc = RC_OK;                                        
    ssize_t        ret = 0;                                           
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
 8010088:	5b 80 00 38 	sw (sp+56),r0                                  
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    uint8_t                              *buf                         
)                                                                     
{                                                                     
 801008c:	b8 80 60 00 	mv r12,r4                                      
 8010090:	b8 20 58 00 	mv r11,r1                                      
 8010094:	b8 40 78 00 	mv r15,r2                                      
 8010098:	b8 60 70 00 	mv r14,r3                                      
 801009c:	b8 a0 a0 00 	mv r20,r5                                      
    uint32_t       byte = 0;                                          
    uint32_t       c = 0;                                             
                                                                      
    /* it couldn't be removed - otherwise cache update will be broken */
    if (count == 0)                                                   
        return cmpltd;                                                
 80100a0:	34 0d 00 00 	mvi r13,0                                      
    uint32_t       sec = 0;                                           
    uint32_t       byte = 0;                                          
    uint32_t       c = 0;                                             
                                                                      
    /* it couldn't be removed - otherwise cache update will be broken */
    if (count == 0)                                                   
 80100a4:	44 80 00 4b 	be r4,r0,80101d0 <fat_file_read+0x180>         <== NEVER TAKEN
                                                                      
    /*                                                                
     * >= because start is offset and computed from 0 and file_size   
     * computed from 1                                                
     */                                                               
    if ( start >= fat_fd->fat_file_size )                             
 80100a8:	28 41 00 18 	lw r1,(r2+24)                                  
 80100ac:	50 61 00 49 	bgeu r3,r1,80101d0 <fat_file_read+0x180>       
        return FAT_EOF;                                               
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
 80100b0:	54 81 00 03 	bgu r4,r1,80100bc <fat_file_read+0x6c>         <== NEVER TAKEN
        (start > fat_fd->fat_file_size - count))                      
 80100b4:	c8 24 10 00 	sub r2,r1,r4                                   
     * computed from 1                                                
     */                                                               
    if ( start >= fat_fd->fat_file_size )                             
        return FAT_EOF;                                               
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
 80100b8:	50 43 00 02 	bgeu r2,r3,80100c0 <fat_file_read+0x70>        
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
 80100bc:	c8 2e 60 00 	sub r12,r1,r14                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 80100c0:	29 e2 00 20 	lw r2,(r15+32)                                 
 80100c4:	34 01 00 01 	mvi r1,1                                       
 80100c8:	44 41 00 57 	be r2,r1,8010224 <fat_file_read+0x1d4>         
            return -1;                                                
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
 80100cc:	41 62 00 08 	lbu r2,(r11+8)                                 
 80100d0:	b9 c0 08 00 	mv r1,r14                                      
 80100d4:	f8 00 7b c9 	calli 802eff8 <__lshrsi3>                      
 80100d8:	b8 20 a8 00 	mv r21,r1                                      
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
 80100dc:	b9 e0 10 00 	mv r2,r15                                      
 80100e0:	b9 60 08 00 	mv r1,r11                                      
 80100e4:	ba a0 18 00 	mv r3,r21                                      
 80100e8:	37 84 00 38 	addi r4,sp,56                                  
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
 80100ec:	2d 70 00 06 	lhu r16,(r11+6)                                
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
 80100f0:	fb ff fe d2 	calli 800fc38 <fat_file_lseek>                 
 80100f4:	b8 20 68 00 	mv r13,r1                                      
    if (rc != RC_OK)                                                  
 80100f8:	5c 20 00 36 	bne r1,r0,80101d0 <fat_file_read+0x180>        <== NEVER TAKEN
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
 80100fc:	36 10 ff ff 	addi r16,r16,-1                                
 8010100:	a1 d0 b0 00 	and r22,r14,r16                                
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
 8010104:	34 11 00 00 	mvi r17,0                                      
 8010108:	34 10 00 00 	mvi r16,0                                      
 801010c:	45 81 00 2a 	be r12,r1,80101b4 <fat_file_read+0x164>        <== NEVER TAKEN
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
 8010110:	41 72 00 02 	lbu r18,(r11+2)                                
 8010114:	2d 71 00 00 	lhu r17,(r11+0)                                
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
 8010118:	ba c0 70 00 	mv r14,r22                                     
 801011c:	34 10 00 00 	mvi r16,0                                      
    {                                                                 
        c = MIN(count, (fs_info->vol.bpc - ofs));                     
 8010120:	2d 6d 00 06 	lhu r13,(r11+6)                                
                                                                      
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
 8010124:	2b 84 00 38 	lw r4,(sp+56)                                  
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
    {                                                                 
        c = MIN(count, (fs_info->vol.bpc - ofs));                     
 8010128:	c9 ae 68 00 	sub r13,r13,r14                                
 801012c:	34 81 ff fe 	addi r1,r4,-2                                  
 8010130:	51 8d 00 02 	bgeu r12,r13,8010138 <fat_file_read+0xe8>      
 8010134:	b9 80 68 00 	mv r13,r12                                     
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8010138:	5c 80 00 36 	bne r4,r0,8010210 <fat_file_read+0x1c0>        <== ALWAYS TAKEN
 801013c:	41 62 00 0e 	lbu r2,(r11+14)                                <== NOT EXECUTED
 8010140:	20 42 00 03 	andi r2,r2,0x3                                 <== NOT EXECUTED
 8010144:	44 44 00 33 	be r2,r4,8010210 <fat_file_read+0x1c0>         <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
 8010148:	29 73 00 20 	lw r19,(r11+32)                                <== NOT EXECUTED
                                                                      
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
        sec += (ofs >> fs_info->vol.sec_log2);                        
 801014c:	ba 40 10 00 	mv r2,r18                                      
 8010150:	b9 c0 08 00 	mv r1,r14                                      
 8010154:	f8 00 7b a9 	calli 802eff8 <__lshrsi3>                      
        byte = ofs & (fs_info->vol.bps - 1);                          
 8010158:	36 24 ff ff 	addi r4,r17,-1                                 
    while (count > 0)                                                 
    {                                                                 
        c = MIN(count, (fs_info->vol.bpc - ofs));                     
                                                                      
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
        sec += (ofs >> fs_info->vol.sec_log2);                        
 801015c:	b6 61 10 00 	add r2,r19,r1                                  
        byte = ofs & (fs_info->vol.bps - 1);                          
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
 8010160:	a0 8e 18 00 	and r3,r4,r14                                  
 8010164:	b6 90 28 00 	add r5,r20,r16                                 
 8010168:	b9 a0 20 00 	mv r4,r13                                      
 801016c:	b9 60 08 00 	mv r1,r11                                      
 8010170:	f8 00 03 65 	calli 8010f04 <_fat_block_read>                
 8010174:	b8 20 10 00 	mv r2,r1                                       
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
 8010178:	37 83 00 38 	addi r3,sp,56                                  
 801017c:	b9 60 08 00 	mv r1,r11                                      
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
            return -1;                                                
                                                                      
        count -= c;                                                   
 8010180:	c9 8d 60 00 	sub r12,r12,r13                                
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
        sec += (ofs >> fs_info->vol.sec_log2);                        
        byte = ofs & (fs_info->vol.bps - 1);                          
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
 8010184:	48 02 00 3d 	bg r0,r2,8010278 <fat_file_read+0x228>         <== NEVER TAKEN
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
 8010188:	2b 91 00 38 	lw r17,(sp+56)                                 
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
 801018c:	b6 0d 80 00 	add r16,r16,r13                                
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        ofs = 0;                                                      
 8010190:	34 0e 00 00 	mvi r14,0                                      
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
 8010194:	ba 20 10 00 	mv r2,r17                                      
 8010198:	f8 00 27 0b 	calli 8019dc4 <fat_get_fat_cluster>            
        if ( rc != RC_OK )                                            
 801019c:	5c 20 00 39 	bne r1,r0,8010280 <fat_file_read+0x230>        <== NEVER TAKEN
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
 80101a0:	45 81 00 04 	be r12,r1,80101b0 <fat_file_read+0x160>        
 80101a4:	41 72 00 02 	lbu r18,(r11+2)                                
 80101a8:	2d 71 00 00 	lhu r17,(r11+0)                                
 80101ac:	e3 ff ff dd 	bi 8010120 <fat_file_read+0xd0>                
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        ofs = 0;                                                      
 80101b0:	ba 00 68 00 	mv r13,r16                                     
    }                                                                 
                                                                      
    /* update cache */                                                
    /* XXX: check this - I'm not sure :( */                           
    fat_fd->map.file_cln = cl_start +                                 
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
 80101b4:	41 62 00 08 	lbu r2,(r11+8)                                 
 80101b8:	36 c1 ff ff 	addi r1,r22,-1                                 
 80101bc:	b4 30 08 00 	add r1,r1,r16                                  
 80101c0:	f8 00 7b 8e 	calli 802eff8 <__lshrsi3>                      
        ofs = 0;                                                      
    }                                                                 
                                                                      
    /* update cache */                                                
    /* XXX: check this - I'm not sure :( */                           
    fat_fd->map.file_cln = cl_start +                                 
 80101c4:	b4 35 08 00 	add r1,r1,r21                                  
 80101c8:	59 e1 00 34 	sw (r15+52),r1                                 
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
    fat_fd->map.disk_cln = save_cln;                                  
 80101cc:	59 f1 00 38 	sw (r15+56),r17                                
                                                                      
    return cmpltd;                                                    
}                                                                     
 80101d0:	b9 a0 08 00 	mv r1,r13                                      
 80101d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80101d8:	2b 8b 00 34 	lw r11,(sp+52)                                 
 80101dc:	2b 8c 00 30 	lw r12,(sp+48)                                 
 80101e0:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 80101e4:	2b 8e 00 28 	lw r14,(sp+40)                                 
 80101e8:	2b 8f 00 24 	lw r15,(sp+36)                                 
 80101ec:	2b 90 00 20 	lw r16,(sp+32)                                 
 80101f0:	2b 91 00 1c 	lw r17,(sp+28)                                 
 80101f4:	2b 92 00 18 	lw r18,(sp+24)                                 
 80101f8:	2b 93 00 14 	lw r19,(sp+20)                                 
 80101fc:	2b 94 00 10 	lw r20,(sp+16)                                 
 8010200:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8010204:	2b 96 00 08 	lw r22,(sp+8)                                  
 8010208:	37 9c 00 38 	addi sp,sp,56                                  
 801020c:	c3 a0 00 00 	ret                                            
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8010210:	41 62 00 05 	lbu r2,(r11+5)                                 
 8010214:	fb ff c3 d4 	calli 8001164 <__ashlsi3>                      
 8010218:	29 73 00 34 	lw r19,(r11+52)                                
 801021c:	b4 33 98 00 	add r19,r1,r19                                 
 8010220:	e3 ff ff cb 	bi 801014c <fat_file_read+0xfc>                
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010224:	29 e1 00 24 	lw r1,(r15+36)                                 
 8010228:	5c 20 ff a9 	bne r1,r0,80100cc <fat_file_read+0x7c>         <== NEVER TAKEN
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
 801022c:	41 62 00 0e 	lbu r2,(r11+14)                                
 8010230:	20 42 00 03 	andi r2,r2,0x3                                 
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010234:	44 41 ff a6 	be r2,r1,80100cc <fat_file_read+0x7c>          
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);    
 8010238:	29 e1 00 1c 	lw r1,(r15+28)                                 
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 801023c:	5c 20 00 13 	bne r1,r0,8010288 <fat_file_read+0x238>        <== NEVER TAKEN
        return fs_info->vol.rdir_loc;                                 
 8010240:	29 6d 00 20 	lw r13,(r11+32)                                
        sec += (start >> fs_info->vol.sec_log2);                      
 8010244:	41 62 00 02 	lbu r2,(r11+2)                                 
 8010248:	b9 c0 08 00 	mv r1,r14                                      
 801024c:	f8 00 7b 6b 	calli 802eff8 <__lshrsi3>                      
        byte = start & (fs_info->vol.bps - 1);                        
 8010250:	2d 63 00 00 	lhu r3,(r11+0)                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);    
        sec += (start >> fs_info->vol.sec_log2);                      
 8010254:	b5 a1 10 00 	add r2,r13,r1                                  
        byte = start & (fs_info->vol.bps - 1);                        
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, count, buf);        
 8010258:	b9 80 20 00 	mv r4,r12                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);    
        sec += (start >> fs_info->vol.sec_log2);                      
        byte = start & (fs_info->vol.bps - 1);                        
 801025c:	34 63 ff ff 	addi r3,r3,-1                                  
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, count, buf);        
 8010260:	b9 60 08 00 	mv r1,r11                                      
 8010264:	a1 c3 18 00 	and r3,r14,r3                                  
 8010268:	ba 80 28 00 	mv r5,r20                                      
 801026c:	f8 00 03 26 	calli 8010f04 <_fat_block_read>                
 8010270:	b8 20 68 00 	mv r13,r1                                      
        if ( ret < 0 )                                                
 8010274:	4c 20 ff d7 	bge r1,r0,80101d0 <fat_file_read+0x180>        <== ALWAYS TAKEN
        sec += (ofs >> fs_info->vol.sec_log2);                        
        byte = ofs & (fs_info->vol.bps - 1);                          
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
            return -1;                                                
 8010278:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
 801027c:	e3 ff ff d5 	bi 80101d0 <fat_file_read+0x180>               <== NOT EXECUTED
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
 8010280:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 8010284:	e3 ff ff d3 	bi 80101d0 <fat_file_read+0x180>               <== NOT EXECUTED
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8010288:	41 62 00 05 	lbu r2,(r11+5)                                 <== NOT EXECUTED
 801028c:	34 21 ff fe 	addi r1,r1,-2                                  <== NOT EXECUTED
 8010290:	fb ff c3 b5 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 8010294:	29 6d 00 34 	lw r13,(r11+52)                                <== NOT EXECUTED
 8010298:	b4 2d 68 00 	add r13,r1,r13                                 <== NOT EXECUTED
 801029c:	e3 ff ff ea 	bi 8010244 <fat_file_read+0x1f4>               <== NOT EXECUTED
                                                                      

08010b38 <fat_file_size>: int fat_file_size( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd ) {
 8010b38:	37 9c ff ec 	addi sp,sp,-20                                 
 8010b3c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8010b40:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8010b44:	5b 8d 00 08 	sw (sp+8),r13                                  
 8010b48:	5b 9d 00 04 	sw (sp+4),ra                                   
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
 8010b4c:	28 4d 00 1c 	lw r13,(r2+28)                                 
int                                                                   
fat_file_size(                                                        
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 8010b50:	b8 40 60 00 	mv r12,r2                                      
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010b54:	28 42 00 20 	lw r2,(r2+32)                                  
int                                                                   
fat_file_size(                                                        
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 8010b58:	b8 20 58 00 	mv r11,r1                                      
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
 8010b5c:	5b 8d 00 14 	sw (sp+20),r13                                 
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010b60:	34 01 00 01 	mvi r1,1                                       
 8010b64:	44 41 00 1e 	be r2,r1,8010bdc <fat_file_size+0xa4>          
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 8010b68:	29 61 00 10 	lw r1,(r11+16)                                 
 8010b6c:	29 62 00 14 	lw r2,(r11+20)                                 
    {                                                                 
        fat_fd->fat_file_size = fs_info->vol.rdir_size;               
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
 8010b70:	59 80 00 18 	sw (r12+24),r0                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 8010b74:	a1 a1 08 00 	and r1,r13,r1                                  
 8010b78:	50 22 00 21 	bgeu r1,r2,8010bfc <fat_file_size+0xc4>        <== NEVER TAKEN
    {                                                                 
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
 8010b7c:	b9 a0 10 00 	mv r2,r13                                      
 8010b80:	b9 60 08 00 	mv r1,r11                                      
 8010b84:	37 83 00 14 	addi r3,sp,20                                  
 8010b88:	f8 00 24 8f 	calli 8019dc4 <fat_get_fat_cluster>            
        if ( rc != RC_OK )                                            
 8010b8c:	5c 20 00 0c 	bne r1,r0,8010bbc <fat_file_size+0x84>         <== NEVER TAKEN
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
 8010b90:	2d 63 00 06 	lhu r3,(r11+6)                                 
 8010b94:	29 85 00 18 	lw r5,(r12+24)                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 8010b98:	29 62 00 10 	lw r2,(r11+16)                                 
 8010b9c:	2b 81 00 14 	lw r1,(sp+20)                                  
 8010ba0:	29 64 00 14 	lw r4,(r11+20)                                 
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
 8010ba4:	b4 a3 18 00 	add r3,r5,r3                                   
 8010ba8:	59 83 00 18 	sw (r12+24),r3                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 8010bac:	a0 22 10 00 	and r2,r1,r2                                   
 8010bb0:	54 82 00 09 	bgu r4,r2,8010bd4 <fat_file_size+0x9c>         <== NEVER TAKEN
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
    }                                                                 
    fat_fd->map.last_cln = save_cln;                                  
 8010bb4:	59 8d 00 3c 	sw (r12+60),r13                                
    return rc;                                                        
 8010bb8:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8010bbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010bc0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010bc4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8010bc8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8010bcc:	37 9c 00 14 	addi sp,sp,20                                  
 8010bd0:	c3 a0 00 00 	ret                                            
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 8010bd4:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 8010bd8:	e3 ff ff e9 	bi 8010b7c <fat_file_size+0x44>                <== NOT EXECUTED
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010bdc:	29 81 00 24 	lw r1,(r12+36)                                 
 8010be0:	5c 20 ff e2 	bne r1,r0,8010b68 <fat_file_size+0x30>         <== NEVER TAKEN
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
 8010be4:	41 62 00 0e 	lbu r2,(r11+14)                                
 8010be8:	20 42 00 03 	andi r2,r2,0x3                                 
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
 8010bec:	44 41 ff df 	be r2,r1,8010b68 <fat_file_size+0x30>          <== ALWAYS TAKEN
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        fat_fd->fat_file_size = fs_info->vol.rdir_size;               
 8010bf0:	29 62 00 2c 	lw r2,(r11+44)                                 <== NOT EXECUTED
 8010bf4:	59 82 00 18 	sw (r12+24),r2                                 <== NOT EXECUTED
        return rc;                                                    
 8010bf8:	e3 ff ff f1 	bi 8010bbc <fat_file_size+0x84>                <== NOT EXECUTED
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
 8010bfc:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 8010c00:	e3 ff ff ed 	bi 8010bb4 <fat_file_size+0x7c>                <== NOT EXECUTED
                                                                      

080102a0 <fat_file_truncate>: fat_file_truncate( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, uint32_t new_length ) {
 80102a0:	37 9c ff e0 	addi sp,sp,-32                                 
 80102a4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80102a8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80102ac:	5b 8d 00 10 	sw (sp+16),r13                                 
 80102b0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80102b4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80102b8:	5b 9d 00 04 	sw (sp+4),ra                                   
    uint32_t       cur_cln = 0;                                       
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
 80102bc:	28 4b 00 18 	lw r11,(r2+24)                                 
fat_file_truncate(                                                    
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              new_length                  
    )                                                                 
{                                                                     
 80102c0:	b8 40 68 00 	mv r13,r2                                      
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
 80102c4:	34 02 ff ff 	mvi r2,-1                                      
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              new_length                  
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
 80102c8:	5b 80 00 20 	sw (sp+32),r0                                  
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
 80102cc:	5b 82 00 1c 	sw (sp+28),r2                                  
fat_file_truncate(                                                    
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              new_length                  
    )                                                                 
{                                                                     
 80102d0:	b8 20 60 00 	mv r12,r1                                      
    uint32_t       cur_cln = 0;                                       
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
 80102d4:	50 6b 00 25 	bgeu r3,r11,8010368 <fat_file_truncate+0xc8>   
        return rc;                                                    
                                                                      
    assert(fat_fd->fat_file_size);                                    
 80102d8:	45 60 00 38 	be r11,r0,80103b8 <fat_file_truncate+0x118>    <== NEVER TAKEN
                                                                      
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
 80102dc:	2c 21 00 06 	lhu r1,(r1+6)                                  
 80102e0:	41 8f 00 08 	lbu r15,(r12+8)                                
 80102e4:	34 21 ff ff 	addi r1,r1,-1                                  
 80102e8:	b4 23 08 00 	add r1,r1,r3                                   
 80102ec:	b9 e0 10 00 	mv r2,r15                                      
 80102f0:	f8 00 7b 42 	calli 802eff8 <__lshrsi3>                      
                                                                      
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size) 
 80102f4:	b9 e0 10 00 	mv r2,r15                                      
    if ( new_length >= fat_fd->fat_file_size )                        
        return rc;                                                    
                                                                      
    assert(fat_fd->fat_file_size);                                    
                                                                      
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
 80102f8:	b8 20 70 00 	mv r14,r1                                      
                                                                      
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size) 
 80102fc:	fb ff c3 9a 	calli 8001164 <__ashlsi3>                      
        return RC_OK;                                                 
 8010300:	34 04 00 00 	mvi r4,0                                       
                                                                      
    assert(fat_fd->fat_file_size);                                    
                                                                      
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
                                                                      
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size) 
 8010304:	50 2b 00 10 	bgeu r1,r11,8010344 <fat_file_truncate+0xa4>   
        return RC_OK;                                                 
                                                                      
    if (cl_start != 0)                                                
 8010308:	45 c0 00 08 	be r14,r0,8010328 <fat_file_truncate+0x88>     
    {                                                                 
        rc = fat_file_lseek(fs_info, fat_fd, cl_start - 1, &new_last_cln);
 801030c:	37 84 00 1c 	addi r4,sp,28                                  
 8010310:	b9 80 08 00 	mv r1,r12                                      
 8010314:	b9 a0 10 00 	mv r2,r13                                      
 8010318:	35 c3 ff ff 	addi r3,r14,-1                                 
 801031c:	fb ff fe 47 	calli 800fc38 <fat_file_lseek>                 
 8010320:	b8 20 20 00 	mv r4,r1                                       
        if (rc != RC_OK)                                              
 8010324:	5c 20 00 08 	bne r1,r0,8010344 <fat_file_truncate+0xa4>     <== NEVER TAKEN
            return rc;                                                
                                                                      
    }                                                                 
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
 8010328:	37 84 00 20 	addi r4,sp,32                                  
 801032c:	b9 80 08 00 	mv r1,r12                                      
 8010330:	b9 a0 10 00 	mv r2,r13                                      
 8010334:	b9 c0 18 00 	mv r3,r14                                      
 8010338:	fb ff fe 40 	calli 800fc38 <fat_file_lseek>                 
 801033c:	b8 20 20 00 	mv r4,r1                                       
    if (rc != RC_OK)                                                  
 8010340:	44 20 00 0c 	be r1,r0,8010370 <fat_file_truncate+0xd0>      <== ALWAYS TAKEN
        fat_fd->map.file_cln = cl_start - 1;                          
        fat_fd->map.disk_cln = new_last_cln;                          
        fat_fd->map.last_cln = new_last_cln;                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
 8010344:	b8 80 08 00 	mv r1,r4                                       
 8010348:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801034c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8010350:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8010354:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8010358:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801035c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8010360:	37 9c 00 20 	addi sp,sp,32                                  
 8010364:	c3 a0 00 00 	ret                                            
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
        return rc;                                                    
 8010368:	34 04 00 00 	mvi r4,0                                       
 801036c:	e3 ff ff f6 	bi 8010344 <fat_file_truncate+0xa4>            
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    rc = fat_free_fat_clusters_chain(fs_info, cur_cln);               
 8010370:	2b 82 00 20 	lw r2,(sp+32)                                  
 8010374:	b9 80 08 00 	mv r1,r12                                      
 8010378:	f8 00 28 5f 	calli 801a4f4 <fat_free_fat_clusters_chain>    
 801037c:	b8 20 20 00 	mv r4,r1                                       
    if (rc != RC_OK)                                                  
 8010380:	5c 20 ff f1 	bne r1,r0,8010344 <fat_file_truncate+0xa4>     <== NEVER TAKEN
        return rc;                                                    
                                                                      
    if (cl_start != 0)                                                
 8010384:	45 c1 ff f0 	be r14,r1,8010344 <fat_file_truncate+0xa4>     
    {                                                                 
        rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
 8010388:	2b 82 00 1c 	lw r2,(sp+28)                                  
 801038c:	b9 80 08 00 	mv r1,r12                                      
 8010390:	34 03 ff ff 	mvi r3,-1                                      
 8010394:	f8 00 27 49 	calli 801a0b8 <fat_set_fat_cluster>            
 8010398:	b8 20 20 00 	mv r4,r1                                       
        if ( rc != RC_OK )                                            
 801039c:	5c 20 ff ea 	bne r1,r0,8010344 <fat_file_truncate+0xa4>     <== NEVER TAKEN
            return rc;                                                
        fat_fd->map.file_cln = cl_start - 1;                          
        fat_fd->map.disk_cln = new_last_cln;                          
 80103a0:	2b 81 00 1c 	lw r1,(sp+28)                                  
    if (cl_start != 0)                                                
    {                                                                 
        rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
        if ( rc != RC_OK )                                            
            return rc;                                                
        fat_fd->map.file_cln = cl_start - 1;                          
 80103a4:	35 ce ff ff 	addi r14,r14,-1                                
 80103a8:	59 ae 00 34 	sw (r13+52),r14                                
        fat_fd->map.disk_cln = new_last_cln;                          
 80103ac:	59 a1 00 38 	sw (r13+56),r1                                 
        fat_fd->map.last_cln = new_last_cln;                          
 80103b0:	59 a1 00 3c 	sw (r13+60),r1                                 
 80103b4:	e3 ff ff e4 	bi 8010344 <fat_file_truncate+0xa4>            
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
        return rc;                                                    
                                                                      
    assert(fat_fd->fat_file_size);                                    
 80103b8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80103bc:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 80103c0:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 80103c4:	38 21 02 90 	ori r1,r1,0x290                                <== NOT EXECUTED
 80103c8:	34 02 02 d1 	mvi r2,721                                     <== NOT EXECUTED
 80103cc:	38 63 02 f0 	ori r3,r3,0x2f0                                <== NOT EXECUTED
 80103d0:	38 84 02 d8 	ori r4,r4,0x2d8                                <== NOT EXECUTED
 80103d4:	f8 00 0a 90 	calli 8012e14 <__assert_func>                  <== NOT EXECUTED
                                                                      

08010810 <fat_file_write>: fat_file_fd_t *fat_fd, uint32_t start, uint32_t count, const uint8_t *buf ) {
 8010810:	37 9c ff b4 	addi sp,sp,-76                                 
 8010814:	5b 8b 00 44 	sw (sp+68),r11                                 
 8010818:	5b 8c 00 40 	sw (sp+64),r12                                 
 801081c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8010820:	5b 8e 00 38 	sw (sp+56),r14                                 
 8010824:	5b 8f 00 34 	sw (sp+52),r15                                 
 8010828:	5b 90 00 30 	sw (sp+48),r16                                 
 801082c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8010830:	5b 92 00 28 	sw (sp+40),r18                                 
 8010834:	5b 93 00 24 	sw (sp+36),r19                                 
 8010838:	5b 94 00 20 	sw (sp+32),r20                                 
 801083c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8010840:	5b 96 00 18 	sw (sp+24),r22                                 
 8010844:	5b 97 00 14 	sw (sp+20),r23                                 
 8010848:	5b 98 00 10 	sw (sp+16),r24                                 
 801084c:	5b 99 00 0c 	sw (sp+12),r25                                 
 8010850:	5b 9b 00 08 	sw (sp+8),fp                                   
 8010854:	5b 9d 00 04 	sw (sp+4),ra                                   
    int            rc = RC_OK;                                        
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
 8010858:	5b 80 00 4c 	sw (sp+76),r0                                  
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    const uint8_t                        *buf                         
    )                                                                 
{                                                                     
 801085c:	b8 40 58 00 	mv r11,r2                                      
 8010860:	b8 60 70 00 	mv r14,r3                                      
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
    bool           zero_fill = start > fat_fd->fat_file_size;         
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
 8010864:	28 55 00 34 	lw r21,(r2+52)                                 
    int            rc = RC_OK;                                        
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
    bool           zero_fill = start > fat_fd->fat_file_size;         
 8010868:	28 43 00 18 	lw r3,(r2+24)                                  
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    const uint8_t                        *buf                         
    )                                                                 
{                                                                     
 801086c:	b8 20 68 00 	mv r13,r1                                      
 8010870:	b8 a0 a0 00 	mv r20,r5                                      
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
    uint32_t       cln;                                               
                                                                      
                                                                      
    if ( count == 0 )                                                 
        return cmpltd;                                                
 8010874:	34 02 00 00 	mvi r2,0                                       
    bool           zero_fill = start > fat_fd->fat_file_size;         
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
    uint32_t       cln;                                               
                                                                      
                                                                      
    if ( count == 0 )                                                 
 8010878:	44 80 00 07 	be r4,r0,8010894 <fat_file_write+0x84>         <== NEVER TAKEN
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
 801087c:	29 6c 00 14 	lw r12,(r11+20)                                
 8010880:	55 8e 00 19 	bgu r12,r14,80108e4 <fat_file_write+0xd4>      <== ALWAYS TAKEN
        rtems_set_errno_and_return_minus_one(EFBIG);                  
 8010884:	f8 00 2f dc 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8010888:	34 02 00 1b 	mvi r2,27                                      <== NOT EXECUTED
 801088c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010890:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return cmpltd;                                                
}                                                                     
 8010894:	b8 40 08 00 	mv r1,r2                                       
 8010898:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801089c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 80108a0:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80108a4:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80108a8:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80108ac:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80108b0:	2b 90 00 30 	lw r16,(sp+48)                                 
 80108b4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80108b8:	2b 92 00 28 	lw r18,(sp+40)                                 
 80108bc:	2b 93 00 24 	lw r19,(sp+36)                                 
 80108c0:	2b 94 00 20 	lw r20,(sp+32)                                 
 80108c4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80108c8:	2b 96 00 18 	lw r22,(sp+24)                                 
 80108cc:	2b 97 00 14 	lw r23,(sp+20)                                 
 80108d0:	2b 98 00 10 	lw r24,(sp+16)                                 
 80108d4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80108d8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80108dc:	37 9c 00 4c 	addi sp,sp,76                                  
 80108e0:	c3 a0 00 00 	ret                                            
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
        rtems_set_errno_and_return_minus_one(EFBIG);                  
                                                                      
    if (count > fat_fd->size_limit - start)                           
 80108e4:	c9 8e 60 00 	sub r12,r12,r14                                
                                                                      
    if ( count == 0 )                                                 
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
        rtems_set_errno_and_return_minus_one(EFBIG);                  
 80108e8:	50 8c 00 02 	bgeu r4,r12,80108f0 <fat_file_write+0xe0>      <== NEVER TAKEN
 80108ec:	b8 80 60 00 	mv r12,r4                                      
                                                                      
    if (count > fat_fd->size_limit - start)                           
        count = fat_fd->size_limit - start;                           
                                                                      
    rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
 80108f0:	b5 8e 78 00 	add r15,r12,r14                                
 80108f4:	f5 c3 18 00 	cmpgu r3,r14,r3                                
 80108f8:	b9 60 10 00 	mv r2,r11                                      
 80108fc:	b9 a0 08 00 	mv r1,r13                                      
 8010900:	b9 e0 20 00 	mv r4,r15                                      
 8010904:	37 85 00 4c 	addi r5,sp,76                                  
 8010908:	fb ff ff 29 	calli 80105ac <fat_file_extend>                
 801090c:	b8 20 10 00 	mv r2,r1                                       
    if (RC_OK == rc)                                                  
 8010910:	5c 20 ff e1 	bne r1,r0,8010894 <fat_file_write+0x84>        
    {                                                                 
        /*                                                            
         * check whether there was enough room on device to locate    
         * file of 'start + count' bytes                              
         */                                                           
        if (c != (start + count))                                     
 8010914:	2b 81 00 4c 	lw r1,(sp+76)                                  
 8010918:	45 e1 00 02 	be r15,r1,8010920 <fat_file_write+0x110>       <== ALWAYS TAKEN
            count = c - start;                                        
 801091c:	c8 2e 60 00 	sub r12,r1,r14                                 <== NOT EXECUTED
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
 8010920:	29 63 00 20 	lw r3,(r11+32)                                 
 8010924:	34 01 00 01 	mvi r1,1                                       
         */                                                           
        if (c != (start + count))                                     
            count = c - start;                                        
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
 8010928:	41 a2 00 0e 	lbu r2,(r13+14)                                
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
 801092c:	44 61 00 4b 	be r3,r1,8010a58 <fat_file_write+0x248>        
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
 8010930:	41 b0 00 08 	lbu r16,(r13+8)                                
 8010934:	b9 c0 08 00 	mv r1,r14                                      
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
 8010938:	5b 80 00 48 	sw (sp+72),r0                                  
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
 801093c:	ba 00 10 00 	mv r2,r16                                      
 8010940:	f8 00 79 ae 	calli 802eff8 <__lshrsi3>                      
 8010944:	b8 20 c8 00 	mv r25,r1                                      
    uint32_t       file_cln_cnt;                                      
    ssize_t        ret;                                               
    uint32_t       c;                                                 
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
 8010948:	37 9b 00 48 	addi fp,sp,72                                  
 801094c:	b9 a0 08 00 	mv r1,r13                                      
 8010950:	b9 60 10 00 	mv r2,r11                                      
 8010954:	bb 20 18 00 	mv r3,r25                                      
 8010958:	bb 60 20 00 	mv r4,fp                                       
 801095c:	fb ff fc b7 	calli 800fc38 <fat_file_lseek>                 
 8010960:	b8 20 78 00 	mv r15,r1                                      
    if (RC_OK == rc)                                                  
 8010964:	5c 20 00 36 	bne r1,r0,8010a3c <fat_file_write+0x22c>       <== NEVER TAKEN
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
 8010968:	ba 00 10 00 	mv r2,r16                                      
 801096c:	bb 20 08 00 	mv r1,r25                                      
 8010970:	fb ff c1 fd 	calli 8001164 <__ashlsi3>                      
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
 8010974:	29 62 00 1c 	lw r2,(r11+28)                                 
 8010978:	2b 92 00 48 	lw r18,(sp+72)                                 
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
 801097c:	c9 c1 70 00 	sub r14,r14,r1                                 
 8010980:	7d 93 00 00 	cmpnei r19,r12,0                               
 8010984:	b9 c0 80 00 	mv r16,r14                                     
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
 8010988:	ca 42 90 00 	sub r18,r18,r2                                 
 801098c:	34 0f 00 00 	mvi r15,0                                      
    uint32_t       ofs_cln_save = ofs_cln;                            
    uint32_t       bytes_to_write = count;                            
    uint32_t       file_cln_cnt;                                      
    ssize_t        ret;                                               
    uint32_t       c;                                                 
    bool           overwrite_cluster = false;                         
 8010990:	34 17 00 00 	mvi r23,0                                      
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
 8010994:	34 18 00 00 	mvi r24,0                                      
     const uint32_t                        count,                     
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
 8010998:	34 11 00 00 	mvi r17,0                                      
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
        while (   (RC_OK == rc)                                       
 801099c:	65 f6 00 00 	cmpei r22,r15,0                                
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
 80109a0:	ba e0 30 00 	mv r6,r23                                      
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
        while (   (RC_OK == rc)                                       
 80109a4:	a2 76 b0 00 	and r22,r19,r22                                
 80109a8:	46 c0 00 1c 	be r22,r0,8010a18 <fat_file_write+0x208>       
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
 80109ac:	2d a5 00 06 	lhu r5,(r13+6)                                 
 80109b0:	c8 b0 20 00 	sub r4,r5,r16                                  
 80109b4:	51 84 00 02 	bgeu r12,r4,80109bc <fat_file_write+0x1ac>     
 80109b8:	b9 80 20 00 	mv r4,r12                                      
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
 80109bc:	56 55 00 24 	bgu r18,r21,8010a4c <fat_file_write+0x23c>     
                overwrite_cluster = true;                             
                                                                      
            ret = fat_cluster_write(fs_info,                          
 80109c0:	2b 82 00 48 	lw r2,(sp+72)                                  
 80109c4:	ba 00 18 00 	mv r3,r16                                      
 80109c8:	b6 91 28 00 	add r5,r20,r17                                 
 80109cc:	b9 a0 08 00 	mv r1,r13                                      
 80109d0:	f8 00 02 3c 	calli 80112c0 <fat_cluster_write>              
                                      cur_cln,                        
                                      ofs_cln,                        
                                      c,                              
                                      &buf[cmpltd],                   
                                      overwrite_cluster);             
            if (0 > ret)                                              
 80109d4:	34 0f ff ff 	mvi r15,-1                                     
 80109d8:	48 01 ff f1 	bg r0,r1,801099c <fat_file_write+0x18c>        <== NEVER TAKEN
              rc = -1;                                                
                                                                      
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
                bytes_to_write -= ret;                                
 80109dc:	c9 81 60 00 	sub r12,r12,r1                                 
                cmpltd += ret;                                        
                save_cln = cur_cln;                                   
 80109e0:	2b 98 00 48 	lw r24,(sp+72)                                 
                                                                      
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
 80109e4:	b6 21 88 00 	add r17,r17,r1                                 
                save_cln = cur_cln;                                   
                if (0 < bytes_to_write)                               
 80109e8:	34 0f 00 00 	mvi r15,0                                      
                  rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
                                                                      
                ofs_cln = 0;                                          
 80109ec:	34 10 00 00 	mvi r16,0                                      
 80109f0:	34 13 00 00 	mvi r19,0                                      
            if (0 > ret)                                              
              rc = -1;                                                
                                                                      
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
 80109f4:	36 52 00 01 	addi r18,r18,1                                 
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
                save_cln = cur_cln;                                   
                if (0 < bytes_to_write)                               
 80109f8:	45 80 ff e9 	be r12,r0,801099c <fat_file_write+0x18c>       
                  rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
 80109fc:	b9 a0 08 00 	mv r1,r13                                      
 8010a00:	bb 00 10 00 	mv r2,r24                                      
 8010a04:	bb 60 18 00 	mv r3,fp                                       
 8010a08:	f8 00 24 ef 	calli 8019dc4 <fat_get_fat_cluster>            
 8010a0c:	b8 20 78 00 	mv r15,r1                                      
 8010a10:	34 13 00 01 	mvi r19,1                                      
 8010a14:	e3 ff ff e2 	bi 801099c <fat_file_write+0x18c>              
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
 8010a18:	41 a2 00 08 	lbu r2,(r13+8)                                 
 8010a1c:	35 ce ff ff 	addi r14,r14,-1                                
 8010a20:	b5 d1 08 00 	add r1,r14,r17                                 
 8010a24:	f8 00 79 75 	calli 802eff8 <__lshrsi3>                      
            }                                                         
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
 8010a28:	b4 39 08 00 	add r1,r1,r25                                  
 8010a2c:	59 61 00 34 	sw (r11+52),r1                                 
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
        fat_fd->map.disk_cln = save_cln;                              
 8010a30:	59 78 00 38 	sw (r11+56),r24                                
    }                                                                 
                                                                      
    if (RC_OK != rc)                                                  
 8010a34:	5d f6 00 02 	bne r15,r22,8010a3c <fat_file_write+0x22c>     <== NEVER TAKEN
      return rc;                                                      
    else                                                              
      return cmpltd;                                                  
 8010a38:	ba 20 78 00 	mv r15,r17                                     
                                                       start,         
                                                       count,         
                                                       buf,           
                                                       file_cln_initial);
            if (0 > ret)                                              
              rc = -1;                                                
 8010a3c:	34 02 ff ff 	mvi r2,-1                                      
                                                       fat_fd,        
                                                       start,         
                                                       count,         
                                                       buf,           
                                                       file_cln_initial);
            if (0 > ret)                                              
 8010a40:	48 0f ff 95 	bg r0,r15,8010894 <fat_file_write+0x84>        <== NEVER TAKEN
              rc = -1;                                                
            else                                                      
              cmpltd = ret;                                           
 8010a44:	b9 e0 10 00 	mv r2,r15                                      
 8010a48:	e3 ff ff 93 	bi 8010894 <fat_file_write+0x84>               
        while (   (RC_OK == rc)                                       
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
 8010a4c:	34 06 00 01 	mvi r6,1                                       
                overwrite_cluster = true;                             
 8010a50:	34 17 00 01 	mvi r23,1                                      
 8010a54:	e3 ff ff db 	bi 80109c0 <fat_file_write+0x1b0>              
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
 8010a58:	29 61 00 24 	lw r1,(r11+36)                                 
 8010a5c:	5c 20 ff b5 	bne r1,r0,8010930 <fat_file_write+0x120>       <== NEVER TAKEN
 8010a60:	20 42 00 03 	andi r2,r2,0x3                                 
 8010a64:	44 41 ff b3 	be r2,r1,8010930 <fat_file_write+0x120>        
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
            cln += (start >> fs_info->vol.bpc_log2);                  
 8010a68:	41 a2 00 08 	lbu r2,(r13+8)                                 
 8010a6c:	b9 c0 08 00 	mv r1,r14                                      
            count = c - start;                                        
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
 8010a70:	29 6b 00 1c 	lw r11,(r11+28)                                
            cln += (start >> fs_info->vol.bpc_log2);                  
 8010a74:	f8 00 79 61 	calli 802eff8 <__lshrsi3>                      
            byte = start & (fs_info->vol.bpc -1);                     
 8010a78:	2d a3 00 06 	lhu r3,(r13+6)                                 
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
            cln += (start >> fs_info->vol.bpc_log2);                  
 8010a7c:	b4 2b 10 00 	add r2,r1,r11                                  
            byte = start & (fs_info->vol.bpc -1);                     
                                                                      
            ret = fat_cluster_write(fs_info,                          
 8010a80:	b9 80 20 00 	mv r4,r12                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
            cln += (start >> fs_info->vol.bpc_log2);                  
            byte = start & (fs_info->vol.bpc -1);                     
 8010a84:	34 63 ff ff 	addi r3,r3,-1                                  
                                                                      
            ret = fat_cluster_write(fs_info,                          
 8010a88:	b9 a0 08 00 	mv r1,r13                                      
 8010a8c:	a1 c3 18 00 	and r3,r14,r3                                  
 8010a90:	ba 80 28 00 	mv r5,r20                                      
 8010a94:	34 06 00 00 	mvi r6,0                                       
 8010a98:	f8 00 02 0a 	calli 80112c0 <fat_cluster_write>              
                                      byte,                           
                                      count,                          
                                      buf,                            
                                      false);                         
            if (0 > ret)                                              
              rc = -1;                                                
 8010a9c:	34 02 ff ff 	mvi r2,-1                                      
                                      cln,                            
                                      byte,                           
                                      count,                          
                                      buf,                            
                                      false);                         
            if (0 > ret)                                              
 8010aa0:	48 01 ff 7d 	bg r0,r1,8010894 <fat_file_write+0x84>         <== NEVER TAKEN
              rc = -1;                                                
            else                                                      
              cmpltd = ret;                                           
 8010aa4:	b8 20 10 00 	mv r2,r1                                       
 8010aa8:	e3 ff ff 7b 	bi 8010894 <fat_file_write+0x84>               
                                                                      

0801a4f4 <fat_free_fat_clusters_chain>: int fat_free_fat_clusters_chain( fat_fs_info_t *fs_info, uint32_t chain ) {
 801a4f4:	37 9c ff e0 	addi sp,sp,-32                                 
 801a4f8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801a4fc:	5b 8c 00 18 	sw (sp+24),r12                                 
 801a500:	5b 8d 00 14 	sw (sp+20),r13                                 
 801a504:	5b 8e 00 10 	sw (sp+16),r14                                 
 801a508:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801a50c:	5b 90 00 08 	sw (sp+8),r16                                  
 801a510:	5b 9d 00 04 	sw (sp+4),ra                                   
 801a514:	b8 20 58 00 	mv r11,r1                                      
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 801a518:	28 21 00 10 	lw r1,(r1+16)                                  
 801a51c:	29 63 00 14 	lw r3,(r11+20)                                 
    uint32_t                              chain                       
    )                                                                 
{                                                                     
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
 801a520:	5b 80 00 20 	sw (sp+32),r0                                  
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 801a524:	a0 41 08 00 	and r1,r2,r1                                   
int                                                                   
fat_free_fat_clusters_chain(                                          
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              chain                       
    )                                                                 
{                                                                     
 801a528:	b8 40 80 00 	mv r16,r2                                      
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 801a52c:	50 23 00 31 	bgeu r1,r3,801a5f0 <fat_free_fat_clusters_chain+0xfc><== NEVER TAKEN
 801a530:	b8 40 60 00 	mv r12,r2                                      
 801a534:	34 0e 00 00 	mvi r14,0                                      
 801a538:	34 0f 00 00 	mvi r15,0                                      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
 801a53c:	b9 80 10 00 	mv r2,r12                                      
 801a540:	37 83 00 20 	addi r3,sp,32                                  
 801a544:	b9 60 08 00 	mv r1,r11                                      
 801a548:	fb ff fe 1f 	calli 8019dc4 <fat_get_fat_cluster>            
 801a54c:	b8 20 68 00 	mv r13,r1                                      
                                                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
 801a550:	b9 80 10 00 	mv r2,r12                                      
 801a554:	b9 60 08 00 	mv r1,r11                                      
 801a558:	34 03 00 00 	mvi r3,0                                       
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
        if ( rc != RC_OK )                                            
 801a55c:	5d a0 00 1d 	bne r13,r0,801a5d0 <fat_free_fat_clusters_chain+0xdc><== NEVER TAKEN
                                                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
 801a560:	fb ff fe d6 	calli 801a0b8 <fat_set_fat_cluster>            
        if ( rc != RC_OK )                                            
            rc1 = rc;                                                 
                                                                      
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
 801a564:	2b 8c 00 20 	lw r12,(sp+32)                                 
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
 801a568:	44 2d 00 02 	be r1,r13,801a570 <fat_free_fat_clusters_chain+0x7c><== ALWAYS TAKEN
 801a56c:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 801a570:	29 61 00 10 	lw r1,(r11+16)                                 
 801a574:	29 63 00 14 	lw r3,(r11+20)                                 
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
            rc1 = rc;                                                 
                                                                      
        freed_cls_cnt++;                                              
 801a578:	35 ce 00 01 	addi r14,r14,1                                 
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 801a57c:	a1 81 08 00 	and r1,r12,r1                                  
 801a580:	54 61 ff ef 	bgu r3,r1,801a53c <fat_free_fat_clusters_chain+0x48>
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
    }                                                                 
                                                                      
        fs_info->vol.next_cl = chain;                                 
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
 801a584:	29 61 00 44 	lw r1,(r11+68)                                 
                                                                      
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
    }                                                                 
                                                                      
        fs_info->vol.next_cl = chain;                                 
 801a588:	59 70 00 4c 	sw (r11+76),r16                                
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
 801a58c:	34 02 ff ff 	mvi r2,-1                                      
 801a590:	44 22 00 03 	be r1,r2,801a59c <fat_free_fat_clusters_chain+0xa8><== ALWAYS TAKEN
            fs_info->vol.free_cls += freed_cls_cnt;                   
 801a594:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 801a598:	59 61 00 44 	sw (r11+68),r1                                 <== NOT EXECUTED
                                                                      
    fat_buf_release(fs_info);                                         
 801a59c:	b9 60 08 00 	mv r1,r11                                      
 801a5a0:	fb ff d9 99 	calli 8010c04 <fat_buf_release>                
 801a5a4:	b9 e0 68 00 	mv r13,r15                                     
    if (rc1 != RC_OK)                                                 
        return rc1;                                                   
                                                                      
    return RC_OK;                                                     
}                                                                     
 801a5a8:	b9 a0 08 00 	mv r1,r13                                      
 801a5ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801a5b0:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801a5b4:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801a5b8:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801a5bc:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801a5c0:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801a5c4:	2b 90 00 08 	lw r16,(sp+8)                                  
 801a5c8:	37 9c 00 20 	addi sp,sp,32                                  
 801a5cc:	c3 a0 00 00 	ret                                            
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
        if ( rc != RC_OK )                                            
        {                                                             
              if(fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)        
 801a5d0:	29 61 00 44 	lw r1,(r11+68)                                 <== NOT EXECUTED
 801a5d4:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 801a5d8:	44 22 00 03 	be r1,r2,801a5e4 <fat_free_fat_clusters_chain+0xf0><== NOT EXECUTED
                fs_info->vol.free_cls += freed_cls_cnt;               
 801a5dc:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 801a5e0:	59 61 00 44 	sw (r11+68),r1                                 <== NOT EXECUTED
                                                                      
            fat_buf_release(fs_info);                                 
 801a5e4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801a5e8:	fb ff d9 87 	calli 8010c04 <fat_buf_release>                <== NOT EXECUTED
            return rc;                                                
 801a5ec:	e3 ff ff ef 	bi 801a5a8 <fat_free_fat_clusters_chain+0xb4>  <== NOT EXECUTED
    )                                                                 
{                                                                     
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
 801a5f0:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
fat_free_fat_clusters_chain(                                          
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              chain                       
    )                                                                 
{                                                                     
    int            rc = RC_OK, rc1 = RC_OK;                           
 801a5f4:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
 801a5f8:	e3 ff ff e3 	bi 801a584 <fat_free_fat_clusters_chain+0x90>  <== NOT EXECUTED
                                                                      

08012370 <fat_free_unique_ino>: void fat_free_unique_ino( fat_fs_info_t *fs_info, uint32_t ino ) {
 8012370:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 8012374:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 8012378:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
    FAT_SET_UNIQ_INO_FREE((ino - fs_info->uino_base), fs_info->uino); 
 801237c:	28 23 00 80 	lw r3,(r1+128)                                 <== NOT EXECUTED
 8012380:	28 2b 00 74 	lw r11,(r1+116)                                <== NOT EXECUTED
 8012384:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8012388:	c8 43 10 00 	sub r2,r2,r3                                   <== NOT EXECUTED
 801238c:	00 43 00 01 	srui r3,r2,1                                   <== NOT EXECUTED
 8012390:	20 42 00 07 	andi r2,r2,0x7                                 <== NOT EXECUTED
 8012394:	00 63 00 01 	srui r3,r3,1                                   <== NOT EXECUTED
 8012398:	00 63 00 01 	srui r3,r3,1                                   <== NOT EXECUTED
 801239c:	b5 63 58 00 	add r11,r11,r3                                 <== NOT EXECUTED
 80123a0:	fb ff bb 71 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 80123a4:	41 62 00 00 	lbu r2,(r11+0)                                 <== NOT EXECUTED
 80123a8:	a4 20 08 00 	not r1,r1                                      <== NOT EXECUTED
 80123ac:	a0 22 08 00 	and r1,r1,r2                                   <== NOT EXECUTED
 80123b0:	31 61 00 00 	sb (r11+0),r1                                  <== NOT EXECUTED
}                                                                     
 80123b4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80123b8:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80123bc:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80123c0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08019dc4 <fat_get_fat_cluster>: fat_get_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t *ret_val ) {
 8019dc4:	37 9c ff dc 	addi sp,sp,-36                                 
 8019dc8:	5b 8b 00 20 	sw (sp+32),r11                                 
 8019dcc:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8019dd0:	5b 8d 00 18 	sw (sp+24),r13                                 
 8019dd4:	5b 8e 00 14 	sw (sp+20),r14                                 
 8019dd8:	5b 8f 00 10 	sw (sp+16),r15                                 
 8019ddc:	5b 90 00 0c 	sw (sp+12),r16                                 
 8019de0:	5b 91 00 08 	sw (sp+8),r17                                  
 8019de4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8019de8:	b8 20 58 00 	mv r11,r1                                      
    uint8_t                *sec_buf;                                  
    uint32_t                sec = 0;                                  
    uint32_t                ofs = 0;                                  
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
 8019dec:	34 01 00 01 	mvi r1,1                                       
fat_get_fat_cluster(                                                  
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              cln,                        
    uint32_t                             *ret_val                     
    )                                                                 
{                                                                     
 8019df0:	b8 40 60 00 	mv r12,r2                                      
 8019df4:	b8 60 78 00 	mv r15,r3                                      
    uint8_t                *sec_buf;                                  
    uint32_t                sec = 0;                                  
    uint32_t                ofs = 0;                                  
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
 8019df8:	50 22 00 21 	bgeu r1,r2,8019e7c <fat_get_fat_cluster+0xb8>  <== NEVER TAKEN
 8019dfc:	29 61 00 38 	lw r1,(r11+56)                                 
 8019e00:	34 21 00 01 	addi r1,r1,1                                   
 8019e04:	50 22 00 02 	bgeu r1,r2,8019e0c <fat_get_fat_cluster+0x48>  <== ALWAYS TAKEN
 8019e08:	e0 00 00 1d 	bi 8019e7c <fat_get_fat_cluster+0xb8>          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
 8019e0c:	41 62 00 0e 	lbu r2,(r11+14)                                
 8019e10:	20 41 00 01 	andi r1,r2,0x1                                 
 8019e14:	5c 20 00 29 	bne r1,r0,8019eb8 <fat_get_fat_cluster+0xf4>   
 8019e18:	20 42 00 02 	andi r2,r2,0x2                                 
 8019e1c:	44 41 00 2f 	be r2,r1,8019ed8 <fat_get_fat_cluster+0x114>   
 8019e20:	41 62 00 02 	lbu r2,(r11+2)                                 
 8019e24:	b5 8c 70 00 	add r14,r12,r12                                
 8019e28:	b9 c0 08 00 	mv r1,r14                                      
 8019e2c:	f8 00 54 73 	calli 802eff8 <__lshrsi3>                      
 8019e30:	29 70 00 58 	lw r16,(r11+88)                                
 8019e34:	b4 30 80 00 	add r16,r1,r16                                 
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
 8019e38:	b9 60 08 00 	mv r1,r11                                      
 8019e3c:	ba 00 10 00 	mv r2,r16                                      
 8019e40:	34 03 00 01 	mvi r3,1                                       
 8019e44:	37 84 00 24 	addi r4,sp,36                                  
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 8019e48:	2d 71 00 00 	lhu r17,(r11+0)                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
 8019e4c:	fb ff db e9 	calli 8010df0 <fat_buf_access>                 
 8019e50:	b8 20 68 00 	mv r13,r1                                      
    if (rc != RC_OK)                                                  
 8019e54:	5c 20 00 0e 	bne r1,r0,8019e8c <fat_get_fat_cluster+0xc8>   <== NEVER TAKEN
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 8019e58:	41 61 00 0e 	lbu r1,(r11+14)                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 8019e5c:	36 31 ff ff 	addi r17,r17,-1                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 8019e60:	34 02 00 02 	mvi r2,2                                       
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 8019e64:	a1 d1 70 00 	and r14,r14,r17                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 8019e68:	44 22 00 24 	be r1,r2,8019ef8 <fat_get_fat_cluster+0x134>   
 8019e6c:	34 02 00 04 	mvi r2,4                                       
 8019e70:	44 22 00 53 	be r1,r2,8019fbc <fat_get_fat_cluster+0x1f8>   
 8019e74:	34 02 00 01 	mvi r2,1                                       
 8019e78:	44 22 00 37 	be r1,r2,8019f54 <fat_get_fat_cluster+0x190>   <== ALWAYS TAKEN
            *ret_val = *((uint32_t   *)(sec_buf + ofs));              
            *ret_val = CF_LE_L(*ret_val);                             
            break;                                                    
                                                                      
        default:                                                      
            rtems_set_errno_and_return_minus_one(EIO);                
 8019e7c:	f8 00 0a 5e 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8019e80:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8019e84:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8019e88:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
            break;                                                    
    }                                                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
 8019e8c:	b9 a0 08 00 	mv r1,r13                                      
 8019e90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8019e94:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8019e98:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8019e9c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8019ea0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8019ea4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8019ea8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8019eac:	2b 91 00 08 	lw r17,(sp+8)                                  
 8019eb0:	37 9c 00 24 	addi sp,sp,36                                  
 8019eb4:	c3 a0 00 00 	ret                                            
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
 8019eb8:	01 8e 00 01 	srui r14,r12,1                                 
 8019ebc:	41 62 00 02 	lbu r2,(r11+2)                                 
 8019ec0:	b5 cc 70 00 	add r14,r14,r12                                
 8019ec4:	b9 c0 08 00 	mv r1,r14                                      
 8019ec8:	f8 00 54 4c 	calli 802eff8 <__lshrsi3>                      
 8019ecc:	29 70 00 58 	lw r16,(r11+88)                                
 8019ed0:	b4 30 80 00 	add r16,r1,r16                                 
 8019ed4:	e3 ff ff d9 	bi 8019e38 <fat_get_fat_cluster+0x74>          
 8019ed8:	b5 8c 70 00 	add r14,r12,r12                                
 8019edc:	41 62 00 02 	lbu r2,(r11+2)                                 
 8019ee0:	b5 ce 70 00 	add r14,r14,r14                                
 8019ee4:	b9 c0 08 00 	mv r1,r14                                      
 8019ee8:	f8 00 54 44 	calli 802eff8 <__lshrsi3>                      
 8019eec:	29 70 00 58 	lw r16,(r11+88)                                
 8019ef0:	b4 30 80 00 	add r16,r1,r16                                 
 8019ef4:	e3 ff ff d1 	bi 8019e38 <fat_get_fat_cluster+0x74>          
            else                                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;               
            break;                                                    
                                                                      
        case FAT_FAT16:                                               
            *ret_val = *((uint16_t   *)(sec_buf + ofs));              
 8019ef8:	2b 81 00 24 	lw r1,(sp+36)                                  
 8019efc:	b4 2e 70 00 	add r14,r1,r14                                 
 8019f00:	2d c2 00 00 	lhu r2,(r14+0)                                 
 *  @param[in] value is the value to be swapped                       
 *  @return the value after being endian swapped                      
 */                                                                   
static inline uint16_t CPU_swap_u16(uint16_t v)                       
{                                                                     
    return v << 8 | v >> 8;                                           
 8019f04:	00 41 00 01 	srui r1,r2,1                                   
 8019f08:	b4 42 10 00 	add r2,r2,r2                                   
 8019f0c:	00 21 00 01 	srui r1,r1,1                                   
 8019f10:	b4 42 10 00 	add r2,r2,r2                                   
 8019f14:	00 21 00 01 	srui r1,r1,1                                   
 8019f18:	b4 42 10 00 	add r2,r2,r2                                   
 8019f1c:	00 21 00 01 	srui r1,r1,1                                   
 8019f20:	b4 42 10 00 	add r2,r2,r2                                   
 8019f24:	00 21 00 01 	srui r1,r1,1                                   
 8019f28:	b4 42 10 00 	add r2,r2,r2                                   
 8019f2c:	00 21 00 01 	srui r1,r1,1                                   
 8019f30:	b4 42 10 00 	add r2,r2,r2                                   
 8019f34:	00 21 00 01 	srui r1,r1,1                                   
 8019f38:	b4 42 10 00 	add r2,r2,r2                                   
 8019f3c:	00 21 00 01 	srui r1,r1,1                                   
 8019f40:	b4 42 10 00 	add r2,r2,r2                                   
 8019f44:	b8 41 08 00 	or r1,r2,r1                                    
            *ret_val = CF_LE_W(*ret_val);                             
 8019f48:	20 21 ff ff 	andi r1,r1,0xffff                              
 8019f4c:	59 e1 00 00 	sw (r15+0),r1                                  
            break;                                                    
 8019f50:	e3 ff ff cf 	bi 8019e8c <fat_get_fat_cluster+0xc8>          
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
 8019f54:	2b 82 00 24 	lw r2,(sp+36)                                  
            if ( ofs == (fs_info->vol.bps - 1) )                      
 8019f58:	2d 63 00 00 	lhu r3,(r11+0)                                 
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
 8019f5c:	b4 4e 10 00 	add r2,r2,r14                                  
 8019f60:	40 41 00 00 	lbu r1,(r2+0)                                  
            if ( ofs == (fs_info->vol.bps - 1) )                      
 8019f64:	34 63 ff ff 	addi r3,r3,-1                                  
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
 8019f68:	59 e1 00 00 	sw (r15+0),r1                                  
            if ( ofs == (fs_info->vol.bps - 1) )                      
 8019f6c:	44 6e 00 3d 	be r3,r14,801a060 <fat_get_fat_cluster+0x29c>  <== NEVER TAKEN
                                                                      
                *ret_val |= *sec_buf << 8;                            
            }                                                         
            else                                                      
            {                                                         
                *ret_val |= *(sec_buf + ofs + 1) << 8;                
 8019f70:	40 42 00 01 	lbu r2,(r2+1)                                  
 8019f74:	b4 42 10 00 	add r2,r2,r2                                   
 8019f78:	b4 42 10 00 	add r2,r2,r2                                   
 8019f7c:	b4 42 10 00 	add r2,r2,r2                                   
 8019f80:	b4 42 10 00 	add r2,r2,r2                                   
 8019f84:	b4 42 10 00 	add r2,r2,r2                                   
 8019f88:	b4 42 10 00 	add r2,r2,r2                                   
 8019f8c:	b4 42 10 00 	add r2,r2,r2                                   
 8019f90:	b4 42 10 00 	add r2,r2,r2                                   
 8019f94:	b8 41 10 00 	or r2,r2,r1                                    
 8019f98:	59 e2 00 00 	sw (r15+0),r2                                  
            }                                                         
                                                                      
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
 8019f9c:	21 8c 00 01 	andi r12,r12,0x1                               
 8019fa0:	45 80 00 2d 	be r12,r0,801a054 <fat_get_fat_cluster+0x290>  
                *ret_val = (*ret_val) >> FAT12_SHIFT;                 
 8019fa4:	00 42 00 01 	srui r2,r2,1                                   
 8019fa8:	00 42 00 01 	srui r2,r2,1                                   
 8019fac:	00 42 00 01 	srui r2,r2,1                                   
 8019fb0:	00 42 00 01 	srui r2,r2,1                                   
 8019fb4:	59 e2 00 00 	sw (r15+0),r2                                  
 8019fb8:	e3 ff ff b5 	bi 8019e8c <fat_get_fat_cluster+0xc8>          
            *ret_val = *((uint16_t   *)(sec_buf + ofs));              
            *ret_val = CF_LE_W(*ret_val);                             
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            *ret_val = *((uint32_t   *)(sec_buf + ofs));              
 8019fbc:	2b 81 00 24 	lw r1,(sp+36)                                  
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019fc0:	34 02 00 18 	mvi r2,24                                      
 8019fc4:	b4 2e 70 00 	add r14,r1,r14                                 
 8019fc8:	29 cb 00 00 	lw r11,(r14+0)                                 
 8019fcc:	21 61 00 ff 	andi r1,r11,0xff                               
 8019fd0:	fb ff 9c 65 	calli 8001164 <__ashlsi3>                      
 8019fd4:	b8 20 60 00 	mv r12,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8019fd8:	34 02 00 18 	mvi r2,24                                      
 8019fdc:	b9 60 08 00 	mv r1,r11                                      
 8019fe0:	f8 00 54 06 	calli 802eff8 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019fe4:	01 64 00 01 	srui r4,r11,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019fe8:	b9 81 60 00 	or r12,r12,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019fec:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019ff0:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019ff4:	00 84 00 01 	srui r4,r4,1                                   
 8019ff8:	00 84 00 01 	srui r4,r4,1                                   
 8019ffc:	00 84 00 01 	srui r4,r4,1                                   
 801a000:	00 84 00 01 	srui r4,r4,1                                   
 801a004:	00 84 00 01 	srui r4,r4,1                                   
 801a008:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a00c:	20 81 00 ff 	andi r1,r4,0xff                                
 801a010:	fb ff 9c 55 	calli 8001164 <__ashlsi3>                      
 801a014:	b9 81 60 00 	or r12,r12,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 801a018:	34 02 00 10 	mvi r2,16                                      
 801a01c:	b9 60 08 00 	mv r1,r11                                      
 801a020:	f8 00 53 f6 	calli 802eff8 <__lshrsi3>                      
 801a024:	20 22 00 ff 	andi r2,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a028:	b4 42 10 00 	add r2,r2,r2                                   
 801a02c:	b4 42 10 00 	add r2,r2,r2                                   
 801a030:	b4 42 10 00 	add r2,r2,r2                                   
 801a034:	b4 42 10 00 	add r2,r2,r2                                   
 801a038:	b4 42 10 00 	add r2,r2,r2                                   
 801a03c:	b4 42 10 00 	add r2,r2,r2                                   
 801a040:	b4 42 10 00 	add r2,r2,r2                                   
 801a044:	b4 42 10 00 	add r2,r2,r2                                   
 801a048:	b9 82 10 00 	or r2,r12,r2                                   
            *ret_val = CF_LE_L(*ret_val);                             
 801a04c:	59 e2 00 00 	sw (r15+0),r2                                  
            break;                                                    
 801a050:	e3 ff ff 8f 	bi 8019e8c <fat_get_fat_cluster+0xc8>          
            }                                                         
                                                                      
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
                *ret_val = (*ret_val) >> FAT12_SHIFT;                 
            else                                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;               
 801a054:	20 42 0f ff 	andi r2,r2,0xfff                               
 801a058:	59 e2 00 00 	sw (r15+0),r2                                  
 801a05c:	e3 ff ff 8c 	bi 8019e8c <fat_get_fat_cluster+0xc8>          
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
            if ( ofs == (fs_info->vol.bps - 1) )                      
            {                                                         
                rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
 801a060:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801a064:	36 02 00 01 	addi r2,r16,1                                  <== NOT EXECUTED
 801a068:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 801a06c:	37 84 00 24 	addi r4,sp,36                                  <== NOT EXECUTED
 801a070:	fb ff db 60 	calli 8010df0 <fat_buf_access>                 <== NOT EXECUTED
                                    &sec_buf);                        
                if (rc != RC_OK)                                      
 801a074:	5c 20 00 0f 	bne r1,r0,801a0b0 <fat_get_fat_cluster+0x2ec>  <== NOT EXECUTED
                    return rc;                                        
                                                                      
                *ret_val |= *sec_buf << 8;                            
 801a078:	2b 81 00 24 	lw r1,(sp+36)                                  <== NOT EXECUTED
 801a07c:	29 e2 00 00 	lw r2,(r15+0)                                  <== NOT EXECUTED
 801a080:	40 21 00 00 	lbu r1,(r1+0)                                  <== NOT EXECUTED
 801a084:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a088:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a08c:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a090:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a094:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a098:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a09c:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a0a0:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801a0a4:	b8 22 10 00 	or r2,r1,r2                                    <== NOT EXECUTED
 801a0a8:	59 e2 00 00 	sw (r15+0),r2                                  <== NOT EXECUTED
 801a0ac:	e3 ff ff bc 	bi 8019f9c <fat_get_fat_cluster+0x1d8>         <== NOT EXECUTED
            *ret_val = (*(sec_buf + ofs));                            
            if ( ofs == (fs_info->vol.bps - 1) )                      
            {                                                         
                rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                    &sec_buf);                        
                if (rc != RC_OK)                                      
 801a0b0:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 801a0b4:	e3 ff ff 76 	bi 8019e8c <fat_get_fat_cluster+0xc8>          <== NOT EXECUTED
                                                                      

08012224 <fat_get_unique_ino>: * 0 means FAILED !!! * */ uint32_t fat_get_unique_ino(fat_fs_info_t *fs_info) {
 8012224:	37 9c ff d8 	addi sp,sp,-40                                 <== NOT EXECUTED
 8012228:	5b 8b 00 28 	sw (sp+40),r11                                 <== NOT EXECUTED
 801222c:	5b 8c 00 24 	sw (sp+36),r12                                 <== NOT EXECUTED
 8012230:	5b 8d 00 20 	sw (sp+32),r13                                 <== NOT EXECUTED
 8012234:	5b 8e 00 1c 	sw (sp+28),r14                                 <== NOT EXECUTED
 8012238:	5b 8f 00 18 	sw (sp+24),r15                                 <== NOT EXECUTED
 801223c:	5b 90 00 14 	sw (sp+20),r16                                 <== NOT EXECUTED
 8012240:	5b 91 00 10 	sw (sp+16),r17                                 <== NOT EXECUTED
 8012244:	5b 92 00 0c 	sw (sp+12),r18                                 <== NOT EXECUTED
 8012248:	5b 93 00 08 	sw (sp+8),r19                                  <== NOT EXECUTED
 801224c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8012250:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
 8012254:	28 2e 00 7c 	lw r14,(r1+124)                                <== NOT EXECUTED
            fs_info->index++;                                         
            if (fs_info->index >= fs_info->uino_pool_size)            
                fs_info->index = 0;                                   
        }                                                             
                                                                      
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
 8012258:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801225c:	38 21 03 04 	ori r1,r1,0x304                                <== NOT EXECUTED
 8012260:	28 33 00 00 	lw r19,(r1+0)                                  <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
 8012264:	45 c0 00 15 	be r14,r0,80122b8 <fat_get_unique_ino+0x94>    <== NOT EXECUTED
        {                                                             
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino)) 
 8012268:	29 8b 00 78 	lw r11,(r12+120)                               <== NOT EXECUTED
 801226c:	29 92 00 74 	lw r18,(r12+116)                               <== NOT EXECUTED
 8012270:	01 6f 00 01 	srui r15,r11,1                                 <== NOT EXECUTED
 8012274:	21 71 00 07 	andi r17,r11,0x7                               <== NOT EXECUTED
 8012278:	01 ef 00 01 	srui r15,r15,1                                 <== NOT EXECUTED
 801227c:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8012280:	01 ef 00 01 	srui r15,r15,1                                 <== NOT EXECUTED
 8012284:	b6 4f 78 00 	add r15,r18,r15                                <== NOT EXECUTED
 8012288:	41 f0 00 00 	lbu r16,(r15+0)                                <== NOT EXECUTED
 801228c:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8012290:	fb ff bb dc 	calli 8001200 <__ashrsi3>                      <== NOT EXECUTED
 8012294:	20 21 00 01 	andi r1,r1,0x1                                 <== NOT EXECUTED
 8012298:	44 20 00 1f 	be r1,r0,8012314 <fat_get_unique_ino+0xf0>     <== NOT EXECUTED
 801229c:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
            {                                                         
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
                return (fs_info->uino_base + fs_info->index);         
            }                                                         
            fs_info->index++;                                         
 80122a0:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
 80122a4:	59 8b 00 78 	sw (r12+120),r11                               <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
 80122a8:	35 ad 00 01 	addi r13,r13,1                                 <== NOT EXECUTED
            {                                                         
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
                return (fs_info->uino_base + fs_info->index);         
            }                                                         
            fs_info->index++;                                         
            if (fs_info->index >= fs_info->uino_pool_size)            
 80122ac:	55 cb 00 02 	bgu r14,r11,80122b4 <fat_get_unique_ino+0x90>  <== NOT EXECUTED
                fs_info->index = 0;                                   
 80122b0:	59 80 00 78 	sw (r12+120),r0                                <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
 80122b4:	55 cd 00 0c 	bgu r14,r13,80122e4 <fat_get_unique_ino+0xc0>  <== NOT EXECUTED
            fs_info->index++;                                         
            if (fs_info->index >= fs_info->uino_pool_size)            
                fs_info->index = 0;                                   
        }                                                             
                                                                      
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
 80122b8:	29 81 00 80 	lw r1,(r12+128)                                <== NOT EXECUTED
 80122bc:	b5 ce 10 00 	add r2,r14,r14                                 <== NOT EXECUTED
 80122c0:	ca 61 08 00 	sub r1,r19,r1                                  <== NOT EXECUTED
 80122c4:	50 41 00 06 	bgeu r2,r1,80122dc <fat_get_unique_ino+0xb8>   <== NOT EXECUTED
        {                                                             
            fs_info->uino_pool_size <<= 1;                            
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
 80122c8:	29 81 00 74 	lw r1,(r12+116)                                <== NOT EXECUTED
                fs_info->index = 0;                                   
        }                                                             
                                                                      
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
        {                                                             
            fs_info->uino_pool_size <<= 1;                            
 80122cc:	59 82 00 7c 	sw (r12+124),r2                                <== NOT EXECUTED
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
 80122d0:	fb ff c8 1c 	calli 8004340 <realloc>                        <== NOT EXECUTED
 80122d4:	59 81 00 74 	sw (r12+116),r1                                <== NOT EXECUTED
            if (fs_info->uino != NULL)                                
 80122d8:	5c 20 00 23 	bne r1,r0,8012364 <fat_get_unique_ino+0x140>   <== NOT EXECUTED
                resrc_unsuff = true;                                  
        }                                                             
        else                                                          
            resrc_unsuff = true;                                      
    }                                                                 
    return 0;                                                         
 80122dc:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80122e0:	e0 00 00 15 	bi 8012334 <fat_get_unique_ino+0x110>          <== NOT EXECUTED
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
        {                                                             
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino)) 
 80122e4:	29 8b 00 78 	lw r11,(r12+120)                               <== NOT EXECUTED
 80122e8:	01 63 00 01 	srui r3,r11,1                                  <== NOT EXECUTED
 80122ec:	21 71 00 07 	andi r17,r11,0x7                               <== NOT EXECUTED
 80122f0:	00 63 00 01 	srui r3,r3,1                                   <== NOT EXECUTED
 80122f4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 80122f8:	00 63 00 01 	srui r3,r3,1                                   <== NOT EXECUTED
 80122fc:	b6 43 78 00 	add r15,r18,r3                                 <== NOT EXECUTED
 8012300:	41 f0 00 00 	lbu r16,(r15+0)                                <== NOT EXECUTED
 8012304:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8012308:	fb ff bb be 	calli 8001200 <__ashrsi3>                      <== NOT EXECUTED
 801230c:	20 21 00 01 	andi r1,r1,0x1                                 <== NOT EXECUTED
 8012310:	5c 20 ff e4 	bne r1,r0,80122a0 <fat_get_unique_ino+0x7c>    <== NOT EXECUTED
            {                                                         
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
 8012314:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8012318:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 801231c:	fb ff bb 92 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 8012320:	b8 30 08 00 	or r1,r1,r16                                   <== NOT EXECUTED
 8012324:	31 e1 00 00 	sb (r15+0),r1                                  <== NOT EXECUTED
                return (fs_info->uino_base + fs_info->index);         
 8012328:	29 82 00 78 	lw r2,(r12+120)                                <== NOT EXECUTED
 801232c:	29 81 00 80 	lw r1,(r12+128)                                <== NOT EXECUTED
 8012330:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
        }                                                             
        else                                                          
            resrc_unsuff = true;                                      
    }                                                                 
    return 0;                                                         
}                                                                     
 8012334:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8012338:	2b 8b 00 28 	lw r11,(sp+40)                                 <== NOT EXECUTED
 801233c:	2b 8c 00 24 	lw r12,(sp+36)                                 <== NOT EXECUTED
 8012340:	2b 8d 00 20 	lw r13,(sp+32)                                 <== NOT EXECUTED
 8012344:	2b 8e 00 1c 	lw r14,(sp+28)                                 <== NOT EXECUTED
 8012348:	2b 8f 00 18 	lw r15,(sp+24)                                 <== NOT EXECUTED
 801234c:	2b 90 00 14 	lw r16,(sp+20)                                 <== NOT EXECUTED
 8012350:	2b 91 00 10 	lw r17,(sp+16)                                 <== NOT EXECUTED
 8012354:	2b 92 00 0c 	lw r18,(sp+12)                                 <== NOT EXECUTED
 8012358:	2b 93 00 08 	lw r19,(sp+8)                                  <== NOT EXECUTED
 801235c:	37 9c 00 28 	addi sp,sp,40                                  <== NOT EXECUTED
 8012360:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
        {                                                             
            fs_info->uino_pool_size <<= 1;                            
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
            if (fs_info->uino != NULL)                                
                fs_info->index = fs_info->uino_pool_size;             
 8012364:	29 8e 00 7c 	lw r14,(r12+124)                               <== NOT EXECUTED
 8012368:	59 8e 00 78 	sw (r12+120),r14                               <== NOT EXECUTED
 801236c:	e3 ff ff be 	bi 8012264 <fat_get_unique_ino+0x40>           <== NOT EXECUTED
                                                                      

08012198 <fat_init_clusters_chain>: int fat_init_clusters_chain( fat_fs_info_t *fs_info, uint32_t start_cln ) {
 8012198:	37 9c ff f4 	addi sp,sp,-12                                 
 801219c:	5b 8b 00 08 	sw (sp+8),r11                                  
 80121a0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80121a4:	b8 40 20 00 	mv r4,r2                                       
 80121a8:	b8 20 58 00 	mv r11,r1                                      
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
 80121ac:	5b 82 00 0c 	sw (sp+12),r2                                  
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 80121b0:	29 67 00 10 	lw r7,(r11+16)                                 
 80121b4:	29 66 00 14 	lw r6,(r11+20)                                 
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
 80121b8:	b8 80 10 00 	mv r2,r4                                       
{                                                                     
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 80121bc:	a0 87 20 00 	and r4,r4,r7                                   
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
 80121c0:	34 03 00 00 	mvi r3,0                                       
 80121c4:	34 05 00 00 	mvi r5,0                                       
 80121c8:	b9 60 08 00 	mv r1,r11                                      
{                                                                     
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
 80121cc:	54 c4 00 06 	bgu r6,r4,80121e4 <fat_init_clusters_chain+0x4c>
            return rc;                                                
        }                                                             
                                                                      
    }                                                                 
                                                                      
    return rc;                                                        
 80121d0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80121d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80121d8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80121dc:	37 9c 00 0c 	addi sp,sp,12                                  
 80121e0:	c3 a0 00 00 	ret                                            
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
 80121e4:	2d 64 00 06 	lhu r4,(r11+6)                                 
 80121e8:	fb ff fb bc 	calli 80110d8 <fat_cluster_set>                
        if ( ret != fs_info->vol.bpc )                                
 80121ec:	2d 62 00 06 	lhu r2,(r11+6)                                 
        {                                                             
            return -1;                                                
        }                                                             
                                                                      
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);        
 80121f0:	37 83 00 0c 	addi r3,sp,12                                  
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
        if ( ret != fs_info->vol.bpc )                                
 80121f4:	5c 41 00 07 	bne r2,r1,8012210 <fat_init_clusters_chain+0x78><== NEVER TAKEN
        {                                                             
            return -1;                                                
        }                                                             
                                                                      
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);        
 80121f8:	2b 82 00 0c 	lw r2,(sp+12)                                  
 80121fc:	b9 60 08 00 	mv r1,r11                                      
 8012200:	f8 00 1e f1 	calli 8019dc4 <fat_get_fat_cluster>            
        if ( rc != RC_OK )                                            
 8012204:	5c 20 ff f4 	bne r1,r0,80121d4 <fat_init_clusters_chain+0x3c><== NEVER TAKEN
 8012208:	2b 84 00 0c 	lw r4,(sp+12)                                  
 801220c:	e3 ff ff e9 	bi 80121b0 <fat_init_clusters_chain+0x18>      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
        if ( ret != fs_info->vol.bpc )                                
        {                                                             
            return -1;                                                
 8012210:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
        }                                                             
                                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 8012214:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8012218:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 801221c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8012220:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080114b8 <fat_init_volume_info>: * RC_OK on success, or -1 if error occured * and errno set appropriately */ int fat_init_volume_info(fat_fs_info_t *fs_info, const char *device) {
 80114b8:	37 9c ff 2c 	addi sp,sp,-212                                
 80114bc:	5b 8b 00 44 	sw (sp+68),r11                                 
 80114c0:	5b 8c 00 40 	sw (sp+64),r12                                 
 80114c4:	5b 8d 00 3c 	sw (sp+60),r13                                 
 80114c8:	5b 8e 00 38 	sw (sp+56),r14                                 
 80114cc:	5b 8f 00 34 	sw (sp+52),r15                                 
 80114d0:	5b 90 00 30 	sw (sp+48),r16                                 
 80114d4:	5b 91 00 2c 	sw (sp+44),r17                                 
 80114d8:	5b 92 00 28 	sw (sp+40),r18                                 
 80114dc:	5b 93 00 24 	sw (sp+36),r19                                 
 80114e0:	5b 94 00 20 	sw (sp+32),r20                                 
 80114e4:	5b 95 00 1c 	sw (sp+28),r21                                 
 80114e8:	5b 96 00 18 	sw (sp+24),r22                                 
 80114ec:	5b 97 00 14 	sw (sp+20),r23                                 
 80114f0:	5b 98 00 10 	sw (sp+16),r24                                 
 80114f4:	5b 99 00 0c 	sw (sp+12),r25                                 
 80114f8:	5b 9b 00 08 	sw (sp+8),fp                                   
 80114fc:	5b 9d 00 04 	sw (sp+4),ra                                   
 8011500:	b8 20 70 00 	mv r14,r1                                      
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
                                                                      
    vol->fd = open(device, O_RDWR);                                   
 8011504:	b8 40 08 00 	mv r1,r2                                       
 8011508:	34 02 00 02 	mvi r2,2                                       
    char                boot_rec[FAT_MAX_BPB_SIZE];                   
    char                fs_info_sector[FAT_USEFUL_INFO_SIZE];         
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
 801150c:	5b 80 00 d4 	sw (sp+212),r0                                 
                                                                      
    vol->fd = open(device, O_RDWR);                                   
 8011510:	fb ff ca c7 	calli 800402c <open>                           
 8011514:	59 c1 00 60 	sw (r14+96),r1                                 
    if (vol->fd < 0)                                                  
 8011518:	4c 20 00 19 	bge r1,r0,801157c <fat_init_volume_info+0xc4>  <== ALWAYS TAKEN
                                                                      
    rc = fstat(vol->fd, &stat_buf);                                   
    if (rc != 0)                                                      
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(ENXIO);                  
 801151c:	f8 00 2c b6 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8011520:	34 02 00 06 	mvi r2,6                                       <== NOT EXECUTED
 8011524:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011528:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
            vol->sectors_per_block = vol->spc;                        
        }                                                             
    }                                                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
 801152c:	b8 40 08 00 	mv r1,r2                                       
 8011530:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011534:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8011538:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801153c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8011540:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8011544:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8011548:	2b 90 00 30 	lw r16,(sp+48)                                 
 801154c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8011550:	2b 92 00 28 	lw r18,(sp+40)                                 
 8011554:	2b 93 00 24 	lw r19,(sp+36)                                 
 8011558:	2b 94 00 20 	lw r20,(sp+32)                                 
 801155c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8011560:	2b 96 00 18 	lw r22,(sp+24)                                 
 8011564:	2b 97 00 14 	lw r23,(sp+20)                                 
 8011568:	2b 98 00 10 	lw r24,(sp+16)                                 
 801156c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8011570:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8011574:	37 9c 00 d4 	addi sp,sp,212                                 
 8011578:	c3 a0 00 00 	ret                                            
    if (vol->fd < 0)                                                  
    {                                                                 
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    rc = fstat(vol->fd, &stat_buf);                                   
 801157c:	37 82 00 80 	addi r2,sp,128                                 
 8011580:	fb ff c6 e0 	calli 8003100 <fstat>                          
    if (rc != 0)                                                      
 8011584:	5c 20 02 2c 	bne r1,r0,8011e34 <fat_init_volume_info+0x97c> <== NEVER TAKEN
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    /* Must be a block device. */                                     
    if (!S_ISBLK(stat_buf.st_mode))                                   
 8011588:	2b 83 00 8c 	lw r3,(sp+140)                                 
 801158c:	34 02 60 00 	mvi r2,24576                                   
 8011590:	20 63 f0 00 	andi r3,r3,0xf000                              
 8011594:	5c 62 02 15 	bne r3,r2,8011de8 <fat_init_volume_info+0x930> <== NEVER TAKEN
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
 8011598:	78 03 08 03 	mvhi r3,0x803                                  
 801159c:	38 63 02 08 	ori r3,r3,0x208                                
 80115a0:	28 62 00 00 	lw r2,(r3+0)                                   
 80115a4:	29 c1 00 60 	lw r1,(r14+96)                                 
 80115a8:	35 c3 00 64 	addi r3,r14,100                                
 80115ac:	f8 00 06 e6 	calli 8013144 <ioctl>                          
 80115b0:	b8 20 58 00 	mv r11,r1                                      
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    /* check that device is registred as block device and lock it */  
    rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);            
    if (rc != 0) {                                                    
 80115b4:	5c 20 02 0d 	bne r1,r0,8011de8 <fat_init_volume_info+0x930> <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    /* Read boot record */                                            
    /* FIXME: Asserts FAT_MAX_BPB_SIZE < bdbuf block size */          
    sc = rtems_bdbuf_read( vol->dd, 0, &block);                       
 80115b8:	29 c1 00 64 	lw r1,(r14+100)                                
 80115bc:	34 02 00 00 	mvi r2,0                                       
 80115c0:	37 83 00 d4 	addi r3,sp,212                                 
 80115c4:	fb ff f4 0f 	calli 800e600 <rtems_bdbuf_read>               
 80115c8:	b8 20 68 00 	mv r13,r1                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
 80115cc:	5c 2b 02 10 	bne r1,r11,8011e0c <fat_init_volume_info+0x954><== NEVER TAKEN
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO);                   
    }                                                                 
                                                                      
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);               
 80115d0:	2b 82 00 d4 	lw r2,(sp+212)                                 
 80115d4:	28 45 00 1c 	lw r5,(r2+28)                                  
                                                                      
    sc = rtems_bdbuf_release( block);                                 
 80115d8:	b8 40 08 00 	mv r1,r2                                       
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO);                   
    }                                                                 
                                                                      
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);               
 80115dc:	40 a4 00 20 	lbu r4,(r5+32)                                 
 80115e0:	40 b1 00 0b 	lbu r17,(r5+11)                                
 80115e4:	40 af 00 0c 	lbu r15,(r5+12)                                
 80115e8:	40 b2 00 0d 	lbu r18,(r5+13)                                
 80115ec:	40 b0 00 0e 	lbu r16,(r5+14)                                
 80115f0:	40 b4 00 0f 	lbu r20,(r5+15)                                
 80115f4:	40 b7 00 10 	lbu r23,(r5+16)                                
 80115f8:	40 b8 00 11 	lbu r24,(r5+17)                                
 80115fc:	40 b3 00 12 	lbu r19,(r5+18)                                
 8011600:	40 b9 00 13 	lbu r25,(r5+19)                                
 8011604:	40 b5 00 14 	lbu r21,(r5+20)                                
 8011608:	40 bb 00 16 	lbu fp,(r5+22)                                 
 801160c:	40 b6 00 17 	lbu r22,(r5+23)                                
 8011610:	5b 84 00 54 	sw (sp+84),r4                                  
 8011614:	40 a2 00 22 	lbu r2,(r5+34)                                 
 8011618:	40 ab 00 21 	lbu r11,(r5+33)                                
 801161c:	5b 82 00 58 	sw (sp+88),r2                                  
 8011620:	40 a3 00 23 	lbu r3,(r5+35)                                 
 8011624:	5b 83 00 5c 	sw (sp+92),r3                                  
 8011628:	40 a4 00 24 	lbu r4,(r5+36)                                 
 801162c:	5b 84 00 60 	sw (sp+96),r4                                  
 8011630:	40 a2 00 26 	lbu r2,(r5+38)                                 
 8011634:	40 ac 00 25 	lbu r12,(r5+37)                                
 8011638:	5b 82 00 4c 	sw (sp+76),r2                                  
 801163c:	40 a3 00 27 	lbu r3,(r5+39)                                 
 8011640:	5b 83 00 50 	sw (sp+80),r3                                  
 8011644:	40 a4 00 28 	lbu r4,(r5+40)                                 
 8011648:	5b 84 00 7c 	sw (sp+124),r4                                 
 801164c:	40 a2 00 29 	lbu r2,(r5+41)                                 
 8011650:	5b 82 00 68 	sw (sp+104),r2                                 
 8011654:	40 a3 00 2c 	lbu r3,(r5+44)                                 
 8011658:	5b 83 00 78 	sw (sp+120),r3                                 
 801165c:	40 a4 00 2d 	lbu r4,(r5+45)                                 
 8011660:	5b 84 00 64 	sw (sp+100),r4                                 
 8011664:	40 a2 00 2e 	lbu r2,(r5+46)                                 
 8011668:	5b 82 00 74 	sw (sp+116),r2                                 
 801166c:	40 a3 00 2f 	lbu r3,(r5+47)                                 
 8011670:	5b 83 00 70 	sw (sp+112),r3                                 
 8011674:	40 a4 00 30 	lbu r4,(r5+48)                                 
 8011678:	5b 84 00 6c 	sw (sp+108),r4                                 
 801167c:	40 a5 00 31 	lbu r5,(r5+49)                                 
 8011680:	5b 85 00 48 	sw (sp+72),r5                                  
                                                                      
    sc = rtems_bdbuf_release( block);                                 
 8011684:	fb ff f4 70 	calli 800e844 <rtems_bdbuf_release>            
    if (sc != RTEMS_SUCCESSFUL)                                       
 8011688:	5c 2d 01 e1 	bne r1,r13,8011e0c <fat_init_volume_info+0x954><== NEVER TAKEN
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    /* Evaluate boot record */                                        
    vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);                 
 801168c:	b5 ef 30 00 	add r6,r15,r15                                 
 8011690:	b4 c6 30 00 	add r6,r6,r6                                   
 8011694:	b4 c6 30 00 	add r6,r6,r6                                   
 8011698:	b4 c6 30 00 	add r6,r6,r6                                   
 801169c:	b4 c6 30 00 	add r6,r6,r6                                   
 80116a0:	b4 c6 30 00 	add r6,r6,r6                                   
 80116a4:	b4 c6 30 00 	add r6,r6,r6                                   
 80116a8:	b4 c6 30 00 	add r6,r6,r6                                   
 80116ac:	b8 d1 88 00 	or r17,r6,r17                                  
                                                                      
    if ( (vol->bps != 512)  &&                                        
 80116b0:	7e 28 04 00 	cmpnei r8,r17,1024                             
 80116b4:	7e 27 02 00 	cmpnei r7,r17,512                              
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    /* Evaluate boot record */                                        
    vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);                 
 80116b8:	0d d1 00 00 	sh (r14+0),r17                                 
                                                                      
    if ( (vol->bps != 512)  &&                                        
 80116bc:	a1 07 68 00 	and r13,r8,r7                                  
 80116c0:	45 a1 00 41 	be r13,r1,80117c4 <fat_init_volume_info+0x30c> <== ALWAYS TAKEN
         (vol->bps != 1024) &&                                        
 80116c4:	34 08 08 00 	mvi r8,2048                                    <== NOT EXECUTED
 80116c8:	46 28 00 03 	be r17,r8,80116d4 <fat_init_volume_info+0x21c> <== NOT EXECUTED
         (vol->bps != 2048) &&                                        
 80116cc:	34 08 10 00 	mvi r8,4096                                    <== NOT EXECUTED
 80116d0:	5e 28 00 36 	bne r17,r8,80117a8 <fat_init_volume_info+0x2f0><== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
 80116d4:	31 c0 00 03 	sb (r14+3),r0                                  <== NOT EXECUTED
 80116d8:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 80116dc:	34 02 00 09 	mvi r2,9                                       <== NOT EXECUTED
 80116e0:	f8 00 76 46 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
 80116e4:	20 27 ff ff 	andi r7,r1,0xffff                              <== NOT EXECUTED
 80116e8:	41 c6 00 03 	lbu r6,(r14+3)                                 <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
 80116ec:	14 e7 00 01 	sri r7,r7,1                                    <== NOT EXECUTED
 80116f0:	34 c6 00 01 	addi r6,r6,1                                   <== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
 80116f4:	20 e1 00 01 	andi r1,r7,0x1                                 <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
 80116f8:	20 c6 00 ff 	andi r6,r6,0xff                                <== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
 80116fc:	44 20 ff fc 	be r1,r0,80116ec <fat_init_volume_info+0x234>  <== NOT EXECUTED
 8011700:	31 c6 00 03 	sb (r14+3),r6                                  <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
 8011704:	31 c0 00 02 	sb (r14+2),r0                                  
 8011708:	22 28 00 01 	andi r8,r17,0x1                                
 801170c:	34 0f 00 00 	mvi r15,0                                      
 8011710:	5d 00 00 0b 	bne r8,r0,801173c <fat_init_volume_info+0x284> <== NEVER TAKEN
 8011714:	ba 20 38 00 	mv r7,r17                                      
 8011718:	34 0f 00 01 	mvi r15,1                                      
 801171c:	e0 00 00 02 	bi 8011724 <fat_init_volume_info+0x26c>        
 8011720:	b8 40 78 00 	mv r15,r2                                      
         i >>= 1, vol->sec_log2++);                                   
 8011724:	14 e7 00 01 	sri r7,r7,1                                    
 8011728:	35 e2 00 01 	addi r2,r15,1                                  
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
 801172c:	20 e1 00 01 	andi r1,r7,0x1                                 
         i >>= 1, vol->sec_log2++);                                   
 8011730:	20 42 00 ff 	andi r2,r2,0xff                                
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
 8011734:	44 20 ff fb 	be r1,r0,8011720 <fat_init_volume_info+0x268>  
 8011738:	31 cf 00 02 	sb (r14+2),r15                                 
         i >>= 1, vol->sec_log2++);                                   
                                                                      
    vol->bytes_per_block = vol->bps;                                  
    vol->bytes_per_block_log2 = vol->sec_log2;                        
    vol->sectors_per_block = 1;                                       
 801173c:	34 06 00 01 	mvi r6,1                                       
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
         i >>= 1, vol->sec_log2++);                                   
                                                                      
    vol->bytes_per_block = vol->bps;                                  
 8011740:	0d d1 00 0a 	sh (r14+10),r17                                
    vol->bytes_per_block_log2 = vol->sec_log2;                        
 8011744:	31 cf 00 0c 	sb (r14+12),r15                                
    vol->sectors_per_block = 1;                                       
 8011748:	31 c6 00 09 	sb (r14+9),r6                                  
                                                                      
    vol->spc = FAT_GET_BR_SECTORS_PER_CLUSTER(boot_rec);              
 801174c:	31 d2 00 04 	sb (r14+4),r18                                 
    /*                                                                
     * "sectors per cluster" of zero is invalid                       
     * (and would hang the following loop)                            
     */                                                               
    if (vol->spc == 0)                                                
 8011750:	46 40 00 16 	be r18,r0,80117a8 <fat_init_volume_info+0x2f0> <== NEVER TAKEN
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
 8011754:	31 c0 00 05 	sb (r14+5),r0                                  
 8011758:	22 49 00 01 	andi r9,r18,0x1                                
 801175c:	ba 40 40 00 	mv r8,r18                                      
 8011760:	34 07 00 00 	mvi r7,0                                       
 8011764:	5d 20 00 0a 	bne r9,r0,801178c <fat_init_volume_info+0x2d4> 
 8011768:	34 07 00 01 	mvi r7,1                                       
 801176c:	e0 00 00 02 	bi 8011774 <fat_init_volume_info+0x2bc>        
 8011770:	b8 40 38 00 	mv r7,r2                                       
         i >>= 1, vol->spc_log2++);                                   
 8011774:	15 08 00 01 	sri r8,r8,1                                    
 8011778:	34 e2 00 01 	addi r2,r7,1                                   
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
 801177c:	21 01 00 01 	andi r1,r8,0x1                                 
         i >>= 1, vol->spc_log2++);                                   
 8011780:	20 42 00 ff 	andi r2,r2,0xff                                
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
 8011784:	44 20 ff fb 	be r1,r0,8011770 <fat_init_volume_info+0x2b8>  
 8011788:	31 c7 00 05 	sb (r14+5),r7                                  
         i >>= 1, vol->spc_log2++);                                   
                                                                      
    /*                                                                
     * "bytes per cluster" value greater than 32K is invalid          
     */                                                               
    if ((vol->bpc = vol->bps << vol->spc_log2) > MS_BYTES_PER_CLUSTER_LIMIT)
 801178c:	ba 20 08 00 	mv r1,r17                                      
 8011790:	b8 e0 10 00 	mv r2,r7                                       
 8011794:	fb ff be 74 	calli 8001164 <__ashlsi3>                      
 8011798:	20 28 ff ff 	andi r8,r1,0xffff                              
 801179c:	0d c8 00 06 	sh (r14+6),r8                                  
 80117a0:	38 06 80 00 	mvu r6,0x8000                                  
 80117a4:	50 c8 00 10 	bgeu r6,r8,80117e4 <fat_init_volume_info+0x32c><== ALWAYS TAKEN
                                                                      
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=      
                FAT_FSINFO_LEAD_SIGNATURE_VALUE)                      
            {                                                         
                _fat_block_release(fs_info);                          
                close(vol->fd);                                       
 80117a8:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 80117ac:	fb ff c5 f8 	calli 8002f8c <close>                          <== NOT EXECUTED
                rtems_set_errno_and_return_minus_one( EINVAL );       
 80117b0:	f8 00 2c 11 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 80117b4:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 80117b8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 80117bc:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 80117c0:	e3 ff ff 5b 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
 80117c4:	31 c0 00 03 	sb (r14+3),r0                                  
 80117c8:	ba 20 08 00 	mv r1,r17                                      
 80117cc:	34 02 00 09 	mvi r2,9                                       
 80117d0:	f8 00 76 0a 	calli 802eff8 <__lshrsi3>                      
 80117d4:	20 27 ff ff 	andi r7,r1,0xffff                              
 80117d8:	20 e8 00 01 	andi r8,r7,0x1                                 
 80117dc:	45 0d ff c3 	be r8,r13,80116e8 <fat_init_volume_info+0x230> <== NEVER TAKEN
 80117e0:	e3 ff ff c9 	bi 8011704 <fat_init_volume_info+0x24c>        
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
 80117e4:	31 c0 00 08 	sb (r14+8),r0                                  
 80117e8:	21 06 00 01 	andi r6,r8,0x1                                 
 80117ec:	34 07 00 01 	mvi r7,1                                       
 80117f0:	44 c0 00 03 	be r6,r0,80117fc <fat_init_volume_info+0x344>  <== ALWAYS TAKEN
 80117f4:	e0 00 00 08 	bi 8011814 <fat_init_volume_info+0x35c>        <== NOT EXECUTED
 80117f8:	b8 40 38 00 	mv r7,r2                                       
         i >>= 1, vol->bpc_log2++);                                   
 80117fc:	15 08 00 01 	sri r8,r8,1                                    
 8011800:	34 e2 00 01 	addi r2,r7,1                                   
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
 8011804:	21 01 00 01 	andi r1,r8,0x1                                 
         i >>= 1, vol->bpc_log2++);                                   
 8011808:	20 42 00 ff 	andi r2,r2,0xff                                
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
 801180c:	44 20 ff fb 	be r1,r0,80117f8 <fat_init_volume_info+0x340>  
 8011810:	31 c7 00 08 	sb (r14+8),r7                                  
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
 8011814:	b6 73 38 00 	add r7,r19,r19                                 
 8011818:	b4 e7 38 00 	add r7,r7,r7                                   
 801181c:	b4 e7 38 00 	add r7,r7,r7                                   
 8011820:	b4 e7 38 00 	add r7,r7,r7                                   
 8011824:	b4 e7 38 00 	add r7,r7,r7                                   
 8011828:	b4 e7 38 00 	add r7,r7,r7                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 801182c:	b6 94 28 00 	add r5,r20,r20                                 
 8011830:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
 8011834:	b4 e7 38 00 	add r7,r7,r7                                   
 8011838:	b4 e7 38 00 	add r7,r7,r7                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 801183c:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
 8011840:	b8 f8 48 00 	or r9,r7,r24                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 8011844:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011848:	b5 29 38 00 	add r7,r9,r9                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 801184c:	b4 a5 28 00 	add r5,r5,r5                                   
 8011850:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011854:	b4 e7 38 00 	add r7,r7,r7                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 8011858:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 801185c:	b4 e7 38 00 	add r7,r7,r7                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 8011860:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011864:	b4 e7 38 00 	add r7,r7,r7                                   
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 8011868:	b8 b0 80 00 	or r16,r5,r16                                  
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 801186c:	b4 e7 38 00 	add r7,r7,r7                                   
 8011870:	36 28 ff ff 	addi r8,r17,-1                                 
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
 8011874:	0d c9 00 24 	sh (r14+36),r9                                 
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011878:	b5 07 08 00 	add r1,r8,r7                                   
 801187c:	ba 20 10 00 	mv r2,r17                                      
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
 8011880:	31 d7 00 0d 	sb (r14+13),r23                                
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
 8011884:	0d d0 00 18 	sh (r14+24),r16                                
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011888:	fb ff be 91 	calli 80012cc <__divsi3>                       
                     vol->bps;                                        
                                                                      
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
 801188c:	b9 e0 10 00 	mv r2,r15                                      
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
 8011890:	59 c1 00 28 	sw (r14+40),r1                                 
 8011894:	b8 20 68 00 	mv r13,r1                                      
                     vol->bps;                                        
                                                                      
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
 8011898:	fb ff be 33 	calli 8001164 <__ashlsi3>                      
                                                                      
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
 801189c:	b6 d6 20 00 	add r4,r22,r22                                 
 80118a0:	b4 84 20 00 	add r4,r4,r4                                   
 80118a4:	b4 84 20 00 	add r4,r4,r4                                   
 80118a8:	b4 84 20 00 	add r4,r4,r4                                   
 80118ac:	b4 84 20 00 	add r4,r4,r4                                   
 80118b0:	b4 84 20 00 	add r4,r4,r4                                   
 80118b4:	b4 84 20 00 	add r4,r4,r4                                   
 80118b8:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
                     vol->bps;                                        
                                                                      
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
 80118bc:	59 c1 00 2c 	sw (r14+44),r1                                 
                                                                      
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
 80118c0:	34 02 00 10 	mvi r2,16                                      
 80118c4:	b8 9b 08 00 	or r1,r4,fp                                    
 80118c8:	fb ff be 27 	calli 8001164 <__ashlsi3>                      
 80118cc:	34 02 00 10 	mvi r2,16                                      
 80118d0:	fb ff be 4c 	calli 8001200 <__ashrsi3>                      
 80118d4:	44 20 00 94 	be r1,r0,8011b24 <fat_init_volume_info+0x66c>  
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
 80118d8:	20 24 ff ff 	andi r4,r1,0xffff                              
 80118dc:	59 c4 00 1c 	sw (r14+28),r4                                 
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
 80118e0:	ba e0 10 00 	mv r2,r23                                      
 80118e4:	b8 80 08 00 	mv r1,r4                                       
 80118e8:	fb ff be 6d 	calli 800129c <__mulsi3>                       
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
 80118ec:	b6 b5 18 00 	add r3,r21,r21                                 
 80118f0:	b4 63 18 00 	add r3,r3,r3                                   
 80118f4:	b4 63 18 00 	add r3,r3,r3                                   
 80118f8:	b4 63 18 00 	add r3,r3,r3                                   
 80118fc:	b4 63 18 00 	add r3,r3,r3                                   
 8011900:	b4 63 18 00 	add r3,r3,r3                                   
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
 8011904:	b4 30 28 00 	add r5,r1,r16                                  
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
 8011908:	b4 63 18 00 	add r3,r3,r3                                   
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
 801190c:	b4 ad 60 00 	add r12,r5,r13                                 
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
 8011910:	b4 63 18 00 	add r3,r3,r3                                   
 8011914:	34 02 00 10 	mvi r2,16                                      
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
 8011918:	59 cc 00 34 	sw (r14+52),r12                                
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
 801191c:	59 c5 00 20 	sw (r14+32),r5                                 
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
 8011920:	b8 79 08 00 	or r1,r3,r25                                   
 8011924:	fb ff be 10 	calli 8001164 <__ashlsi3>                      
 8011928:	34 02 00 10 	mvi r2,16                                      
 801192c:	fb ff be 35 	calli 8001200 <__ashrsi3>                      
 8011930:	44 20 00 69 	be r1,r0,8011ad4 <fat_init_volume_info+0x61c>  
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);     
 8011934:	20 24 ff ff 	andi r4,r1,0xffff                              
 8011938:	59 c4 00 30 	sw (r14+48),r4                                 
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
                                                                      
    data_secs = vol->tot_secs - vol->data_fsec;                       
                                                                      
    vol->data_cls = data_secs / vol->spc;                             
 801193c:	c8 8c 08 00 	sub r1,r4,r12                                  
 8011940:	ba 40 10 00 	mv r2,r18                                      
 8011944:	f8 00 75 fd 	calli 802f138 <__udivsi3>                      
 8011948:	59 c1 00 38 	sw (r14+56),r1                                 
                                                                      
    /* determine FAT type at least */                                 
    if ( vol->data_cls < FAT_FAT12_MAX_CLN)                           
 801194c:	34 05 0f f4 	mvi r5,4084                                    
 8011950:	54 25 00 89 	bgu r1,r5,8011b74 <fat_init_volume_info+0x6bc> 
    {                                                                 
        vol->type = FAT_FAT12;                                        
 8011954:	34 02 00 01 	mvi r2,1                                       
 8011958:	31 c2 00 0e 	sb (r14+14),r2                                 
        vol->mask = FAT_FAT12_MASK;                                   
 801195c:	34 02 0f ff 	mvi r2,4095                                    
 8011960:	59 c2 00 10 	sw (r14+16),r2                                 
        vol->eoc_val = FAT_FAT12_EOC;                                 
 8011964:	34 02 0f f8 	mvi r2,4088                                    
 8011968:	59 c2 00 14 	sw (r14+20),r2                                 
    else                                                              
    {                                                                 
        vol->rdir_cl = 0;                                             
        vol->mirror = 0;                                              
        vol->afat = 0;                                                
        vol->free_cls = FAT_UNDEFINED_VALUE;                          
 801196c:	34 02 ff ff 	mvi r2,-1                                      
            }                                                         
        }                                                             
    }                                                                 
    else                                                              
    {                                                                 
        vol->rdir_cl = 0;                                             
 8011970:	59 c0 00 3c 	sw (r14+60),r0                                 
        vol->mirror = 0;                                              
 8011974:	31 c0 00 54 	sb (r14+84),r0                                 
        vol->afat = 0;                                                
 8011978:	31 c0 00 5c 	sb (r14+92),r0                                 
        vol->free_cls = FAT_UNDEFINED_VALUE;                          
 801197c:	59 c2 00 44 	sw (r14+68),r2                                 
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
 8011980:	59 c2 00 4c 	sw (r14+76),r2                                 
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
 8011984:	b9 c0 08 00 	mv r1,r14                                      
 8011988:	fb ff fc 9f 	calli 8010c04 <fat_buf_release>                
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
    }                                                                 
                                                                      
    _fat_block_release(fs_info);                                      
                                                                      
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;       
 801198c:	29 c2 00 1c 	lw r2,(r14+28)                                 
 8011990:	41 c1 00 5c 	lbu r1,(r14+92)                                
 8011994:	fb ff be 42 	calli 800129c <__mulsi3>                       
 8011998:	2d c3 00 18 	lhu r3,(r14+24)                                
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
 801199c:	34 02 00 0c 	mvi r2,12                                      
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
    }                                                                 
                                                                      
    _fat_block_release(fs_info);                                      
                                                                      
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;       
 80119a0:	b4 23 18 00 	add r3,r1,r3                                   
 80119a4:	59 c3 00 58 	sw (r14+88),r3                                 
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
 80119a8:	34 01 00 02 	mvi r1,2                                       
 80119ac:	fb ff c5 59 	calli 8002f10 <calloc>                         
 80119b0:	59 c1 00 6c 	sw (r14+108),r1                                
 80119b4:	b8 20 18 00 	mv r3,r1                                       
    if ( fs_info->vhash == NULL )                                     
 80119b8:	44 20 01 2d 	be r1,r0,8011e6c <fat_init_volume_info+0x9b4>  <== NEVER TAKEN
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 80119bc:	58 61 00 08 	sw (r3+8),r1                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 80119c0:	58 20 00 04 	sw (r1+4),r0                                   
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->vhash + i);             
 80119c4:	34 24 00 0c 	addi r4,r1,12                                  
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 80119c8:	34 26 00 04 	addi r6,r1,4                                   
 80119cc:	34 25 00 10 	addi r5,r1,16                                  
                                                                      
  head->next = tail;                                                  
 80119d0:	58 66 00 00 	sw (r3+0),r6                                   
 80119d4:	58 65 00 0c 	sw (r3+12),r5                                  
                                                                      
    fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
 80119d8:	34 01 00 02 	mvi r1,2                                       
 80119dc:	34 02 00 0c 	mvi r2,12                                      
  head->previous = NULL;                                              
 80119e0:	58 80 00 04 	sw (r4+4),r0                                   
  tail->previous = head;                                              
 80119e4:	58 84 00 08 	sw (r4+8),r4                                   
 80119e8:	fb ff c5 4a 	calli 8002f10 <calloc>                         
 80119ec:	59 c1 00 70 	sw (r14+112),r1                                
 80119f0:	b8 20 18 00 	mv r3,r1                                       
    if ( fs_info->rhash == NULL )                                     
 80119f4:	44 20 01 25 	be r1,r0,8011e88 <fat_init_volume_info+0x9d0>  <== NEVER TAKEN
    }                                                                 
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->rhash + i);             
                                                                      
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;                
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
 80119f8:	41 c2 00 03 	lbu r2,(r14+3)                                 
 80119fc:	29 c1 00 30 	lw r1,(r14+48)                                 
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->rhash + i);             
                                                                      
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;                
 8011a00:	34 07 01 00 	mvi r7,256                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 8011a04:	58 60 00 04 	sw (r3+4),r0                                   
  tail->previous = head;                                              
 8011a08:	58 63 00 08 	sw (r3+8),r3                                   
 8011a0c:	59 c7 00 7c 	sw (r14+124),r7                                
        close(vol->fd);                                               
        free(fs_info->vhash);                                         
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->rhash + i);             
 8011a10:	34 64 00 0c 	addi r4,r3,12                                  
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8011a14:	34 66 00 04 	addi r6,r3,4                                   
 8011a18:	34 65 00 10 	addi r5,r3,16                                  
                                                                      
  head->next = tail;                                                  
 8011a1c:	58 66 00 00 	sw (r3+0),r6                                   
 8011a20:	58 65 00 0c 	sw (r3+12),r5                                  
  head->previous = NULL;                                              
 8011a24:	58 80 00 04 	sw (r4+4),r0                                   
  tail->previous = head;                                              
 8011a28:	58 84 00 08 	sw (r4+8),r4                                   
                                                                      
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;                
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
 8011a2c:	fb ff bd ce 	calli 8001164 <__ashlsi3>                      
 8011a30:	b4 21 10 00 	add r2,r1,r1                                   
 8011a34:	b4 42 10 00 	add r2,r2,r2                                   
 8011a38:	b4 42 10 00 	add r2,r2,r2                                   
 8011a3c:	b4 42 10 00 	add r2,r2,r2                                   
 8011a40:	59 c2 00 80 	sw (r14+128),r2                                
    fs_info->index = 0;                                               
 8011a44:	59 c0 00 78 	sw (r14+120),r0                                
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
 8011a48:	34 01 01 00 	mvi r1,256                                     
 8011a4c:	34 02 00 01 	mvi r2,1                                       
 8011a50:	fb ff c5 30 	calli 8002f10 <calloc>                         
 8011a54:	59 c1 00 74 	sw (r14+116),r1                                
    if ( fs_info->uino == NULL )                                      
 8011a58:	44 20 00 fa 	be r1,r0,8011e40 <fat_init_volume_info+0x988>  <== NEVER TAKEN
        close(vol->fd);                                               
        free(fs_info->vhash);                                         
        free(fs_info->rhash);                                         
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));  
 8011a5c:	2d c1 00 00 	lhu r1,(r14+0)                                 
 8011a60:	34 02 00 01 	mvi r2,1                                       
 8011a64:	fb ff c5 2b 	calli 8002f10 <calloc>                         
 8011a68:	59 c1 00 90 	sw (r14+144),r1                                
    if (fs_info->sec_buf == NULL)                                     
 8011a6c:	44 20 01 0b 	be r1,r0,8011e98 <fat_init_volume_info+0x9e0>  <== NEVER TAKEN
      return bytes_written;                                           
}                                                                     
                                                                      
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{                                                                     
    return (sec_num & (vol->spc - 1)) == 0;                           
 8011a70:	41 c3 00 04 	lbu r3,(r14+4)                                 
 8011a74:	29 c4 00 34 	lw r4,(r14+52)                                 
            vol->bytes_per_block_log2 = vol->bpc_log2;                
            vol->sectors_per_block = vol->spc;                        
        }                                                             
    }                                                                 
                                                                      
    return RC_OK;                                                     
 8011a78:	34 02 00 00 	mvi r2,0                                       
      return bytes_written;                                           
}                                                                     
                                                                      
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{                                                                     
    return (sec_num & (vol->spc - 1)) == 0;                           
 8011a7c:	34 63 ff ff 	addi r3,r3,-1                                  
 8011a80:	a0 64 20 00 	and r4,r3,r4                                   
    /*                                                                
     * If possible we will use the cluster size as bdbuf block size for faster
     * file access. This requires that certain sectors are aligned to cluster
     * borders.                                                       
     */                                                               
    if (is_cluster_aligned(vol, vol->data_fsec)                       
 8011a84:	5c 80 fe aa 	bne r4,r0,801152c <fat_init_volume_info+0x74>  <== NEVER TAKEN
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
 8011a88:	41 c5 00 0e 	lbu r5,(r14+14)                                
 8011a8c:	34 04 00 04 	mvi r4,4                                       
 8011a90:	44 a4 00 04 	be r5,r4,8011aa0 <fat_init_volume_info+0x5e8>  
      return bytes_written;                                           
}                                                                     
                                                                      
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{                                                                     
    return (sec_num & (vol->spc - 1)) == 0;                           
 8011a94:	29 c1 00 20 	lw r1,(r14+32)                                 
 8011a98:	a0 61 18 00 	and r3,r3,r1                                   
     * If possible we will use the cluster size as bdbuf block size for faster
     * file access. This requires that certain sectors are aligned to cluster
     * borders.                                                       
     */                                                               
    if (is_cluster_aligned(vol, vol->data_fsec)                       
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
 8011a9c:	5c 60 fe a4 	bne r3,r0,801152c <fat_init_volume_info+0x74>  <== NEVER TAKEN
    {                                                                 
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);    
 8011aa0:	2d c2 00 06 	lhu r2,(r14+6)                                 
 8011aa4:	29 c1 00 64 	lw r1,(r14+100)                                
 8011aa8:	34 03 00 01 	mvi r3,1                                       
 8011aac:	fb ff f4 c2 	calli 800edb4 <rtems_bdbuf_set_block_size>     
            vol->bytes_per_block_log2 = vol->bpc_log2;                
            vol->sectors_per_block = vol->spc;                        
        }                                                             
    }                                                                 
                                                                      
    return RC_OK;                                                     
 8011ab0:	34 02 00 00 	mvi r2,0                                       
     */                                                               
    if (is_cluster_aligned(vol, vol->data_fsec)                       
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
    {                                                                 
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);    
        if (sc == RTEMS_SUCCESSFUL)                                   
 8011ab4:	5c 20 fe 9e 	bne r1,r0,801152c <fat_init_volume_info+0x74>  <== NEVER TAKEN
        {                                                             
            vol->bytes_per_block = vol->bpc;                          
 8011ab8:	2d c4 00 06 	lhu r4,(r14+6)                                 
            vol->bytes_per_block_log2 = vol->bpc_log2;                
 8011abc:	41 c3 00 08 	lbu r3,(r14+8)                                 
            vol->sectors_per_block = vol->spc;                        
 8011ac0:	41 c1 00 04 	lbu r1,(r14+4)                                 
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
    {                                                                 
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);    
        if (sc == RTEMS_SUCCESSFUL)                                   
        {                                                             
            vol->bytes_per_block = vol->bpc;                          
 8011ac4:	0d c4 00 0a 	sh (r14+10),r4                                 
            vol->bytes_per_block_log2 = vol->bpc_log2;                
 8011ac8:	31 c3 00 0c 	sb (r14+12),r3                                 
            vol->sectors_per_block = vol->spc;                        
 8011acc:	31 c1 00 09 	sb (r14+9),r1                                  
 8011ad0:	e3 ff fe 97 	bi 801152c <fat_init_volume_info+0x74>         
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);     
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
 8011ad4:	b5 6b 58 00 	add r11,r11,r11                                
 8011ad8:	b5 6b 58 00 	add r11,r11,r11                                
 8011adc:	b5 6b 58 00 	add r11,r11,r11                                
 8011ae0:	b5 6b 58 00 	add r11,r11,r11                                
 8011ae4:	b5 6b 58 00 	add r11,r11,r11                                
 8011ae8:	2b 81 00 58 	lw r1,(sp+88)                                  
 8011aec:	b5 6b 58 00 	add r11,r11,r11                                
 8011af0:	34 02 00 10 	mvi r2,16                                      
 8011af4:	b5 6b 58 00 	add r11,r11,r11                                
 8011af8:	fb ff bd 9b 	calli 8001164 <__ashlsi3>                      
 8011afc:	b5 6b 58 00 	add r11,r11,r11                                
 8011b00:	2b 84 00 54 	lw r4,(sp+84)                                  
 8011b04:	b9 61 58 00 	or r11,r11,r1                                  
 8011b08:	2b 81 00 5c 	lw r1,(sp+92)                                  
 8011b0c:	34 02 00 18 	mvi r2,24                                      
 8011b10:	b9 64 58 00 	or r11,r11,r4                                  
 8011b14:	fb ff bd 94 	calli 8001164 <__ashlsi3>                      
 8011b18:	b9 61 20 00 	or r4,r11,r1                                   
 8011b1c:	59 c4 00 30 	sw (r14+48),r4                                 
 8011b20:	e3 ff ff 87 	bi 801193c <fat_init_volume_info+0x484>        
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
                                                                      
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
 8011b24:	b5 8c 60 00 	add r12,r12,r12                                
 8011b28:	b5 8c 60 00 	add r12,r12,r12                                
 8011b2c:	b5 8c 60 00 	add r12,r12,r12                                
 8011b30:	b5 8c 60 00 	add r12,r12,r12                                
 8011b34:	b5 8c 60 00 	add r12,r12,r12                                
 8011b38:	2b 81 00 4c 	lw r1,(sp+76)                                  
 8011b3c:	b5 8c 60 00 	add r12,r12,r12                                
 8011b40:	34 02 00 10 	mvi r2,16                                      
 8011b44:	b5 8c 60 00 	add r12,r12,r12                                
 8011b48:	fb ff bd 87 	calli 8001164 <__ashlsi3>                      
 8011b4c:	b5 8c 60 00 	add r12,r12,r12                                
 8011b50:	b9 81 60 00 	or r12,r12,r1                                  
 8011b54:	2b 83 00 60 	lw r3,(sp+96)                                  
 8011b58:	2b 81 00 50 	lw r1,(sp+80)                                  
 8011b5c:	34 02 00 18 	mvi r2,24                                      
 8011b60:	b9 83 60 00 	or r12,r12,r3                                  
 8011b64:	fb ff bd 80 	calli 8001164 <__ashlsi3>                      
 8011b68:	b9 81 20 00 	or r4,r12,r1                                   
 8011b6c:	59 c4 00 1c 	sw (r14+28),r4                                 
 8011b70:	e3 ff ff 5c 	bi 80118e0 <fat_init_volume_info+0x428>        
        vol->mask = FAT_FAT12_MASK;                                   
        vol->eoc_val = FAT_FAT12_EOC;                                 
    }                                                                 
    else                                                              
    {                                                                 
        if ( vol->data_cls < FAT_FAT16_MAX_CLN)                       
 8011b74:	38 05 ff f4 	mvu r5,0xfff4                                  
 8011b78:	54 25 00 08 	bgu r1,r5,8011b98 <fat_init_volume_info+0x6e0> 
        {                                                             
            vol->type = FAT_FAT16;                                    
 8011b7c:	34 01 00 02 	mvi r1,2                                       
 8011b80:	31 c1 00 0e 	sb (r14+14),r1                                 
            vol->mask = FAT_FAT16_MASK;                               
 8011b84:	38 01 ff ff 	mvu r1,0xffff                                  
 8011b88:	59 c1 00 10 	sw (r14+16),r1                                 
            vol->eoc_val = FAT_FAT16_EOC;                             
 8011b8c:	34 21 ff f9 	addi r1,r1,-7                                  
 8011b90:	59 c1 00 14 	sw (r14+20),r1                                 
 8011b94:	e3 ff ff 76 	bi 801196c <fat_init_volume_info+0x4b4>        
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011b98:	2b 81 00 64 	lw r1,(sp+100)                                 
            vol->eoc_val = FAT_FAT16_EOC;                             
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
 8011b9c:	78 03 08 03 	mvhi r3,0x803                                  
 8011ba0:	38 63 03 04 	ori r3,r3,0x304                                
            vol->mask = FAT_FAT16_MASK;                               
            vol->eoc_val = FAT_FAT16_EOC;                             
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
 8011ba4:	34 04 00 04 	mvi r4,4                                       
 8011ba8:	31 c4 00 0e 	sb (r14+14),r4                                 
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011bac:	b4 21 58 00 	add r11,r1,r1                                  
            vol->eoc_val = FAT_FAT16_EOC;                             
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
 8011bb0:	28 64 00 00 	lw r4,(r3+0)                                   
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011bb4:	b5 6b 58 00 	add r11,r11,r11                                
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
            vol->eoc_val = FAT_FAT32_EOC;                             
 8011bb8:	78 01 08 03 	mvhi r1,0x803                                  
 8011bbc:	38 21 03 08 	ori r1,r1,0x308                                
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011bc0:	b5 6b 58 00 	add r11,r11,r11                                
            vol->eoc_val = FAT_FAT16_EOC;                             
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
 8011bc4:	59 c4 00 10 	sw (r14+16),r4                                 
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011bc8:	b5 6b 58 00 	add r11,r11,r11                                
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
            vol->eoc_val = FAT_FAT32_EOC;                             
 8011bcc:	28 24 00 00 	lw r4,(r1+0)                                   
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011bd0:	b5 6b 58 00 	add r11,r11,r11                                
 8011bd4:	2b 81 00 74 	lw r1,(sp+116)                                 
 8011bd8:	b5 6b 58 00 	add r11,r11,r11                                
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
            vol->eoc_val = FAT_FAT32_EOC;                             
 8011bdc:	59 c4 00 14 	sw (r14+20),r4                                 
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011be0:	34 02 00 10 	mvi r2,16                                      
 8011be4:	b5 6b 58 00 	add r11,r11,r11                                
 8011be8:	fb ff bd 5f 	calli 8001164 <__ashlsi3>                      
 8011bec:	b5 6b 58 00 	add r11,r11,r11                                
 8011bf0:	2b 83 00 78 	lw r3,(sp+120)                                 
 8011bf4:	b9 61 58 00 	or r11,r11,r1                                  
 8011bf8:	2b 81 00 70 	lw r1,(sp+112)                                 
 8011bfc:	34 02 00 18 	mvi r2,24                                      
 8011c00:	b9 63 58 00 	or r11,r11,r3                                  
 8011c04:	fb ff bd 58 	calli 8001164 <__ashlsi3>                      
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
 8011c08:	2b 84 00 68 	lw r4,(sp+104)                                 
 8011c0c:	2b 82 00 7c 	lw r2,(sp+124)                                 
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011c10:	b9 61 08 00 	or r1,r11,r1                                   
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
 8011c14:	b4 84 18 00 	add r3,r4,r4                                   
 8011c18:	b4 63 18 00 	add r3,r3,r3                                   
 8011c1c:	b4 63 18 00 	add r3,r3,r3                                   
 8011c20:	b4 63 18 00 	add r3,r3,r3                                   
 8011c24:	b4 63 18 00 	add r3,r3,r3                                   
 8011c28:	b4 63 18 00 	add r3,r3,r3                                   
 8011c2c:	b4 63 18 00 	add r3,r3,r3                                   
 8011c30:	b4 63 18 00 	add r3,r3,r3                                   
 8011c34:	b8 62 18 00 	or r3,r3,r2                                    
 8011c38:	20 63 00 ff 	andi r3,r3,0xff                                
 8011c3c:	20 64 00 80 	andi r4,r3,0x80                                
 8011c40:	20 84 00 ff 	andi r4,r4,0xff                                
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
 8011c44:	59 c1 00 3c 	sw (r14+60),r1                                 
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
 8011c48:	31 c4 00 54 	sb (r14+84),r4                                 
        if (vol->mirror)                                              
 8011c4c:	44 80 00 6e 	be r4,r0,8011e04 <fat_init_volume_info+0x94c>  <== ALWAYS TAKEN
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
 8011c50:	20 63 00 0f 	andi r3,r3,0xf                                 <== NOT EXECUTED
 8011c54:	31 c3 00 5c 	sb (r14+92),r3                                 <== NOT EXECUTED
        else                                                          
            vol->afat = 0;                                            
                                                                      
        vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);    
 8011c58:	2b 83 00 48 	lw r3,(sp+72)                                  
 8011c5c:	2b 84 00 6c 	lw r4,(sp+108)                                 
 8011c60:	b4 63 10 00 	add r2,r3,r3                                   
 8011c64:	b4 42 10 00 	add r2,r2,r2                                   
 8011c68:	b4 42 10 00 	add r2,r2,r2                                   
 8011c6c:	b4 42 10 00 	add r2,r2,r2                                   
 8011c70:	b4 42 10 00 	add r2,r2,r2                                   
 8011c74:	b4 42 10 00 	add r2,r2,r2                                   
 8011c78:	b4 42 10 00 	add r2,r2,r2                                   
 8011c7c:	b4 42 10 00 	add r2,r2,r2                                   
 8011c80:	b8 44 10 00 	or r2,r2,r4                                    
 8011c84:	0d c2 00 40 	sh (r14+64),r2                                 
        if( vol->info_sec == 0 )                                      
 8011c88:	44 40 fe c8 	be r2,r0,80117a8 <fat_init_volume_info+0x2f0>  <== NEVER TAKEN
            rtems_set_errno_and_return_minus_one( EINVAL );           
        }                                                             
        else                                                          
        {                                                             
            ret = _fat_block_read(fs_info, vol->info_sec , 0,         
                                  FAT_FSI_LEADSIG_SIZE, fs_info_sector);
 8011c8c:	37 8c 00 c8 	addi r12,sp,200                                
            close(vol->fd);                                           
            rtems_set_errno_and_return_minus_one( EINVAL );           
        }                                                             
        else                                                          
        {                                                             
            ret = _fat_block_read(fs_info, vol->info_sec , 0,         
 8011c90:	b9 c0 08 00 	mv r1,r14                                      
 8011c94:	34 03 00 00 	mvi r3,0                                       
 8011c98:	34 04 00 04 	mvi r4,4                                       
 8011c9c:	b9 80 28 00 	mv r5,r12                                      
 8011ca0:	fb ff fc 99 	calli 8010f04 <_fat_block_read>                
                                  FAT_FSI_LEADSIG_SIZE, fs_info_sector);
            if ( ret < 0 )                                            
 8011ca4:	4c 20 00 05 	bge r1,r0,8011cb8 <fat_init_volume_info+0x800> <== ALWAYS TAKEN
                ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
                                      FAT_USEFUL_INFO_SIZE, fs_info_sector);
                if ( ret < 0 )                                        
                {                                                     
                    _fat_block_release(fs_info);                      
                    close(vol->fd);                                   
 8011ca8:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011cac:	fb ff c4 b8 	calli 8002f8c <close>                          <== NOT EXECUTED
                    return -1;                                        
 8011cb0:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011cb4:	e3 ff fe 1e 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
            {                                                         
                close(vol->fd);                                       
                return -1;                                            
            }                                                         
                                                                      
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=      
 8011cb8:	43 8b 00 c9 	lbu r11,(sp+201)                               
 8011cbc:	43 81 00 ca 	lbu r1,(sp+202)                                
 8011cc0:	34 02 00 10 	mvi r2,16                                      
 8011cc4:	b5 6b 58 00 	add r11,r11,r11                                
 8011cc8:	b5 6b 58 00 	add r11,r11,r11                                
 8011ccc:	b5 6b 58 00 	add r11,r11,r11                                
 8011cd0:	b5 6b 58 00 	add r11,r11,r11                                
 8011cd4:	b5 6b 58 00 	add r11,r11,r11                                
 8011cd8:	b5 6b 58 00 	add r11,r11,r11                                
 8011cdc:	b5 6b 58 00 	add r11,r11,r11                                
 8011ce0:	fb ff bd 21 	calli 8001164 <__ashlsi3>                      
 8011ce4:	b5 6b 58 00 	add r11,r11,r11                                
 8011ce8:	43 83 00 c8 	lbu r3,(sp+200)                                
 8011cec:	b9 61 58 00 	or r11,r11,r1                                  
 8011cf0:	43 81 00 cb 	lbu r1,(sp+203)                                
 8011cf4:	34 02 00 18 	mvi r2,24                                      
 8011cf8:	b9 63 58 00 	or r11,r11,r3                                  
 8011cfc:	fb ff bd 1a 	calli 8001164 <__ashlsi3>                      
 8011d00:	78 03 08 03 	mvhi r3,0x803                                  
 8011d04:	38 63 03 0c 	ori r3,r3,0x30c                                
 8011d08:	28 62 00 00 	lw r2,(r3+0)                                   
 8011d0c:	b9 61 08 00 	or r1,r11,r1                                   
 8011d10:	5c 22 00 46 	bne r1,r2,8011e28 <fat_init_volume_info+0x970> <== NEVER TAKEN
                close(vol->fd);                                       
                rtems_set_errno_and_return_minus_one( EINVAL );       
            }                                                         
            else                                                      
            {                                                         
                ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
 8011d14:	2d c2 00 40 	lhu r2,(r14+64)                                
 8011d18:	b9 c0 08 00 	mv r1,r14                                      
 8011d1c:	34 03 01 e4 	mvi r3,484                                     
 8011d20:	34 04 00 0c 	mvi r4,12                                      
 8011d24:	b9 80 28 00 	mv r5,r12                                      
 8011d28:	fb ff fc 77 	calli 8010f04 <_fat_block_read>                
                                      FAT_USEFUL_INFO_SIZE, fs_info_sector);
                if ( ret < 0 )                                        
 8011d2c:	4c 20 00 04 	bge r1,r0,8011d3c <fat_init_volume_info+0x884> <== ALWAYS TAKEN
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
 8011d30:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8011d34:	fb ff fb b4 	calli 8010c04 <fat_buf_release>                <== NOT EXECUTED
 8011d38:	e3 ff ff dc 	bi 8011ca8 <fat_init_volume_info+0x7f0>        <== NOT EXECUTED
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
 8011d3c:	43 8b 00 cd 	lbu r11,(sp+205)                               
 8011d40:	43 81 00 ce 	lbu r1,(sp+206)                                
 8011d44:	34 02 00 10 	mvi r2,16                                      
 8011d48:	b5 6b 58 00 	add r11,r11,r11                                
 8011d4c:	b5 6b 58 00 	add r11,r11,r11                                
 8011d50:	b5 6b 58 00 	add r11,r11,r11                                
 8011d54:	b5 6b 58 00 	add r11,r11,r11                                
 8011d58:	b5 6b 58 00 	add r11,r11,r11                                
 8011d5c:	b5 6b 58 00 	add r11,r11,r11                                
 8011d60:	b5 6b 58 00 	add r11,r11,r11                                
 8011d64:	fb ff bd 00 	calli 8001164 <__ashlsi3>                      
 8011d68:	b5 6b 58 00 	add r11,r11,r11                                
 8011d6c:	b9 61 58 00 	or r11,r11,r1                                  
 8011d70:	43 8c 00 cc 	lbu r12,(sp+204)                               
 8011d74:	43 81 00 cf 	lbu r1,(sp+207)                                
 8011d78:	34 02 00 18 	mvi r2,24                                      
 8011d7c:	b9 6c 60 00 	or r12,r11,r12                                 
 8011d80:	fb ff bc f9 	calli 8001164 <__ashlsi3>                      
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
 8011d84:	43 8b 00 d1 	lbu r11,(sp+209)                               
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
 8011d88:	b9 81 18 00 	or r3,r12,r1                                   
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
 8011d8c:	43 81 00 d2 	lbu r1,(sp+210)                                
 8011d90:	b5 6b 58 00 	add r11,r11,r11                                
 8011d94:	b5 6b 58 00 	add r11,r11,r11                                
 8011d98:	b5 6b 58 00 	add r11,r11,r11                                
 8011d9c:	b5 6b 58 00 	add r11,r11,r11                                
 8011da0:	b5 6b 58 00 	add r11,r11,r11                                
 8011da4:	b5 6b 58 00 	add r11,r11,r11                                
 8011da8:	34 02 00 10 	mvi r2,16                                      
                    _fat_block_release(fs_info);                      
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
 8011dac:	59 c3 00 48 	sw (r14+72),r3                                 
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
                vol->free_cls = vol->free_cls_in_fs_info;             
 8011db0:	59 c3 00 44 	sw (r14+68),r3                                 
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
 8011db4:	b5 6b 58 00 	add r11,r11,r11                                
 8011db8:	fb ff bc eb 	calli 8001164 <__ashlsi3>                      
 8011dbc:	b5 6b 58 00 	add r11,r11,r11                                
 8011dc0:	b9 61 58 00 	or r11,r11,r1                                  
 8011dc4:	43 83 00 d0 	lbu r3,(sp+208)                                
 8011dc8:	43 81 00 d3 	lbu r1,(sp+211)                                
 8011dcc:	34 02 00 18 	mvi r2,24                                      
 8011dd0:	b9 63 58 00 	or r11,r11,r3                                  
 8011dd4:	fb ff bc e4 	calli 8001164 <__ashlsi3>                      
 8011dd8:	b9 61 08 00 	or r1,r11,r1                                   
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
 8011ddc:	59 c1 00 50 	sw (r14+80),r1                                 
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
                vol->next_cl = vol->next_cl_in_fs_info;               
 8011de0:	59 c1 00 4c 	sw (r14+76),r1                                 
 8011de4:	e3 ff fe e8 	bi 8011984 <fat_init_volume_info+0x4cc>        
    }                                                                 
                                                                      
    /* check that device is registred as block device and lock it */  
    rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);            
    if (rc != 0) {                                                    
        close(vol->fd);                                               
 8011de8:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011dec:	fb ff c4 68 	calli 8002f8c <close>                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENXIO);                  
 8011df0:	f8 00 2a 81 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8011df4:	34 02 00 06 	mvi r2,6                                       <== NOT EXECUTED
 8011df8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011dfc:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011e00:	e3 ff fd cb 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
        if (vol->mirror)                                              
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
        else                                                          
            vol->afat = 0;                                            
 8011e04:	31 c0 00 5c 	sb (r14+92),r0                                 
 8011e08:	e3 ff ff 94 	bi 8011c58 <fat_init_volume_info+0x7a0>        
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);               
                                                                      
    sc = rtems_bdbuf_release( block);                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        close(vol->fd);                                               
 8011e0c:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e10:	fb ff c4 5f 	calli 8002f8c <close>                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( EIO );                  
 8011e14:	f8 00 2a 78 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8011e18:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8011e1c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011e20:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011e24:	e3 ff fd c2 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
 8011e28:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8011e2c:	fb ff fb 76 	calli 8010c04 <fat_buf_release>                <== NOT EXECUTED
 8011e30:	e3 ff fe 5e 	bi 80117a8 <fat_init_volume_info+0x2f0>        <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = fstat(vol->fd, &stat_buf);                                   
    if (rc != 0)                                                      
    {                                                                 
        close(vol->fd);                                               
 8011e34:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e38:	fb ff c4 55 	calli 8002f8c <close>                          <== NOT EXECUTED
 8011e3c:	e3 ff fd b8 	bi 801151c <fat_init_volume_info+0x64>         <== NOT EXECUTED
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
    fs_info->index = 0;                                               
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
    if ( fs_info->uino == NULL )                                      
    {                                                                 
        close(vol->fd);                                               
 8011e40:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e44:	fb ff c4 52 	calli 8002f8c <close>                          <== NOT EXECUTED
        free(fs_info->vhash);                                         
 8011e48:	29 c1 00 6c 	lw r1,(r14+108)                                <== NOT EXECUTED
 8011e4c:	fb ff c4 7f 	calli 8003048 <free>                           <== NOT EXECUTED
        free(fs_info->rhash);                                         
 8011e50:	29 c1 00 70 	lw r1,(r14+112)                                <== NOT EXECUTED
    if (fs_info->sec_buf == NULL)                                     
    {                                                                 
        close(vol->fd);                                               
        free(fs_info->vhash);                                         
        free(fs_info->rhash);                                         
        free(fs_info->uino);                                          
 8011e54:	fb ff c4 7d 	calli 8003048 <free>                           <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
 8011e58:	f8 00 2a 67 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8011e5c:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8011e60:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011e64:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011e68:	e3 ff fd b1 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
    if ( fs_info->vhash == NULL )                                     
    {                                                                 
        close(vol->fd);                                               
 8011e6c:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e70:	fb ff c4 47 	calli 8002f8c <close>                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
 8011e74:	f8 00 2a 60 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8011e78:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8011e7c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011e80:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011e84:	e3 ff fd aa 	bi 801152c <fat_init_volume_info+0x74>         <== NOT EXECUTED
        rtems_chain_initialize_empty(fs_info->vhash + i);             
                                                                      
    fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
    if ( fs_info->rhash == NULL )                                     
    {                                                                 
        close(vol->fd);                                               
 8011e88:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e8c:	fb ff c4 40 	calli 8002f8c <close>                          <== NOT EXECUTED
        free(fs_info->vhash);                                         
 8011e90:	29 c1 00 6c 	lw r1,(r14+108)                                <== NOT EXECUTED
 8011e94:	e3 ff ff f0 	bi 8011e54 <fat_init_volume_info+0x99c>        <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));  
    if (fs_info->sec_buf == NULL)                                     
    {                                                                 
        close(vol->fd);                                               
 8011e98:	29 c1 00 60 	lw r1,(r14+96)                                 <== NOT EXECUTED
 8011e9c:	fb ff c4 3c 	calli 8002f8c <close>                          <== NOT EXECUTED
        free(fs_info->vhash);                                         
 8011ea0:	29 c1 00 6c 	lw r1,(r14+108)                                <== NOT EXECUTED
 8011ea4:	fb ff c4 69 	calli 8003048 <free>                           <== NOT EXECUTED
        free(fs_info->rhash);                                         
 8011ea8:	29 c1 00 70 	lw r1,(r14+112)                                <== NOT EXECUTED
 8011eac:	fb ff c4 67 	calli 8003048 <free>                           <== NOT EXECUTED
        free(fs_info->uino);                                          
 8011eb0:	29 c1 00 74 	lw r1,(r14+116)                                <== NOT EXECUTED
 8011eb4:	e3 ff ff e8 	bi 8011e54 <fat_init_volume_info+0x99c>        <== NOT EXECUTED
                                                                      

0801a5fc <fat_scan_fat_for_free_clusters>: uint32_t count, uint32_t *cls_added, uint32_t *last_cl, bool zero_fill ) {
 801a5fc:	37 9c ff cc 	addi sp,sp,-52                                 
 801a600:	5b 8b 00 30 	sw (sp+48),r11                                 
 801a604:	5b 8c 00 2c 	sw (sp+44),r12                                 
 801a608:	5b 8d 00 28 	sw (sp+40),r13                                 
 801a60c:	5b 8e 00 24 	sw (sp+36),r14                                 
 801a610:	5b 8f 00 20 	sw (sp+32),r15                                 
 801a614:	5b 90 00 1c 	sw (sp+28),r16                                 
 801a618:	5b 91 00 18 	sw (sp+24),r17                                 
 801a61c:	5b 92 00 14 	sw (sp+20),r18                                 
 801a620:	5b 93 00 10 	sw (sp+16),r19                                 
 801a624:	5b 94 00 0c 	sw (sp+12),r20                                 
 801a628:	5b 95 00 08 	sw (sp+8),r21                                  
 801a62c:	5b 9d 00 04 	sw (sp+4),ra                                   
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
 801a630:	5b 80 00 34 	sw (sp+52),r0                                  
    uint32_t       save_cln = 0;                                      
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;          
 801a634:	28 30 00 38 	lw r16,(r1+56)                                 
    uint32_t       i = 2;                                             
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
 801a638:	58 80 00 00 	sw (r4+0),r0                                   
    uint32_t                              count,                      
    uint32_t                             *cls_added,                  
    uint32_t                             *last_cl,                    
    bool                                  zero_fill                   
    )                                                                 
{                                                                     
 801a63c:	b8 20 68 00 	mv r13,r1                                      
 801a640:	b8 80 70 00 	mv r14,r4                                      
 801a644:	b8 60 90 00 	mv r18,r3                                      
 801a648:	b8 40 a0 00 	mv r20,r2                                      
 801a64c:	b8 a0 a8 00 	mv r21,r5                                      
 801a650:	20 d3 00 ff 	andi r19,r6,0xff                               
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
                                                                      
    if (count == 0)                                                   
        return rc;                                                    
 801a654:	34 0c 00 00 	mvi r12,0                                      
    uint32_t       i = 2;                                             
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
                                                                      
    if (count == 0)                                                   
 801a658:	44 60 00 2e 	be r3,r0,801a710 <fat_scan_fat_for_free_clusters+0x114><== NEVER TAKEN
        return rc;                                                    
                                                                      
    if (fs_info->vol.next_cl != FAT_UNDEFINED_VALUE)                  
 801a65c:	28 2b 00 4c 	lw r11,(r1+76)                                 
 801a660:	34 01 ff ff 	mvi r1,-1                                      
 801a664:	45 61 00 5e 	be r11,r1,801a7dc <fat_scan_fat_for_free_clusters+0x1e0>
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
    uint32_t       save_cln = 0;                                      
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;          
 801a668:	36 10 00 02 	addi r16,r16,2                                 
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
 801a66c:	34 01 00 02 	mvi r1,2                                       
 801a670:	50 30 00 75 	bgeu r1,r16,801a844 <fat_scan_fat_for_free_clusters+0x248><== NEVER TAKEN
 801a674:	34 0f 00 02 	mvi r15,2                                      
 801a678:	34 11 00 00 	mvi r17,0                                      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);        
 801a67c:	b9 a0 08 00 	mv r1,r13                                      
 801a680:	b9 60 10 00 	mv r2,r11                                      
 801a684:	37 83 00 34 	addi r3,sp,52                                  
 801a688:	fb ff fd cf 	calli 8019dc4 <fat_get_fat_cluster>            
 801a68c:	b8 20 60 00 	mv r12,r1                                      
        if ( rc != RC_OK )                                            
 801a690:	5c 20 00 55 	bne r1,r0,801a7e4 <fat_scan_fat_for_free_clusters+0x1e8><== NEVER TAKEN
            if (*cls_added != 0)                                      
                fat_free_fat_clusters_chain(fs_info, (*chain));       
            return rc;                                                
        }                                                             
                                                                      
        if (next_cln == FAT_GENFAT_FREE)                              
 801a694:	2b 81 00 34 	lw r1,(sp+52)                                  
 801a698:	5c 2c 00 0f 	bne r1,r12,801a6d4 <fat_scan_fat_for_free_clusters+0xd8>
            /*                                                        
             * We are enforced to process allocation of the first free cluster
             * by separate 'if' statement because otherwise undo function
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
 801a69c:	29 c1 00 00 	lw r1,(r14+0)                                  
 801a6a0:	5c 20 00 2e 	bne r1,r0,801a758 <fat_scan_fat_for_free_clusters+0x15c>
            {                                                         
                *chain = cl4find;                                     
 801a6a4:	5a 8b 00 00 	sw (r20+0),r11                                 
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
 801a6a8:	b9 a0 08 00 	mv r1,r13                                      
 801a6ac:	b9 60 10 00 	mv r2,r11                                      
 801a6b0:	34 03 ff ff 	mvi r3,-1                                      
 801a6b4:	fb ff fe 81 	calli 801a0b8 <fat_set_fat_cluster>            
                if ( rc != RC_OK )                                    
 801a6b8:	5c 20 00 5c 	bne r1,r0,801a828 <fat_scan_fat_for_free_clusters+0x22c><== NEVER TAKEN
                rc = fat_set_fat_cluster(fs_info, save_cln, cl4find); 
                if ( rc != RC_OK )                                    
                    goto cleanup;                                     
            }                                                         
                                                                      
            if (zero_fill)                                            
 801a6bc:	5e 60 00 3e 	bne r19,r0,801a7b4 <fat_scan_fat_for_free_clusters+0x1b8>
                    goto cleanup;                                     
                }                                                     
            }                                                         
                                                                      
            save_cln = cl4find;                                       
            (*cls_added)++;                                           
 801a6c0:	29 c1 00 00 	lw r1,(r14+0)                                  
 801a6c4:	34 21 00 01 	addi r1,r1,1                                   
 801a6c8:	59 c1 00 00 	sw (r14+0),r1                                  
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
 801a6cc:	46 41 00 4c 	be r18,r1,801a7fc <fat_scan_fat_for_free_clusters+0x200>
 801a6d0:	b9 60 88 00 	mv r17,r11                                     
                fat_buf_release(fs_info);                             
                return rc;                                            
            }                                                         
        }                                                             
        i++;                                                          
        cl4find++;                                                    
 801a6d4:	35 6b 00 01 	addi r11,r11,1                                 
                *last_cl = save_cln;                                  
                fat_buf_release(fs_info);                             
                return rc;                                            
            }                                                         
        }                                                             
        i++;                                                          
 801a6d8:	35 ef 00 01 	addi r15,r15,1                                 
        cl4find++;                                                    
        if (cl4find >= data_cls_val)                                  
 801a6dc:	51 70 00 1c 	bgeu r11,r16,801a74c <fat_scan_fat_for_free_clusters+0x150><== NEVER TAKEN
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
 801a6e0:	56 0f ff e7 	bgu r16,r15,801a67c <fat_scan_fat_for_free_clusters+0x80><== ALWAYS TAKEN
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
    }                                                                 
                                                                      
        fs_info->vol.next_cl = save_cln;                              
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
 801a6e4:	29 a1 00 44 	lw r1,(r13+68)                                 <== NOT EXECUTED
        cl4find++;                                                    
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
    }                                                                 
                                                                      
        fs_info->vol.next_cl = save_cln;                              
 801a6e8:	59 b1 00 4c 	sw (r13+76),r17                                <== NOT EXECUTED
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
 801a6ec:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 801a6f0:	44 22 00 04 	be r1,r2,801a700 <fat_scan_fat_for_free_clusters+0x104><== NOT EXECUTED
            fs_info->vol.free_cls -= (*cls_added);                    
 801a6f4:	29 c2 00 00 	lw r2,(r14+0)                                  <== NOT EXECUTED
 801a6f8:	c8 22 08 00 	sub r1,r1,r2                                   <== NOT EXECUTED
 801a6fc:	59 a1 00 44 	sw (r13+68),r1                                 <== NOT EXECUTED
                                                                      
    *last_cl = save_cln;                                              
 801a700:	5a b1 00 00 	sw (r21+0),r17                                 <== NOT EXECUTED
    fat_buf_release(fs_info);                                         
 801a704:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801a708:	fb ff d9 3f 	calli 8010c04 <fat_buf_release>                <== NOT EXECUTED
    return RC_OK;                                                     
 801a70c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
    fat_free_fat_clusters_chain(fs_info, (*chain));                   
    /* trying to save last allocated cluster for future use */        
    fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);           
    fat_buf_release(fs_info);                                         
    return rc;                                                        
}                                                                     
 801a710:	b9 80 08 00 	mv r1,r12                                      
 801a714:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801a718:	2b 8b 00 30 	lw r11,(sp+48)                                 
 801a71c:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 801a720:	2b 8d 00 28 	lw r13,(sp+40)                                 
 801a724:	2b 8e 00 24 	lw r14,(sp+36)                                 
 801a728:	2b 8f 00 20 	lw r15,(sp+32)                                 
 801a72c:	2b 90 00 1c 	lw r16,(sp+28)                                 
 801a730:	2b 91 00 18 	lw r17,(sp+24)                                 
 801a734:	2b 92 00 14 	lw r18,(sp+20)                                 
 801a738:	2b 93 00 10 	lw r19,(sp+16)                                 
 801a73c:	2b 94 00 0c 	lw r20,(sp+12)                                 
 801a740:	2b 95 00 08 	lw r21,(sp+8)                                  
 801a744:	37 9c 00 34 	addi sp,sp,52                                  
 801a748:	c3 a0 00 00 	ret                                            
            }                                                         
        }                                                             
        i++;                                                          
        cl4find++;                                                    
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
 801a74c:	34 0b 00 02 	mvi r11,2                                      <== NOT EXECUTED
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
 801a750:	56 0f ff cb 	bgu r16,r15,801a67c <fat_scan_fat_for_free_clusters+0x80><== NOT EXECUTED
 801a754:	e3 ff ff e4 	bi 801a6e4 <fat_scan_fat_for_free_clusters+0xe8><== NOT EXECUTED
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
 801a758:	b9 a0 08 00 	mv r1,r13                                      
 801a75c:	b9 60 10 00 	mv r2,r11                                      
 801a760:	34 03 ff ff 	mvi r3,-1                                      
 801a764:	fb ff fe 55 	calli 801a0b8 <fat_set_fat_cluster>            
 801a768:	b8 20 20 00 	mv r4,r1                                       
                if ( rc != RC_OK )                                    
 801a76c:	5c 20 00 31 	bne r1,r0,801a830 <fat_scan_fat_for_free_clusters+0x234><== NEVER TAKEN
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
                    return rc;                                        
                }                                                     
                                                                      
                rc = fat_set_fat_cluster(fs_info, save_cln, cl4find); 
 801a770:	b9 a0 08 00 	mv r1,r13                                      
 801a774:	ba 20 10 00 	mv r2,r17                                      
 801a778:	b9 60 18 00 	mv r3,r11                                      
 801a77c:	fb ff fe 4f 	calli 801a0b8 <fat_set_fat_cluster>            
 801a780:	b8 20 20 00 	mv r4,r1                                       
                if ( rc != RC_OK )                                    
 801a784:	44 20 ff ce 	be r1,r0,801a6bc <fat_scan_fat_for_free_clusters+0xc0><== ALWAYS TAKEN
    return RC_OK;                                                     
                                                                      
cleanup:                                                              
                                                                      
    /* cleanup activity */                                            
    fat_free_fat_clusters_chain(fs_info, (*chain));                   
 801a788:	2a 82 00 00 	lw r2,(r20+0)                                  <== NOT EXECUTED
 801a78c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
    /* trying to save last allocated cluster for future use */        
    fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);           
    fat_buf_release(fs_info);                                         
    return rc;                                                        
 801a790:	b8 80 60 00 	mv r12,r4                                      <== NOT EXECUTED
    return RC_OK;                                                     
                                                                      
cleanup:                                                              
                                                                      
    /* cleanup activity */                                            
    fat_free_fat_clusters_chain(fs_info, (*chain));                   
 801a794:	fb ff ff 58 	calli 801a4f4 <fat_free_fat_clusters_chain>    <== NOT EXECUTED
    /* trying to save last allocated cluster for future use */        
    fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);           
 801a798:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801a79c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801a7a0:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801a7a4:	fb ff fe 45 	calli 801a0b8 <fat_set_fat_cluster>            <== NOT EXECUTED
    fat_buf_release(fs_info);                                         
 801a7a8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801a7ac:	fb ff d9 16 	calli 8010c04 <fat_buf_release>                <== NOT EXECUTED
    return rc;                                                        
 801a7b0:	e3 ff ff d8 	bi 801a710 <fat_scan_fat_for_free_clusters+0x114><== NOT EXECUTED
                    goto cleanup;                                     
            }                                                         
                                                                      
            if (zero_fill)                                            
            {                                                         
                bytes_written = fat_cluster_set (fs_info, cl4find, 0, fs_info->vol.bpc, 0);
 801a7b4:	2d a4 00 06 	lhu r4,(r13+6)                                 
 801a7b8:	b9 60 10 00 	mv r2,r11                                      
 801a7bc:	b9 a0 08 00 	mv r1,r13                                      
 801a7c0:	34 03 00 00 	mvi r3,0                                       
 801a7c4:	34 05 00 00 	mvi r5,0                                       
 801a7c8:	fb ff da 44 	calli 80110d8 <fat_cluster_set>                
                if (fs_info->vol.bpc != bytes_written)                
 801a7cc:	2d a2 00 06 	lhu r2,(r13+6)                                 
 801a7d0:	44 41 ff bc 	be r2,r1,801a6c0 <fat_scan_fat_for_free_clusters+0xc4><== ALWAYS TAKEN
                {                                                     
                    rc = -1;                                          
 801a7d4:	34 04 ff ff 	mvi r4,-1                                      <== NOT EXECUTED
 801a7d8:	e3 ff ff ec 	bi 801a788 <fat_scan_fat_for_free_clusters+0x18c><== NOT EXECUTED
    uint32_t                             *last_cl,                    
    bool                                  zero_fill                   
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
 801a7dc:	34 0b 00 02 	mvi r11,2                                      
 801a7e0:	e3 ff ff a2 	bi 801a668 <fat_scan_fat_for_free_clusters+0x6c>
    while (i < data_cls_val)                                          
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);        
        if ( rc != RC_OK )                                            
        {                                                             
            if (*cls_added != 0)                                      
 801a7e4:	29 c1 00 00 	lw r1,(r14+0)                                  <== NOT EXECUTED
 801a7e8:	44 20 ff ca 	be r1,r0,801a710 <fat_scan_fat_for_free_clusters+0x114><== NOT EXECUTED
                fat_free_fat_clusters_chain(fs_info, (*chain));       
 801a7ec:	2a 82 00 00 	lw r2,(r20+0)                                  <== NOT EXECUTED
 801a7f0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801a7f4:	fb ff ff 40 	calli 801a4f4 <fat_free_fat_clusters_chain>    <== NOT EXECUTED
 801a7f8:	e3 ff ff c6 	bi 801a710 <fat_scan_fat_for_free_clusters+0x114><== NOT EXECUTED
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
 801a7fc:	29 a1 00 44 	lw r1,(r13+68)                                 
            (*cls_added)++;                                           
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
 801a800:	59 ab 00 4c 	sw (r13+76),r11                                
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
 801a804:	34 02 ff ff 	mvi r2,-1                                      
 801a808:	44 22 00 04 	be r1,r2,801a818 <fat_scan_fat_for_free_clusters+0x21c><== ALWAYS TAKEN
                        fs_info->vol.free_cls -= (*cls_added);        
 801a80c:	29 c2 00 00 	lw r2,(r14+0)                                  <== NOT EXECUTED
 801a810:	c8 22 08 00 	sub r1,r1,r2                                   <== NOT EXECUTED
 801a814:	59 a1 00 44 	sw (r13+68),r1                                 <== NOT EXECUTED
                *last_cl = save_cln;                                  
 801a818:	5a ab 00 00 	sw (r21+0),r11                                 
                fat_buf_release(fs_info);                             
 801a81c:	b9 a0 08 00 	mv r1,r13                                      
 801a820:	fb ff d8 f9 	calli 8010c04 <fat_buf_release>                
                return rc;                                            
 801a824:	e3 ff ff bb 	bi 801a710 <fat_scan_fat_for_free_clusters+0x114>
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
            {                                                         
                *chain = cl4find;                                     
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
 801a828:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
 801a82c:	e3 ff ff b9 	bi 801a710 <fat_scan_fat_for_free_clusters+0x114><== NOT EXECUTED
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
                if ( rc != RC_OK )                                    
                {                                                     
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
 801a830:	2a 82 00 00 	lw r2,(r20+0)                                  <== NOT EXECUTED
 801a834:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
 801a838:	b8 80 60 00 	mv r12,r4                                      <== NOT EXECUTED
                if ( rc != RC_OK )                                    
                {                                                     
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
 801a83c:	fb ff ff 2e 	calli 801a4f4 <fat_free_fat_clusters_chain>    <== NOT EXECUTED
                    return rc;                                        
 801a840:	e3 ff ff b4 	bi 801a710 <fat_scan_fat_for_free_clusters+0x114><== NOT EXECUTED
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
 801a844:	34 11 00 00 	mvi r17,0                                      <== NOT EXECUTED
 801a848:	e3 ff ff a7 	bi 801a6e4 <fat_scan_fat_for_free_clusters+0xe8><== NOT EXECUTED
                                                                      

08010fc8 <fat_sector_write>: fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, const void *buff) {
 8010fc8:	37 9c ff d4 	addi sp,sp,-44                                 
 8010fcc:	5b 8b 00 28 	sw (sp+40),r11                                 
 8010fd0:	5b 8c 00 24 	sw (sp+36),r12                                 
 8010fd4:	5b 8d 00 20 	sw (sp+32),r13                                 
 8010fd8:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8010fdc:	5b 8f 00 18 	sw (sp+24),r15                                 
 8010fe0:	5b 90 00 14 	sw (sp+20),r16                                 
 8010fe4:	5b 91 00 10 	sw (sp+16),r17                                 
 8010fe8:	5b 92 00 0c 	sw (sp+12),r18                                 
 8010fec:	5b 93 00 08 	sw (sp+8),r19                                  
 8010ff0:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                 rc = RC_OK;                                   
    ssize_t             cmpltd = 0;                                   
 8010ff4:	34 0f 00 00 	mvi r15,0                                      
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              start,                      
    uint32_t                              offset,                     
    uint32_t                              count,                      
    const void                           *buff)                       
{                                                                     
 8010ff8:	b8 80 60 00 	mv r12,r4                                      
 8010ffc:	b8 20 68 00 	mv r13,r1                                      
 8011000:	b8 a0 90 00 	mv r18,r5                                      
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
 8011004:	44 80 00 28 	be r4,r0,80110a4 <fat_sector_write+0xdc>       <== NEVER TAKEN
 8011008:	b8 60 80 00 	mv r16,r3                                      
 801100c:	b8 40 70 00 	mv r14,r2                                      
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 8011010:	34 13 00 01 	mvi r19,1                                      
 8011014:	e0 00 00 0f 	bi 8011050 <fat_sector_write+0x88>             
        c = MIN(count, (fs_info->vol.bps - ofs));                     
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
 8011018:	fb ff ff 76 	calli 8010df0 <fat_buf_access>                 
 801101c:	b8 20 88 00 	mv r17,r1                                      
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
 8011020:	b6 4f 10 00 	add r2,r18,r15                                 
 8011024:	b9 60 18 00 	mv r3,r11                                      
                                                                      
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
 8011028:	c9 8b 60 00 	sub r12,r12,r11                                
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
 801102c:	5e 20 00 1d 	bne r17,r0,80110a0 <fat_sector_write+0xd8>     <== NEVER TAKEN
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
 8011030:	2b 81 00 2c 	lw r1,(sp+44)                                  
                                                                      
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
        cmpltd +=c;                                                   
 8011034:	b5 6f 78 00 	add r15,r11,r15                                
        sec_num++;                                                    
 8011038:	35 ce 00 01 	addi r14,r14,1                                 
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
 801103c:	b4 30 08 00 	add r1,r1,r16                                  
 8011040:	f8 00 31 3b 	calli 801d52c <memcpy>                         
 8011044:	31 b3 00 88 	sb (r13+136),r19                               
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
 8011048:	45 91 00 17 	be r12,r17,80110a4 <fat_sector_write+0xdc>     <== ALWAYS TAKEN
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
        cmpltd +=c;                                                   
        sec_num++;                                                    
        ofs = 0;                                                      
 801104c:	34 10 00 00 	mvi r16,0                                      <== NOT EXECUTED
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
    {                                                                 
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 8011050:	2d ab 00 00 	lhu r11,(r13+0)                                
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
 8011054:	b9 c0 10 00 	mv r2,r14                                      
 8011058:	37 84 00 2c 	addi r4,sp,44                                  
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
    {                                                                 
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 801105c:	c9 70 58 00 	sub r11,r11,r16                                
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
 8011060:	b9 a0 08 00 	mv r1,r13                                      
 8011064:	34 03 00 01 	mvi r3,1                                       
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
    {                                                                 
        c = MIN(count, (fs_info->vol.bps - ofs));                     
 8011068:	51 8b 00 02 	bgeu r12,r11,8011070 <fat_sector_write+0xa8>   
 801106c:	b9 80 58 00 	mv r11,r12                                     
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
 8011070:	2d a6 00 0a 	lhu r6,(r13+10)                                
 8011074:	5c cb ff e9 	bne r6,r11,8011018 <fat_sector_write+0x50>     <== ALWAYS TAKEN
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
 8011078:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801107c:	34 03 00 02 	mvi r3,2                                       <== NOT EXECUTED
 8011080:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011084:	37 84 00 2c 	addi r4,sp,44                                  <== NOT EXECUTED
 8011088:	fb ff ff 5a 	calli 8010df0 <fat_buf_access>                 <== NOT EXECUTED
 801108c:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
 8011090:	b6 4f 10 00 	add r2,r18,r15                                 <== NOT EXECUTED
 8011094:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
                                                                      
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
 8011098:	c9 8b 60 00 	sub r12,r12,r11                                <== NOT EXECUTED
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
 801109c:	46 20 ff e5 	be r17,r0,8011030 <fat_sector_write+0x68>      <== NOT EXECUTED
            return -1;                                                
 80110a0:	34 0f ff ff 	mvi r15,-1                                     <== NOT EXECUTED
        cmpltd +=c;                                                   
        sec_num++;                                                    
        ofs = 0;                                                      
    }                                                                 
    return cmpltd;                                                    
}                                                                     
 80110a4:	b9 e0 08 00 	mv r1,r15                                      
 80110a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80110ac:	2b 8b 00 28 	lw r11,(sp+40)                                 
 80110b0:	2b 8c 00 24 	lw r12,(sp+36)                                 
 80110b4:	2b 8d 00 20 	lw r13,(sp+32)                                 
 80110b8:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 80110bc:	2b 8f 00 18 	lw r15,(sp+24)                                 
 80110c0:	2b 90 00 14 	lw r16,(sp+20)                                 
 80110c4:	2b 91 00 10 	lw r17,(sp+16)                                 
 80110c8:	2b 92 00 0c 	lw r18,(sp+12)                                 
 80110cc:	2b 93 00 08 	lw r19,(sp+8)                                  
 80110d0:	37 9c 00 2c 	addi sp,sp,44                                  
 80110d4:	c3 a0 00 00 	ret                                            
                                                                      

0801a0b8 <fat_set_fat_cluster>: fat_set_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t in_val ) {
 801a0b8:	37 9c ff d8 	addi sp,sp,-40                                 
 801a0bc:	5b 8b 00 24 	sw (sp+36),r11                                 
 801a0c0:	5b 8c 00 20 	sw (sp+32),r12                                 
 801a0c4:	5b 8d 00 1c 	sw (sp+28),r13                                 
 801a0c8:	5b 8e 00 18 	sw (sp+24),r14                                 
 801a0cc:	5b 8f 00 14 	sw (sp+20),r15                                 
 801a0d0:	5b 90 00 10 	sw (sp+16),r16                                 
 801a0d4:	5b 91 00 0c 	sw (sp+12),r17                                 
 801a0d8:	5b 92 00 08 	sw (sp+8),r18                                  
 801a0dc:	5b 9d 00 04 	sw (sp+4),ra                                   
 801a0e0:	b8 20 58 00 	mv r11,r1                                      
    int                 rc = RC_OK;                                   
    uint32_t            sec = 0;                                      
    uint32_t            ofs = 0;                                      
    uint16_t            fat16_clv = 0;                                
    uint32_t            fat32_clv = 0;                                
    uint8_t            *sec_buf = NULL;                               
 801a0e4:	5b 80 00 28 	sw (sp+40),r0                                  
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
 801a0e8:	34 01 00 01 	mvi r1,1                                       
fat_set_fat_cluster(                                                  
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              cln,                        
    uint32_t                              in_val                      
    )                                                                 
{                                                                     
 801a0ec:	b8 40 60 00 	mv r12,r2                                      
 801a0f0:	b8 60 88 00 	mv r17,r3                                      
    uint16_t            fat16_clv = 0;                                
    uint32_t            fat32_clv = 0;                                
    uint8_t            *sec_buf = NULL;                               
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
 801a0f4:	50 22 00 21 	bgeu r1,r2,801a178 <fat_set_fat_cluster+0xc0>  <== NEVER TAKEN
 801a0f8:	29 61 00 38 	lw r1,(r11+56)                                 
 801a0fc:	34 21 00 01 	addi r1,r1,1                                   
 801a100:	50 22 00 02 	bgeu r1,r2,801a108 <fat_set_fat_cluster+0x50>  <== ALWAYS TAKEN
 801a104:	e0 00 00 1d 	bi 801a178 <fat_set_fat_cluster+0xc0>          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
 801a108:	41 62 00 0e 	lbu r2,(r11+14)                                
 801a10c:	20 41 00 01 	andi r1,r2,0x1                                 
 801a110:	5c 20 00 2a 	bne r1,r0,801a1b8 <fat_set_fat_cluster+0x100>  
 801a114:	20 42 00 02 	andi r2,r2,0x2                                 
 801a118:	44 41 00 30 	be r2,r1,801a1d8 <fat_set_fat_cluster+0x120>   
 801a11c:	41 62 00 02 	lbu r2,(r11+2)                                 
 801a120:	b5 8c 70 00 	add r14,r12,r12                                
 801a124:	b9 c0 08 00 	mv r1,r14                                      
 801a128:	f8 00 53 b4 	calli 802eff8 <__lshrsi3>                      
 801a12c:	29 70 00 58 	lw r16,(r11+88)                                
 801a130:	b4 30 80 00 	add r16,r1,r16                                 
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
 801a134:	b9 60 08 00 	mv r1,r11                                      
 801a138:	ba 00 10 00 	mv r2,r16                                      
 801a13c:	34 03 00 01 	mvi r3,1                                       
 801a140:	37 84 00 28 	addi r4,sp,40                                  
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 801a144:	2d 72 00 00 	lhu r18,(r11+0)                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
 801a148:	fb ff db 2a 	calli 8010df0 <fat_buf_access>                 
 801a14c:	b8 20 68 00 	mv r13,r1                                      
    if (rc != RC_OK)                                                  
 801a150:	5c 20 00 0e 	bne r1,r0,801a188 <fat_set_fat_cluster+0xd0>   <== NEVER TAKEN
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 801a154:	41 6f 00 0e 	lbu r15,(r11+14)                               
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 801a158:	36 52 ff ff 	addi r18,r18,-1                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 801a15c:	34 01 00 02 	mvi r1,2                                       
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
 801a160:	a1 d2 70 00 	and r14,r14,r18                                
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
 801a164:	45 e1 00 25 	be r15,r1,801a1f8 <fat_set_fat_cluster+0x140>  
 801a168:	34 01 00 04 	mvi r1,4                                       
 801a16c:	45 e1 00 63 	be r15,r1,801a2f8 <fat_set_fat_cluster+0x240>  
 801a170:	34 01 00 01 	mvi r1,1                                       
 801a174:	45 e1 00 39 	be r15,r1,801a258 <fat_set_fat_cluster+0x1a0>  <== ALWAYS TAKEN
                                                                      
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        default:                                                      
            rtems_set_errno_and_return_minus_one(EIO);                
 801a178:	f8 00 09 9f 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801a17c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801a180:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801a184:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
            break;                                                    
                                                                      
    }                                                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
 801a188:	b9 a0 08 00 	mv r1,r13                                      
 801a18c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801a190:	2b 8b 00 24 	lw r11,(sp+36)                                 
 801a194:	2b 8c 00 20 	lw r12,(sp+32)                                 
 801a198:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 801a19c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 801a1a0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 801a1a4:	2b 90 00 10 	lw r16,(sp+16)                                 
 801a1a8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 801a1ac:	2b 92 00 08 	lw r18,(sp+8)                                  
 801a1b0:	37 9c 00 28 	addi sp,sp,40                                  
 801a1b4:	c3 a0 00 00 	ret                                            
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
 801a1b8:	01 8e 00 01 	srui r14,r12,1                                 
 801a1bc:	41 62 00 02 	lbu r2,(r11+2)                                 
 801a1c0:	b5 cc 70 00 	add r14,r14,r12                                
 801a1c4:	b9 c0 08 00 	mv r1,r14                                      
 801a1c8:	f8 00 53 8c 	calli 802eff8 <__lshrsi3>                      
 801a1cc:	29 70 00 58 	lw r16,(r11+88)                                
 801a1d0:	b4 30 80 00 	add r16,r1,r16                                 
 801a1d4:	e3 ff ff d8 	bi 801a134 <fat_set_fat_cluster+0x7c>          
 801a1d8:	b5 8c 70 00 	add r14,r12,r12                                
 801a1dc:	41 62 00 02 	lbu r2,(r11+2)                                 
 801a1e0:	b5 ce 70 00 	add r14,r14,r14                                
 801a1e4:	b9 c0 08 00 	mv r1,r14                                      
 801a1e8:	f8 00 53 84 	calli 802eff8 <__lshrsi3>                      
 801a1ec:	29 70 00 58 	lw r16,(r11+88)                                
 801a1f0:	b4 30 80 00 	add r16,r1,r16                                 
 801a1f4:	e3 ff ff d0 	bi 801a134 <fat_set_fat_cluster+0x7c>          
            }                                                         
            break;                                                    
                                                                      
        case FAT_FAT16:                                               
            *((uint16_t   *)(sec_buf + ofs)) =                        
                    (uint16_t  )(CT_LE_W(in_val));                    
 801a1f8:	22 23 ff ff 	andi r3,r17,0xffff                             
 *  @param[in] value is the value to be swapped                       
 *  @return the value after being endian swapped                      
 */                                                                   
static inline uint16_t CPU_swap_u16(uint16_t v)                       
{                                                                     
    return v << 8 | v >> 8;                                           
 801a1fc:	00 61 00 01 	srui r1,r3,1                                   
 801a200:	b4 63 18 00 	add r3,r3,r3                                   
 801a204:	00 21 00 01 	srui r1,r1,1                                   
 801a208:	b4 63 18 00 	add r3,r3,r3                                   
 801a20c:	00 21 00 01 	srui r1,r1,1                                   
 801a210:	b4 63 18 00 	add r3,r3,r3                                   
 801a214:	00 21 00 01 	srui r1,r1,1                                   
 801a218:	b4 63 18 00 	add r3,r3,r3                                   
 801a21c:	00 21 00 01 	srui r1,r1,1                                   
 801a220:	b4 63 18 00 	add r3,r3,r3                                   
 801a224:	00 21 00 01 	srui r1,r1,1                                   
                }                                                     
            }                                                         
            break;                                                    
                                                                      
        case FAT_FAT16:                                               
            *((uint16_t   *)(sec_buf + ofs)) =                        
 801a228:	2b 82 00 28 	lw r2,(sp+40)                                  
 801a22c:	00 21 00 01 	srui r1,r1,1                                   
 801a230:	b4 63 18 00 	add r3,r3,r3                                   
 801a234:	00 21 00 01 	srui r1,r1,1                                   
 801a238:	b4 63 18 00 	add r3,r3,r3                                   
 801a23c:	b4 63 18 00 	add r3,r3,r3                                   
 801a240:	b8 61 18 00 	or r3,r3,r1                                    
 801a244:	b4 4e 70 00 	add r14,r2,r14                                 
 801a248:	0d c3 00 00 	sh (r14+0),r3                                  
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
 801a24c:	34 01 00 01 	mvi r1,1                                       
 801a250:	31 61 00 88 	sb (r11+136),r1                                
                    (uint16_t  )(CT_LE_W(in_val));                    
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
 801a254:	e3 ff ff cd 	bi 801a188 <fat_set_fat_cluster+0xd0>          
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
 801a258:	21 8c 00 01 	andi r12,r12,0x1                               
 801a25c:	45 80 00 55 	be r12,r0,801a3b0 <fat_set_fat_cluster+0x2f8>  
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
                *(sec_buf + ofs) &= 0x0F;                             
 801a260:	2b 81 00 28 	lw r1,(sp+40)                                  
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
 801a264:	b6 31 88 00 	add r17,r17,r17                                
 801a268:	b6 31 88 00 	add r17,r17,r17                                
                *(sec_buf + ofs) &= 0x0F;                             
 801a26c:	b4 2e 08 00 	add r1,r1,r14                                  
 801a270:	40 22 00 00 	lbu r2,(r1+0)                                  
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
 801a274:	b6 31 88 00 	add r17,r17,r17                                
 801a278:	b6 31 88 00 	add r17,r17,r17                                
                *(sec_buf + ofs) &= 0x0F;                             
 801a27c:	20 42 00 0f 	andi r2,r2,0xf                                 
 801a280:	30 22 00 00 	sb (r1+0),r2                                   
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);    
 801a284:	2b 81 00 28 	lw r1,(sp+40)                                  
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
 801a288:	22 31 ff ff 	andi r17,r17,0xffff                            
                *(sec_buf + ofs) &= 0x0F;                             
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);    
 801a28c:	22 22 ff f0 	andi r2,r17,0xfff0                             
 801a290:	b4 2e 08 00 	add r1,r1,r14                                  
 801a294:	40 23 00 00 	lbu r3,(r1+0)                                  
 801a298:	b8 62 10 00 	or r2,r3,r2                                    
 801a29c:	30 22 00 00 	sb (r1+0),r2                                   
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
 801a2a0:	2d 61 00 00 	lhu r1,(r11+0)                                 
 801a2a4:	31 6f 00 88 	sb (r11+136),r15                               
 801a2a8:	34 21 ff ff 	addi r1,r1,-1                                  
 801a2ac:	44 2e 00 62 	be r1,r14,801a434 <fat_set_fat_cluster+0x37c>  <== NEVER TAKEN
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
 801a2b0:	02 21 00 01 	srui r1,r17,1                                  
                                                                      
                     fat_buf_mark_modified(fs_info);                  
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
 801a2b4:	2b 82 00 28 	lw r2,(sp+40)                                  
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
 801a2b8:	00 21 00 01 	srui r1,r1,1                                   
                                                                      
                     fat_buf_mark_modified(fs_info);                  
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
 801a2bc:	35 ce 00 01 	addi r14,r14,1                                 
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
 801a2c0:	00 21 00 01 	srui r1,r1,1                                   
                                                                      
                     fat_buf_mark_modified(fs_info);                  
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
 801a2c4:	b4 4e 10 00 	add r2,r2,r14                                  
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
 801a2c8:	00 21 00 01 	srui r1,r1,1                                   
                                                                      
                     fat_buf_mark_modified(fs_info);                  
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
 801a2cc:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
 801a2d0:	00 21 00 01 	srui r1,r1,1                                   
 801a2d4:	2b 82 00 28 	lw r2,(sp+40)                                  
 801a2d8:	00 21 00 01 	srui r1,r1,1                                   
 801a2dc:	b4 4e 70 00 	add r14,r2,r14                                 
 801a2e0:	00 21 00 01 	srui r1,r1,1                                   
 801a2e4:	41 c2 00 00 	lbu r2,(r14+0)                                 
 801a2e8:	00 21 00 01 	srui r1,r1,1                                   
 801a2ec:	b8 41 08 00 	or r1,r2,r1                                    
 801a2f0:	31 c1 00 00 	sb (r14+0),r1                                  
 801a2f4:	e3 ff ff a5 	bi 801a188 <fat_set_fat_cluster+0xd0>          
                    (uint16_t  )(CT_LE_W(in_val));                    
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));           
 801a2f8:	78 01 08 03 	mvhi r1,0x803                                  
 801a2fc:	38 21 03 04 	ori r1,r1,0x304                                
                                                                      
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);    
 801a300:	2b 83 00 28 	lw r3,(sp+40)                                  
                    (uint16_t  )(CT_LE_W(in_val));                    
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));           
 801a304:	28 2c 00 00 	lw r12,(r1+0)                                  
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a308:	34 02 00 18 	mvi r2,24                                      
 801a30c:	22 21 00 ff 	andi r1,r17,0xff                               
                                                                      
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);    
 801a310:	b4 6e 70 00 	add r14,r3,r14                                 
                    (uint16_t  )(CT_LE_W(in_val));                    
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));           
 801a314:	a2 2c 60 00 	and r12,r17,r12                                
 801a318:	fb ff 9b 93 	calli 8001164 <__ashlsi3>                      
 801a31c:	b8 20 78 00 	mv r15,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 801a320:	34 02 00 18 	mvi r2,24                                      
 801a324:	b9 80 08 00 	mv r1,r12                                      
 801a328:	f8 00 53 34 	calli 802eff8 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 801a32c:	01 83 00 01 	srui r3,r12,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a330:	b9 e1 78 00 	or r15,r15,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 801a334:	00 63 00 01 	srui r3,r3,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a338:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 801a33c:	00 63 00 01 	srui r3,r3,1                                   
 801a340:	00 63 00 01 	srui r3,r3,1                                   
 801a344:	00 63 00 01 	srui r3,r3,1                                   
 801a348:	00 63 00 01 	srui r3,r3,1                                   
 801a34c:	00 63 00 01 	srui r3,r3,1                                   
 801a350:	00 63 00 01 	srui r3,r3,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a354:	20 61 00 ff 	andi r1,r3,0xff                                
 801a358:	fb ff 9b 83 	calli 8001164 <__ashlsi3>                      
 801a35c:	b9 e1 78 00 	or r15,r15,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 801a360:	34 02 00 10 	mvi r2,16                                      
 801a364:	b9 80 08 00 	mv r1,r12                                      
 801a368:	f8 00 53 24 	calli 802eff8 <__lshrsi3>                      
 801a36c:	20 22 00 ff 	andi r2,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801a370:	b4 42 10 00 	add r2,r2,r2                                   
 801a374:	b4 42 10 00 	add r2,r2,r2                                   
 801a378:	b4 42 10 00 	add r2,r2,r2                                   
 801a37c:	b4 42 10 00 	add r2,r2,r2                                   
 801a380:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);    
 801a384:	29 c1 00 00 	lw r1,(r14+0)                                  
 801a388:	b4 42 10 00 	add r2,r2,r2                                   
 801a38c:	b4 42 10 00 	add r2,r2,r2                                   
 801a390:	b4 42 10 00 	add r2,r2,r2                                   
 801a394:	20 21 00 f0 	andi r1,r1,0xf0                                
 801a398:	b9 e2 10 00 	or r2,r15,r2                                   
                                                                      
            *((uint32_t *)(sec_buf + ofs)) |= fat32_clv;              
 801a39c:	b8 41 10 00 	or r2,r2,r1                                    
 801a3a0:	59 c2 00 00 	sw (r14+0),r2                                  
 801a3a4:	34 01 00 01 	mvi r1,1                                       
 801a3a8:	31 61 00 88 	sb (r11+136),r1                                
                                                                      
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
 801a3ac:	e3 ff ff 77 	bi 801a188 <fat_set_fat_cluster+0xd0>          
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;    
                *(sec_buf + ofs) &= 0x00;                             
 801a3b0:	2b 81 00 28 	lw r1,(sp+40)                                  
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;    
 801a3b4:	22 31 0f ff 	andi r17,r17,0xfff                             
                *(sec_buf + ofs) &= 0x00;                             
 801a3b8:	b4 2e 08 00 	add r1,r1,r14                                  
 801a3bc:	30 20 00 00 	sb (r1+0),r0                                   
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);    
 801a3c0:	2b 81 00 28 	lw r1,(sp+40)                                  
 801a3c4:	b4 2e 08 00 	add r1,r1,r14                                  
 801a3c8:	40 22 00 00 	lbu r2,(r1+0)                                  
 801a3cc:	b8 51 10 00 	or r2,r2,r17                                   
 801a3d0:	30 22 00 00 	sb (r1+0),r2                                   
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
 801a3d4:	2d 61 00 00 	lhu r1,(r11+0)                                 
 801a3d8:	31 6f 00 88 	sb (r11+136),r15                               
 801a3dc:	34 21 ff ff 	addi r1,r1,-1                                  
 801a3e0:	44 2e 00 2c 	be r1,r14,801a490 <fat_set_fat_cluster+0x3d8>  <== NEVER TAKEN
                                                                      
                    fat_buf_mark_modified(fs_info);                   
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0xF0;                     
 801a3e4:	2b 81 00 28 	lw r1,(sp+40)                                  
                                                                      
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
 801a3e8:	02 31 00 01 	srui r17,r17,1                                 
                                                                      
                    fat_buf_mark_modified(fs_info);                   
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0xF0;                     
 801a3ec:	35 ce 00 01 	addi r14,r14,1                                 
                                                                      
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
 801a3f0:	02 31 00 01 	srui r17,r17,1                                 
                                                                      
                    fat_buf_mark_modified(fs_info);                   
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0xF0;                     
 801a3f4:	b4 2e 08 00 	add r1,r1,r14                                  
 801a3f8:	40 22 00 00 	lbu r2,(r1+0)                                  
                                                                      
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
 801a3fc:	02 31 00 01 	srui r17,r17,1                                 
 801a400:	02 31 00 01 	srui r17,r17,1                                 
                                                                      
                    fat_buf_mark_modified(fs_info);                   
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0xF0;                     
 801a404:	20 42 00 f0 	andi r2,r2,0xf0                                
 801a408:	30 22 00 00 	sb (r1+0),r2                                   
                                                                      
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
 801a40c:	02 31 00 01 	srui r17,r17,1                                 
 801a410:	2b 81 00 28 	lw r1,(sp+40)                                  
 801a414:	02 31 00 01 	srui r17,r17,1                                 
 801a418:	b4 2e 70 00 	add r14,r1,r14                                 
 801a41c:	02 31 00 01 	srui r17,r17,1                                 
 801a420:	41 c1 00 00 	lbu r1,(r14+0)                                 
 801a424:	02 31 00 01 	srui r17,r17,1                                 
 801a428:	b8 31 88 00 	or r17,r1,r17                                  
 801a42c:	31 d1 00 00 	sb (r14+0),r17                                 
 801a430:	e3 ff ff 56 	bi 801a188 <fat_set_fat_cluster+0xd0>          
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
                {                                                     
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
 801a434:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801a438:	36 02 00 01 	addi r2,r16,1                                  <== NOT EXECUTED
 801a43c:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 801a440:	37 84 00 28 	addi r4,sp,40                                  <== NOT EXECUTED
 801a444:	fb ff da 6b 	calli 8010df0 <fat_buf_access>                 <== NOT EXECUTED
 801a448:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
 801a44c:	5c 20 ff 4f 	bne r1,r0,801a188 <fat_set_fat_cluster+0xd0>   <== NOT EXECUTED
                        return rc;                                    
                                                                      
                     *sec_buf &= 0x00;                                
                                                                      
                     *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);  
 801a450:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                     *sec_buf &= 0x00;                                
 801a454:	2b 81 00 28 	lw r1,(sp+40)                                  <== NOT EXECUTED
                                                                      
                     *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);  
 801a458:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a45c:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                     *sec_buf &= 0x00;                                
 801a460:	30 20 00 00 	sb (r1+0),r0                                   <== NOT EXECUTED
                                                                      
                     *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);  
 801a464:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a468:	2b 81 00 28 	lw r1,(sp+40)                                  <== NOT EXECUTED
 801a46c:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a470:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a474:	40 22 00 00 	lbu r2,(r1+0)                                  <== NOT EXECUTED
 801a478:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a47c:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a480:	ba 22 88 00 	or r17,r17,r2                                  <== NOT EXECUTED
 801a484:	30 31 00 00 	sb (r1+0),r17                                  <== NOT EXECUTED
 801a488:	31 6f 00 88 	sb (r11+136),r15                               <== NOT EXECUTED
 801a48c:	e3 ff ff 3f 	bi 801a188 <fat_set_fat_cluster+0xd0>          <== NOT EXECUTED
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
                {                                                     
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
 801a490:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801a494:	36 02 00 01 	addi r2,r16,1                                  <== NOT EXECUTED
 801a498:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 801a49c:	37 84 00 28 	addi r4,sp,40                                  <== NOT EXECUTED
 801a4a0:	fb ff da 54 	calli 8010df0 <fat_buf_access>                 <== NOT EXECUTED
 801a4a4:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
 801a4a8:	5c 20 ff 38 	bne r1,r0,801a188 <fat_set_fat_cluster+0xd0>   <== NOT EXECUTED
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
 801a4ac:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
 801a4b0:	2b 81 00 28 	lw r1,(sp+40)                                  <== NOT EXECUTED
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
 801a4b4:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a4b8:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
 801a4bc:	40 22 00 00 	lbu r2,(r1+0)                                  <== NOT EXECUTED
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
 801a4c0:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
 801a4c4:	20 42 00 f0 	andi r2,r2,0xf0                                <== NOT EXECUTED
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
 801a4c8:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
 801a4cc:	30 22 00 00 	sb (r1+0),r2                                   <== NOT EXECUTED
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
 801a4d0:	2b 81 00 28 	lw r1,(sp+40)                                  <== NOT EXECUTED
 801a4d4:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a4d8:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a4dc:	40 22 00 00 	lbu r2,(r1+0)                                  <== NOT EXECUTED
 801a4e0:	02 31 00 01 	srui r17,r17,1                                 <== NOT EXECUTED
 801a4e4:	ba 22 88 00 	or r17,r17,r2                                  <== NOT EXECUTED
 801a4e8:	30 31 00 00 	sb (r1+0),r17                                  <== NOT EXECUTED
 801a4ec:	31 6f 00 88 	sb (r11+136),r15                               <== NOT EXECUTED
 801a4f0:	e3 ff ff 26 	bi 801a188 <fat_set_fat_cluster+0xd0>          <== NOT EXECUTED
                                                                      

080120b0 <fat_shutdown_drive>: * RC_OK on success, or -1 if error occured * and errno set appropriately */ int fat_shutdown_drive(fat_fs_info_t *fs_info) {
 80120b0:	37 9c ff e8 	addi sp,sp,-24                                 
 80120b4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80120b8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80120bc:	5b 8d 00 10 	sw (sp+16),r13                                 
 80120c0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80120c4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80120c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80120cc:	b8 20 58 00 	mv r11,r1                                      
    int            rc = RC_OK;                                        
    int            i = 0;                                             
                                                                      
    rc = fat_sync(fs_info);                                           
 80120d0:	fb ff ff 7a 	calli 8011eb8 <fat_sync>                       
 80120d4:	b8 20 70 00 	mv r14,r1                                      
    if ( rc != RC_OK )                                                
 80120d8:	5c 20 00 2e 	bne r1,r0,8012190 <fat_shutdown_drive+0xe0>    <== NEVER TAKEN
        rc = -1;                                                      
 80120dc:	34 0d 00 00 	mvi r13,0                                      
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
 80120e0:	34 0f 00 18 	mvi r15,24                                     
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->vhash + i;          
 80120e4:	29 6c 00 6c 	lw r12,(r11+108)                               
 80120e8:	b5 8d 60 00 	add r12,r12,r13                                
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
 80120ec:	e0 00 00 02 	bi 80120f4 <fat_shutdown_drive+0x44>           
            free(node);                                               
 80120f0:	fb ff c3 d6 	calli 8003048 <free>                           
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 80120f4:	b9 80 08 00 	mv r1,r12                                      
 80120f8:	fb ff d1 98 	calli 8006758 <_Chain_Get>                     
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->vhash + i;          
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
 80120fc:	5c 20 ff fd 	bne r1,r0,80120f0 <fat_shutdown_drive+0x40>    
 8012100:	35 ad 00 0c 	addi r13,r13,12                                
                                                                      
    rc = fat_sync(fs_info);                                           
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
 8012104:	5d af ff f8 	bne r13,r15,80120e4 <fat_shutdown_drive+0x34>  
 8012108:	34 0d 00 00 	mvi r13,0                                      
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
            free(node);                                               
    }                                                                 
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
 801210c:	34 0f 00 18 	mvi r15,24                                     
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->rhash + i;          
 8012110:	29 6c 00 70 	lw r12,(r11+112)                               
 8012114:	b5 8d 60 00 	add r12,r12,r13                                
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
 8012118:	e0 00 00 02 	bi 8012120 <fat_shutdown_drive+0x70>           
            free(node);                                               
 801211c:	fb ff c3 cb 	calli 8003048 <free>                           <== NOT EXECUTED
 8012120:	b9 80 08 00 	mv r1,r12                                      
 8012124:	fb ff d1 8d 	calli 8006758 <_Chain_Get>                     
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->rhash + i;          
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
 8012128:	5c 20 ff fd 	bne r1,r0,801211c <fat_shutdown_drive+0x6c>    <== NEVER TAKEN
 801212c:	35 ad 00 0c 	addi r13,r13,12                                
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
            free(node);                                               
    }                                                                 
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
 8012130:	5d af ff f8 	bne r13,r15,8012110 <fat_shutdown_drive+0x60>  
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
            free(node);                                               
    }                                                                 
                                                                      
    free(fs_info->vhash);                                             
 8012134:	29 61 00 6c 	lw r1,(r11+108)                                
 8012138:	fb ff c3 c4 	calli 8003048 <free>                           
    free(fs_info->rhash);                                             
 801213c:	29 61 00 70 	lw r1,(r11+112)                                
 8012140:	fb ff c3 c2 	calli 8003048 <free>                           
                                                                      
    free(fs_info->uino);                                              
 8012144:	29 61 00 74 	lw r1,(r11+116)                                
 8012148:	fb ff c3 c0 	calli 8003048 <free>                           
    free(fs_info->sec_buf);                                           
 801214c:	29 61 00 90 	lw r1,(r11+144)                                
 8012150:	fb ff c3 be 	calli 8003048 <free>                           
    close(fs_info->vol.fd);                                           
 8012154:	29 61 00 60 	lw r1,(r11+96)                                 
 8012158:	fb ff c3 8d 	calli 8002f8c <close>                          
                                                                      
    if (rc)                                                           
 801215c:	45 c0 00 04 	be r14,r0,801216c <fat_shutdown_drive+0xbc>    <== ALWAYS TAKEN
        errno = EIO;                                                  
 8012160:	f8 00 29 a5 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8012164:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8012168:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    return rc;                                                        
}                                                                     
 801216c:	b9 c0 08 00 	mv r1,r14                                      
 8012170:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012174:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8012178:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801217c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8012180:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8012184:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8012188:	37 9c 00 18 	addi sp,sp,24                                  
 801218c:	c3 a0 00 00 	ret                                            
    int            rc = RC_OK;                                        
    int            i = 0;                                             
                                                                      
    rc = fat_sync(fs_info);                                           
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
 8012190:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
 8012194:	e3 ff ff d2 	bi 80120dc <fat_shutdown_drive+0x2c>           <== NOT EXECUTED
                                                                      

08011eb8 <fat_sync>: return RC_OK; } int fat_sync(fat_fs_info_t *fs_info) {
 8011eb8:	37 9c ff e8 	addi sp,sp,-24                                 
 8011ebc:	5b 8b 00 14 	sw (sp+20),r11                                 
 8011ec0:	5b 8c 00 10 	sw (sp+16),r12                                 
 8011ec4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8011ec8:	5b 8e 00 08 	sw (sp+8),r14                                  
 8011ecc:	5b 9d 00 04 	sw (sp+4),ra                                   
static int                                                            
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)                
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
 8011ed0:	40 22 00 0e 	lbu r2,(r1+14)                                 
    return RC_OK;                                                     
}                                                                     
                                                                      
int                                                                   
fat_sync(fat_fs_info_t *fs_info)                                      
{                                                                     
 8011ed4:	b8 20 58 00 	mv r11,r1                                      
static int                                                            
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)                
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
 8011ed8:	34 01 00 04 	mvi r1,4                                       
 8011edc:	44 41 00 0f 	be r2,r1,8011f18 <fat_sync+0x60>               
                                    FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
                                    sizeof(le_free_count),            
                                    &le_free_count);                  
        }                                                             
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
 8011ee0:	34 0c 00 00 	mvi r12,0                                      
                                                                      
    rc = fat_fat32_update_fsinfo_sector(fs_info);                     
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
                                                                      
    fat_buf_release(fs_info);                                         
 8011ee4:	b9 60 08 00 	mv r1,r11                                      
 8011ee8:	fb ff fb 47 	calli 8010c04 <fat_buf_release>                
                                                                      
    if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)     
 8011eec:	29 61 00 64 	lw r1,(r11+100)                                
 8011ef0:	fb ff f3 16 	calli 800eb48 <rtems_bdbuf_syncdev>            
 8011ef4:	5c 20 00 6d 	bne r1,r0,80120a8 <fat_sync+0x1f0>             <== NEVER TAKEN
        rc = -1;                                                      
                                                                      
    return rc;                                                        
}                                                                     
 8011ef8:	b9 80 08 00 	mv r1,r12                                      
 8011efc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011f00:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8011f04:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8011f08:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8011f0c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8011f10:	37 9c 00 18 	addi sp,sp,24                                  
 8011f14:	c3 a0 00 00 	ret                                            
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
    {                                                                 
        uint32_t free_count = fs_info->vol.free_cls;                  
 8011f18:	29 6d 00 44 	lw r13,(r11+68)                                
        uint32_t next_free = fs_info->vol.next_cl;                    
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
 8011f1c:	29 61 00 48 	lw r1,(r11+72)                                 
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
    {                                                                 
        uint32_t free_count = fs_info->vol.free_cls;                  
        uint32_t next_free = fs_info->vol.next_cl;                    
 8011f20:	29 6c 00 4c 	lw r12,(r11+76)                                
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
 8011f24:	34 0e 00 00 	mvi r14,0                                      
 8011f28:	45 a1 00 2d 	be r13,r1,8011fdc <fat_sync+0x124>             <== ALWAYS TAKEN
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8011f2c:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011f30:	21 a1 00 ff 	andi r1,r13,0xff                               <== NOT EXECUTED
 8011f34:	fb ff bc 8c 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 8011f38:	b8 20 70 00 	mv r14,r1                                      <== NOT EXECUTED
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8011f3c:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011f40:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011f44:	f8 00 74 2d 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8011f48:	01 a4 00 01 	srui r4,r13,1                                  <== NOT EXECUTED
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8011f4c:	b9 c1 70 00 	or r14,r14,r1                                  <== NOT EXECUTED
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8011f50:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8011f54:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8011f58:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011f5c:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011f60:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011f64:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011f68:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011f6c:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8011f70:	20 81 00 ff 	andi r1,r4,0xff                                <== NOT EXECUTED
 8011f74:	fb ff bc 7c 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 8011f78:	b9 c1 70 00 	or r14,r14,r1                                  <== NOT EXECUTED
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 8011f7c:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8011f80:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011f84:	f8 00 74 1d 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
 8011f88:	20 23 00 ff 	andi r3,r1,0xff                                <== NOT EXECUTED
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8011f8c:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011f90:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011f94:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011f98:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011f9c:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011fa0:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
        {                                                             
            uint32_t le_free_count = CT_LE_L(free_count);             
                                                                      
            fs_info->vol.free_cls_in_fs_info = free_count;            
                                                                      
            ret1 = fat_sector_write(fs_info,                          
 8011fa4:	2d 62 00 40 	lhu r2,(r11+64)                                <== NOT EXECUTED
 8011fa8:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011fac:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 8011fb0:	b9 c3 30 00 	or r6,r14,r3                                   <== NOT EXECUTED
 8011fb4:	34 04 00 04 	mvi r4,4                                       <== NOT EXECUTED
 8011fb8:	34 03 01 e8 	mvi r3,488                                     <== NOT EXECUTED
 8011fbc:	37 85 00 18 	addi r5,sp,24                                  <== NOT EXECUTED
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
        {                                                             
            uint32_t le_free_count = CT_LE_L(free_count);             
                                                                      
            fs_info->vol.free_cls_in_fs_info = free_count;            
 8011fc0:	59 6d 00 48 	sw (r11+72),r13                                <== NOT EXECUTED
                                                                      
            ret1 = fat_sector_write(fs_info,                          
 8011fc4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
        uint32_t free_count = fs_info->vol.free_cls;                  
        uint32_t next_free = fs_info->vol.next_cl;                    
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
        {                                                             
            uint32_t le_free_count = CT_LE_L(free_count);             
 8011fc8:	5b 86 00 18 	sw (sp+24),r6                                  <== NOT EXECUTED
                                                                      
            fs_info->vol.free_cls_in_fs_info = free_count;            
                                                                      
            ret1 = fat_sector_write(fs_info,                          
 8011fcc:	fb ff fb ff 	calli 8010fc8 <fat_sector_write>               <== NOT EXECUTED
 8011fd0:	34 02 00 1f 	mvi r2,31                                      <== NOT EXECUTED
 8011fd4:	f8 00 74 09 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
 8011fd8:	20 2e 00 ff 	andi r14,r1,0xff                               <== NOT EXECUTED
                                    FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
                                    sizeof(le_free_count),            
                                    &le_free_count);                  
        }                                                             
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
 8011fdc:	29 62 00 50 	lw r2,(r11+80)                                 
 8011fe0:	34 01 00 00 	mvi r1,0                                       
 8011fe4:	45 82 00 2d 	be r12,r2,8012098 <fat_sync+0x1e0>             <== NEVER TAKEN
 8011fe8:	34 02 00 18 	mvi r2,24                                      
 8011fec:	21 81 00 ff 	andi r1,r12,0xff                               
 8011ff0:	fb ff bc 5d 	calli 8001164 <__ashlsi3>                      
 8011ff4:	b8 20 68 00 	mv r13,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8011ff8:	34 02 00 18 	mvi r2,24                                      
 8011ffc:	b9 80 08 00 	mv r1,r12                                      
 8012000:	f8 00 73 fe 	calli 802eff8 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8012004:	01 84 00 01 	srui r4,r12,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8012008:	b9 a1 68 00 	or r13,r13,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 801200c:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8012010:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8012014:	00 84 00 01 	srui r4,r4,1                                   
 8012018:	00 84 00 01 	srui r4,r4,1                                   
 801201c:	00 84 00 01 	srui r4,r4,1                                   
 8012020:	00 84 00 01 	srui r4,r4,1                                   
 8012024:	00 84 00 01 	srui r4,r4,1                                   
 8012028:	00 84 00 01 	srui r4,r4,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 801202c:	20 81 00 ff 	andi r1,r4,0xff                                
 8012030:	fb ff bc 4d 	calli 8001164 <__ashlsi3>                      
 8012034:	b9 a1 68 00 	or r13,r13,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 8012038:	34 02 00 10 	mvi r2,16                                      
 801203c:	b9 80 08 00 	mv r1,r12                                      
 8012040:	f8 00 73 ee 	calli 802eff8 <__lshrsi3>                      
 8012044:	20 23 00 ff 	andi r3,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8012048:	b4 63 18 00 	add r3,r3,r3                                   
 801204c:	b4 63 18 00 	add r3,r3,r3                                   
 8012050:	b4 63 18 00 	add r3,r3,r3                                   
 8012054:	b4 63 18 00 	add r3,r3,r3                                   
 8012058:	b4 63 18 00 	add r3,r3,r3                                   
 801205c:	b4 63 18 00 	add r3,r3,r3                                   
        {                                                             
            uint32_t le_next_free = CT_LE_L(next_free);               
                                                                      
            fs_info->vol.next_cl_in_fs_info = next_free;              
                                                                      
            ret2 = fat_sector_write(fs_info,                          
 8012060:	2d 62 00 40 	lhu r2,(r11+64)                                
 8012064:	b4 63 18 00 	add r3,r3,r3                                   
 8012068:	b4 63 18 00 	add r3,r3,r3                                   
 801206c:	b9 a3 30 00 	or r6,r13,r3                                   
 8012070:	34 04 00 04 	mvi r4,4                                       
 8012074:	34 03 01 ec 	mvi r3,492                                     
 8012078:	37 85 00 18 	addi r5,sp,24                                  
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
        {                                                             
            uint32_t le_next_free = CT_LE_L(next_free);               
                                                                      
            fs_info->vol.next_cl_in_fs_info = next_free;              
 801207c:	59 6c 00 50 	sw (r11+80),r12                                
                                                                      
            ret2 = fat_sector_write(fs_info,                          
 8012080:	b9 60 08 00 	mv r1,r11                                      
                                    &le_free_count);                  
        }                                                             
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
        {                                                             
            uint32_t le_next_free = CT_LE_L(next_free);               
 8012084:	5b 86 00 18 	sw (sp+24),r6                                  
                                                                      
            fs_info->vol.next_cl_in_fs_info = next_free;              
                                                                      
            ret2 = fat_sector_write(fs_info,                          
 8012088:	fb ff fb d0 	calli 8010fc8 <fat_sector_write>               
 801208c:	34 02 00 1f 	mvi r2,31                                      
 8012090:	f8 00 73 da 	calli 802eff8 <__lshrsi3>                      
 8012094:	20 21 00 ff 	andi r1,r1,0xff                                
                                    sizeof(le_next_free),             
                                    &le_next_free);                   
        }                                                             
    }                                                                 
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) )                                   
 8012098:	b8 2e 08 00 	or r1,r1,r14                                   
 801209c:	44 20 ff 91 	be r1,r0,8011ee0 <fat_sync+0x28>               
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    rc = fat_fat32_update_fsinfo_sector(fs_info);                     
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
 80120a0:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 80120a4:	e3 ff ff 90 	bi 8011ee4 <fat_sync+0x2c>                     <== NOT EXECUTED
                                                                      
    fat_buf_release(fs_info);                                         
                                                                      
    if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)     
        rc = -1;                                                      
 80120a8:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 80120ac:	e3 ff ff 93 	bi 8011ef8 <fat_sync+0x40>                     <== NOT EXECUTED
                                                                      

08037d48 <fchdir>: /** * compatible with SVr4, 4.4BSD and X/OPEN - Change Directory */ int fchdir( int fd ) {
 8037d48:	37 9c ff 90 	addi sp,sp,-112                                
 8037d4c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8037d50:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8037d54:	5b 8d 00 08 	sw (sp+8),r13                                  
 8037d58:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  st.st_mode = 0;                                                     
  st.st_uid = 0;                                                      
  st.st_gid = 0;                                                      
                                                                      
  rtems_libio_check_fd( fd );                                         
 8037d5c:	78 02 08 06 	mvhi r2,0x806                                  
 8037d60:	38 42 b0 10 	ori r2,r2,0xb010                               
 8037d64:	28 42 00 00 	lw r2,(r2+0)                                   
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
  struct stat st;                                                     
  rtems_filesystem_location_info_t loc;                               
                                                                      
  st.st_mode = 0;                                                     
 8037d68:	5b 80 00 20 	sw (sp+32),r0                                  
  st.st_uid = 0;                                                      
 8037d6c:	0f 80 00 26 	sh (sp+38),r0                                  
  st.st_gid = 0;                                                      
 8037d70:	0f 80 00 28 	sh (sp+40),r0                                  
                                                                      
  rtems_libio_check_fd( fd );                                         
 8037d74:	54 41 00 06 	bgu r2,r1,8037d8c <fchdir+0x44>                
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
 8037d78:	f8 00 16 a9 	calli 803d81c <__errno>                        
 8037d7c:	34 02 00 09 	mvi r2,9                                       
 8037d80:	58 22 00 00 	sw (r1+0),r2                                   
 8037d84:	34 0c ff ff 	mvi r12,-1                                     
 8037d88:	e0 00 00 1f 	bi 8037e04 <fchdir+0xbc>                       
  st.st_mode = 0;                                                     
  st.st_uid = 0;                                                      
  st.st_gid = 0;                                                      
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8037d8c:	b4 21 58 00 	add r11,r1,r1                                  
 8037d90:	b5 61 58 00 	add r11,r11,r1                                 
 8037d94:	78 02 08 06 	mvhi r2,0x806                                  
 8037d98:	b5 6b 58 00 	add r11,r11,r11                                
 8037d9c:	b5 6b 58 00 	add r11,r11,r11                                
 8037da0:	38 42 ef 60 	ori r2,r2,0xef60                               
 8037da4:	c9 61 08 00 	sub r1,r11,r1                                  
 8037da8:	28 4b 00 00 	lw r11,(r2+0)                                  
 8037dac:	b4 21 08 00 	add r1,r1,r1                                   
 8037db0:	b4 21 08 00 	add r1,r1,r1                                   
 8037db4:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8037db8:	29 61 00 08 	lw r1,(r11+8)                                  
 8037dbc:	20 21 01 00 	andi r1,r1,0x100                               
 8037dc0:	44 20 ff ee 	be r1,r0,8037d78 <fchdir+0x30>                 
  if ( rv == 0 ) {                                                    
    rv = rtems_filesystem_chdir( &loc );                              
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8037dc4:	29 61 00 20 	lw r1,(r11+32)                                 
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
                                                                      
  rtems_filesystem_instance_lock( &iop->pathinfo );                   
  rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, &st );     
 8037dc8:	35 6d 00 0c 	addi r13,r11,12                                
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
 8037dcc:	28 22 00 0c 	lw r2,(r1+12)                                  
 8037dd0:	28 42 00 00 	lw r2,(r2+0)                                   
 8037dd4:	d8 40 00 00 	call r2                                        
 8037dd8:	29 63 00 1c 	lw r3,(r11+28)                                 
 8037ddc:	b9 a0 08 00 	mv r1,r13                                      
 8037de0:	37 82 00 14 	addi r2,sp,20                                  
 8037de4:	28 63 00 18 	lw r3,(r3+24)                                  
 8037de8:	d8 60 00 00 	call r3                                        
 8037dec:	b8 20 60 00 	mv r12,r1                                      
  if ( rv == 0 ) {                                                    
 8037df0:	44 20 00 0c 	be r1,r0,8037e20 <fchdir+0xd8>                 <== ALWAYS TAKEN
  if ( rv == 0 ) {                                                    
    rv = rtems_filesystem_chdir( &loc );                              
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8037df4:	29 61 00 20 	lw r1,(r11+32)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
 8037df8:	28 22 00 0c 	lw r2,(r1+12)                                  
 8037dfc:	28 42 00 04 	lw r2,(r2+4)                                   
 8037e00:	d8 40 00 00 	call r2                                        
 8037e04:	b9 80 08 00 	mv r1,r12                                      
 8037e08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8037e0c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8037e10:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8037e14:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8037e18:	37 9c 00 70 	addi sp,sp,112                                 
 8037e1c:	c3 a0 00 00 	ret                                            
  rtems_libio_check_is_open( iop );                                   
                                                                      
  rtems_filesystem_instance_lock( &iop->pathinfo );                   
  rv = (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, &st );     
  if ( rv == 0 ) {                                                    
    bool access_ok = rtems_filesystem_check_access(                   
 8037e20:	2b 82 00 20 	lw r2,(sp+32)                                  
 8037e24:	2f 83 00 26 	lhu r3,(sp+38)                                 
 8037e28:	2f 84 00 28 	lhu r4,(sp+40)                                 
 8037e2c:	34 01 00 01 	mvi r1,1                                       
 8037e30:	fb ff 4f 43 	calli 800bb3c <rtems_filesystem_check_access>  
      st.st_mode,                                                     
      st.st_uid,                                                      
      st.st_gid                                                       
    );                                                                
                                                                      
    if ( access_ok ) {                                                
 8037e34:	44 2c 00 14 	be r1,r12,8037e84 <fchdir+0x13c>               
      rtems_filesystem_location_clone( &loc, &iop->pathinfo );        
 8037e38:	37 8c 00 5c 	addi r12,sp,92                                 
 8037e3c:	b9 a0 10 00 	mv r2,r13                                      
 8037e40:	b9 80 08 00 	mv r1,r12                                      
 8037e44:	fb ff 4d 3b 	calli 800b330 <rtems_filesystem_location_clone>
  if ( rv == 0 ) {                                                    
    rv = rtems_filesystem_chdir( &loc );                              
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8037e48:	29 62 00 20 	lw r2,(r11+32)                                 
 8037e4c:	28 43 00 0c 	lw r3,(r2+12)                                  
 8037e50:	b8 40 08 00 	mv r1,r2                                       
 8037e54:	28 62 00 04 	lw r2,(r3+4)                                   
 8037e58:	d8 40 00 00 	call r2                                        
    }                                                                 
  }                                                                   
  rtems_filesystem_instance_unlock( &iop->pathinfo );                 
                                                                      
  if ( rv == 0 ) {                                                    
    rv = rtems_filesystem_chdir( &loc );                              
 8037e5c:	b9 80 08 00 	mv r1,r12                                      
 8037e60:	fb ff b4 e5 	calli 80251f4 <rtems_filesystem_chdir>         
 8037e64:	b8 20 60 00 	mv r12,r1                                      
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8037e68:	b9 80 08 00 	mv r1,r12                                      
 8037e6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8037e70:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8037e74:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8037e78:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8037e7c:	37 9c 00 70 	addi sp,sp,112                                 
 8037e80:	c3 a0 00 00 	ret                                            
    );                                                                
                                                                      
    if ( access_ok ) {                                                
      rtems_filesystem_location_clone( &loc, &iop->pathinfo );        
    } else {                                                          
      errno = EACCES;                                                 
 8037e84:	f8 00 16 66 	calli 803d81c <__errno>                        
 8037e88:	34 02 00 0d 	mvi r2,13                                      
 8037e8c:	58 22 00 00 	sw (r1+0),r2                                   
      rv = -1;                                                        
 8037e90:	34 0c ff ff 	mvi r12,-1                                     
 8037e94:	e3 ff ff d8 	bi 8037df4 <fchdir+0xac>                       
                                                                      

08025854 <fchmod>: /** * POSIX 1003.1b 5.6.4 - Change File Modes */ int fchmod( int fd, mode_t mode ) {
 8025854:	37 9c ff f0 	addi sp,sp,-16                                 
 8025858:	5b 8b 00 0c 	sw (sp+12),r11                                 
 802585c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8025860:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv;                                                             
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
 8025864:	78 03 08 06 	mvhi r3,0x806                                  
 8025868:	38 63 b0 10 	ori r3,r3,0xb010                               
 802586c:	28 63 00 00 	lw r3,(r3+0)                                   
 8025870:	54 61 00 06 	bgu r3,r1,8025888 <fchmod+0x34>                <== NEVER TAKEN
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
 8025874:	f8 00 5f ea 	calli 803d81c <__errno>                        
 8025878:	34 02 00 09 	mvi r2,9                                       
 802587c:	58 22 00 00 	sw (r1+0),r2                                   
 8025880:	34 0c ff ff 	mvi r12,-1                                     
 8025884:	e0 00 00 21 	bi 8025908 <fchmod+0xb4>                       
{                                                                     
  int rv;                                                             
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8025888:	b4 21 58 00 	add r11,r1,r1                                  
 802588c:	b5 61 58 00 	add r11,r11,r1                                 
 8025890:	78 03 08 06 	mvhi r3,0x806                                  
 8025894:	b5 6b 58 00 	add r11,r11,r11                                
 8025898:	b5 6b 58 00 	add r11,r11,r11                                
 802589c:	38 63 ef 60 	ori r3,r3,0xef60                               
 80258a0:	c9 61 08 00 	sub r1,r11,r1                                  
 80258a4:	28 6b 00 00 	lw r11,(r3+0)                                  
 80258a8:	b4 21 08 00 	add r1,r1,r1                                   
 80258ac:	b4 21 08 00 	add r1,r1,r1                                   
 80258b0:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open(iop);                                     
 80258b4:	29 61 00 08 	lw r1,(r11+8)                                  
 80258b8:	20 21 01 00 	andi r1,r1,0x100                               
 80258bc:	44 20 ff ee 	be r1,r0,8025874 <fchmod+0x20>                 <== NEVER TAKEN
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
 80258c0:	29 61 00 20 	lw r1,(r11+32)                                 
 80258c4:	40 23 00 29 	lbu r3,(r1+41)                                 
 80258c8:	44 60 00 16 	be r3,r0,8025920 <fchmod+0xcc>                 <== NEVER TAKEN
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
 80258cc:	28 23 00 0c 	lw r3,(r1+12)                                  
 80258d0:	28 63 00 00 	lw r3,(r3+0)                                   
 80258d4:	5b 82 00 10 	sw (sp+16),r2                                  
 80258d8:	d8 60 00 00 	call r3                                        
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
 80258dc:	29 63 00 20 	lw r3,(r11+32)                                 
 80258e0:	2b 82 00 10 	lw r2,(sp+16)                                  
 80258e4:	35 61 00 0c 	addi r1,r11,12                                 
 80258e8:	28 63 00 0c 	lw r3,(r3+12)                                  
 80258ec:	28 63 00 20 	lw r3,(r3+32)                                  
 80258f0:	d8 60 00 00 	call r3                                        
 80258f4:	b8 20 60 00 	mv r12,r1                                      
    errno = EROFS;                                                    
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 80258f8:	29 61 00 20 	lw r1,(r11+32)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
 80258fc:	28 22 00 0c 	lw r2,(r1+12)                                  
 8025900:	28 42 00 04 	lw r2,(r2+4)                                   
 8025904:	d8 40 00 00 	call r2                                        
 8025908:	b9 80 08 00 	mv r1,r12                                      
 802590c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8025910:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8025914:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8025918:	37 9c 00 10 	addi sp,sp,16                                  
 802591c:	c3 a0 00 00 	ret                                            
  if (iop->pathinfo.mt_entry->writeable) {                            
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
 8025920:	f8 00 5f bf 	calli 803d81c <__errno>                        <== NOT EXECUTED
 8025924:	34 02 00 1e 	mvi r2,30                                      <== NOT EXECUTED
    rv = -1;                                                          
 8025928:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
  if (iop->pathinfo.mt_entry->writeable) {                            
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
 802592c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8025930:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8025934:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8025938:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 802593c:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8025940:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8025944:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08025948 <fchown>: /** * POSIX 1003.1b 5.6.5 - Change Owner and Group of a File */ int fchown( int fd, uid_t owner, gid_t group ) {
 8025948:	37 9c ff f0 	addi sp,sp,-16                                 
 802594c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8025950:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8025954:	5b 8d 00 08 	sw (sp+8),r13                                  
 8025958:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
 802595c:	78 04 08 06 	mvhi r4,0x806                                  
 8025960:	38 84 b0 10 	ori r4,r4,0xb010                               
 8025964:	28 84 00 00 	lw r4,(r4+0)                                   
                                                                      
/**                                                                   
 *  POSIX 1003.1b 5.6.5 - Change Owner and Group of a File            
 */                                                                   
int fchown( int fd, uid_t owner, gid_t group )                        
{                                                                     
 8025968:	20 4d ff ff 	andi r13,r2,0xffff                             
 802596c:	20 6c ff ff 	andi r12,r3,0xffff                             
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
 8025970:	54 81 00 06 	bgu r4,r1,8025988 <fchown+0x40>                
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
 8025974:	f8 00 5f aa 	calli 803d81c <__errno>                        
 8025978:	34 02 00 09 	mvi r2,9                                       
 802597c:	58 22 00 00 	sw (r1+0),r2                                   
 8025980:	34 0c ff ff 	mvi r12,-1                                     
 8025984:	e0 00 00 21 	bi 8025a08 <fchown+0xc0>                       
{                                                                     
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8025988:	b4 21 58 00 	add r11,r1,r1                                  
 802598c:	b5 61 58 00 	add r11,r11,r1                                 
 8025990:	78 04 08 06 	mvhi r4,0x806                                  
 8025994:	b5 6b 58 00 	add r11,r11,r11                                
 8025998:	b5 6b 58 00 	add r11,r11,r11                                
 802599c:	38 84 ef 60 	ori r4,r4,0xef60                               
 80259a0:	c9 61 08 00 	sub r1,r11,r1                                  
 80259a4:	28 8b 00 00 	lw r11,(r4+0)                                  
 80259a8:	b4 21 08 00 	add r1,r1,r1                                   
 80259ac:	b4 21 08 00 	add r1,r1,r1                                   
 80259b0:	b5 61 58 00 	add r11,r11,r1                                 
  rtems_libio_check_is_open(iop);                                     
 80259b4:	29 61 00 08 	lw r1,(r11+8)                                  
 80259b8:	20 21 01 00 	andi r1,r1,0x100                               
 80259bc:	44 20 ff ee 	be r1,r0,8025974 <fchown+0x2c>                 
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
 80259c0:	29 61 00 20 	lw r1,(r11+32)                                 
 80259c4:	40 24 00 29 	lbu r4,(r1+41)                                 
 80259c8:	44 80 00 17 	be r4,r0,8025a24 <fchown+0xdc>                 <== NEVER TAKEN
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
 80259cc:	28 22 00 0c 	lw r2,(r1+12)                                  
 80259d0:	28 42 00 00 	lw r2,(r2+0)                                   
 80259d4:	d8 40 00 00 	call r2                                        
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->chown_h)(                     
 80259d8:	29 63 00 20 	lw r3,(r11+32)                                 
 80259dc:	b9 a0 10 00 	mv r2,r13                                      
 80259e0:	35 61 00 0c 	addi r1,r11,12                                 
 80259e4:	28 64 00 0c 	lw r4,(r3+12)                                  
 80259e8:	b9 80 18 00 	mv r3,r12                                      
 80259ec:	28 84 00 24 	lw r4,(r4+36)                                  
 80259f0:	d8 80 00 00 	call r4                                        
 80259f4:	b8 20 60 00 	mv r12,r1                                      
    errno = EROFS;                                                    
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 80259f8:	29 61 00 20 	lw r1,(r11+32)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
 80259fc:	28 22 00 0c 	lw r2,(r1+12)                                  
 8025a00:	28 42 00 04 	lw r2,(r2+4)                                   
 8025a04:	d8 40 00 00 	call r2                                        
 8025a08:	b9 80 08 00 	mv r1,r12                                      
 8025a0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8025a10:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8025a14:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8025a18:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8025a1c:	37 9c 00 10 	addi sp,sp,16                                  
 8025a20:	c3 a0 00 00 	ret                                            
      owner,                                                          
      group                                                           
    );                                                                
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
 8025a24:	f8 00 5f 7e 	calli 803d81c <__errno>                        <== NOT EXECUTED
 8025a28:	34 02 00 1e 	mvi r2,30                                      <== NOT EXECUTED
    rv = -1;                                                          
 8025a2c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
      owner,                                                          
      group                                                           
    );                                                                
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
 8025a30:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8025a34:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8025a38:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8025a3c:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8025a40:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8025a44:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8025a48:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8025a4c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08037110 <fcntl>: int fcntl( int fd, int cmd, ... ) {
 8037110:	37 9c ff c8 	addi sp,sp,-56                                 
 8037114:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8037118:	5b 8c 00 18 	sw (sp+24),r12                                 
 803711c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8037120:	5b 8e 00 10 	sw (sp+16),r14                                 
 8037124:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8037128:	5b 90 00 08 	sw (sp+8),r16                                  
 803712c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 8037130:	78 09 08 03 	mvhi r9,0x803                                  
 8037134:	39 29 e0 14 	ori r9,r9,0xe014                               
 8037138:	29 29 00 00 	lw r9,(r9+0)                                   
int fcntl(                                                            
  int fd,                                                             
  int cmd,                                                            
  ...                                                                 
)                                                                     
{                                                                     
 803713c:	5b 84 00 28 	sw (sp+40),r4                                  
 8037140:	5b 82 00 20 	sw (sp+32),r2                                  
 8037144:	5b 83 00 24 	sw (sp+36),r3                                  
 8037148:	5b 85 00 2c 	sw (sp+44),r5                                  
 803714c:	5b 86 00 30 	sw (sp+48),r6                                  
 8037150:	5b 87 00 34 	sw (sp+52),r7                                  
 8037154:	5b 88 00 38 	sw (sp+56),r8                                  
 8037158:	b8 40 58 00 	mv r11,r2                                      
  int            ret;                                                 
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
 803715c:	37 84 00 24 	addi r4,sp,36                                  
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 8037160:	55 21 00 06 	bgu r9,r1,8037178 <fcntl+0x68>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
 8037164:	fb ff b1 f8 	calli 8023944 <__errno>                        
 8037168:	34 02 00 09 	mvi r2,9                                       
 803716c:	58 22 00 00 	sw (r1+0),r2                                   
 8037170:	34 0d ff ff 	mvi r13,-1                                     
 8037174:	e0 00 00 1c 	bi 80371e4 <fcntl+0xd4>                        
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8037178:	b4 21 60 00 	add r12,r1,r1                                  
 803717c:	b5 81 60 00 	add r12,r12,r1                                 
 8037180:	78 0e 08 04 	mvhi r14,0x804                                 
 8037184:	b5 8c 60 00 	add r12,r12,r12                                
 8037188:	b5 8c 60 00 	add r12,r12,r12                                
 803718c:	39 ce e9 8c 	ori r14,r14,0xe98c                             
 8037190:	c9 81 08 00 	sub r1,r12,r1                                  
 8037194:	29 cc 00 00 	lw r12,(r14+0)                                 
 8037198:	b4 21 08 00 	add r1,r1,r1                                   
 803719c:	b4 21 08 00 	add r1,r1,r1                                   
 80371a0:	b5 81 60 00 	add r12,r12,r1                                 
  rtems_libio_check_is_open(iop);                                     
 80371a4:	29 81 00 08 	lw r1,(r12+8)                                  
 80371a8:	20 22 01 00 	andi r2,r1,0x100                               
 80371ac:	44 40 ff ee 	be r2,r0,8037164 <fcntl+0x54>                  
                                                                      
  /*                                                                  
   *  This switch should contain all the cases from POSIX.            
   */                                                                 
                                                                      
  switch ( cmd ) {                                                    
 80371b0:	34 02 00 09 	mvi r2,9                                       
 80371b4:	55 62 00 74 	bgu r11,r2,8037384 <fcntl+0x274>               
 80371b8:	78 03 08 03 	mvhi r3,0x803                                  
 80371bc:	b5 6b 10 00 	add r2,r11,r11                                 
 80371c0:	38 63 d5 c0 	ori r3,r3,0xd5c0                               
 80371c4:	b4 42 10 00 	add r2,r2,r2                                   
 80371c8:	b4 62 10 00 	add r2,r3,r2                                   
 80371cc:	28 42 00 00 	lw r2,(r2+0)                                   
 80371d0:	c0 40 00 00 	b r2                                           
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    case F_GETOWN:       /*  for sockets. */                          
      errno = ENOTSUP;                                                
 80371d4:	fb ff b1 dc 	calli 8023944 <__errno>                        
 80371d8:	34 02 00 86 	mvi r2,134                                     
 80371dc:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
  if (ret >= 0) {                                                     
    int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );         
    if (err) {                                                        
      errno = err;                                                    
      ret = -1;                                                       
 80371e0:	34 0d ff ff 	mvi r13,-1                                     
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
  ret = vfcntl(fd,cmd,ap);                                            
  va_end(ap);                                                         
  return ret;                                                         
}                                                                     
 80371e4:	b9 a0 08 00 	mv r1,r13                                      
 80371e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80371ec:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80371f0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80371f4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80371f8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80371fc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8037200:	2b 90 00 08 	lw r16,(sp+8)                                  
 8037204:	37 9c 00 38 	addi sp,sp,56                                  
 8037208:	c3 a0 00 00 	ret                                            
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
      break;                                                          
                                                                      
    case F_SETFL:                                                     
      flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );           
 803720c:	28 81 00 00 	lw r1,(r4+0)                                   
{                                                                     
  rtems_libio_t *iop;                                                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 8037210:	34 0d 00 00 	mvi r13,0                                      
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
      break;                                                          
                                                                      
    case F_SETFL:                                                     
      flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );           
 8037214:	fb ff 3f 81 	calli 8007018 <rtems_libio_fcntl_flags>        
                                                                      
      /*                                                              
       *  XXX If we are turning on append, should we seek to the end? 
       */                                                             
                                                                      
      iop->flags = (iop->flags & ~mask) | (flags & mask);             
 8037218:	29 83 00 08 	lw r3,(r12+8)                                  
 803721c:	34 02 fd fe 	mvi r2,-514                                    
 8037220:	20 21 02 01 	andi r1,r1,0x201                               
 8037224:	a0 43 10 00 	and r2,r2,r3                                   
 8037228:	b8 22 08 00 	or r1,r1,r2                                    
 803722c:	59 81 00 08 	sw (r12+8),r1                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
    int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );         
 8037230:	29 83 00 1c 	lw r3,(r12+28)                                 
 8037234:	b9 60 10 00 	mv r2,r11                                      
 8037238:	b9 80 08 00 	mv r1,r12                                      
 803723c:	28 63 00 28 	lw r3,(r3+40)                                  
 8037240:	d8 60 00 00 	call r3                                        
 8037244:	b8 20 58 00 	mv r11,r1                                      
    if (err) {                                                        
 8037248:	44 20 ff e7 	be r1,r0,80371e4 <fcntl+0xd4>                  <== ALWAYS TAKEN
      errno = err;                                                    
 803724c:	fb ff b1 be 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8037250:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8037254:	e3 ff ff e3 	bi 80371e0 <fcntl+0xd0>                        <== NOT EXECUTED
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
      break;                                                          
                                                                      
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
 8037258:	fb ff 3f 86 	calli 8007070 <rtems_libio_to_fcntl_flags>     
 803725c:	b8 20 68 00 	mv r13,r1                                      
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
 8037260:	48 0d ff e1 	bg r0,r13,80371e4 <fcntl+0xd4>                 <== NEVER TAKEN
 8037264:	e3 ff ff f3 	bi 8037230 <fcntl+0x120>                       
       *  if a new process is exec()'ed.  Since RTEMS does not support
       *  processes, then we can ignore this one except to make       
       *  F_GETFD work.                                               
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
 8037268:	28 82 00 00 	lw r2,(r4+0)                                   
 803726c:	44 40 00 4a 	be r2,r0,8037394 <fcntl+0x284>                 
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
 8037270:	38 21 08 00 	ori r1,r1,0x800                                
 8037274:	59 81 00 08 	sw (r12+8),r1                                  
{                                                                     
  rtems_libio_t *iop;                                                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 8037278:	34 0d 00 00 	mvi r13,0                                      
 803727c:	e3 ff ff ed 	bi 8037230 <fcntl+0x120>                       
      fd2 = va_arg( ap, int );                                        
      ret = duplicate_iop( iop, fd2 );                                
      break;                                                          
                                                                      
    case F_GETFD:        /* get f_flags */                            
      ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);          
 8037280:	20 2d 08 00 	andi r13,r1,0x800                              
 8037284:	7d ad 00 00 	cmpnei r13,r13,0                               
 8037288:	e3 ff ff ea 	bi 8037230 <fcntl+0x120>                       
                                                                      
  /*                                                                  
   * FIXME: We ignore the start value fd2 for the file descriptor search.  This
   * is not POSIX conform.                                            
   */                                                                 
  rtems_libio_t *diop = rtems_libio_allocate();                       
 803728c:	fb ff 3f 8e 	calli 80070c4 <rtems_libio_allocate>           
 8037290:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  if (diop != NULL) {                                                 
 8037294:	44 20 ff d3 	be r1,r0,80371e0 <fcntl+0xd0>                  
    int oflag = rtems_libio_to_fcntl_flags( iop->flags );             
 8037298:	29 81 00 08 	lw r1,(r12+8)                                  
                                                                      
    oflag &= ~O_CREAT;                                                
 803729c:	34 0d fd ff 	mvi r13,-513                                   
   * is not POSIX conform.                                            
   */                                                                 
  rtems_libio_t *diop = rtems_libio_allocate();                       
                                                                      
  if (diop != NULL) {                                                 
    int oflag = rtems_libio_to_fcntl_flags( iop->flags );             
 80372a0:	fb ff 3f 74 	calli 8007070 <rtems_libio_to_fcntl_flags>     
                                                                      
    oflag &= ~O_CREAT;                                                
 80372a4:	a0 2d 68 00 	and r13,r1,r13                                 
    diop->flags |= rtems_libio_fcntl_flags( oflag );                  
 80372a8:	b9 a0 08 00 	mv r1,r13                                      
 80372ac:	29 f0 00 08 	lw r16,(r15+8)                                 
 80372b0:	fb ff 3f 5a 	calli 8007018 <rtems_libio_fcntl_flags>        
  int cmd,                                                            
  int arg                                                             
)                                                                     
{                                                                     
  return fcntl( fd, cmd, arg );                                       
}                                                                     
 80372b4:	29 82 00 20 	lw r2,(r12+32)                                 
                                                                      
  if (diop != NULL) {                                                 
    int oflag = rtems_libio_to_fcntl_flags( iop->flags );             
                                                                      
    oflag &= ~O_CREAT;                                                
    diop->flags |= rtems_libio_fcntl_flags( oflag );                  
 80372b8:	b8 30 08 00 	or r1,r1,r16                                   
 80372bc:	59 e1 00 08 	sw (r15+8),r1                                  
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
 80372c0:	28 43 00 0c 	lw r3,(r2+12)                                  
 80372c4:	b8 40 08 00 	mv r1,r2                                       
 80372c8:	28 62 00 00 	lw r2,(r3+0)                                   
 80372cc:	d8 40 00 00 	call r2                                        
                                                                      
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rtems_filesystem_location_clone( &diop->pathinfo, &iop->pathinfo );
 80372d0:	35 82 00 0c 	addi r2,r12,12                                 
 80372d4:	35 e1 00 0c 	addi r1,r15,12                                 
 80372d8:	fb ff 7b eb 	calli 8016284 <rtems_filesystem_location_clone>
  int cmd,                                                            
  int arg                                                             
)                                                                     
{                                                                     
  return fcntl( fd, cmd, arg );                                       
}                                                                     
 80372dc:	29 81 00 20 	lw r1,(r12+32)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
 80372e0:	28 22 00 0c 	lw r2,(r1+12)                                  
 80372e4:	28 42 00 04 	lw r2,(r2+4)                                   
 80372e8:	d8 40 00 00 	call r2                                        
    /*                                                                
     * XXX: We call the open handler here to have a proper open and close pair.
     *                                                                
     * FIXME: What to do with the path?                               
     */                                                               
    rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );  
 80372ec:	29 e3 00 1c 	lw r3,(r15+28)                                 
 80372f0:	b9 e0 08 00 	mv r1,r15                                      
 80372f4:	34 02 00 00 	mvi r2,0                                       
 80372f8:	28 65 00 00 	lw r5,(r3+0)                                   
 80372fc:	34 04 00 00 	mvi r4,0                                       
 8037300:	b9 a0 18 00 	mv r3,r13                                      
 8037304:	d8 a0 00 00 	call r5                                        
 8037308:	b8 20 68 00 	mv r13,r1                                      
    if ( rv == 0 ) {                                                  
 803730c:	5c 20 00 27 	bne r1,r0,80373a8 <fcntl+0x298>                <== NEVER TAKEN
      rv = diop - rtems_libio_iops;                                   
 8037310:	29 c1 00 00 	lw r1,(r14+0)                                  
 8037314:	34 02 00 0f 	mvi r2,15                                      
 8037318:	c9 e1 78 00 	sub r15,r15,r1                                 
 803731c:	15 ef 00 01 	sri r15,r15,1                                  
 8037320:	15 ef 00 01 	sri r15,r15,1                                  
 8037324:	b5 ef 08 00 	add r1,r15,r15                                 
 8037328:	b4 21 08 00 	add r1,r1,r1                                   
 803732c:	b4 21 08 00 	add r1,r1,r1                                   
 8037330:	b4 21 08 00 	add r1,r1,r1                                   
 8037334:	b4 21 08 00 	add r1,r1,r1                                   
 8037338:	b4 21 18 00 	add r3,r1,r1                                   
 803733c:	b4 63 18 00 	add r3,r3,r3                                   
 8037340:	b4 63 18 00 	add r3,r3,r3                                   
 8037344:	b4 63 18 00 	add r3,r3,r3                                   
 8037348:	b4 63 18 00 	add r3,r3,r3                                   
 803734c:	c8 61 08 00 	sub r1,r3,r1                                   
 8037350:	b4 2f 08 00 	add r1,r1,r15                                  
 8037354:	b4 21 20 00 	add r4,r1,r1                                   
 8037358:	b4 84 20 00 	add r4,r4,r4                                   
 803735c:	b4 84 20 00 	add r4,r4,r4                                   
 8037360:	b4 24 68 00 	add r13,r1,r4                                  
 8037364:	b5 ad 68 00 	add r13,r13,r13                                
 8037368:	b5 ad 68 00 	add r13,r13,r13                                
 803736c:	b9 a0 08 00 	mv r1,r13                                      
 8037370:	fb ff fe 89 	calli 8036d94 <__ashlsi3>                      
 8037374:	c9 af 68 00 	sub r13,r13,r15                                
 8037378:	c9 a1 68 00 	sub r13,r13,r1                                 
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
 803737c:	48 0d ff 9a 	bg r0,r13,80371e4 <fcntl+0xd4>                 <== NEVER TAKEN
 8037380:	e3 ff ff ac 	bi 8037230 <fcntl+0x120>                       
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    default:                                                          
      errno = EINVAL;                                                 
 8037384:	fb ff b1 70 	calli 8023944 <__errno>                        
 8037388:	34 02 00 16 	mvi r2,22                                      
 803738c:	58 22 00 00 	sw (r1+0),r2                                   
 8037390:	e3 ff ff 94 	bi 80371e0 <fcntl+0xd0>                        
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
 8037394:	34 02 f7 ff 	mvi r2,-2049                                   
 8037398:	a0 22 08 00 	and r1,r1,r2                                   
 803739c:	59 81 00 08 	sw (r12+8),r1                                  
{                                                                     
  rtems_libio_t *iop;                                                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
 80373a0:	34 0d 00 00 	mvi r13,0                                      
 80373a4:	e3 ff ff a3 	bi 8037230 <fcntl+0x120>                       
     */                                                               
    rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );  
    if ( rv == 0 ) {                                                  
      rv = diop - rtems_libio_iops;                                   
    } else {                                                          
      rtems_libio_free( diop );                                       
 80373a8:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 80373ac:	fb ff 3f 6a 	calli 8007154 <rtems_libio_free>               <== NOT EXECUTED
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
 80373b0:	48 0d ff 8d 	bg r0,r13,80371e4 <fcntl+0xd4>                 <== NOT EXECUTED
 80373b4:	e3 ff ff 9f 	bi 8037230 <fcntl+0x120>                       <== NOT EXECUTED
                                                                      

0800ab18 <fifo_open>: int fifo_open( pipe_control_t **pipep, rtems_libio_t *iop ) {
 800ab18:	37 9c ff d8 	addi sp,sp,-40                                 
 800ab1c:	5b 8b 00 20 	sw (sp+32),r11                                 
 800ab20:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800ab24:	5b 8d 00 18 	sw (sp+24),r13                                 
 800ab28:	5b 8e 00 14 	sw (sp+20),r14                                 
 800ab2c:	5b 8f 00 10 	sw (sp+16),r15                                 
 800ab30:	5b 90 00 0c 	sw (sp+12),r16                                 
 800ab34:	5b 91 00 08 	sw (sp+8),r17                                  
 800ab38:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
static int pipe_lock(void)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
 800ab3c:	78 0b 08 02 	mvhi r11,0x802                                 
 800ab40:	39 6b 57 a8 	ori r11,r11,0x57a8                             
 800ab44:	29 6c 00 00 	lw r12,(r11+0)                                 
                                                                      
int fifo_open(                                                        
  pipe_control_t **pipep,                                             
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
 800ab48:	b8 20 70 00 	mv r14,r1                                      
 800ab4c:	b8 40 68 00 	mv r13,r2                                      
                                                                      
static int pipe_lock(void)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
 800ab50:	45 80 00 2c 	be r12,r0,800ac00 <fifo_open+0xe8>             
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 800ab54:	b9 80 08 00 	mv r1,r12                                      
 800ab58:	34 02 00 00 	mvi r2,0                                       
 800ab5c:	34 03 00 00 	mvi r3,0                                       
 800ab60:	fb ff ea c6 	calli 8005678 <rtems_semaphore_obtain>         
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800ab64:	34 0c ff f4 	mvi r12,-12                                    
 800ab68:	5c 20 00 1b 	bne r1,r0,800abd4 <fifo_open+0xbc>             <== NEVER TAKEN
                                                                      
  err = pipe_lock();                                                  
  if (err)                                                            
    return err;                                                       
                                                                      
  pipe = *pipep;                                                      
 800ab6c:	29 cb 00 00 	lw r11,(r14+0)                                 
  if (pipe == NULL) {                                                 
 800ab70:	45 61 00 80 	be r11,r1,800ad70 <fifo_open+0x258>            
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800ab74:	29 61 00 28 	lw r1,(r11+40)                                 
 800ab78:	34 02 00 00 	mvi r2,0                                       
 800ab7c:	34 03 00 00 	mvi r3,0                                       
 800ab80:	fb ff ea be 	calli 8005678 <rtems_semaphore_obtain>         
 800ab84:	7c 21 00 00 	cmpnei r1,r1,0                                 
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
 800ab88:	29 c2 00 00 	lw r2,(r14+0)                                  
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800ab8c:	c8 01 60 00 	sub r12,r0,r1                                  
 800ab90:	34 03 ff fc 	mvi r3,-4                                      
 800ab94:	a1 83 60 00 	and r12,r12,r3                                 
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
 800ab98:	44 40 00 cb 	be r2,r0,800aec4 <fifo_open+0x3ac>             
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800ab9c:	fb ff ff 89 	calli 800a9c0 <pipe_unlock>                    
  pipe_control_t *pipe;                                               
  unsigned int prevCounter;                                           
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
 800aba0:	5d 80 00 0d 	bne r12,r0,800abd4 <fifo_open+0xbc>            <== NEVER TAKEN
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
 800aba4:	29 a1 00 08 	lw r1,(r13+8)                                  
 800aba8:	34 02 00 04 	mvi r2,4                                       
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
    return err;                                                       
  pipe = *pipep;                                                      
 800abac:	29 cb 00 00 	lw r11,(r14+0)                                 
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
 800abb0:	20 21 00 06 	andi r1,r1,0x6                                 
 800abb4:	44 22 00 1f 	be r1,r2,800ac30 <fifo_open+0x118>             
 800abb8:	34 02 00 06 	mvi r2,6                                       
 800abbc:	44 22 00 5b 	be r1,r2,800ad28 <fifo_open+0x210>             
 800abc0:	34 02 00 02 	mvi r2,2                                       
 800abc4:	44 22 00 3c 	be r1,r2,800acb4 <fifo_open+0x19c>             <== ALWAYS TAKEN
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
      break;                                                          
  }                                                                   
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800abc8:	29 61 00 28 	lw r1,(r11+40)                                 
  return 0;                                                           
 800abcc:	34 0c 00 00 	mvi r12,0                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
      break;                                                          
  }                                                                   
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800abd0:	fb ff eb 06 	calli 80057e8 <rtems_semaphore_release>        
  return 0;                                                           
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
  return err;                                                         
}                                                                     
 800abd4:	b9 80 08 00 	mv r1,r12                                      
 800abd8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800abdc:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800abe0:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800abe4:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800abe8:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800abec:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800abf0:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800abf4:	2b 91 00 08 	lw r17,(sp+8)                                  
 800abf8:	37 9c 00 28 	addi sp,sp,40                                  
 800abfc:	c3 a0 00 00 	ret                                            
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 800ac00:	78 0f 08 02 	mvhi r15,0x802                                 
 800ac04:	39 ef 58 24 	ori r15,r15,0x5824                             
 800ac08:	29 e1 00 00 	lw r1,(r15+0)                                  
 800ac0c:	34 02 00 00 	mvi r2,0                                       
 800ac10:	34 03 00 00 	mvi r3,0                                       
 800ac14:	fb ff ea 99 	calli 8005678 <rtems_semaphore_obtain>         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
 800ac18:	29 61 00 00 	lw r1,(r11+0)                                  
 800ac1c:	44 2c 00 ae 	be r1,r12,800aed4 <fifo_open+0x3bc>            <== ALWAYS TAKEN
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 800ac20:	29 e1 00 00 	lw r1,(r15+0)                                  <== NOT EXECUTED
 800ac24:	fb ff ea f1 	calli 80057e8 <rtems_semaphore_release>        <== NOT EXECUTED
 800ac28:	29 6c 00 00 	lw r12,(r11+0)                                 <== NOT EXECUTED
 800ac2c:	e3 ff ff ca 	bi 800ab54 <fifo_open+0x3c>                    <== NOT EXECUTED
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800ac30:	29 63 00 24 	lw r3,(r11+36)                                 
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800ac34:	29 61 00 14 	lw r1,(r11+20)                                 
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800ac38:	34 63 00 01 	addi r3,r3,1                                   
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800ac3c:	34 22 00 01 	addi r2,r1,1                                   
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
 800ac40:	59 63 00 24 	sw (r11+36),r3                                 
                                                                      
      if (pipe->Writers ++ == 0)                                      
 800ac44:	59 62 00 14 	sw (r11+20),r2                                 
 800ac48:	44 20 00 ba 	be r1,r0,800af30 <fifo_open+0x418>             <== ALWAYS TAKEN
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
 800ac4c:	29 61 00 10 	lw r1,(r11+16)                                 
 800ac50:	5c 20 ff de 	bne r1,r0,800abc8 <fifo_open+0xb0>             
 800ac54:	29 a2 00 08 	lw r2,(r13+8)                                  
 800ac58:	20 42 00 01 	andi r2,r2,0x1                                 
 800ac5c:	5c 41 00 c5 	bne r2,r1,800af70 <fifo_open+0x458>            
        err = -ENXIO;                                                 
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
 800ac60:	29 6f 00 20 	lw r15,(r11+32)                                
 800ac64:	e0 00 00 06 	bi 800ac7c <fifo_open+0x164>                   
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ac68:	29 61 00 28 	lw r1,(r11+40)                                 
 800ac6c:	fb ff ea 83 	calli 8005678 <rtems_semaphore_obtain>         
 800ac70:	5c 2c 00 0c 	bne r1,r12,800aca0 <fifo_open+0x188>           <== NEVER TAKEN
            goto out_error;                                           
        } while (prevCounter == pipe->readerCounter);                 
 800ac74:	29 61 00 20 	lw r1,(r11+32)                                 
 800ac78:	5c 2f ff d4 	bne r1,r15,800abc8 <fifo_open+0xb0>            <== ALWAYS TAKEN
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
 800ac7c:	29 61 00 28 	lw r1,(r11+40)                                 
 800ac80:	fb ff ea da 	calli 80057e8 <rtems_semaphore_release>        
          if (! PIPE_WRITEWAIT(pipe))                                 
 800ac84:	29 61 00 30 	lw r1,(r11+48)                                 
 800ac88:	34 02 00 00 	mvi r2,0                                       
 800ac8c:	f8 00 07 e3 	calli 800cc18 <rtems_barrier_wait>             
 800ac90:	b8 20 60 00 	mv r12,r1                                      
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ac94:	34 02 00 00 	mvi r2,0                                       
 800ac98:	34 03 00 00 	mvi r3,0                                       
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
 800ac9c:	44 20 ff f3 	be r1,r0,800ac68 <fifo_open+0x150>             <== ALWAYS TAKEN
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
 800aca0:	34 0c ff fc 	mvi r12,-4                                     <== NOT EXECUTED
                                                                      
  PIPE_UNLOCK(pipe);                                                  
  return 0;                                                           
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
 800aca4:	b9 c0 08 00 	mv r1,r14                                      
 800aca8:	b9 a0 10 00 	mv r2,r13                                      
 800acac:	fb ff ff 4e 	calli 800a9e4 <pipe_release>                   
  return err;                                                         
 800acb0:	e3 ff ff c9 	bi 800abd4 <fifo_open+0xbc>                    
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800acb4:	29 63 00 20 	lw r3,(r11+32)                                 
      if (pipe->Readers ++ == 0)                                      
 800acb8:	29 61 00 10 	lw r1,(r11+16)                                 
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800acbc:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Readers ++ == 0)                                      
 800acc0:	34 22 00 01 	addi r2,r1,1                                   
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
 800acc4:	59 63 00 20 	sw (r11+32),r3                                 
      if (pipe->Readers ++ == 0)                                      
 800acc8:	59 62 00 10 	sw (r11+16),r2                                 
 800accc:	44 20 00 91 	be r1,r0,800af10 <fifo_open+0x3f8>             <== ALWAYS TAKEN
        PIPE_WAKEUPWRITERS(pipe);                                     
                                                                      
      if (pipe->Writers == 0) {                                       
 800acd0:	29 61 00 14 	lw r1,(r11+20)                                 
 800acd4:	5c 20 ff bd 	bne r1,r0,800abc8 <fifo_open+0xb0>             
        /* Not an error */                                            
        if (LIBIO_NODELAY(iop))                                       
 800acd8:	29 a2 00 08 	lw r2,(r13+8)                                  
 800acdc:	20 42 00 01 	andi r2,r2,0x1                                 
 800ace0:	5c 41 ff ba 	bne r2,r1,800abc8 <fifo_open+0xb0>             
          break;                                                      
                                                                      
        prevCounter = pipe->writerCounter;                            
 800ace4:	29 6f 00 24 	lw r15,(r11+36)                                
 800ace8:	e0 00 00 06 	bi 800ad00 <fifo_open+0x1e8>                   
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800acec:	29 61 00 28 	lw r1,(r11+40)                                 
 800acf0:	fb ff ea 62 	calli 8005678 <rtems_semaphore_obtain>         
 800acf4:	5c 2c ff eb 	bne r1,r12,800aca0 <fifo_open+0x188>           <== NEVER TAKEN
            goto out_error;                                           
        } while (prevCounter == pipe->writerCounter);                 
 800acf8:	29 61 00 24 	lw r1,(r11+36)                                 
 800acfc:	5c 2f ff b3 	bne r1,r15,800abc8 <fifo_open+0xb0>            <== ALWAYS TAKEN
                                                                      
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
 800ad00:	29 61 00 28 	lw r1,(r11+40)                                 
 800ad04:	fb ff ea b9 	calli 80057e8 <rtems_semaphore_release>        
          if (! PIPE_READWAIT(pipe))                                  
 800ad08:	29 61 00 2c 	lw r1,(r11+44)                                 
 800ad0c:	34 02 00 00 	mvi r2,0                                       
 800ad10:	f8 00 07 c2 	calli 800cc18 <rtems_barrier_wait>             
 800ad14:	b8 20 60 00 	mv r12,r1                                      
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
 800ad18:	34 02 00 00 	mvi r2,0                                       
 800ad1c:	34 03 00 00 	mvi r3,0                                       
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
 800ad20:	44 20 ff f3 	be r1,r0,800acec <fifo_open+0x1d4>             <== ALWAYS TAKEN
 800ad24:	e3 ff ff df 	bi 800aca0 <fifo_open+0x188>                   <== NOT EXECUTED
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800ad28:	29 63 00 20 	lw r3,(r11+32)                                 
      if (pipe->Readers ++ == 0)                                      
 800ad2c:	29 61 00 10 	lw r1,(r11+16)                                 
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800ad30:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Readers ++ == 0)                                      
 800ad34:	34 22 00 01 	addi r2,r1,1                                   
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
 800ad38:	59 63 00 20 	sw (r11+32),r3                                 
      if (pipe->Readers ++ == 0)                                      
 800ad3c:	59 62 00 10 	sw (r11+16),r2                                 
 800ad40:	44 20 00 78 	be r1,r0,800af20 <fifo_open+0x408>             <== ALWAYS TAKEN
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800ad44:	29 63 00 24 	lw r3,(r11+36)                                 
      if (pipe->Writers ++ == 0)                                      
 800ad48:	29 61 00 14 	lw r1,(r11+20)                                 
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800ad4c:	34 63 00 01 	addi r3,r3,1                                   
      if (pipe->Writers ++ == 0)                                      
 800ad50:	34 22 00 01 	addi r2,r1,1                                   
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
 800ad54:	59 63 00 24 	sw (r11+36),r3                                 
      if (pipe->Writers ++ == 0)                                      
 800ad58:	59 62 00 14 	sw (r11+20),r2                                 
 800ad5c:	5c 20 ff 9b 	bne r1,r0,800abc8 <fifo_open+0xb0>             <== NEVER TAKEN
        PIPE_WAKEUPREADERS(pipe);                                     
 800ad60:	29 61 00 2c 	lw r1,(r11+44)                                 
 800ad64:	37 82 00 28 	addi r2,sp,40                                  
 800ad68:	f8 00 07 8b 	calli 800cb94 <rtems_barrier_release>          
 800ad6c:	e3 ff ff 97 	bi 800abc8 <fifo_open+0xb0>                    
{                                                                     
  static char c = 'a';                                                
  pipe_control_t *pipe;                                               
  int err = -ENOMEM;                                                  
                                                                      
  pipe = malloc(sizeof(pipe_control_t));                              
 800ad70:	34 01 00 34 	mvi r1,52                                      
 800ad74:	fb ff e0 5a 	calli 8002edc <malloc>                         
 800ad78:	b8 20 58 00 	mv r11,r1                                      
 800ad7c:	b8 20 88 00 	mv r17,r1                                      
  if (pipe == NULL)                                                   
 800ad80:	44 20 00 88 	be r1,r0,800afa0 <fifo_open+0x488>             
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
 800ad84:	58 20 00 00 	sw (r1+0),r0                                   
 800ad88:	58 20 00 08 	sw (r1+8),r0                                   
 800ad8c:	58 20 00 0c 	sw (r1+12),r0                                  
 800ad90:	58 20 00 10 	sw (r1+16),r0                                  
 800ad94:	58 20 00 14 	sw (r1+20),r0                                  
 800ad98:	58 20 00 18 	sw (r1+24),r0                                  
 800ad9c:	58 20 00 1c 	sw (r1+28),r0                                  
 800ada0:	58 20 00 20 	sw (r1+32),r0                                  
 800ada4:	58 20 00 24 	sw (r1+36),r0                                  
 800ada8:	58 20 00 28 	sw (r1+40),r0                                  
 800adac:	58 20 00 2c 	sw (r1+44),r0                                  
 800adb0:	58 20 00 30 	sw (r1+48),r0                                  
                                                                      
  pipe->Size = PIPE_BUF;                                              
 800adb4:	34 01 02 00 	mvi r1,512                                     
 800adb8:	59 61 00 04 	sw (r11+4),r1                                  
  pipe->Buffer = malloc(pipe->Size);                                  
 800adbc:	fb ff e0 48 	calli 8002edc <malloc>                         
 800adc0:	59 61 00 00 	sw (r11+0),r1                                  
  if (! pipe->Buffer)                                                 
 800adc4:	44 20 00 75 	be r1,r0,800af98 <fifo_open+0x480>             <== NEVER TAKEN
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'r', c),                          
 800adc8:	78 0c 08 02 	mvhi r12,0x802                                 
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
 800adcc:	78 05 08 02 	mvhi r5,0x802                                  
 800add0:	38 a5 34 04 	ori r5,r5,0x3404                               
        rtems_build_name ('P', 'I', 'r', c),                          
 800add4:	39 8c 51 b0 	ori r12,r12,0x51b0                             
 800add8:	41 84 00 00 	lbu r4,(r12+0)                                 
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
 800addc:	28 a1 00 00 	lw r1,(r5+0)                                   
 800ade0:	34 02 00 00 	mvi r2,0                                       
 800ade4:	34 03 00 00 	mvi r3,0                                       
 800ade8:	b8 81 08 00 	or r1,r4,r1                                    
 800adec:	35 64 00 2c 	addi r4,r11,44                                 
 800adf0:	f8 00 06 f2 	calli 800c9b8 <rtems_barrier_create>           
 800adf4:	b8 20 78 00 	mv r15,r1                                      
 800adf8:	5c 20 00 66 	bne r1,r0,800af90 <fifo_open+0x478>            
        rtems_build_name ('P', 'I', 'r', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->readBarrier) != RTEMS_SUCCESSFUL)                      
    goto err_rbar;                                                    
  if (rtems_barrier_create(                                           
 800adfc:	78 05 08 02 	mvhi r5,0x802                                  
 800ae00:	38 a5 34 08 	ori r5,r5,0x3408                               
        rtems_build_name ('P', 'I', 'w', c),                          
 800ae04:	41 84 00 00 	lbu r4,(r12+0)                                 
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'r', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->readBarrier) != RTEMS_SUCCESSFUL)                      
    goto err_rbar;                                                    
  if (rtems_barrier_create(                                           
 800ae08:	28 a1 00 00 	lw r1,(r5+0)                                   
 800ae0c:	34 02 00 00 	mvi r2,0                                       
 800ae10:	34 03 00 00 	mvi r3,0                                       
 800ae14:	b8 81 08 00 	or r1,r4,r1                                    
 800ae18:	35 64 00 30 	addi r4,r11,48                                 
 800ae1c:	f8 00 06 e7 	calli 800c9b8 <rtems_barrier_create>           
 800ae20:	b8 20 80 00 	mv r16,r1                                      
 800ae24:	5c 2f 00 59 	bne r1,r15,800af88 <fifo_open+0x470>           
        rtems_build_name ('P', 'I', 'w', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->writeBarrier) != RTEMS_SUCCESSFUL)                     
    goto err_wbar;                                                    
  if (rtems_semaphore_create(                                         
 800ae28:	78 05 08 02 	mvhi r5,0x802                                  
 800ae2c:	38 a5 34 0c 	ori r5,r5,0x340c                               
        rtems_build_name ('P', 'I', 's', c), 1,                       
 800ae30:	41 84 00 00 	lbu r4,(r12+0)                                 
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'w', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->writeBarrier) != RTEMS_SUCCESSFUL)                     
    goto err_wbar;                                                    
  if (rtems_semaphore_create(                                         
 800ae34:	28 a1 00 00 	lw r1,(r5+0)                                   
 800ae38:	34 02 00 01 	mvi r2,1                                       
 800ae3c:	34 03 00 10 	mvi r3,16                                      
 800ae40:	b8 81 08 00 	or r1,r4,r1                                    
 800ae44:	35 65 00 28 	addi r5,r11,40                                 
 800ae48:	34 04 00 00 	mvi r4,0                                       
 800ae4c:	fb ff e9 87 	calli 8005468 <rtems_semaphore_create>         
 800ae50:	5c 30 00 4c 	bne r1,r16,800af80 <fifo_open+0x468>           
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Barrier_Control *)                                          
    _Objects_Get( &_Barrier_Information, id, location );              
 800ae54:	29 62 00 2c 	lw r2,(r11+44)                                 
 800ae58:	78 0f 08 02 	mvhi r15,0x802                                 
 800ae5c:	39 ef 61 c8 	ori r15,r15,0x61c8                             
/* Set barriers to be interruptible by signals. */                    
static void pipe_interruptible(pipe_control_t *pipe)                  
{                                                                     
  Objects_Locations location;                                         
                                                                      
  _Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
 800ae60:	37 91 00 24 	addi r17,sp,36                                 
 800ae64:	ba 20 18 00 	mv r3,r17                                      
 800ae68:	b9 e0 08 00 	mv r1,r15                                      
 800ae6c:	fb ff f1 3f 	calli 8007368 <_Objects_Get>                   
    |= STATES_INTERRUPTIBLE_BY_SIGNAL;                                
 800ae70:	28 22 00 4c 	lw r2,(r1+76)                                  
 800ae74:	78 10 10 00 	mvhi r16,0x1000                                
 800ae78:	b8 50 10 00 	or r2,r2,r16                                   
 800ae7c:	58 22 00 4c 	sw (r1+76),r2                                  
  _Thread_Enable_dispatch();                                          
 800ae80:	fb ff f5 08 	calli 80082a0 <_Thread_Enable_dispatch>        
 800ae84:	29 62 00 30 	lw r2,(r11+48)                                 
 800ae88:	ba 20 18 00 	mv r3,r17                                      
 800ae8c:	b9 e0 08 00 	mv r1,r15                                      
 800ae90:	fb ff f1 36 	calli 8007368 <_Objects_Get>                   
  _Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
    |= STATES_INTERRUPTIBLE_BY_SIGNAL;                                
 800ae94:	28 22 00 4c 	lw r2,(r1+76)                                  
 800ae98:	b8 50 80 00 	or r16,r2,r16                                  
 800ae9c:	58 30 00 4c 	sw (r1+76),r16                                 
  _Thread_Enable_dispatch();                                          
 800aea0:	fb ff f5 00 	calli 80082a0 <_Thread_Enable_dispatch>        
#ifdef RTEMS_POSIX_API                                                
  pipe_interruptible(pipe);                                           
#endif                                                                
                                                                      
  *pipep = pipe;                                                      
  if (c ++ == 'z')                                                    
 800aea4:	41 81 00 00 	lbu r1,(r12+0)                                 
 800aea8:	34 22 00 01 	addi r2,r1,1                                   
 800aeac:	31 82 00 00 	sb (r12+0),r2                                  
 800aeb0:	34 02 00 7a 	mvi r2,122                                     
 800aeb4:	5c 22 ff 30 	bne r1,r2,800ab74 <fifo_open+0x5c>             
    c = 'a';                                                          
 800aeb8:	34 01 00 61 	mvi r1,97                                      
 800aebc:	31 81 00 00 	sb (r12+0),r1                                  
 800aec0:	e3 ff ff 2d 	bi 800ab74 <fifo_open+0x5c>                    
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
    if (err)                                                          
 800aec4:	5d 82 00 1f 	bne r12,r2,800af40 <fifo_open+0x428>           <== NEVER TAKEN
      pipe_free(pipe);                                                
    else                                                              
      *pipep = pipe;                                                  
 800aec8:	59 cb 00 00 	sw (r14+0),r11                                 
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800aecc:	fb ff fe bd 	calli 800a9c0 <pipe_unlock>                    
 800aed0:	e3 ff ff 35 	bi 800aba4 <fifo_open+0x8c>                    
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
      sc = rtems_semaphore_create(                                    
 800aed4:	78 02 08 02 	mvhi r2,0x802                                  
 800aed8:	38 42 34 00 	ori r2,r2,0x3400                               
 800aedc:	28 41 00 00 	lw r1,(r2+0)                                   
 800aee0:	34 03 00 54 	mvi r3,84                                      
 800aee4:	34 02 00 01 	mvi r2,1                                       
 800aee8:	34 04 00 00 	mvi r4,0                                       
 800aeec:	b9 60 28 00 	mv r5,r11                                      
 800aef0:	fb ff e9 5e 	calli 8005468 <rtems_semaphore_create>         
 800aef4:	b8 20 80 00 	mv r16,r1                                      
 800aef8:	29 e1 00 00 	lw r1,(r15+0)                                  
    }                                                                 
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800aefc:	34 0c ff f4 	mvi r12,-12                                    
 800af00:	fb ff ea 3a 	calli 80057e8 <rtems_semaphore_release>        
 800af04:	5e 00 ff 34 	bne r16,r0,800abd4 <fifo_open+0xbc>            
 800af08:	29 6c 00 00 	lw r12,(r11+0)                                 
 800af0c:	e3 ff ff 12 	bi 800ab54 <fifo_open+0x3c>                    
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
 800af10:	29 61 00 30 	lw r1,(r11+48)                                 
 800af14:	37 82 00 28 	addi r2,sp,40                                  
 800af18:	f8 00 07 1f 	calli 800cb94 <rtems_barrier_release>          
 800af1c:	e3 ff ff 6d 	bi 800acd0 <fifo_open+0x1b8>                   
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
 800af20:	29 61 00 30 	lw r1,(r11+48)                                 
 800af24:	37 82 00 28 	addi r2,sp,40                                  
 800af28:	f8 00 07 1b 	calli 800cb94 <rtems_barrier_release>          
 800af2c:	e3 ff ff 86 	bi 800ad44 <fifo_open+0x22c>                   
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
 800af30:	29 61 00 2c 	lw r1,(r11+44)                                 
 800af34:	37 82 00 28 	addi r2,sp,40                                  
 800af38:	f8 00 07 17 	calli 800cb94 <rtems_barrier_release>          
 800af3c:	e3 ff ff 44 	bi 800ac4c <fifo_open+0x134>                   
/* Called with pipe_semaphore held. */                                
static inline void pipe_free(                                         
  pipe_control_t *pipe                                                
)                                                                     
{                                                                     
  rtems_barrier_delete(pipe->readBarrier);                            
 800af40:	29 61 00 2c 	lw r1,(r11+44)                                 <== NOT EXECUTED
 800af44:	f8 00 06 e0 	calli 800cac4 <rtems_barrier_delete>           <== NOT EXECUTED
  rtems_barrier_delete(pipe->writeBarrier);                           
 800af48:	29 61 00 30 	lw r1,(r11+48)                                 <== NOT EXECUTED
 800af4c:	f8 00 06 de 	calli 800cac4 <rtems_barrier_delete>           <== NOT EXECUTED
  rtems_semaphore_delete(pipe->Semaphore);                            
 800af50:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 800af54:	f8 00 08 12 	calli 800cf9c <rtems_semaphore_delete>         <== NOT EXECUTED
  free(pipe->Buffer);                                                 
 800af58:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800af5c:	fb ff de 7b 	calli 8002948 <free>                           <== NOT EXECUTED
  free(pipe);                                                         
 800af60:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800af64:	fb ff de 79 	calli 8002948 <free>                           <== NOT EXECUTED
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800af68:	fb ff fe 96 	calli 800a9c0 <pipe_unlock>                    <== NOT EXECUTED
 800af6c:	e3 ff ff 1a 	bi 800abd4 <fifo_open+0xbc>                    <== NOT EXECUTED
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
	PIPE_UNLOCK(pipe);                                                   
 800af70:	29 61 00 28 	lw r1,(r11+40)                                 
        err = -ENXIO;                                                 
 800af74:	34 0c ff fa 	mvi r12,-6                                     
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
	PIPE_UNLOCK(pipe);                                                   
 800af78:	fb ff ea 1c 	calli 80057e8 <rtems_semaphore_release>        
        err = -ENXIO;                                                 
        goto out_error;                                               
 800af7c:	e3 ff ff 4a 	bi 800aca4 <fifo_open+0x18c>                   
  if (c ++ == 'z')                                                    
    c = 'a';                                                          
  return 0;                                                           
                                                                      
err_sem:                                                              
  rtems_barrier_delete(pipe->writeBarrier);                           
 800af80:	29 61 00 30 	lw r1,(r11+48)                                 
 800af84:	f8 00 06 d0 	calli 800cac4 <rtems_barrier_delete>           
err_wbar:                                                             
  rtems_barrier_delete(pipe->readBarrier);                            
 800af88:	2a 21 00 2c 	lw r1,(r17+44)                                 
 800af8c:	f8 00 06 ce 	calli 800cac4 <rtems_barrier_delete>           
err_rbar:                                                             
  free(pipe->Buffer);                                                 
 800af90:	2a 21 00 00 	lw r1,(r17+0)                                  
 800af94:	fb ff de 6d 	calli 8002948 <free>                           
err_buf:                                                              
  free(pipe);                                                         
 800af98:	ba 20 08 00 	mv r1,r17                                      
 800af9c:	fb ff de 6b 	calli 8002948 <free>                           
    }                                                                 
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800afa0:	34 0c ff f4 	mvi r12,-12                                    
    else                                                              
      *pipep = pipe;                                                  
  }                                                                   
                                                                      
out:                                                                  
  pipe_unlock();                                                      
 800afa4:	fb ff fe 87 	calli 800a9c0 <pipe_unlock>                    
 800afa8:	e3 ff ff 0b 	bi 800abd4 <fifo_open+0xbc>                    
                                                                      

08009058 <fpathconf>: */ long fpathconf( int fd, int name ) {
 8009058:	37 9c ff fc 	addi sp,sp,-4                                  
 800905c:	5b 9d 00 04 	sw (sp+4),ra                                   
  long                                    return_value;               
  rtems_libio_t                          *iop;                        
  const rtems_filesystem_limits_and_options_t *the_limits;            
                                                                      
  rtems_libio_check_fd(fd);                                           
 8009060:	78 03 08 01 	mvhi r3,0x801                                  
 8009064:	38 63 40 04 	ori r3,r3,0x4004                               
 8009068:	28 63 00 00 	lw r3,(r3+0)                                   
 800906c:	54 61 00 06 	bgu r3,r1,8009084 <fpathconf+0x2c>             
  iop = rtems_libio_iop(fd);                                          
  rtems_libio_check_is_open(iop);                                     
 8009070:	f8 00 0c 4a 	calli 800c198 <__errno>                        
 8009074:	34 02 00 09 	mvi r2,9                                       
 8009078:	58 22 00 00 	sw (r1+0),r2                                   
 800907c:	34 01 ff ff 	mvi r1,-1                                      
 8009080:	e0 00 00 1b 	bi 80090ec <fpathconf+0x94>                    
  long                                    return_value;               
  rtems_libio_t                          *iop;                        
  const rtems_filesystem_limits_and_options_t *the_limits;            
                                                                      
  rtems_libio_check_fd(fd);                                           
  iop = rtems_libio_iop(fd);                                          
 8009084:	b4 21 18 00 	add r3,r1,r1                                   
 8009088:	b4 61 18 00 	add r3,r3,r1                                   
 800908c:	78 04 08 01 	mvhi r4,0x801                                  
 8009090:	b4 63 18 00 	add r3,r3,r3                                   
 8009094:	b4 63 18 00 	add r3,r3,r3                                   
 8009098:	38 84 47 b8 	ori r4,r4,0x47b8                               
 800909c:	c8 61 08 00 	sub r1,r3,r1                                   
 80090a0:	28 83 00 00 	lw r3,(r4+0)                                   
 80090a4:	b4 21 08 00 	add r1,r1,r1                                   
 80090a8:	b4 21 08 00 	add r1,r1,r1                                   
 80090ac:	b4 61 08 00 	add r1,r3,r1                                   
  rtems_libio_check_is_open(iop);                                     
 80090b0:	28 23 00 08 	lw r3,(r1+8)                                   
 80090b4:	20 63 01 00 	andi r3,r3,0x100                               
 80090b8:	44 60 ff ee 	be r3,r0,8009070 <fpathconf+0x18>              <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Now process the information request.                            
   */                                                                 
                                                                      
  the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;   
 80090bc:	28 21 00 20 	lw r1,(r1+32)                                  
                                                                      
  switch ( name ) {                                                   
 80090c0:	34 03 00 0b 	mvi r3,11                                      
                                                                      
  /*                                                                  
   *  Now process the information request.                            
   */                                                                 
                                                                      
  the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;   
 80090c4:	28 21 00 2c 	lw r1,(r1+44)                                  
                                                                      
  switch ( name ) {                                                   
 80090c8:	54 43 00 22 	bgu r2,r3,8009150 <fpathconf+0xf8>             
 80090cc:	78 03 08 01 	mvhi r3,0x801                                  
 80090d0:	b4 42 10 00 	add r2,r2,r2                                   
 80090d4:	38 63 36 68 	ori r3,r3,0x3668                               
 80090d8:	b4 42 10 00 	add r2,r2,r2                                   
 80090dc:	b4 62 10 00 	add r2,r3,r2                                   
 80090e0:	28 42 00 00 	lw r2,(r2+0)                                   
 80090e4:	c0 40 00 00 	b r2                                           
      break;                                                          
    case _PC_ASYNC_IO:                                                
      return_value = the_limits->posix_async_io;                      
      break;                                                          
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
 80090e8:	28 21 00 24 	lw r1,(r1+36)                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
      break;                                                          
  }                                                                   
                                                                      
  return return_value;                                                
}                                                                     
 80090ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80090f0:	37 9c 00 04 	addi sp,sp,4                                   
 80090f4:	c3 a0 00 00 	ret                                            
      break;                                                          
    case _PC_VDISABLE:                                                
      return_value = the_limits->posix_vdisable;                      
      break;                                                          
    case _PC_ASYNC_IO:                                                
      return_value = the_limits->posix_async_io;                      
 80090f8:	28 21 00 18 	lw r1,(r1+24)                                  
      break;                                                          
 80090fc:	e3 ff ff fc 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_NO_TRUNC:                                                
      return_value = the_limits->posix_no_trunc;                      
      break;                                                          
    case _PC_VDISABLE:                                                
      return_value = the_limits->posix_vdisable;                      
 8009100:	28 21 00 2c 	lw r1,(r1+44)                                  
      break;                                                          
 8009104:	e3 ff ff fa 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_CHOWN_RESTRICTED:                                        
      return_value = the_limits->posix_chown_restrictions;            
      break;                                                          
    case _PC_NO_TRUNC:                                                
      return_value = the_limits->posix_no_trunc;                      
 8009108:	28 21 00 20 	lw r1,(r1+32)                                  
      break;                                                          
 800910c:	e3 ff ff f8 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_PIPE_BUF:                                                
      return_value = the_limits->pipe_buf;                            
      break;                                                          
    case _PC_CHOWN_RESTRICTED:                                        
      return_value = the_limits->posix_chown_restrictions;            
 8009110:	28 21 00 1c 	lw r1,(r1+28)                                  
      break;                                                          
 8009114:	e3 ff ff f6 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_PATH_MAX:                                                
      return_value = the_limits->path_max;                            
      break;                                                          
    case _PC_PIPE_BUF:                                                
      return_value = the_limits->pipe_buf;                            
 8009118:	28 21 00 14 	lw r1,(r1+20)                                  
      break;                                                          
 800911c:	e3 ff ff f4 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_NAME_MAX:                                                
      return_value = the_limits->name_max;                            
      break;                                                          
    case _PC_PATH_MAX:                                                
      return_value = the_limits->path_max;                            
 8009120:	28 21 00 10 	lw r1,(r1+16)                                  
      break;                                                          
 8009124:	e3 ff ff f2 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_MAX_INPUT:                                               
      return_value = the_limits->max_input;                           
      break;                                                          
    case _PC_NAME_MAX:                                                
      return_value = the_limits->name_max;                            
 8009128:	28 21 00 0c 	lw r1,(r1+12)                                  
      break;                                                          
 800912c:	e3 ff ff f0 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_MAX_CANON:                                               
      return_value = the_limits->max_canon;                           
      break;                                                          
    case _PC_MAX_INPUT:                                               
      return_value = the_limits->max_input;                           
 8009130:	28 21 00 08 	lw r1,(r1+8)                                   
      break;                                                          
 8009134:	e3 ff ff ee 	bi 80090ec <fpathconf+0x94>                    
  switch ( name ) {                                                   
    case _PC_LINK_MAX:                                                
      return_value = the_limits->link_max;                            
      break;                                                          
    case _PC_MAX_CANON:                                               
      return_value = the_limits->max_canon;                           
 8009138:	28 21 00 04 	lw r1,(r1+4)                                   
      break;                                                          
 800913c:	e3 ff ff ec 	bi 80090ec <fpathconf+0x94>                    
                                                                      
  the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;   
                                                                      
  switch ( name ) {                                                   
    case _PC_LINK_MAX:                                                
      return_value = the_limits->link_max;                            
 8009140:	28 21 00 00 	lw r1,(r1+0)                                   
      break;                                                          
 8009144:	e3 ff ff ea 	bi 80090ec <fpathconf+0x94>                    
      break;                                                          
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
      break;                                                          
    case _PC_SYNC_IO:                                                 
      return_value = the_limits->posix_sync_io;                       
 8009148:	28 21 00 28 	lw r1,(r1+40)                                  
      break;                                                          
 800914c:	e3 ff ff e8 	bi 80090ec <fpathconf+0x94>                    
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8009150:	f8 00 0c 12 	calli 800c198 <__errno>                        
 8009154:	34 02 00 16 	mvi r2,22                                      
 8009158:	58 22 00 00 	sw (r1+0),r2                                   
 800915c:	34 01 ff ff 	mvi r1,-1                                      
 8009160:	e3 ff ff e3 	bi 80090ec <fpathconf+0x94>                    
                                                                      

08001628 <free>: #include <stdlib.h> void free( void *ptr ) {
 8001628:	37 9c ff f4 	addi sp,sp,-12                                 
 800162c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8001630:	5b 8c 00 08 	sw (sp+8),r12                                  
 8001634:	5b 9d 00 04 	sw (sp+4),ra                                   
  MSBUMP(free_calls, 1);                                              
 8001638:	78 03 08 02 	mvhi r3,0x802                                  
 800163c:	38 63 08 28 	ori r3,r3,0x828                                
 8001640:	28 62 00 0c 	lw r2,(r3+12)                                  
#include <stdlib.h>                                                   
                                                                      
void free(                                                            
  void *ptr                                                           
)                                                                     
{                                                                     
 8001644:	b8 20 58 00 	mv r11,r1                                      
  MSBUMP(free_calls, 1);                                              
 8001648:	34 41 00 01 	addi r1,r2,1                                   
 800164c:	58 61 00 0c 	sw (r3+12),r1                                  
                                                                      
  if ( !ptr )                                                         
 8001650:	45 60 00 1a 	be r11,r0,80016b8 <free+0x90>                  
    return;                                                           
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 8001654:	78 01 08 02 	mvhi r1,0x802                                  
 8001658:	38 21 0d d8 	ori r1,r1,0xdd8                                
 800165c:	28 22 00 00 	lw r2,(r1+0)                                   
 8001660:	34 01 00 03 	mvi r1,3                                       
 8001664:	44 41 00 1a 	be r2,r1,80016cc <free+0xa4>                   <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  If configured, update the statistics                            
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 8001668:	78 01 08 02 	mvhi r1,0x802                                  
 800166c:	38 21 07 4c 	ori r1,r1,0x74c                                
 8001670:	28 21 00 00 	lw r1,(r1+0)                                   
 8001674:	44 20 00 04 	be r1,r0,8001684 <free+0x5c>                   
    (*rtems_malloc_statistics_helpers->at_free)(ptr);                 
 8001678:	28 22 00 08 	lw r2,(r1+8)                                   
 800167c:	b9 60 08 00 	mv r1,r11                                      
 8001680:	d8 40 00 00 	call r2                                        
                                                                      
  if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {            
 8001684:	78 0c 08 02 	mvhi r12,0x802                                 
 8001688:	39 8c 00 54 	ori r12,r12,0x54                               
 800168c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001690:	b9 60 10 00 	mv r2,r11                                      
 8001694:	f8 00 12 32 	calli 8005f5c <_Protected_heap_Free>           
 8001698:	5c 20 00 08 	bne r1,r0,80016b8 <free+0x90>                  
    printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
      ptr,                                                            
      RTEMS_Malloc_Heap->area_begin,                                  
 800169c:	29 82 00 00 	lw r2,(r12+0)                                  
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
    (*rtems_malloc_statistics_helpers->at_free)(ptr);                 
                                                                      
  if ( !_Protected_heap_Free( RTEMS_Malloc_Heap, ptr ) ) {            
    printk( "Program heap: free of bad pointer %p -- range %p - %p \n",
 80016a0:	78 01 08 01 	mvhi r1,0x801                                  
 80016a4:	38 21 d9 5c 	ori r1,r1,0xd95c                               
 80016a8:	28 43 00 18 	lw r3,(r2+24)                                  
 80016ac:	28 44 00 1c 	lw r4,(r2+28)                                  
 80016b0:	b9 60 10 00 	mv r2,r11                                      
 80016b4:	f8 00 04 14 	calli 8002704 <printk>                         
      RTEMS_Malloc_Heap->area_begin,                                  
      RTEMS_Malloc_Heap->area_end                                     
    );                                                                
  }                                                                   
                                                                      
}                                                                     
 80016b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80016bc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80016c0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80016c4:	37 9c 00 0c 	addi sp,sp,12                                  
 80016c8:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
       !malloc_is_system_state_OK() ) {                               
 80016cc:	f8 00 00 7a 	calli 80018b4 <malloc_is_system_state_OK>      
    return;                                                           
                                                                      
  /*                                                                  
   *  Do not attempt to free memory if in a critical section or ISR.  
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 80016d0:	5c 20 ff e6 	bne r1,r0,8001668 <free+0x40>                  
       !malloc_is_system_state_OK() ) {                               
      malloc_deferred_free(ptr);                                      
 80016d4:	b9 60 08 00 	mv r1,r11                                      
 80016d8:	f8 00 00 8f 	calli 8001914 <malloc_deferred_free>           
      return;                                                         
 80016dc:	e3 ff ff f7 	bi 80016b8 <free+0x90>                         
                                                                      

0801c270 <fstat>: int fstat( int fd, struct stat *sbuf ) {
 801c270:	37 9c ff f4 	addi sp,sp,-12                                 
 801c274:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801c278:	5b 8c 00 08 	sw (sp+8),r12                                  
 801c27c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c280:	b8 40 58 00 	mv r11,r2                                      
  rtems_libio_t *iop;                                                 
                                                                      
  /*                                                                  
   *  Check to see if we were passed a valid pointer.                 
   */                                                                 
  if ( !sbuf )                                                        
 801c284:	44 40 00 26 	be r2,r0,801c31c <fstat+0xac>                  <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  /*                                                                  
   *  Now process the stat() request.                                 
   */                                                                 
  iop = rtems_libio_iop( fd );                                        
 801c288:	78 03 08 02 	mvhi r3,0x802                                  
 801c28c:	38 63 00 10 	ori r3,r3,0x10                                 
 801c290:	28 62 00 00 	lw r2,(r3+0)                                   
 801c294:	50 22 00 1d 	bgeu r1,r2,801c308 <fstat+0x98>                
 801c298:	b4 21 60 00 	add r12,r1,r1                                  
 801c29c:	b5 81 60 00 	add r12,r12,r1                                 
 801c2a0:	78 02 08 02 	mvhi r2,0x802                                  
 801c2a4:	b5 8c 60 00 	add r12,r12,r12                                
 801c2a8:	b5 8c 60 00 	add r12,r12,r12                                
 801c2ac:	38 42 08 1c 	ori r2,r2,0x81c                                
 801c2b0:	c9 81 08 00 	sub r1,r12,r1                                  
 801c2b4:	28 4c 00 00 	lw r12,(r2+0)                                  
 801c2b8:	b4 21 08 00 	add r1,r1,r1                                   
 801c2bc:	b4 21 08 00 	add r1,r1,r1                                   
 801c2c0:	b5 81 60 00 	add r12,r12,r1                                 
  rtems_libio_check_fd( fd );                                         
  rtems_libio_check_is_open(iop);                                     
 801c2c4:	29 81 00 08 	lw r1,(r12+8)                                  
 801c2c8:	20 21 01 00 	andi r1,r1,0x100                               
 801c2cc:	44 20 00 0f 	be r1,r0,801c308 <fstat+0x98>                  
                                                                      
  /*                                                                  
   *  Zero out the stat structure so the various support              
   *  versions of stat don't have to.                                 
   */                                                                 
  memset( sbuf, 0, sizeof(struct stat) );                             
 801c2d0:	34 02 00 00 	mvi r2,0                                       
 801c2d4:	34 03 00 48 	mvi r3,72                                      
 801c2d8:	b9 60 08 00 	mv r1,r11                                      
 801c2dc:	fb ff c7 21 	calli 800df60 <memset>                         
                                                                      
  return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );  
 801c2e0:	29 83 00 1c 	lw r3,(r12+28)                                 
 801c2e4:	35 81 00 0c 	addi r1,r12,12                                 
 801c2e8:	b9 60 10 00 	mv r2,r11                                      
 801c2ec:	28 63 00 18 	lw r3,(r3+24)                                  
 801c2f0:	d8 60 00 00 	call r3                                        
}                                                                     
 801c2f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c2f8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801c2fc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801c300:	37 9c 00 0c 	addi sp,sp,12                                  
 801c304:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Now process the stat() request.                                 
   */                                                                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_fd( fd );                                         
  rtems_libio_check_is_open(iop);                                     
 801c308:	fb ff c3 db 	calli 800d274 <__errno>                        
 801c30c:	34 02 00 09 	mvi r2,9                                       
 801c310:	58 22 00 00 	sw (r1+0),r2                                   
 801c314:	34 01 ff ff 	mvi r1,-1                                      
 801c318:	e3 ff ff f7 	bi 801c2f4 <fstat+0x84>                        
                                                                      
  /*                                                                  
   *  Check to see if we were passed a valid pointer.                 
   */                                                                 
  if ( !sbuf )                                                        
    rtems_set_errno_and_return_minus_one( EFAULT );                   
 801c31c:	fb ff c3 d6 	calli 800d274 <__errno>                        <== NOT EXECUTED
 801c320:	34 02 00 0e 	mvi r2,14                                      <== NOT EXECUTED
 801c324:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c328:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801c32c:	e3 ff ff f2 	bi 801c2f4 <fstat+0x84>                        <== NOT EXECUTED
                                                                      

08008f54 <ftruncate>: #include <unistd.h> #include <rtems/libio_.h> int ftruncate( int fd, off_t length ) {
 8008f54:	37 9c ff fc 	addi sp,sp,-4                                  
 8008f58:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
                                                                      
  if ( length >= 0 ) {                                                
 8008f5c:	48 02 00 20 	bg r0,r2,8008fdc <ftruncate+0x88>              
    rtems_libio_t *iop;                                               
                                                                      
    rtems_libio_check_fd( fd );                                       
 8008f60:	78 03 08 02 	mvhi r3,0x802                                  
 8008f64:	38 63 00 10 	ori r3,r3,0x10                                 
 8008f68:	28 63 00 00 	lw r3,(r3+0)                                   
 8008f6c:	54 61 00 06 	bgu r3,r1,8008f84 <ftruncate+0x30>             
    iop = rtems_libio_iop( fd );                                      
    rtems_libio_check_is_open( iop );                                 
 8008f70:	f8 00 10 c1 	calli 800d274 <__errno>                        
 8008f74:	34 02 00 09 	mvi r2,9                                       
 8008f78:	58 22 00 00 	sw (r1+0),r2                                   
 8008f7c:	34 01 ff ff 	mvi r1,-1                                      
 8008f80:	e0 00 00 14 	bi 8008fd0 <ftruncate+0x7c>                    
                                                                      
  if ( length >= 0 ) {                                                
    rtems_libio_t *iop;                                               
                                                                      
    rtems_libio_check_fd( fd );                                       
    iop = rtems_libio_iop( fd );                                      
 8008f84:	b4 21 18 00 	add r3,r1,r1                                   
 8008f88:	b4 61 18 00 	add r3,r3,r1                                   
 8008f8c:	78 04 08 02 	mvhi r4,0x802                                  
 8008f90:	b4 63 18 00 	add r3,r3,r3                                   
 8008f94:	38 84 08 1c 	ori r4,r4,0x81c                                
 8008f98:	b4 63 18 00 	add r3,r3,r3                                   
 8008f9c:	c8 61 08 00 	sub r1,r3,r1                                   
 8008fa0:	28 83 00 00 	lw r3,(r4+0)                                   
 8008fa4:	b4 21 08 00 	add r1,r1,r1                                   
 8008fa8:	b4 21 08 00 	add r1,r1,r1                                   
 8008fac:	b4 61 08 00 	add r1,r3,r1                                   
    rtems_libio_check_is_open( iop );                                 
 8008fb0:	28 23 00 08 	lw r3,(r1+8)                                   
 8008fb4:	20 64 01 00 	andi r4,r3,0x100                               
 8008fb8:	44 80 ff ee 	be r4,r0,8008f70 <ftruncate+0x1c>              <== NEVER TAKEN
    rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );          
 8008fbc:	20 63 00 04 	andi r3,r3,0x4                                 
 8008fc0:	44 60 00 07 	be r3,r0,8008fdc <ftruncate+0x88>              
                                                                      
    rv = (*iop->pathinfo.handlers->ftruncate_h)( iop, length );       
 8008fc4:	28 23 00 1c 	lw r3,(r1+28)                                  
 8008fc8:	28 63 00 1c 	lw r3,(r3+28)                                  
 8008fcc:	d8 60 00 00 	call r3                                        
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8008fd0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008fd4:	37 9c 00 04 	addi sp,sp,4                                   
 8008fd8:	c3 a0 00 00 	ret                                            
    rtems_libio_check_is_open( iop );                                 
    rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE );          
                                                                      
    rv = (*iop->pathinfo.handlers->ftruncate_h)( iop, length );       
  } else {                                                            
    errno = EINVAL;                                                   
 8008fdc:	f8 00 10 a6 	calli 800d274 <__errno>                        
 8008fe0:	34 02 00 16 	mvi r2,22                                      
 8008fe4:	58 22 00 00 	sw (r1+0),r2                                   
    rv = -1;                                                          
 8008fe8:	34 01 ff ff 	mvi r1,-1                                      
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8008fec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008ff0:	37 9c 00 04 	addi sp,sp,4                                   
 8008ff4:	c3 a0 00 00 	ret                                            
                                                                      

080012fc <get_disk_entry>: rtems_device_major_number major = 0; rtems_device_minor_number minor = 0; rtems_filesystem_split_dev_t(dev, major, minor); if (major < disktab_size && disktab != NULL) {
 80012fc:	78 04 08 01 	mvhi r4,0x801                                  
 8001300:	38 84 a7 54 	ori r4,r4,0xa754                               
 8001304:	28 85 00 00 	lw r5,(r4+0)                                   
                                                                      
      return dd;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return NULL;                                                        
 8001308:	34 04 00 00 	mvi r4,0                                       
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major < disktab_size && disktab != NULL) {                      
 800130c:	50 25 00 05 	bgeu r1,r5,8001320 <get_disk_entry+0x24>       <== NEVER TAKEN
 8001310:	78 05 08 01 	mvhi r5,0x801                                  
 8001314:	38 a5 a7 50 	ori r5,r5,0xa750                               
 8001318:	28 a5 00 00 	lw r5,(r5+0)                                   
 800131c:	5c a0 00 03 	bne r5,r0,8001328 <get_disk_entry+0x2c>        <== ALWAYS TAKEN
      return dd;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return NULL;                                                        
}                                                                     
 8001320:	b8 80 08 00 	mv r1,r4                                       
 8001324:	c3 a0 00 00 	ret                                            
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major < disktab_size && disktab != NULL) {                      
    rtems_disk_device_table *dtab = disktab + major;                  
 8001328:	b4 21 08 00 	add r1,r1,r1                                   
 800132c:	b4 21 08 00 	add r1,r1,r1                                   
 8001330:	b4 21 08 00 	add r1,r1,r1                                   
 8001334:	b4 a1 08 00 	add r1,r5,r1                                   
                                                                      
    if (minor < dtab->size && dtab->minor != NULL) {                  
 8001338:	28 25 00 04 	lw r5,(r1+4)                                   
 800133c:	50 45 ff f9 	bgeu r2,r5,8001320 <get_disk_entry+0x24>       <== NEVER TAKEN
 8001340:	28 21 00 00 	lw r1,(r1+0)                                   
 8001344:	44 20 ff f7 	be r1,r0,8001320 <get_disk_entry+0x24>         <== NEVER TAKEN
      rtems_disk_device *dd = dtab->minor [minor];                    
 8001348:	b4 42 10 00 	add r2,r2,r2                                   
 800134c:	b4 42 10 00 	add r2,r2,r2                                   
 8001350:	b4 22 08 00 	add r1,r1,r2                                   
 8001354:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
      if (dd != NULL && !lookup_only) {                               
 8001358:	44 80 ff f2 	be r4,r0,8001320 <get_disk_entry+0x24>         
 800135c:	5c 60 ff f1 	bne r3,r0,8001320 <get_disk_entry+0x24>        
        if (!dd->deleted) {                                           
 8001360:	40 81 00 40 	lbu r1,(r4+64)                                 
 8001364:	5c 23 00 05 	bne r1,r3,8001378 <get_disk_entry+0x7c>        
          ++dd->uses;                                                 
 8001368:	28 81 00 14 	lw r1,(r4+20)                                  
 800136c:	34 21 00 01 	addi r1,r1,1                                   
 8001370:	58 81 00 14 	sw (r4+20),r1                                  
 8001374:	e3 ff ff eb 	bi 8001320 <get_disk_entry+0x24>               
        } else {                                                      
          dd = NULL;                                                  
 8001378:	34 04 00 00 	mvi r4,0                                       
 800137c:	e3 ff ff e9 	bi 8001320 <get_disk_entry+0x24>               
                                                                      

08003140 <get_sector>: */ static rtems_status_code get_sector(int fd, uint32_t sector_num, rtems_sector_data_t **sector) {
 8003140:	37 9c ff ec 	addi sp,sp,-20                                 
 8003144:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003148:	5b 8c 00 10 	sw (sp+16),r12                                 
 800314c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003150:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003154:	5b 9d 00 04 	sw (sp+4),ra                                   
    off_t                off;                                         
    off_t                new_off;                                     
                                                                      
    if (sector == NULL)                                               
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
 8003158:	34 04 00 19 	mvi r4,25                                      
 */                                                                   
static rtems_status_code                                              
get_sector(int fd,                                                    
           uint32_t sector_num,                                       
           rtems_sector_data_t **sector)                              
{                                                                     
 800315c:	b8 60 60 00 	mv r12,r3                                      
 8003160:	b8 20 68 00 	mv r13,r1                                      
 8003164:	b8 40 70 00 	mv r14,r2                                      
    rtems_sector_data_t *s;                                           
    ssize_t              n;                                           
    off_t                off;                                         
    off_t                new_off;                                     
                                                                      
    if (sector == NULL)                                               
 8003168:	44 60 00 0b 	be r3,r0,8003194 <get_sector+0x54>             <== NEVER TAKEN
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    off = sector_num * RTEMS_IDE_SECTOR_SIZE;                         
 800316c:	b8 40 08 00 	mv r1,r2                                       
 8003170:	34 02 00 09 	mvi r2,9                                       
 8003174:	f8 00 8c 95 	calli 80263c8 <__ashlsi3>                      
 8003178:	b8 20 58 00 	mv r11,r1                                      
    new_off = lseek(fd, off, SEEK_SET);                               
 800317c:	b9 60 10 00 	mv r2,r11                                      
 8003180:	b9 a0 08 00 	mv r1,r13                                      
 8003184:	34 03 00 00 	mvi r3,0                                       
 8003188:	f8 00 05 b5 	calli 800485c <lseek>                          
    if (new_off != off) {                                             
        return RTEMS_IO_ERROR;                                        
 800318c:	34 04 00 1b 	mvi r4,27                                      
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    off = sector_num * RTEMS_IDE_SECTOR_SIZE;                         
    new_off = lseek(fd, off, SEEK_SET);                               
    if (new_off != off) {                                             
 8003190:	44 2b 00 09 	be r1,r11,80031b4 <get_sector+0x74>            <== ALWAYS TAKEN
    s->sector_num = sector_num;                                       
                                                                      
    *sector = s;                                                      
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 8003194:	b8 80 08 00 	mv r1,r4                                       
 8003198:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800319c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80031a0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80031a4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80031a8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80031ac:	37 9c 00 14 	addi sp,sp,20                                  
 80031b0:	c3 a0 00 00 	ret                                            
    new_off = lseek(fd, off, SEEK_SET);                               
    if (new_off != off) {                                             
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
 80031b4:	34 01 02 04 	mvi r1,516                                     
 80031b8:	f8 00 06 30 	calli 8004a78 <malloc>                         
 80031bc:	b8 20 58 00 	mv r11,r1                                      
    if (s == NULL)                                                    
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
 80031c0:	34 04 00 1a 	mvi r4,26                                      
    if (new_off != off) {                                             
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
    if (s == NULL)                                                    
 80031c4:	44 20 ff f4 	be r1,r0,8003194 <get_sector+0x54>             <== NEVER TAKEN
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    n = read(fd, s->data, RTEMS_IDE_SECTOR_SIZE);                     
 80031c8:	35 62 00 04 	addi r2,r11,4                                  
 80031cc:	b9 a0 08 00 	mv r1,r13                                      
 80031d0:	34 03 02 00 	mvi r3,512                                     
 80031d4:	f8 00 09 41 	calli 80056d8 <read>                           
    if (n != RTEMS_IDE_SECTOR_SIZE)                                   
 80031d8:	34 02 02 00 	mvi r2,512                                     
 80031dc:	44 22 00 0c 	be r1,r2,800320c <get_sector+0xcc>             <== ALWAYS TAKEN
    {                                                                 
        free(s);                                                      
 80031e0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80031e4:	f8 00 04 31 	calli 80042a8 <free>                           <== NOT EXECUTED
        return RTEMS_IO_ERROR;                                        
 80031e8:	34 04 00 1b 	mvi r4,27                                      <== NOT EXECUTED
    s->sector_num = sector_num;                                       
                                                                      
    *sector = s;                                                      
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 80031ec:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 80031f0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80031f4:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 80031f8:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 80031fc:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8003200:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8003204:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8003208:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    {                                                                 
        free(s);                                                      
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s->sector_num = sector_num;                                       
 800320c:	59 6e 00 00 	sw (r11+0),r14                                 
                                                                      
    *sector = s;                                                      
 8003210:	59 8b 00 00 	sw (r12+0),r11                                 
                                                                      
    return RTEMS_SUCCESSFUL;                                          
 8003214:	34 04 00 00 	mvi r4,0                                       
 8003218:	e3 ff ff df 	bi 8003194 <get_sector+0x54>                   
                                                                      

080373f8 <getdents>: int getdents( int dd_fd, char *dd_buf, int dd_len ) {
 80373f8:	37 9c ff f0 	addi sp,sp,-16                                 
 80373fc:	5b 8b 00 10 	sw (sp+16),r11                                 
 8037400:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8037404:	5b 8d 00 08 	sw (sp+8),r13                                  
 8037408:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_node_types_t type;                                 
                                                                      
  /*                                                                  
   *  Get the file control block structure associated with the file descriptor
   */                                                                 
  iop = rtems_libio_iop( dd_fd );                                     
 803740c:	78 04 08 03 	mvhi r4,0x803                                  
 8037410:	38 84 e0 14 	ori r4,r4,0xe014                               
 8037414:	28 84 00 00 	lw r4,(r4+0)                                   
int getdents(                                                         
  int   dd_fd,                                                        
  char *dd_buf,                                                       
  int   dd_len                                                        
)                                                                     
{                                                                     
 8037418:	b8 40 68 00 	mv r13,r2                                      
 803741c:	b8 60 60 00 	mv r12,r3                                      
  rtems_filesystem_node_types_t type;                                 
                                                                      
  /*                                                                  
   *  Get the file control block structure associated with the file descriptor
   */                                                                 
  iop = rtems_libio_iop( dd_fd );                                     
 8037420:	34 0b 00 00 	mvi r11,0                                      
 8037424:	50 24 00 0c 	bgeu r1,r4,8037454 <getdents+0x5c>             <== NEVER TAKEN
 8037428:	b4 21 58 00 	add r11,r1,r1                                  
 803742c:	b5 61 58 00 	add r11,r11,r1                                 
 8037430:	78 04 08 04 	mvhi r4,0x804                                  
 8037434:	b5 6b 58 00 	add r11,r11,r11                                
 8037438:	b5 6b 58 00 	add r11,r11,r11                                
 803743c:	38 84 e9 8c 	ori r4,r4,0xe98c                               
 8037440:	c9 61 08 00 	sub r1,r11,r1                                  
 8037444:	28 8b 00 00 	lw r11,(r4+0)                                  
 8037448:	b4 21 08 00 	add r1,r1,r1                                   
 803744c:	b4 21 08 00 	add r1,r1,r1                                   
 8037450:	b5 61 58 00 	add r11,r11,r1                                 
                                                                      
  /*                                                                  
   *  Make sure we are working on a directory                         
   */                                                                 
  type = rtems_filesystem_node_type( &iop->pathinfo );                
 8037454:	35 61 00 0c 	addi r1,r11,12                                 
 8037458:	fb ff 47 f1 	calli 800941c <rtems_filesystem_node_type>     
  if ( type != RTEMS_FILESYSTEM_DIRECTORY )                           
 803745c:	5c 20 00 0d 	bne r1,r0,8037490 <getdents+0x98>              
                                                                      
  /*                                                                  
   *  Return the number of bytes that were actually transfered as a result
   *  of the read attempt.                                            
   */                                                                 
  return (*iop->pathinfo.handlers->read_h)( iop, dd_buf, dd_len  );   
 8037460:	29 63 00 1c 	lw r3,(r11+28)                                 
 8037464:	b9 60 08 00 	mv r1,r11                                      
 8037468:	b9 a0 10 00 	mv r2,r13                                      
 803746c:	28 64 00 08 	lw r4,(r3+8)                                   
 8037470:	b9 80 18 00 	mv r3,r12                                      
 8037474:	d8 80 00 00 	call r4                                        
}                                                                     
 8037478:	2b 9d 00 04 	lw ra,(sp+4)                                   
 803747c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8037480:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8037484:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8037488:	37 9c 00 10 	addi sp,sp,16                                  
 803748c:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Make sure we are working on a directory                         
   */                                                                 
  type = rtems_filesystem_node_type( &iop->pathinfo );                
  if ( type != RTEMS_FILESYSTEM_DIRECTORY )                           
    rtems_set_errno_and_return_minus_one( ENOTDIR );                  
 8037490:	fb ff b1 2d 	calli 8023944 <__errno>                        
 8037494:	34 02 00 14 	mvi r2,20                                      
 8037498:	58 22 00 00 	sw (r1+0),r2                                   
 803749c:	34 01 ff ff 	mvi r1,-1                                      
 80374a0:	e3 ff ff f6 	bi 8037478 <getdents+0x80>                     
                                                                      

0800c340 <imfs_dir_read>: ssize_t imfs_dir_read( rtems_libio_t *iop, void *buffer, size_t count ) {
 800c340:	37 9c fe c0 	addi sp,sp,-320                                
 800c344:	5b 8b 00 34 	sw (sp+52),r11                                 
 800c348:	5b 8c 00 30 	sw (sp+48),r12                                 
 800c34c:	5b 8d 00 2c 	sw (sp+44),r13                                 
 800c350:	5b 8e 00 28 	sw (sp+40),r14                                 
 800c354:	5b 8f 00 24 	sw (sp+36),r15                                 
 800c358:	5b 90 00 20 	sw (sp+32),r16                                 
 800c35c:	5b 91 00 1c 	sw (sp+28),r17                                 
 800c360:	5b 92 00 18 	sw (sp+24),r18                                 
 800c364:	5b 93 00 14 	sw (sp+20),r19                                 
 800c368:	5b 94 00 10 	sw (sp+16),r20                                 
 800c36c:	5b 95 00 0c 	sw (sp+12),r21                                 
 800c370:	5b 96 00 08 	sw (sp+8),r22                                  
 800c374:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c378:	b8 20 68 00 	mv r13,r1                                      
   }                                                                  
                                                                      
   rtems_filesystem_instance_unlock( &iop->pathinfo );                
                                                                      
   return bytes_transferred;                                          
}                                                                     
 800c37c:	28 21 00 20 	lw r1,(r1+32)                                  
ssize_t imfs_dir_read(                                                
  rtems_libio_t  *iop,                                                
  void           *buffer,                                             
  size_t          count                                               
)                                                                     
{                                                                     
 800c380:	b8 40 98 00 	mv r19,r2                                      
 800c384:	b8 60 58 00 	mv r11,r3                                      
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
 800c388:	28 22 00 0c 	lw r2,(r1+12)                                  
   the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;             
   the_chain = &the_jnode->info.directory.Entries;                    
                                                                      
   /* Move to the first of the desired directory entries */           
                                                                      
   bytes_transferred = 0;                                             
 800c38c:	34 0e 00 00 	mvi r14,0                                      
 800c390:	28 42 00 00 	lw r2,(r2+0)                                   
 800c394:	d8 40 00 00 	call r2                                        
   first_entry = iop->offset;                                         
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry                                           
     + (count / sizeof( struct dirent )) * sizeof( struct dirent );   
 800c398:	b9 60 08 00 	mv r1,r11                                      
 800c39c:	34 02 01 0c 	mvi r2,268                                     
 800c3a0:	f8 00 3f 1a 	calli 801c008 <__udivsi3>                      
 800c3a4:	b4 21 20 00 	add r4,r1,r1                                   
 800c3a8:	b4 84 20 00 	add r4,r4,r4                                   
 800c3ac:	b4 84 18 00 	add r3,r4,r4                                   
 800c3b0:	b4 63 18 00 	add r3,r3,r3                                   
 800c3b4:	b4 63 18 00 	add r3,r3,r3                                   
 800c3b8:	b4 63 18 00 	add r3,r3,r3                                   
 800c3bc:	b4 83 80 00 	add r16,r4,r3                                  
   the_chain = &the_jnode->info.directory.Entries;                    
                                                                      
   /* Move to the first of the desired directory entries */           
                                                                      
   bytes_transferred = 0;                                             
   first_entry = iop->offset;                                         
 800c3c0:	29 af 00 04 	lw r15,(r13+4)                                 
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry                                           
     + (count / sizeof( struct dirent )) * sizeof( struct dirent );   
 800c3c4:	ca 01 80 00 	sub r16,r16,r1                                 
   int                  last_entry;                                   
   struct dirent        tmp_dirent;                                   
                                                                      
   rtems_filesystem_instance_lock( &iop->pathinfo );                  
                                                                      
   the_jnode = (IMFS_jnode_t *)iop->pathinfo.node_access;             
 800c3c8:	29 b1 00 14 	lw r17,(r13+20)                                
   bytes_transferred = 0;                                             
   first_entry = iop->offset;                                         
   /* protect against using sizes that are not exact multiples of the */
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry                                           
     + (count / sizeof( struct dirent )) * sizeof( struct dirent );   
 800c3cc:	b6 10 80 00 	add r16,r16,r16                                
 800c3d0:	b6 10 80 00 	add r16,r16,r16                                
 800c3d4:	b6 0f 80 00 	add r16,r16,r15                                
   }                                                                  
                                                                      
   rtems_filesystem_instance_unlock( &iop->pathinfo );                
                                                                      
   return bytes_transferred;                                          
}                                                                     
 800c3d8:	2a 2c 00 50 	lw r12,(r17+80)                                
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry                                           
     + (count / sizeof( struct dirent )) * sizeof( struct dirent );   
                                                                      
   /* The directory was not empty so try to move to the desired entry in chain*/
   for (                                                              
 800c3dc:	4c 10 00 1f 	bge r0,r16,800c458 <imfs_dir_read+0x118>       <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 800c3e0:	36 31 00 54 	addi r17,r17,84                                
      current_entry = 0,                                              
        the_node = rtems_chain_first( the_chain );                    
      current_entry < last_entry                                      
        && !rtems_chain_is_tail( the_chain, the_node );               
 800c3e4:	45 91 00 1d 	be r12,r17,800c458 <imfs_dir_read+0x118>       
 800c3e8:	34 0b 00 00 	mvi r11,0                                      
        the_node = rtems_chain_next( the_node )                       
   ) {                                                                
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
 800c3ec:	34 16 01 0c 	mvi r22,268                                    
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
         strcpy( tmp_dirent.d_name, the_jnode->name );                
 800c3f0:	37 95 00 38 	addi r21,sp,56                                 
 800c3f4:	37 94 00 44 	addi r20,sp,68                                 
      current_entry < last_entry                                      
        && !rtems_chain_is_tail( the_chain, the_node );               
      current_entry +=  sizeof( struct dirent ),                      
        the_node = rtems_chain_next( the_node )                       
   ) {                                                                
      if( current_entry >= first_entry ) {                            
 800c3f8:	49 eb 00 14 	bg r15,r11,800c448 <imfs_dir_read+0x108>       
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
 800c3fc:	29 82 00 38 	lw r2,(r12+56)                                 
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
 800c400:	35 92 00 0c 	addi r18,r12,12                                
 800c404:	ba 40 08 00 	mv r1,r18                                      
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
         tmp_dirent.d_reclen = sizeof( struct dirent );               
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
 800c408:	5b 82 00 38 	sw (sp+56),r2                                  
      current_entry +=  sizeof( struct dirent ),                      
        the_node = rtems_chain_next( the_node )                       
   ) {                                                                
      if( current_entry >= first_entry ) {                            
         /* Move the entry to the return buffer */                    
         tmp_dirent.d_off = current_entry;                            
 800c40c:	5b 8b 00 3c 	sw (sp+60),r11                                 
         tmp_dirent.d_reclen = sizeof( struct dirent );               
 800c410:	0f 96 00 40 	sh (sp+64),r22                                 
         the_jnode = (IMFS_jnode_t *) the_node;                       
         tmp_dirent.d_ino = the_jnode->st_ino;                        
         tmp_dirent.d_namlen = strlen( the_jnode->name );             
 800c414:	f8 00 09 dd 	calli 800eb88 <strlen>                         
 800c418:	0f 81 00 42 	sh (sp+66),r1                                  
         strcpy( tmp_dirent.d_name, the_jnode->name );                
 800c41c:	ba 40 10 00 	mv r2,r18                                      
 800c420:	ba 80 08 00 	mv r1,r20                                      
 800c424:	f8 00 08 90 	calli 800e664 <strcpy>                         
         memcpy(                                                      
 800c428:	b6 6e 08 00 	add r1,r19,r14                                 
 800c42c:	34 03 01 0c 	mvi r3,268                                     
 800c430:	ba a0 10 00 	mv r2,r21                                      
 800c434:	f8 00 06 8a 	calli 800de5c <memcpy>                         
            buffer + bytes_transferred,                               
            (void *)&tmp_dirent,                                      
            sizeof( struct dirent )                                   
         );                                                           
         iop->offset += sizeof( struct dirent );                      
 800c438:	29 a3 00 04 	lw r3,(r13+4)                                  
         bytes_transferred += sizeof( struct dirent );                
 800c43c:	35 ce 01 0c 	addi r14,r14,268                               
         memcpy(                                                      
            buffer + bytes_transferred,                               
            (void *)&tmp_dirent,                                      
            sizeof( struct dirent )                                   
         );                                                           
         iop->offset += sizeof( struct dirent );                      
 800c440:	34 63 01 0c 	addi r3,r3,268                                 
 800c444:	59 a3 00 04 	sw (r13+4),r3                                  
#include "imfs.h"                                                     
                                                                      
#include <string.h>                                                   
#include <dirent.h>                                                   
                                                                      
ssize_t imfs_dir_read(                                                
 800c448:	35 6b 01 0c 	addi r11,r11,268                               
   }                                                                  
                                                                      
   rtems_filesystem_instance_unlock( &iop->pathinfo );                
                                                                      
   return bytes_transferred;                                          
}                                                                     
 800c44c:	29 8c 00 00 	lw r12,(r12+0)                                 
   /* -dirent- size. These could result in unexpected results          */
   last_entry = first_entry                                           
     + (count / sizeof( struct dirent )) * sizeof( struct dirent );   
                                                                      
   /* The directory was not empty so try to move to the desired entry in chain*/
   for (                                                              
 800c450:	4d 70 00 02 	bge r11,r16,800c458 <imfs_dir_read+0x118>      
      current_entry = 0,                                              
        the_node = rtems_chain_first( the_chain );                    
      current_entry < last_entry                                      
        && !rtems_chain_is_tail( the_chain, the_node );               
 800c454:	5d 91 ff e9 	bne r12,r17,800c3f8 <imfs_dir_read+0xb8>       
   }                                                                  
                                                                      
   rtems_filesystem_instance_unlock( &iop->pathinfo );                
                                                                      
   return bytes_transferred;                                          
}                                                                     
 800c458:	29 a1 00 20 	lw r1,(r13+32)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
 800c45c:	28 22 00 0c 	lw r2,(r1+12)                                  
 800c460:	28 42 00 04 	lw r2,(r2+4)                                   
 800c464:	d8 40 00 00 	call r2                                        
 800c468:	b9 c0 08 00 	mv r1,r14                                      
 800c46c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c470:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800c474:	2b 8c 00 30 	lw r12,(sp+48)                                 
 800c478:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800c47c:	2b 8e 00 28 	lw r14,(sp+40)                                 
 800c480:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800c484:	2b 90 00 20 	lw r16,(sp+32)                                 
 800c488:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800c48c:	2b 92 00 18 	lw r18,(sp+24)                                 
 800c490:	2b 93 00 14 	lw r19,(sp+20)                                 
 800c494:	2b 94 00 10 	lw r20,(sp+16)                                 
 800c498:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800c49c:	2b 96 00 08 	lw r22,(sp+8)                                  
 800c4a0:	37 9c 01 40 	addi sp,sp,320                                 
 800c4a4:	c3 a0 00 00 	ret                                            
                                                                      

08026114 <init_etc_passwd_group>: /** * Initialize useable but dummy databases */ void init_etc_passwd_group(void) {
 8026114:	37 9c ff ec 	addi sp,sp,-20                                 
 8026118:	5b 8b 00 14 	sw (sp+20),r11                                 
 802611c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8026120:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8026124:	5b 8e 00 08 	sw (sp+8),r14                                  
 8026128:	5b 9d 00 04 	sw (sp+4),ra                                   
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
 802612c:	78 03 08 06 	mvhi r3,0x806                                  
 8026130:	38 63 ec 50 	ori r3,r3,0xec50                               
 8026134:	40 6d 00 00 	lbu r13,(r3+0)                                 
 8026138:	45 a0 00 08 	be r13,r0,8026158 <init_etc_passwd_group+0x44> 
    fprintf( fp, "root:x:0:root\n"                                    
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
  }                                                                   
}                                                                     
 802613c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026140:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8026144:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8026148:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 802614c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8026150:	37 9c 00 14 	addi sp,sp,20                                  
 8026154:	c3 a0 00 00 	ret                                            
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
 8026158:	34 04 00 01 	mvi r4,1                                       
  mkdir("/etc", 0777);                                                
 802615c:	78 01 08 06 	mvhi r1,0x806                                  
 8026160:	34 02 01 ff 	mvi r2,511                                     
  FILE *fp;                                                           
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
 8026164:	30 64 00 00 	sb (r3+0),r4                                   
  mkdir("/etc", 0777);                                                
 8026168:	38 21 4c a4 	ori r1,r1,0x4ca4                               
                                                                      
  /*                                                                  
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
 802616c:	78 0c 08 06 	mvhi r12,0x806                                 
 8026170:	78 0b 08 06 	mvhi r11,0x806                                 
  static char etc_passwd_initted = 0;                                 
                                                                      
  if (etc_passwd_initted)                                             
    return;                                                           
  etc_passwd_initted = 1;                                             
  mkdir("/etc", 0777);                                                
 8026174:	fb ff 6d 27 	calli 8001610 <mkdir>                          
                                                                      
  /*                                                                  
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
 8026178:	39 8c 4c ac 	ori r12,r12,0x4cac                             
 802617c:	39 6b 3c a8 	ori r11,r11,0x3ca8                             
 8026180:	b9 80 08 00 	mv r1,r12                                      
 8026184:	b9 60 10 00 	mv r2,r11                                      
 8026188:	f8 00 60 ea 	calli 803e530 <fopen>                          
 802618c:	b8 20 70 00 	mv r14,r1                                      
 8026190:	44 2d 00 20 	be r1,r13,8026210 <init_etc_passwd_group+0xfc> 
  }                                                                   
  else if ((fp = fopen("/etc/passwd", "w")) != NULL) {                
    fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"                        
                 "rtems:*:1:1:RTEMS Application::/:/bin/sh\n"         
                 "tty:!:2:2:tty owner::/:/bin/false\n" );             
    fclose(fp);                                                       
 8026194:	f8 00 5d fa 	calli 803d97c <fclose>                         
  }                                                                   
                                                                      
  /*                                                                  
   *  Initialize /etc/group                                           
   */                                                                 
  if ((fp = fopen("/etc/group", "r")) != NULL) {                      
 8026198:	78 0c 08 06 	mvhi r12,0x806                                 
 802619c:	39 8c 4d 20 	ori r12,r12,0x4d20                             
 80261a0:	b9 60 10 00 	mv r2,r11                                      
 80261a4:	b9 80 08 00 	mv r1,r12                                      
 80261a8:	f8 00 60 e2 	calli 803e530 <fopen>                          
 80261ac:	b8 20 58 00 	mv r11,r1                                      
 80261b0:	44 20 00 09 	be r1,r0,80261d4 <init_etc_passwd_group+0xc0>  
  }                                                                   
  else if ((fp = fopen("/etc/group", "w")) != NULL) {                 
    fprintf( fp, "root:x:0:root\n"                                    
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
 80261b4:	f8 00 5d f2 	calli 803d97c <fclose>                         
  }                                                                   
}                                                                     
 80261b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80261bc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80261c0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80261c4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80261c8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80261cc:	37 9c 00 14 	addi sp,sp,20                                  
 80261d0:	c3 a0 00 00 	ret                                            
   *  Initialize /etc/group                                           
   */                                                                 
  if ((fp = fopen("/etc/group", "r")) != NULL) {                      
    fclose(fp);                                                       
  }                                                                   
  else if ((fp = fopen("/etc/group", "w")) != NULL) {                 
 80261d4:	78 02 08 05 	mvhi r2,0x805                                  
 80261d8:	b9 80 08 00 	mv r1,r12                                      
 80261dc:	38 42 fe d0 	ori r2,r2,0xfed0                               
 80261e0:	f8 00 60 d4 	calli 803e530 <fopen>                          
 80261e4:	b8 20 60 00 	mv r12,r1                                      
 80261e8:	44 2b ff d5 	be r1,r11,802613c <init_etc_passwd_group+0x28> <== NEVER TAKEN
    fprintf( fp, "root:x:0:root\n"                                    
 80261ec:	78 01 08 06 	mvhi r1,0x806                                  
 80261f0:	34 02 00 01 	mvi r2,1                                       
 80261f4:	34 03 00 2a 	mvi r3,42                                      
 80261f8:	b9 80 20 00 	mv r4,r12                                      
 80261fc:	38 21 4d 2c 	ori r1,r1,0x4d2c                               
 8026200:	f8 00 66 06 	calli 803fa18 <fwrite>                         
                 "rtems:x:1:rtems\n"                                  
                 "tty:x:2:tty\n" );                                   
    fclose(fp);                                                       
 8026204:	b9 80 08 00 	mv r1,r12                                      
 8026208:	f8 00 5d dd 	calli 803d97c <fclose>                         
 802620c:	e3 ff ff eb 	bi 80261b8 <init_etc_passwd_group+0xa4>        
   *  Initialize /etc/passwd                                          
   */                                                                 
  if ((fp = fopen("/etc/passwd", "r")) != NULL) {                     
    fclose(fp);                                                       
  }                                                                   
  else if ((fp = fopen("/etc/passwd", "w")) != NULL) {                
 8026210:	78 02 08 05 	mvhi r2,0x805                                  
 8026214:	b9 80 08 00 	mv r1,r12                                      
 8026218:	38 42 fe d0 	ori r2,r2,0xfed0                               
 802621c:	f8 00 60 c5 	calli 803e530 <fopen>                          
 8026220:	b8 20 60 00 	mv r12,r1                                      
 8026224:	44 2e ff dd 	be r1,r14,8026198 <init_etc_passwd_group+0x84> <== NEVER TAKEN
    fprintf(fp, "root:*:0:0:root::/:/bin/sh\n"                        
 8026228:	78 01 08 06 	mvhi r1,0x806                                  
 802622c:	38 21 4c b8 	ori r1,r1,0x4cb8                               
 8026230:	34 02 00 01 	mvi r2,1                                       
 8026234:	34 03 00 66 	mvi r3,102                                     
 8026238:	b9 80 20 00 	mv r4,r12                                      
 802623c:	f8 00 65 f7 	calli 803fa18 <fwrite>                         
                 "rtems:*:1:1:RTEMS Application::/:/bin/sh\n"         
                 "tty:!:2:2:tty owner::/:/bin/false\n" );             
    fclose(fp);                                                       
 8026240:	b9 80 08 00 	mv r1,r12                                      
 8026244:	e3 ff ff d4 	bi 8026194 <init_etc_passwd_group+0x80>        
                                                                      

0800557c <iproc>: /* * Process a single input character */ static int iproc (unsigned char c, struct rtems_termios_tty *tty) {
 800557c:	37 9c ff f4 	addi sp,sp,-12                                 
 8005580:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8005584:	5b 8c 00 08 	sw (sp+8),r12                                  
 8005588:	5b 9d 00 04 	sw (sp+4),ra                                   
 800558c:	b8 40 60 00 	mv r12,r2                                      
  if (tty->termios.c_iflag & ISTRIP)                                  
 8005590:	28 42 00 30 	lw r2,(r2+48)                                  
/*                                                                    
 * Process a single input character                                   
 */                                                                   
static int                                                            
iproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
 8005594:	b8 20 58 00 	mv r11,r1                                      
  if (tty->termios.c_iflag & ISTRIP)                                  
 8005598:	20 41 00 20 	andi r1,r2,0x20                                
 800559c:	44 20 00 02 	be r1,r0,80055a4 <iproc+0x28>                  <== ALWAYS TAKEN
    c &= 0x7f;                                                        
 80055a0:	21 6b 00 7f 	andi r11,r11,0x7f                              <== NOT EXECUTED
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
 80055a4:	20 41 02 00 	andi r1,r2,0x200                               
 80055a8:	44 20 00 0b 	be r1,r0,80055d4 <iproc+0x58>                  
    c = tolower (c);                                                  
 80055ac:	78 01 08 02 	mvhi r1,0x802                                  
 80055b0:	38 21 82 e0 	ori r1,r1,0x82e0                               
 80055b4:	28 23 00 00 	lw r3,(r1+0)                                   
 80055b8:	b9 60 08 00 	mv r1,r11                                      
 80055bc:	b4 6b 58 00 	add r11,r3,r11                                 
 80055c0:	41 64 00 01 	lbu r4,(r11+1)                                 
 80055c4:	34 03 00 01 	mvi r3,1                                       
 80055c8:	20 84 00 03 	andi r4,r4,0x3                                 
 80055cc:	44 83 00 40 	be r4,r3,80056cc <iproc+0x150>                 
 80055d0:	20 2b 00 ff 	andi r11,r1,0xff                               
                                                                      
  if (c == '\r') {                                                    
 80055d4:	34 01 00 0d 	mvi r1,13                                      
 80055d8:	45 61 00 19 	be r11,r1,800563c <iproc+0xc0>                 
    if (tty->termios.c_iflag & IGNCR)                                 
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
      c = '\n';                                                       
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
 80055dc:	34 01 00 0a 	mvi r1,10                                      
 80055e0:	45 61 00 37 	be r11,r1,80056bc <iproc+0x140>                
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
 80055e4:	5d 60 00 1c 	bne r11,r0,8005654 <iproc+0xd8>                <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
 80055e8:	78 01 08 02 	mvhi r1,0x802                                  
 80055ec:	38 21 81 40 	ori r1,r1,0x8140                               
 80055f0:	28 23 00 00 	lw r3,(r1+0)                                   
 80055f4:	29 82 00 20 	lw r2,(r12+32)                                 
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
  }                                                                   
  return 0;                                                           
 80055f8:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
                                                                      
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
 80055fc:	34 63 ff ff 	addi r3,r3,-1                                  
 8005600:	50 43 00 0a 	bgeu r2,r3,8005628 <iproc+0xac>                <== NEVER TAKEN
    if (tty->termios.c_lflag & ECHO)                                  
 8005604:	29 81 00 3c 	lw r1,(r12+60)                                 
 8005608:	20 21 00 08 	andi r1,r1,0x8                                 
 800560c:	5c 20 00 32 	bne r1,r0,80056d4 <iproc+0x158>                <== ALWAYS TAKEN
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
 8005610:	29 84 00 1c 	lw r4,(r12+28)                                 
 8005614:	34 43 00 01 	addi r3,r2,1                                   
  }                                                                   
  return 0;                                                           
 8005618:	34 01 00 00 	mvi r1,0                                       
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
 800561c:	b4 82 10 00 	add r2,r4,r2                                   
 8005620:	30 4b 00 00 	sb (r2+0),r11                                  
 8005624:	59 83 00 20 	sw (r12+32),r3                                 
  }                                                                   
  return 0;                                                           
}                                                                     
 8005628:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800562c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8005630:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8005634:	37 9c 00 0c 	addi sp,sp,12                                  
 8005638:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
 800563c:	20 43 00 80 	andi r3,r2,0x80                                
      return 0;                                                       
 8005640:	34 01 00 00 	mvi r1,0                                       
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
 8005644:	5c 60 ff f9 	bne r3,r0,8005628 <iproc+0xac>                 <== NEVER TAKEN
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
 8005648:	20 42 01 00 	andi r2,r2,0x100                               
 800564c:	44 43 00 02 	be r2,r3,8005654 <iproc+0xd8>                  <== NEVER TAKEN
      c = '\n';                                                       
 8005650:	34 0b 00 0a 	mvi r11,10                                     
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
 8005654:	29 82 00 3c 	lw r2,(r12+60)                                 
 8005658:	20 41 00 02 	andi r1,r2,0x2                                 
 800565c:	44 20 ff e3 	be r1,r0,80055e8 <iproc+0x6c>                  
    if (c == tty->termios.c_cc[VERASE]) {                             
 8005660:	41 81 00 43 	lbu r1,(r12+67)                                
 8005664:	44 2b 00 37 	be r1,r11,8005740 <iproc+0x1c4>                
      erase (tty, 0);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
 8005668:	41 81 00 44 	lbu r1,(r12+68)                                
 800566c:	44 2b 00 23 	be r1,r11,80056f8 <iproc+0x17c>                
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
 8005670:	41 83 00 45 	lbu r3,(r12+69)                                
      return 1;                                                       
 8005674:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
 8005678:	44 6b ff ec 	be r3,r11,8005628 <iproc+0xac>                 <== NEVER TAKEN
      return 1;                                                       
    } else if (c == '\n') {                                           
 800567c:	34 01 00 0a 	mvi r1,10                                      
 8005680:	45 61 00 23 	be r11,r1,800570c <iproc+0x190>                
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
 8005684:	41 81 00 4c 	lbu r1,(r12+76)                                
 8005688:	44 2b 00 03 	be r1,r11,8005694 <iproc+0x118>                <== NEVER TAKEN
 800568c:	41 81 00 51 	lbu r1,(r12+81)                                
 8005690:	5c 2b ff d6 	bne r1,r11,80055e8 <iproc+0x6c>                <== ALWAYS TAKEN
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
 8005694:	20 42 00 08 	andi r2,r2,0x8                                 <== NOT EXECUTED
 8005698:	5c 40 00 14 	bne r2,r0,80056e8 <iproc+0x16c>                <== NOT EXECUTED
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
 800569c:	29 83 00 20 	lw r3,(r12+32)                                 <== NOT EXECUTED
 80056a0:	29 84 00 1c 	lw r4,(r12+28)                                 <== NOT EXECUTED
      return 1;                                                       
 80056a4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
 80056a8:	34 62 00 01 	addi r2,r3,1                                   <== NOT EXECUTED
 80056ac:	b4 83 18 00 	add r3,r4,r3                                   <== NOT EXECUTED
 80056b0:	30 6b 00 00 	sb (r3+0),r11                                  <== NOT EXECUTED
 80056b4:	59 82 00 20 	sw (r12+32),r2                                 <== NOT EXECUTED
      return 1;                                                       
 80056b8:	e3 ff ff dc 	bi 8005628 <iproc+0xac>                        <== NOT EXECUTED
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
      c = '\n';                                                       
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
 80056bc:	20 42 00 40 	andi r2,r2,0x40                                
 80056c0:	44 40 ff e5 	be r2,r0,8005654 <iproc+0xd8>                  <== ALWAYS TAKEN
    c = '\r';                                                         
 80056c4:	34 0b 00 0d 	mvi r11,13                                     <== NOT EXECUTED
 80056c8:	e3 ff ff e3 	bi 8005654 <iproc+0xd8>                        <== NOT EXECUTED
{                                                                     
  if (tty->termios.c_iflag & ISTRIP)                                  
    c &= 0x7f;                                                        
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
 80056cc:	34 21 00 20 	addi r1,r1,32                                  
 80056d0:	e3 ff ff c0 	bi 80055d0 <iproc+0x54>                        
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
 80056d4:	b9 80 10 00 	mv r2,r12                                      
 80056d8:	b9 60 08 00 	mv r1,r11                                      
 80056dc:	fb ff fe f7 	calli 80052b8 <echo>                           
 80056e0:	29 82 00 20 	lw r2,(r12+32)                                 
 80056e4:	e3 ff ff cb 	bi 8005610 <iproc+0x94>                        
      tty->cbuf[tty->ccount++] = c;                                   
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
        echo (c, tty);                                                
 80056e8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80056ec:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 80056f0:	fb ff fe f2 	calli 80052b8 <echo>                           <== NOT EXECUTED
 80056f4:	e3 ff ff ea 	bi 800569c <iproc+0x120>                       <== NOT EXECUTED
    if (c == tty->termios.c_cc[VERASE]) {                             
      erase (tty, 0);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
      erase (tty, 1);                                                 
 80056f8:	b9 80 08 00 	mv r1,r12                                      
 80056fc:	34 02 00 01 	mvi r2,1                                       
 8005700:	fb ff ff 16 	calli 8005358 <erase>                          
      return 0;                                                       
 8005704:	34 01 00 00 	mvi r1,0                                       
 8005708:	e3 ff ff c8 	bi 8005628 <iproc+0xac>                        
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
      return 1;                                                       
    } else if (c == '\n') {                                           
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
 800570c:	20 42 00 48 	andi r2,r2,0x48                                
 8005710:	44 40 00 03 	be r2,r0,800571c <iproc+0x1a0>                 <== NEVER TAKEN
        echo (c, tty);                                                
 8005714:	b9 80 10 00 	mv r2,r12                                      
 8005718:	fb ff fe e8 	calli 80052b8 <echo>                           
      tty->cbuf[tty->ccount++] = c;                                   
 800571c:	29 82 00 20 	lw r2,(r12+32)                                 
 8005720:	29 83 00 1c 	lw r3,(r12+28)                                 
 8005724:	34 41 00 01 	addi r1,r2,1                                   
 8005728:	b4 62 10 00 	add r2,r3,r2                                   
 800572c:	34 03 00 0a 	mvi r3,10                                      
 8005730:	30 43 00 00 	sb (r2+0),r3                                   
 8005734:	59 81 00 20 	sw (r12+32),r1                                 
      return 1;                                                       
 8005738:	34 01 00 01 	mvi r1,1                                       
 800573c:	e3 ff ff bb 	bi 8005628 <iproc+0xac>                        
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
    if (c == tty->termios.c_cc[VERASE]) {                             
      erase (tty, 0);                                                 
 8005740:	b9 80 08 00 	mv r1,r12                                      
 8005744:	34 02 00 00 	mvi r2,0                                       
 8005748:	fb ff ff 04 	calli 8005358 <erase>                          
      return 0;                                                       
 800574c:	34 01 00 00 	mvi r1,0                                       
 8005750:	e3 ff ff b6 	bi 8005628 <iproc+0xac>                        
                                                                      

0801c764 <killinfo>: int killinfo( pid_t pid, int sig, const union sigval *value ) {
 801c764:	37 9c ff d8 	addi sp,sp,-40                                 
 801c768:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801c76c:	5b 8c 00 18 	sw (sp+24),r12                                 
 801c770:	5b 8d 00 14 	sw (sp+20),r13                                 
 801c774:	5b 8e 00 10 	sw (sp+16),r14                                 
 801c778:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801c77c:	5b 90 00 08 	sw (sp+8),r16                                  
 801c780:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c784:	b8 20 58 00 	mv r11,r1                                      
 801c788:	b8 40 60 00 	mv r12,r2                                      
 801c78c:	b8 60 70 00 	mv r14,r3                                      
  POSIX_signals_Siginfo_node  *psiginfo;                              
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
 801c790:	fb ff fe f0 	calli 801c350 <getpid>                         
 801c794:	5c 2b 00 a8 	bne r1,r11,801ca34 <killinfo+0x2d0>            
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  /*                                                                  
   *  Validate the signal passed.                                     
   */                                                                 
  if ( !sig )                                                         
 801c798:	45 80 00 04 	be r12,r0,801c7a8 <killinfo+0x44>              
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 801c79c:	35 82 ff ff 	addi r2,r12,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 801c7a0:	34 01 00 1f 	mvi r1,31                                      
 801c7a4:	50 22 00 0e 	bgeu r1,r2,801c7dc <killinfo+0x78>             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 801c7a8:	fb ff c2 b3 	calli 800d274 <__errno>                        
 801c7ac:	34 02 00 16 	mvi r2,22                                      
 801c7b0:	58 22 00 00 	sw (r1+0),r2                                   
 801c7b4:	34 01 ff ff 	mvi r1,-1                                      
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 801c7b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c7bc:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801c7c0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801c7c4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801c7c8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801c7cc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801c7d0:	2b 90 00 08 	lw r16,(sp+8)                                  
 801c7d4:	37 9c 00 28 	addi sp,sp,40                                  
 801c7d8:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
 801c7dc:	b5 8c 80 00 	add r16,r12,r12                                
 801c7e0:	b6 0c 08 00 	add r1,r16,r12                                 
 801c7e4:	78 0d 08 02 	mvhi r13,0x802                                 
 801c7e8:	b4 21 08 00 	add r1,r1,r1                                   
 801c7ec:	39 ad 0e 68 	ori r13,r13,0xe68                              
 801c7f0:	b4 21 08 00 	add r1,r1,r1                                   
 801c7f4:	b5 a1 08 00 	add r1,r13,r1                                  
 801c7f8:	28 23 00 08 	lw r3,(r1+8)                                   
 801c7fc:	34 0f 00 01 	mvi r15,1                                      
    return 0;                                                         
 801c800:	34 01 00 00 	mvi r1,0                                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  /*                                                                  
   *  If the signal is being ignored, then we are out of here.        
   */                                                                 
  if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN )          
 801c804:	44 6f ff ed 	be r3,r15,801c7b8 <killinfo+0x54>              
  /*                                                                  
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
 801c808:	65 83 00 04 	cmpei r3,r12,4                                 
 801c80c:	65 81 00 08 	cmpei r1,r12,8                                 
 801c810:	b8 61 08 00 	or r1,r3,r1                                    
 801c814:	5c 20 00 42 	bne r1,r0,801c91c <killinfo+0x1b8>             
 801c818:	34 01 00 0b 	mvi r1,11                                      
 801c81c:	45 81 00 40 	be r12,r1,801c91c <killinfo+0x1b8>             
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
 801c820:	34 01 00 01 	mvi r1,1                                       
 801c824:	fb ff fd 1f 	calli 801bca0 <__ashlsi3>                      
                                                                      
  /*                                                                  
   *  Build up a siginfo structure                                    
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
 801c828:	5b 8c 00 20 	sw (sp+32),r12                                 
  siginfo->si_code = SI_USER;                                         
 801c82c:	5b 8f 00 24 	sw (sp+36),r15                                 
 801c830:	b8 20 58 00 	mv r11,r1                                      
  if ( !value ) {                                                     
 801c834:	45 c0 00 3e 	be r14,r0,801c92c <killinfo+0x1c8>             
    siginfo->si_value.sival_int = 0;                                  
  } else {                                                            
    siginfo->si_value = *value;                                       
 801c838:	29 c1 00 00 	lw r1,(r14+0)                                  
 801c83c:	5b 81 00 28 	sw (sp+40),r1                                  
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 801c840:	78 01 08 02 	mvhi r1,0x802                                  
 801c844:	38 21 09 58 	ori r1,r1,0x958                                
 801c848:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 801c84c:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 801c850:	58 22 00 00 	sw (r1+0),r2                                   
 */                                                                   
void _POSIX_signals_Manager_Initialization(void);                     
                                                                      
static inline void _POSIX_signals_Add_post_switch_extension(void)     
{                                                                     
  _API_extensions_Add_post_switch( &_POSIX_signals_Post_switch );     
 801c854:	78 01 08 02 	mvhi r1,0x802                                  
 801c858:	38 21 01 bc 	ori r1,r1,0x1bc                                
 801c85c:	fb ff 9f b8 	calli 800473c <_API_extensions_Add_post_switch>
                                                                      
  /*                                                                  
   *  Is the currently executing thread interested?  If so then it will
   *  get it an execute it as soon as the dispatcher executes.        
   */                                                                 
  the_thread = _Thread_Executing;                                     
 801c860:	78 01 08 02 	mvhi r1,0x802                                  
 801c864:	38 21 0d e0 	ori r1,r1,0xde0                                
 801c868:	28 21 00 10 	lw r1,(r1+16)                                  
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
  if ( _POSIX_signals_Is_interested( api, mask ) ) {                  
 801c86c:	28 22 01 1c 	lw r2,(r1+284)                                 
 801c870:	28 42 00 d0 	lw r2,(r2+208)                                 
 801c874:	a4 40 10 00 	not r2,r2                                      
 801c878:	a1 62 10 00 	and r2,r11,r2                                  
 801c87c:	5c 40 00 18 	bne r2,r0,801c8dc <killinfo+0x178>             
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 801c880:	78 01 08 02 	mvhi r1,0x802                                  
 801c884:	38 21 0f f4 	ori r1,r1,0xff4                                
 801c888:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
 801c88c:	78 04 08 02 	mvhi r4,0x802                                  
 801c890:	38 84 0f f8 	ori r4,r4,0xff8                                
 801c894:	44 64 00 28 	be r3,r4,801c934 <killinfo+0x1d0>              
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 801c898:	28 62 00 30 	lw r2,(r3+48)                                  
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
 801c89c:	b8 60 08 00 	mv r1,r3                                       
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
 801c8a0:	28 65 01 1c 	lw r5,(r3+284)                                 
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 801c8a4:	a1 62 10 00 	and r2,r11,r2                                  
 801c8a8:	44 40 00 09 	be r2,r0,801c8cc <killinfo+0x168>              
 801c8ac:	e0 00 00 0c 	bi 801c8dc <killinfo+0x178>                    
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
 801c8b0:	28 63 00 00 	lw r3,(r3+0)                                   
                                                                      
  /* XXX violation of visibility -- need to define thread queue support */
                                                                      
  the_chain = &_POSIX_signals_Wait_queue.Queues.Fifo;                 
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
 801c8b4:	44 64 00 20 	be r3,r4,801c934 <killinfo+0x1d0>              <== ALWAYS TAKEN
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 801c8b8:	28 62 00 30 	lw r2,(r3+48)                                  <== NOT EXECUTED
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
    api = the_thread->API_Extensions[ THREAD_API_POSIX ];             
 801c8bc:	28 65 01 1c 	lw r5,(r3+284)                                 <== NOT EXECUTED
                                                                      
  for ( the_node = _Chain_First( the_chain );                         
        !_Chain_Is_tail( the_chain, the_node ) ;                      
        the_node = the_node->next ) {                                 
                                                                      
    the_thread = (Thread_Control *)the_node;                          
 801c8c0:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
    #endif                                                            
                                                                      
    /*                                                                
     * Is this thread is actually blocked waiting for the signal?     
     */                                                               
    if (the_thread->Wait.option & mask)                               
 801c8c4:	a1 62 10 00 	and r2,r11,r2                                  <== NOT EXECUTED
 801c8c8:	5c 40 00 05 	bne r2,r0,801c8dc <killinfo+0x178>             <== NOT EXECUTED
                                                                      
    /*                                                                
     * Is this thread is blocked waiting for another signal but has   
     * not blocked this one?                                          
     */                                                               
    if (~api->signals_blocked & mask)                                 
 801c8cc:	28 a5 00 d0 	lw r5,(r5+208)                                 
 801c8d0:	a4 a0 28 00 	not r5,r5                                      
 801c8d4:	a1 65 28 00 	and r5,r11,r5                                  
 801c8d8:	44 a2 ff f6 	be r5,r2,801c8b0 <killinfo+0x14c>              
                                                                      
  /*                                                                  
   *  Returns true if the signal was synchronously given to a thread  
   *  blocked waiting for the signal.                                 
   */                                                                 
  if ( _POSIX_signals_Unblock_thread( the_thread, sig, siginfo ) ) {  
 801c8dc:	b9 80 10 00 	mv r2,r12                                      
 801c8e0:	37 83 00 20 	addi r3,sp,32                                  
 801c8e4:	f8 00 00 6a 	calli 801ca8c <_POSIX_signals_Unblock_thread>  
 801c8e8:	5c 20 00 0a 	bne r1,r0,801c910 <killinfo+0x1ac>             
                                                                      
  /*                                                                  
   *  We may have woken up a thread but we definitely need to post the
   *  signal to the process wide information set.                     
   */                                                                 
  _POSIX_signals_Set_process_signals( mask );                         
 801c8ec:	b9 60 08 00 	mv r1,r11                                      
 801c8f0:	f8 00 00 5c 	calli 801ca60 <_POSIX_signals_Set_process_signals>
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
 801c8f4:	b6 0c 60 00 	add r12,r16,r12                                
 801c8f8:	b5 8c 08 00 	add r1,r12,r12                                 
 801c8fc:	b4 21 08 00 	add r1,r1,r1                                   
 801c900:	b5 a1 68 00 	add r13,r13,r1                                 
 801c904:	29 a2 00 00 	lw r2,(r13+0)                                  
 801c908:	34 01 00 02 	mvi r1,2                                       
 801c90c:	44 41 00 38 	be r2,r1,801c9ec <killinfo+0x288>              
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
  }                                                                   
                                                                      
  DEBUG_STEP("\n");                                                   
  _Thread_Enable_dispatch();                                          
 801c910:	fb ff a8 c9 	calli 8006c34 <_Thread_Enable_dispatch>        
  return 0;                                                           
 801c914:	34 01 00 00 	mvi r1,0                                       
 801c918:	e3 ff ff a8 	bi 801c7b8 <killinfo+0x54>                     
   *  P1003.1c/Draft 10, p. 33 says that certain signals should always
   *  be directed to the executing thread such as those caused by hardware
   *  faults.                                                         
   */                                                                 
  if ( (sig == SIGFPE) || (sig == SIGILL) || (sig == SIGSEGV ) )      
      return pthread_kill( pthread_self(), sig );                     
 801c91c:	f8 00 01 0b 	calli 801cd48 <pthread_self>                   
 801c920:	b9 80 10 00 	mv r2,r12                                      
 801c924:	f8 00 00 bd 	calli 801cc18 <pthread_kill>                   
 801c928:	e3 ff ff a4 	bi 801c7b8 <killinfo+0x54>                     
   */                                                                 
  siginfo = &siginfo_struct;                                          
  siginfo->si_signo = sig;                                            
  siginfo->si_code = SI_USER;                                         
  if ( !value ) {                                                     
    siginfo->si_value.sival_int = 0;                                  
 801c92c:	5b 80 00 28 	sw (sp+40),r0                                  
 801c930:	e3 ff ff c4 	bi 801c840 <killinfo+0xdc>                     
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 801c934:	78 01 08 02 	mvhi r1,0x802                                  
 801c938:	38 21 00 d8 	ori r1,r1,0xd8                                 
 801c93c:	40 26 00 00 	lbu r6,(r1+0)                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 801c940:	78 01 08 02 	mvhi r1,0x802                                  
 801c944:	38 21 08 f4 	ori r1,r1,0x8f4                                
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 801c948:	78 08 08 02 	mvhi r8,0x802                                  
 */                                                                   
                                                                      
#define _POSIX_signals_Is_interested( _api, _mask ) \                 
  ( ~(_api)->signals_blocked & (_mask) )                              
                                                                      
int killinfo(                                                         
 801c94c:	34 2a 00 10 	addi r10,r1,16                                 
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
 801c950:	34 c6 00 01 	addi r6,r6,1                                   
 801c954:	39 08 08 fc 	ori r8,r8,0x8fc                                
   *                                                                  
   *  NOTES:                                                          
   *                                                                  
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
 801c958:	34 01 00 00 	mvi r1,0                                       
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_INTERRUPTIBLE_BY_SIGNAL);              
 801c95c:	78 0f 10 00 	mvhi r15,0x1000                                
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
                                                                      
    /*                                                                
     *  This can occur when no one is interested and an API is not configured.
     */                                                               
    if ( !_Objects_Information_table[ the_api ] )                     
 801c960:	29 02 00 00 	lw r2,(r8+0)                                   
 801c964:	44 40 00 1e 	be r2,r0,801c9dc <killinfo+0x278>              <== NEVER TAKEN
      continue;                                                       
                                                                      
    the_info = _Objects_Information_table[ the_api ][ 1 ];            
 801c968:	28 42 00 04 	lw r2,(r2+4)                                   
       */                                                             
      if ( !the_info )                                                
        continue;                                                     
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
 801c96c:	2c 47 00 10 	lhu r7,(r2+16)                                 
    object_table = the_info->local_table;                             
 801c970:	28 44 00 1c 	lw r4,(r2+28)                                  
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 801c974:	44 e0 00 1a 	be r7,r0,801c9dc <killinfo+0x278>              
 801c978:	34 03 00 01 	mvi r3,1                                       
      the_thread = (Thread_Control *) object_table[ index ];          
 801c97c:	28 82 00 04 	lw r2,(r4+4)                                   
                                                                      
      if ( !the_thread )                                              
 801c980:	44 40 00 14 	be r2,r0,801c9d0 <killinfo+0x26c>              
                                                                      
      /*                                                              
       *  If this thread is of lower priority than the interested thread,
       *  go on to the next thread.                                   
       */                                                             
      if ( the_thread->current_priority > interested_priority )       
 801c984:	28 45 00 14 	lw r5,(r2+20)                                  
 801c988:	54 a6 00 12 	bgu r5,r6,801c9d0 <killinfo+0x26c>             
      #if defined(RTEMS_DEBUG)                                        
        if ( !api )                                                   
          continue;                                                   
      #endif                                                          
                                                                      
      if ( !_POSIX_signals_Is_interested( api, mask ) )               
 801c98c:	28 49 01 1c 	lw r9,(r2+284)                                 
 801c990:	29 29 00 d0 	lw r9,(r9+208)                                 
 801c994:	a5 20 48 00 	not r9,r9                                      
 801c998:	a1 69 48 00 	and r9,r11,r9                                  
 801c99c:	45 20 00 0d 	be r9,r0,801c9d0 <killinfo+0x26c>              
       *                                                              
       *  NOTE: We initialized interested_priority to PRIORITY_MAXIMUM + 1
       *        so we never have to worry about deferencing a NULL    
       *        interested thread.                                    
       */                                                             
      if ( the_thread->current_priority < interested_priority ) {     
 801c9a0:	54 c5 00 0a 	bgu r6,r5,801c9c8 <killinfo+0x264>             
       *  and blocking interruptibutable by signal.                   
       *                                                              
       *  If the interested thread is ready, don't think about changing.
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
 801c9a4:	44 20 00 0b 	be r1,r0,801c9d0 <killinfo+0x26c>              <== NEVER TAKEN
 801c9a8:	28 29 00 10 	lw r9,(r1+16)                                  
 801c9ac:	45 20 00 09 	be r9,r0,801c9d0 <killinfo+0x26c>              <== NEVER TAKEN
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 801c9b0:	28 4e 00 10 	lw r14,(r2+16)                                 
 801c9b4:	45 c0 00 05 	be r14,r0,801c9c8 <killinfo+0x264>             
 801c9b8:	a1 2f 48 00 	and r9,r9,r15                                  
          continue;                                                   
        }                                                             
                                                                      
        DEBUG_STEP("6");                                              
        /* prefer blocked/interruptible over blocked/not interruptible */
        if ( !_States_Is_interruptible_by_signal(interested->current_state) ) {
 801c9bc:	5d 20 00 05 	bne r9,r0,801c9d0 <killinfo+0x26c>             
 801c9c0:	a1 cf 70 00 	and r14,r14,r15                                
          DEBUG_STEP("7");                                            
          if ( _States_Is_interruptible_by_signal(the_thread->current_state) ) {
 801c9c4:	45 c9 00 03 	be r14,r9,801c9d0 <killinfo+0x26c>             
       */                                                             
                                                                      
      if ( interested && !_States_Is_ready( interested->current_state ) ) {
        /* preferred ready over blocked */                            
        DEBUG_STEP("5");                                              
        if ( _States_Is_ready( the_thread->current_state ) ) {        
 801c9c8:	b8 a0 30 00 	mv r6,r5                                       
 801c9cc:	b8 40 08 00 	mv r1,r2                                       
    #endif                                                            
                                                                      
    maximum = the_info->maximum;                                      
    object_table = the_info->local_table;                             
                                                                      
    for ( index = 1 ; index <= maximum ; index++ ) {                  
 801c9d0:	34 63 00 01 	addi r3,r3,1                                   
 801c9d4:	34 84 00 04 	addi r4,r4,4                                   
 801c9d8:	50 e3 ff e9 	bgeu r7,r3,801c97c <killinfo+0x218>            
 801c9dc:	35 08 00 04 	addi r8,r8,4                                   
   *    + rtems internal threads do not receive signals.              
   */                                                                 
  interested = NULL;                                                  
  interested_priority = PRIORITY_MAXIMUM + 1;                         
                                                                      
  for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
 801c9e0:	5d 0a ff e0 	bne r8,r10,801c960 <killinfo+0x1fc>            
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( interested ) {                                                 
 801c9e4:	5c 20 ff be 	bne r1,r0,801c8dc <killinfo+0x178>             
 801c9e8:	e3 ff ff c1 	bi 801c8ec <killinfo+0x188>                    
  _POSIX_signals_Set_process_signals( mask );                         
                                                                      
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
 801c9ec:	78 01 08 02 	mvhi r1,0x802                                  
 801c9f0:	38 21 0f e8 	ori r1,r1,0xfe8                                
 801c9f4:	fb ff 9f ce 	calli 800492c <_Chain_Get>                     
 801c9f8:	b8 20 10 00 	mv r2,r1                                       
    if ( !psiginfo ) {                                                
 801c9fc:	44 20 00 13 	be r1,r0,801ca48 <killinfo+0x2e4>              
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 801ca00:	2b 83 00 20 	lw r3,(sp+32)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 801ca04:	b5 8c 60 00 	add r12,r12,r12                                
 801ca08:	78 01 08 02 	mvhi r1,0x802                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 801ca0c:	58 43 00 08 	sw (r2+8),r3                                   
 801ca10:	2b 83 00 24 	lw r3,(sp+36)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 801ca14:	b5 8c 60 00 	add r12,r12,r12                                
 801ca18:	38 21 10 60 	ori r1,r1,0x1060                               
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 801ca1c:	58 43 00 0c 	sw (r2+12),r3                                  
 801ca20:	2b 83 00 28 	lw r3,(sp+40)                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 801ca24:	b5 81 08 00 	add r1,r12,r1                                  
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
    }                                                                 
                                                                      
    psiginfo->Info = *siginfo;                                        
 801ca28:	58 43 00 10 	sw (r2+16),r3                                  
                                                                      
    _Chain_Append( &_POSIX_signals_Siginfo[ sig ], &psiginfo->Node ); 
 801ca2c:	fb ff 9f b4 	calli 80048fc <_Chain_Append>                  
 801ca30:	e3 ff ff b8 	bi 801c910 <killinfo+0x1ac>                    
                                                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
  if ( pid != getpid() )                                              
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 801ca34:	fb ff c2 10 	calli 800d274 <__errno>                        
 801ca38:	34 02 00 03 	mvi r2,3                                       
 801ca3c:	58 22 00 00 	sw (r1+0),r2                                   
 801ca40:	34 01 ff ff 	mvi r1,-1                                      
 801ca44:	e3 ff ff 5d 	bi 801c7b8 <killinfo+0x54>                     
  if ( _POSIX_signals_Vectors[ sig ].sa_flags == SA_SIGINFO ) {       
                                                                      
    psiginfo = (POSIX_signals_Siginfo_node *)                         
               _Chain_Get( &_POSIX_signals_Inactive_siginfo );        
    if ( !psiginfo ) {                                                
      _Thread_Enable_dispatch();                                      
 801ca48:	fb ff a8 7b 	calli 8006c34 <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one( EAGAIN );                 
 801ca4c:	fb ff c2 0a 	calli 800d274 <__errno>                        
 801ca50:	34 02 00 0b 	mvi r2,11                                      
 801ca54:	58 22 00 00 	sw (r1+0),r2                                   
 801ca58:	34 01 ff ff 	mvi r1,-1                                      
 801ca5c:	e3 ff ff 57 	bi 801c7b8 <killinfo+0x54>                     
                                                                      

08001fe0 <libc_wrapup>: extern void _wrapup_reent(struct _reent *); extern void _reclaim_reent(struct _reent *); void libc_wrapup(void) {
 8001fe0:	37 9c ff f4 	addi sp,sp,-12                                 
 8001fe4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8001fe8:	5b 8c 00 08 	sw (sp+8),r12                                  
 8001fec:	5b 9d 00 04 	sw (sp+4),ra                                   
  /*                                                                  
   *  In case RTEMS is already down, don't do this.  It could be      
   *  dangerous.                                                      
   */                                                                 
                                                                      
  if (!_System_state_Is_up(_System_state_Get()))                      
 8001ff0:	78 01 08 02 	mvhi r1,0x802                                  
 8001ff4:	38 21 0d d8 	ori r1,r1,0xdd8                                
 8001ff8:	28 22 00 00 	lw r2,(r1+0)                                   
 8001ffc:	34 01 00 03 	mvi r1,3                                       
 8002000:	44 41 00 06 	be r2,r1,8002018 <libc_wrapup+0x38>            <== ALWAYS TAKEN
   */                                                                 
                                                                      
  fclose (stdin);                                                     
  fclose (stdout);                                                    
  fclose (stderr);                                                    
}                                                                     
 8002004:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8002008:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800200c:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8002010:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8002014:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  /*                                                                  
   *  This was already done if the user called exit() directly .      
  _wrapup_reent(0);                                                   
   */                                                                 
                                                                      
  if (_REENT != _global_impure_ptr) {                                 
 8002018:	78 0b 08 02 	mvhi r11,0x802                                 
 800201c:	78 01 08 01 	mvhi r1,0x801                                  
 8002020:	39 6b 02 70 	ori r11,r11,0x270                              
 8002024:	38 21 e0 a0 	ori r1,r1,0xe0a0                               
 8002028:	29 62 00 00 	lw r2,(r11+0)                                  
 800202c:	28 2c 00 00 	lw r12,(r1+0)                                  
 8002030:	44 4c 00 04 	be r2,r12,8002040 <libc_wrapup+0x60>           
      _wrapup_reent(_global_impure_ptr);                              
 8002034:	b9 80 08 00 	mv r1,r12                                      
 8002038:	f8 00 30 a4 	calli 800e2c8 <_wrapup_reent>                  
      /*  Don't reclaim this one, just in case we do printfs          
       *  on the way out to ROM.                                      
       */                                                             
      _reclaim_reent(&libc_global_reent);                             
#endif                                                                
      _REENT = _global_impure_ptr;                                    
 800203c:	59 6c 00 00 	sw (r11+0),r12                                 
   *                                                                  
   * Should this be changed to do *all* file streams?                 
   *    _fwalk (_REENT, fclose);                                      
   */                                                                 
                                                                      
  fclose (stdin);                                                     
 8002040:	29 81 00 04 	lw r1,(r12+4)                                  
 8002044:	f8 00 2c e4 	calli 800d3d4 <fclose>                         
  fclose (stdout);                                                    
 8002048:	29 61 00 00 	lw r1,(r11+0)                                  
 800204c:	28 21 00 08 	lw r1,(r1+8)                                   
 8002050:	f8 00 2c e1 	calli 800d3d4 <fclose>                         
  fclose (stderr);                                                    
 8002054:	29 61 00 00 	lw r1,(r11+0)                                  
 8002058:	28 21 00 0c 	lw r1,(r1+12)                                  
 800205c:	f8 00 2c de 	calli 800d3d4 <fclose>                         
}                                                                     
 8002060:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002064:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8002068:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800206c:	37 9c 00 0c 	addi sp,sp,12                                  
 8002070:	c3 a0 00 00 	ret                                            
                                                                      

08001a30 <malloc>: #include "malloc_p.h" void *malloc( size_t size ) {
 8001a30:	37 9c ff f0 	addi sp,sp,-16                                 
 8001a34:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001a38:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001a3c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001a40:	5b 9d 00 04 	sw (sp+4),ra                                   
  void        *return_this;                                           
                                                                      
  MSBUMP(malloc_calls, 1);                                            
 8001a44:	78 03 08 02 	mvhi r3,0x802                                  
 8001a48:	38 63 08 28 	ori r3,r3,0x828                                
 8001a4c:	28 62 00 04 	lw r2,(r3+4)                                   
#include "malloc_p.h"                                                 
                                                                      
void *malloc(                                                         
  size_t  size                                                        
)                                                                     
{                                                                     
 8001a50:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
    return (void *) 0;                                                
 8001a54:	34 0b 00 00 	mvi r11,0                                      
  size_t  size                                                        
)                                                                     
{                                                                     
  void        *return_this;                                           
                                                                      
  MSBUMP(malloc_calls, 1);                                            
 8001a58:	34 41 00 01 	addi r1,r2,1                                   
 8001a5c:	58 61 00 04 	sw (r3+4),r1                                   
                                                                      
  /*                                                                  
   *  If some free's have been deferred, then do them now.            
   */                                                                 
  malloc_deferred_frees_process();                                    
 8001a60:	fb ff ff 9f 	calli 80018dc <malloc_deferred_frees_process>  
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
 8001a64:	45 80 00 1d 	be r12,r0,8001ad8 <malloc+0xa8>                
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 8001a68:	78 01 08 02 	mvhi r1,0x802                                  
 8001a6c:	38 21 0d d8 	ori r1,r1,0xdd8                                
 8001a70:	28 22 00 00 	lw r2,(r1+0)                                   
 8001a74:	34 01 00 03 	mvi r1,3                                       
 8001a78:	44 41 00 2b 	be r2,r1,8001b24 <malloc+0xf4>                 
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(                  
  Heap_Control *heap,                                                 
  uintptr_t size                                                      
)                                                                     
{                                                                     
  return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
 8001a7c:	78 0d 08 02 	mvhi r13,0x802                                 
 8001a80:	39 ad 00 54 	ori r13,r13,0x54                               
 8001a84:	29 a1 00 00 	lw r1,(r13+0)                                  
 8001a88:	b9 80 10 00 	mv r2,r12                                      
 8001a8c:	34 03 00 00 	mvi r3,0                                       
 8001a90:	34 04 00 00 	mvi r4,0                                       
 8001a94:	f8 00 11 18 	calli 8005ef4 <_Protected_heap_Allocate_aligned_with_boundary>
 8001a98:	b8 20 58 00 	mv r11,r1                                      
   * If this fails then return a NULL pointer.                        
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
 8001a9c:	44 20 00 16 	be r1,r0,8001af4 <malloc+0xc4>                 
  }                                                                   
                                                                      
  /*                                                                  
   *  If the user wants us to dirty the allocated memory, then do it. 
   */                                                                 
  if ( rtems_malloc_dirty_helper )                                    
 8001aa0:	78 01 08 02 	mvhi r1,0x802                                  
 8001aa4:	38 21 07 50 	ori r1,r1,0x750                                
 8001aa8:	28 23 00 00 	lw r3,(r1+0)                                   
 8001aac:	44 60 00 04 	be r3,r0,8001abc <malloc+0x8c>                 
    (*rtems_malloc_dirty_helper)( return_this, size );                
 8001ab0:	b9 60 08 00 	mv r1,r11                                      
 8001ab4:	b9 80 10 00 	mv r2,r12                                      
 8001ab8:	d8 60 00 00 	call r3                                        
                                                                      
  /*                                                                  
   *  If configured, update the statistics                            
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 8001abc:	78 01 08 02 	mvhi r1,0x802                                  
 8001ac0:	38 21 07 4c 	ori r1,r1,0x74c                                
 8001ac4:	28 21 00 00 	lw r1,(r1+0)                                   
 8001ac8:	44 20 00 04 	be r1,r0,8001ad8 <malloc+0xa8>                 
    (*rtems_malloc_statistics_helpers->at_malloc)(return_this);       
 8001acc:	28 22 00 04 	lw r2,(r1+4)                                   
 8001ad0:	b9 60 08 00 	mv r1,r11                                      
 8001ad4:	d8 40 00 00 	call r2                                        
                                                                      
  return return_this;                                                 
}                                                                     
 8001ad8:	b9 60 08 00 	mv r1,r11                                      
 8001adc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001ae0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001ae4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8001ae8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001aec:	37 9c 00 10 	addi sp,sp,16                                  
 8001af0:	c3 a0 00 00 	ret                                            
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
    return_this = (*rtems_malloc_extend_handler)( RTEMS_Malloc_Heap, size );
 8001af4:	78 01 08 01 	mvhi r1,0x801                                  
 8001af8:	38 21 d2 68 	ori r1,r1,0xd268                               
 8001afc:	28 23 00 00 	lw r3,(r1+0)                                   
 8001b00:	29 a1 00 00 	lw r1,(r13+0)                                  
 8001b04:	b9 80 10 00 	mv r2,r12                                      
 8001b08:	d8 60 00 00 	call r3                                        
 8001b0c:	b8 20 58 00 	mv r11,r1                                      
    if ( !return_this ) {                                             
 8001b10:	5c 20 ff e4 	bne r1,r0,8001aa0 <malloc+0x70>                <== NEVER TAKEN
      errno = ENOMEM;                                                 
 8001b14:	f8 00 2d d8 	calli 800d274 <__errno>                        
 8001b18:	34 02 00 0c 	mvi r2,12                                      
 8001b1c:	58 22 00 00 	sw (r1+0),r2                                   
      return (void *) 0;                                              
 8001b20:	e3 ff ff ee 	bi 8001ad8 <malloc+0xa8>                       
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
       !malloc_is_system_state_OK() )                                 
 8001b24:	fb ff ff 64 	calli 80018b4 <malloc_is_system_state_OK>      
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 8001b28:	5c 20 ff d5 	bne r1,r0,8001a7c <malloc+0x4c>                <== ALWAYS TAKEN
 8001b2c:	e3 ff ff eb 	bi 8001ad8 <malloc+0xa8>                       <== NOT EXECUTED
                                                                      

0800ba28 <memfile_free_blocks_in_table>: */ static void memfile_free_blocks_in_table( block_p **block_table, int entries ) {
 800ba28:	37 9c ff ec 	addi sp,sp,-20                                 
 800ba2c:	5b 8b 00 14 	sw (sp+20),r11                                 
 800ba30:	5b 8c 00 10 	sw (sp+16),r12                                 
 800ba34:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800ba38:	5b 8e 00 08 	sw (sp+8),r14                                  
 800ba3c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ba40:	b8 20 70 00 	mv r14,r1                                      
 800ba44:	b8 40 68 00 	mv r13,r2                                      
  IMFS_assert( block_table );                                         
                                                                      
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
 800ba48:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800ba4c:	4c 02 00 0b 	bge r0,r2,800ba78 <memfile_free_blocks_in_table+0x50><== NEVER TAKEN
 800ba50:	34 0c 00 00 	mvi r12,0                                      
    if ( b[i] ) {                                                     
 800ba54:	29 63 00 00 	lw r3,(r11+0)                                  
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800ba58:	35 8c 00 01 	addi r12,r12,1                                 
    if ( b[i] ) {                                                     
      memfile_free_block( b[i] );                                     
 800ba5c:	b8 60 08 00 	mv r1,r3                                       
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
    if ( b[i] ) {                                                     
 800ba60:	44 60 00 03 	be r3,r0,800ba6c <memfile_free_blocks_in_table+0x44>
      memfile_free_block( b[i] );                                     
 800ba64:	fb ff ff e6 	calli 800b9fc <memfile_free_block>             
      b[i] = 0;                                                       
 800ba68:	59 60 00 00 	sw (r11+0),r0                                  
  /*                                                                  
   *  Now go through all the slots in the table and free the memory.  
   */                                                                 
  b = *block_table;                                                   
                                                                      
  for ( i=0 ; i<entries ; i++ ) {                                     
 800ba6c:	35 6b 00 04 	addi r11,r11,4                                 
 800ba70:	49 ac ff f9 	bg r13,r12,800ba54 <memfile_free_blocks_in_table+0x2c>
 800ba74:	29 cb 00 00 	lw r11,(r14+0)                                 
                                                                      
  /*                                                                  
   *  Now that all the blocks in the block table are free, we can     
   *  free the block table itself.                                    
   */                                                                 
  memfile_free_block( *block_table );                                 
 800ba78:	b9 60 08 00 	mv r1,r11                                      
 800ba7c:	fb ff ff e0 	calli 800b9fc <memfile_free_block>             
  *block_table = 0;                                                   
 800ba80:	59 c0 00 00 	sw (r14+0),r0                                  
}                                                                     
 800ba84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ba88:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800ba8c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800ba90:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800ba94:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800ba98:	37 9c 00 14 	addi sp,sp,20                                  
 800ba9c:	c3 a0 00 00 	ret                                            
                                                                      

0800c034 <memfile_open>: rtems_libio_t *iop, const char *pathname, int oflag, mode_t mode ) {
 800c034:	37 9c ff fc 	addi sp,sp,-4                                  
 800c038:	5b 9d 00 04 	sw (sp+4),ra                                   
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
 800c03c:	28 23 00 08 	lw r3,(r1+8)                                   
  mode_t         mode                                                 
)                                                                     
{                                                                     
  IMFS_jnode_t  *the_jnode;                                           
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
 800c040:	28 22 00 14 	lw r2,(r1+20)                                  
    if ((count != 0)                                                  
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
 800c044:	34 01 00 00 	mvi r1,0                                       
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
 800c048:	20 63 00 04 	andi r3,r3,0x4                                 
 800c04c:	44 60 00 05 	be r3,r0,800c060 <memfile_open+0x2c>           
 800c050:	28 43 00 4c 	lw r3,(r2+76)                                  
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
 800c054:	28 64 00 00 	lw r4,(r3+0)                                   
 800c058:	34 03 00 05 	mvi r3,5                                       
 800c05c:	44 83 00 04 	be r4,r3,800c06c <memfile_open+0x38>           <== NEVER TAKEN
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800c060:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c064:	37 9c 00 04 	addi sp,sp,4                                   
 800c068:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    uint32_t   count = the_jnode->info.linearfile.size;               
 800c06c:	28 44 00 50 	lw r4,(r2+80)                                  <== NOT EXECUTED
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
                                                                      
    the_jnode->control = &IMFS_node_control_memfile;                  
 800c070:	78 05 08 01 	mvhi r5,0x801                                  <== NOT EXECUTED
 800c074:	38 a5 dd 48 	ori r5,r5,0xdd48                               <== NOT EXECUTED
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    uint32_t   count = the_jnode->info.linearfile.size;               
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
 800c078:	28 43 00 54 	lw r3,(r2+84)                                  <== NOT EXECUTED
                                                                      
    the_jnode->control = &IMFS_node_control_memfile;                  
 800c07c:	58 45 00 4c 	sw (r2+76),r5                                  <== NOT EXECUTED
    the_jnode->info.file.size            = 0;                         
 800c080:	58 40 00 50 	sw (r2+80),r0                                  <== NOT EXECUTED
    the_jnode->info.file.indirect        = 0;                         
 800c084:	58 40 00 54 	sw (r2+84),r0                                  <== NOT EXECUTED
    the_jnode->info.file.doubly_indirect = 0;                         
 800c088:	58 40 00 58 	sw (r2+88),r0                                  <== NOT EXECUTED
    the_jnode->info.file.triply_indirect = 0;                         
 800c08c:	58 40 00 5c 	sw (r2+92),r0                                  <== NOT EXECUTED
    if ((count != 0)                                                  
 800c090:	44 80 ff f4 	be r4,r0,800c060 <memfile_open+0x2c>           <== NOT EXECUTED
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
 800c094:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 800c098:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800c09c:	fb ff ff 61 	calli 800be20 <IMFS_memfile_write>             <== NOT EXECUTED
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
 800c0a0:	64 21 ff ff 	cmpei r1,r1,-1                                 <== NOT EXECUTED
 800c0a4:	c8 01 08 00 	sub r1,r0,r1                                   <== NOT EXECUTED
 800c0a8:	e3 ff ff ee 	bi 800c060 <memfile_open+0x2c>                 <== NOT EXECUTED
                                                                      

08001c6c <mount>: const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) {
 8001c6c:	37 9c ff 7c 	addi sp,sp,-132                                
 8001c70:	5b 8b 00 34 	sw (sp+52),r11                                 
 8001c74:	5b 8c 00 30 	sw (sp+48),r12                                 
 8001c78:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8001c7c:	5b 8e 00 28 	sw (sp+40),r14                                 
 8001c80:	5b 8f 00 24 	sw (sp+36),r15                                 
 8001c84:	5b 90 00 20 	sw (sp+32),r16                                 
 8001c88:	5b 91 00 1c 	sw (sp+28),r17                                 
 8001c8c:	5b 92 00 18 	sw (sp+24),r18                                 
 8001c90:	5b 93 00 14 	sw (sp+20),r19                                 
 8001c94:	5b 94 00 10 	sw (sp+16),r20                                 
 8001c98:	5b 95 00 0c 	sw (sp+12),r21                                 
 8001c9c:	5b 96 00 08 	sw (sp+8),r22                                  
 8001ca0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001ca4:	b8 20 78 00 	mv r15,r1                                      
  int rv = 0;                                                         
                                                                      
  if (                                                                
 8001ca8:	34 01 00 01 	mvi r1,1                                       
  const char                 *target,                                 
  const char                 *filesystemtype,                         
  rtems_filesystem_options_t options,                                 
  const void                 *data                                    
)                                                                     
{                                                                     
 8001cac:	b8 80 a0 00 	mv r20,r4                                      
 8001cb0:	b8 40 68 00 	mv r13,r2                                      
 8001cb4:	b8 60 80 00 	mv r16,r3                                      
 8001cb8:	b8 a0 b0 00 	mv r22,r5                                      
  int rv = 0;                                                         
                                                                      
  if (                                                                
 8001cbc:	54 81 00 96 	bgu r4,r1,8001f14 <mount+0x2a8>                
    options == RTEMS_FILESYSTEM_READ_ONLY                             
      || options == RTEMS_FILESYSTEM_READ_WRITE                       
  ) {                                                                 
    rtems_filesystem_fsmount_me_t fsmount_me_h =                      
 8001cc0:	b8 60 08 00 	mv r1,r3                                       
 8001cc4:	f8 00 1d 90 	calli 8009304 <rtems_filesystem_get_mount_handler>
 8001cc8:	b8 20 a8 00 	mv r21,r1                                      
      rtems_filesystem_get_mount_handler( filesystemtype );           
                                                                      
    if ( fsmount_me_h != NULL ) {                                     
 8001ccc:	44 20 00 92 	be r1,r0,8001f14 <mount+0x2a8>                 
  const char *target_or_null,                                         
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
 8001cd0:	78 0e 08 01 	mvhi r14,0x801                                 
 8001cd4:	34 12 00 02 	mvi r18,2                                      
 8001cd8:	39 ce d9 9c 	ori r14,r14,0xd99c                             
 8001cdc:	45 a0 00 05 	be r13,r0,8001cf0 <mount+0x84>                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
                                                                      
int mount(                                                            
 8001ce0:	b9 a0 08 00 	mv r1,r13                                      
 8001ce4:	f8 00 33 a9 	calli 800eb88 <strlen>                         
 8001ce8:	34 32 00 01 	addi r18,r1,1                                  
 8001cec:	b9 a0 70 00 	mv r14,r13                                     
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
  size_t filesystemtype_size = strlen( filesystemtype ) + 1;          
 8001cf0:	ba 00 08 00 	mv r1,r16                                      
 8001cf4:	f8 00 33 a5 	calli 800eb88 <strlen>                         
 8001cf8:	34 2c 00 01 	addi r12,r1,1                                  
  size_t source_size = source_or_null != NULL ?                       
    strlen( source_or_null ) + 1 : 0;                                 
 8001cfc:	34 11 00 00 	mvi r17,0                                      
 8001d00:	45 e0 00 04 	be r15,r0,8001d10 <mount+0xa4>                 
 8001d04:	b9 e0 08 00 	mv r1,r15                                      
 8001d08:	f8 00 33 a0 	calli 800eb88 <strlen>                         
 8001d0c:	34 31 00 01 	addi r17,r1,1                                  
  size_t target_size = strlen( target ) + 1;                          
  size_t size = sizeof( rtems_filesystem_mount_table_entry_t )        
    + filesystemtype_size + source_size + target_size                 
 8001d10:	36 43 00 64 	addi r3,r18,100                                
 8001d14:	b4 6c 18 00 	add r3,r3,r12                                  
    + sizeof( rtems_filesystem_global_location_t );                   
  rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 
 8001d18:	34 01 00 01 	mvi r1,1                                       
 8001d1c:	b4 71 10 00 	add r2,r3,r17                                  
 8001d20:	fb ff fd 77 	calli 80012fc <calloc>                         
 8001d24:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if ( mt_entry != NULL ) {                                           
 8001d28:	44 20 00 75 	be r1,r0,8001efc <mount+0x290>                 <== NEVER TAKEN
    rtems_filesystem_global_location_t *mt_fs_root =                  
      (rtems_filesystem_global_location_t *)                          
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
 8001d2c:	34 33 00 64 	addi r19,r1,100                                
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
 8001d30:	ba 00 10 00 	mv r2,r16                                      
 8001d34:	b9 80 18 00 	mv r3,r12                                      
 8001d38:	ba 60 08 00 	mv r1,r19                                      
 8001d3c:	f8 00 30 48 	calli 800de5c <memcpy>                         
    mt_entry->type = str;                                             
 8001d40:	59 73 00 34 	sw (r11+52),r19                                
    + filesystemtype_size + source_size + target_size                 
    + sizeof( rtems_filesystem_global_location_t );                   
  rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 
                                                                      
  if ( mt_entry != NULL ) {                                           
    rtems_filesystem_global_location_t *mt_fs_root =                  
 8001d44:	35 70 00 40 	addi r16,r11,64                                
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    mt_entry->type = str;                                             
    str += filesystemtype_size;                                       
 8001d48:	b6 6c 60 00 	add r12,r19,r12                                
                                                                      
    if ( source_or_null != NULL ) {                                   
 8001d4c:	45 e0 00 07 	be r15,r0,8001d68 <mount+0xfc>                 
      memcpy( str, source_or_null, source_size );                     
 8001d50:	b9 80 08 00 	mv r1,r12                                      
 8001d54:	b9 e0 10 00 	mv r2,r15                                      
 8001d58:	ba 20 18 00 	mv r3,r17                                      
 8001d5c:	f8 00 30 40 	calli 800de5c <memcpy>                         
      mt_entry->dev = str;                                            
 8001d60:	59 6c 00 38 	sw (r11+56),r12                                
      str += source_size;                                             
 8001d64:	b5 91 60 00 	add r12,r12,r17                                
    }                                                                 
                                                                      
    memcpy( str, target, target_size );                               
 8001d68:	b9 c0 10 00 	mv r2,r14                                      
 8001d6c:	ba 40 18 00 	mv r3,r18                                      
 8001d70:	b9 80 08 00 	mv r1,r12                                      
 8001d74:	f8 00 30 3a 	calli 800de5c <memcpy>                         
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    mt_entry->mt_fs_root = mt_fs_root;                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
 8001d78:	78 03 08 01 	mvhi r3,0x801                                  
 8001d7c:	38 63 d9 a0 	ori r3,r3,0xd9a0                               
                                                                      
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
 8001d80:	34 01 00 01 	mvi r1,1                                       
      mt_entry->dev = str;                                            
      str += source_size;                                             
    }                                                                 
                                                                      
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
 8001d84:	59 6c 00 30 	sw (r11+48),r12                                
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
 8001d88:	31 61 00 28 	sb (r11+40),r1                                 
    mt_entry->mt_fs_root = mt_fs_root;                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
 8001d8c:	59 63 00 2c 	sw (r11+44),r3                                 
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    mt_entry->mt_fs_root = mt_fs_root;                                
 8001d90:	59 70 00 24 	sw (r11+36),r16                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
                                                                      
    mt_fs_root->location.mt_entry = mt_entry;                         
    mt_fs_root->reference_count = 1;                                  
 8001d94:	34 05 00 01 	mvi r5,1                                       
  void                *starting_address,                              
  size_t               number_nodes,                                  
  size_t               node_size                                      
)                                                                     
{                                                                     
  _Chain_Initialize( the_chain, starting_address, number_nodes, node_size );
 8001d98:	35 61 00 14 	addi r1,r11,20                                 
 8001d9c:	ba 00 10 00 	mv r2,r16                                      
 8001da0:	34 03 00 01 	mvi r3,1                                       
 8001da4:	34 04 00 24 	mvi r4,36                                      
 8001da8:	5a 05 00 18 	sw (r16+24),r5                                 
                                                                      
    mt_entry->mounted = true;                                         
    mt_entry->mt_fs_root = mt_fs_root;                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
                                                                      
    mt_fs_root->location.mt_entry = mt_entry;                         
 8001dac:	5a 0b 00 14 	sw (r16+20),r11                                
 8001db0:	f8 00 0a f0 	calli 8004970 <_Chain_Initialize>              
      );                                                              
                                                                      
      if ( mt_entry != NULL ) {                                       
        mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE; 
                                                                      
        rv = (*fsmount_me_h)( mt_entry, data );                       
 8001db4:	b9 60 08 00 	mv r1,r11                                      
        filesystemtype,                                               
        &target_length                                                
      );                                                              
                                                                      
      if ( mt_entry != NULL ) {                                       
        mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE; 
 8001db8:	31 74 00 29 	sb (r11+41),r20                                
                                                                      
        rv = (*fsmount_me_h)( mt_entry, data );                       
 8001dbc:	ba c0 10 00 	mv r2,r22                                      
 8001dc0:	da a0 00 00 	call r21                                       
 8001dc4:	b8 20 60 00 	mv r12,r1                                      
        if ( rv == 0 ) {                                              
 8001dc8:	5c 20 00 18 	bne r1,r0,8001e28 <mount+0x1bc>                
          if ( target != NULL ) {                                     
 8001dcc:	45 a1 00 5a 	be r13,r1,8001f34 <mount+0x2c8>                
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_PERMS_RWX                                 
    | RTEMS_FS_FOLLOW_LINK;                                           
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_start( &ctx, target, eval_flags );     
 8001dd0:	37 8e 00 38 	addi r14,sp,56                                 
{                                                                     
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_PERMS_RWX                                 
    | RTEMS_FS_FOLLOW_LINK;                                           
  rtems_filesystem_location_info_t *currentloc =                      
 8001dd4:	b9 a0 10 00 	mv r2,r13                                      
 8001dd8:	34 03 00 1f 	mvi r3,31                                      
 8001ddc:	b9 c0 08 00 	mv r1,r14                                      
 8001de0:	f8 00 03 6a 	calli 8002b88 <rtems_filesystem_eval_path_start>
                                                                      
static inline bool rtems_filesystem_location_is_instance_root(        
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
 8001de4:	28 22 00 14 	lw r2,(r1+20)                                  
                                                                      
  return (*mt_entry->ops->are_nodes_equal_h)(                         
 8001de8:	28 43 00 0c 	lw r3,(r2+12)                                  
 8001dec:	28 42 00 24 	lw r2,(r2+36)                                  
 8001df0:	28 63 00 10 	lw r3,(r3+16)                                  
 8001df4:	d8 60 00 00 	call r3                                        
 8001df8:	b8 20 78 00 	mv r15,r1                                      
    rtems_filesystem_eval_path_start( &ctx, target, eval_flags );     
                                                                      
  if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {  
 8001dfc:	44 20 00 1d 	be r1,r0,8001e70 <mount+0x204>                 
      rtems_filesystem_mt_unlock();                                   
    } else {                                                          
      rtems_filesystem_global_location_release( mt_point_node );      
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error( &ctx, EBUSY );                  
 8001e00:	b9 c0 08 00 	mv r1,r14                                      
 8001e04:	34 02 00 10 	mvi r2,16                                      
 8001e08:	f8 00 02 77 	calli 80027e4 <rtems_filesystem_eval_path_error>
    rv = -1;                                                          
 8001e0c:	34 0c ff ff 	mvi r12,-1                                     
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 8001e10:	b9 c0 08 00 	mv r1,r14                                      
 8001e14:	f8 00 03 b4 	calli 8002ce4 <rtems_filesystem_eval_path_cleanup>
          } else {                                                    
            rv = register_root_file_system( mt_entry );               
          }                                                           
                                                                      
          if ( rv != 0 ) {                                            
            (*mt_entry->ops->fsunmount_me_h)( mt_entry );             
 8001e18:	29 62 00 0c 	lw r2,(r11+12)                                 
 8001e1c:	b9 60 08 00 	mv r1,r11                                      
 8001e20:	28 42 00 3c 	lw r2,(r2+60)                                  
 8001e24:	d8 40 00 00 	call r2                                        
          }                                                           
        }                                                             
                                                                      
        if ( rv != 0 ) {                                              
          free( mt_entry );                                           
 8001e28:	b9 60 08 00 	mv r1,r11                                      
 8001e2c:	fb ff fd ff 	calli 8001628 <free>                           
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001e30:	b9 80 08 00 	mv r1,r12                                      
 8001e34:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001e38:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8001e3c:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8001e40:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8001e44:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8001e48:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8001e4c:	2b 90 00 20 	lw r16,(sp+32)                                 
 8001e50:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8001e54:	2b 92 00 18 	lw r18,(sp+24)                                 
 8001e58:	2b 93 00 14 	lw r19,(sp+20)                                 
 8001e5c:	2b 94 00 10 	lw r20,(sp+16)                                 
 8001e60:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8001e64:	2b 96 00 08 	lw r22,(sp+8)                                  
 8001e68:	37 9c 00 84 	addi sp,sp,132                                 
 8001e6c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {  
    rtems_filesystem_location_info_t targetloc;                       
    rtems_filesystem_global_location_t *mt_point_node;                
                                                                      
    rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
 8001e70:	37 8c 00 70 	addi r12,sp,112                                
static inline void rtems_filesystem_eval_path_extract_currentloc(     
  rtems_filesystem_eval_path_context_t *ctx,                          
  rtems_filesystem_location_info_t *get                               
)                                                                     
{                                                                     
  rtems_filesystem_location_copy_and_detach(                          
 8001e74:	37 82 00 50 	addi r2,sp,80                                  
 8001e78:	b9 80 08 00 	mv r1,r12                                      
 8001e7c:	f8 00 04 c4 	calli 800318c <rtems_filesystem_location_copy_and_detach>
    mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
 8001e80:	b9 80 08 00 	mv r1,r12                                      
 8001e84:	f8 00 05 89 	calli 80034a8 <rtems_filesystem_location_transform_to_global>
    mt_entry->mt_point_node = mt_point_node;                          
    rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
 8001e88:	28 22 00 14 	lw r2,(r1+20)                                  
  if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {  
    rtems_filesystem_location_info_t targetloc;                       
    rtems_filesystem_global_location_t *mt_point_node;                
                                                                      
    rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
    mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
 8001e8c:	b8 20 68 00 	mv r13,r1                                      
    mt_entry->mt_point_node = mt_point_node;                          
 8001e90:	59 61 00 20 	sw (r11+32),r1                                 
    rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
 8001e94:	28 42 00 0c 	lw r2,(r2+12)                                  
 8001e98:	b9 60 08 00 	mv r1,r11                                      
 8001e9c:	28 42 00 30 	lw r2,(r2+48)                                  
 8001ea0:	d8 40 00 00 	call r2                                        
 8001ea4:	b8 20 60 00 	mv r12,r1                                      
    if ( rv == 0 ) {                                                  
 8001ea8:	5c 2f 00 20 	bne r1,r15,8001f28 <mount+0x2bc>               
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8001eac:	78 0d 08 02 	mvhi r13,0x802                                 
 8001eb0:	39 ad 08 24 	ori r13,r13,0x824                              
 8001eb4:	29 a1 00 00 	lw r1,(r13+0)                                  
 8001eb8:	34 02 00 00 	mvi r2,0                                       
 8001ebc:	34 03 00 00 	mvi r3,0                                       
 8001ec0:	f8 00 07 67 	calli 8003c5c <rtems_semaphore_obtain>         
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8001ec4:	78 02 08 02 	mvhi r2,0x802                                  
 8001ec8:	38 42 00 f4 	ori r2,r2,0xf4                                 
 8001ecc:	28 44 00 08 	lw r4,(r2+8)                                   
                                                                      
  the_node->next = tail;                                              
 8001ed0:	78 03 08 02 	mvhi r3,0x802                                  
 8001ed4:	38 63 00 f8 	ori r3,r3,0xf8                                 
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8001ed8:	29 a1 00 00 	lw r1,(r13+0)                                  
 8001edc:	59 63 00 00 	sw (r11+0),r3                                  
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
 8001ee0:	58 8b 00 00 	sw (r4+0),r11                                  
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
 8001ee4:	58 4b 00 08 	sw (r2+8),r11                                  
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
 8001ee8:	59 64 00 04 	sw (r11+4),r4                                  
 8001eec:	f8 00 07 b8 	calli 8003dcc <rtems_semaphore_release>        
  } else {                                                            
    rtems_filesystem_eval_path_error( &ctx, EBUSY );                  
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 8001ef0:	b9 c0 08 00 	mv r1,r14                                      
 8001ef4:	f8 00 03 7c 	calli 8002ce4 <rtems_filesystem_eval_path_cleanup>
 8001ef8:	e3 ff ff ce 	bi 8001e30 <mount+0x1c4>                       
      mt_fs_root,                                                     
      1,                                                              
      sizeof(*mt_fs_root)                                             
    );                                                                
  } else {                                                            
    free( mt_entry );                                                 
 8001efc:	fb ff fd cb 	calli 8001628 <free>                           <== NOT EXECUTED
                                                                      
        if ( rv != 0 ) {                                              
          free( mt_entry );                                           
        }                                                             
      } else {                                                        
        errno = ENOMEM;                                               
 8001f00:	f8 00 2c dd 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8001f04:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8001f08:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
        rv = -1;                                                      
 8001f0c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8001f10:	e3 ff ff c8 	bi 8001e30 <mount+0x1c4>                       <== NOT EXECUTED
    } else {                                                          
      errno = EINVAL;                                                 
      rv = -1;                                                        
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
 8001f14:	f8 00 2c d8 	calli 800d274 <__errno>                        
 8001f18:	34 02 00 16 	mvi r2,22                                      
 8001f1c:	58 22 00 00 	sw (r1+0),r2                                   
    rv = -1;                                                          
 8001f20:	34 0c ff ff 	mvi r12,-1                                     
 8001f24:	e3 ff ff c3 	bi 8001e30 <mount+0x1c4>                       
        &rtems_filesystem_mount_table,                                
        &mt_entry->mt_node                                            
      );                                                              
      rtems_filesystem_mt_unlock();                                   
    } else {                                                          
      rtems_filesystem_global_location_release( mt_point_node );      
 8001f28:	b9 a0 08 00 	mv r1,r13                                      
 8001f2c:	f8 00 04 fb 	calli 8003318 <rtems_filesystem_global_location_release>
 8001f30:	e3 ff ff b8 	bi 8001e10 <mount+0x1a4>                       
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8001f34:	78 0d 08 02 	mvhi r13,0x802                                 
 8001f38:	39 ad 08 24 	ori r13,r13,0x824                              
 8001f3c:	29 a1 00 00 	lw r1,(r13+0)                                  
 8001f40:	34 02 00 00 	mvi r2,0                                       
 8001f44:	34 03 00 00 	mvi r3,0                                       
 8001f48:	f8 00 07 45 	calli 8003c5c <rtems_semaphore_obtain>         
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001f4c:	78 02 08 02 	mvhi r2,0x802                                  
 8001f50:	38 42 00 f4 	ori r2,r2,0xf4                                 
)                                                                     
{                                                                     
  int rv = 0;                                                         
                                                                      
  rtems_filesystem_mt_lock();                                         
  if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) {      
 8001f54:	28 43 00 00 	lw r3,(r2+0)                                   
 8001f58:	78 01 08 02 	mvhi r1,0x802                                  
 8001f5c:	38 21 00 f8 	ori r1,r1,0xf8                                 
 8001f60:	44 61 00 08 	be r3,r1,8001f80 <mount+0x314>                 <== ALWAYS TAKEN
    rtems_chain_append_unprotected(                                   
      &rtems_filesystem_mount_table,                                  
      &mt_entry->mt_node                                              
    );                                                                
  } else {                                                            
    errno = EINVAL;                                                   
 8001f64:	f8 00 2c c4 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8001f68:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8001f6c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8001f70:	29 a1 00 00 	lw r1,(r13+0)                                  <== NOT EXECUTED
 8001f74:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8001f78:	f8 00 07 95 	calli 8003dcc <rtems_semaphore_release>        <== NOT EXECUTED
 8001f7c:	e3 ff ff a7 	bi 8001e18 <mount+0x1ac>                       <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8001f80:	28 44 00 08 	lw r4,(r2+8)                                   
 8001f84:	29 a1 00 00 	lw r1,(r13+0)                                  
                                                                      
  the_node->next = tail;                                              
 8001f88:	59 63 00 00 	sw (r11+0),r3                                  
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
 8001f8c:	58 8b 00 00 	sw (r4+0),r11                                  
  the_node->previous = old_last;                                      
 8001f90:	59 64 00 04 	sw (r11+4),r4                                  
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
 8001f94:	58 4b 00 08 	sw (r2+8),r11                                  
  }                                                                   
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
 8001f98:	35 6d 00 24 	addi r13,r11,36                                
 8001f9c:	f8 00 07 8c 	calli 8003dcc <rtems_semaphore_release>        
    rv = -1;                                                          
  }                                                                   
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
 8001fa0:	b9 a0 08 00 	mv r1,r13                                      
 8001fa4:	f8 00 05 08 	calli 80033c4 <rtems_filesystem_global_location_obtain>
 8001fa8:	b8 20 70 00 	mv r14,r1                                      
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    rtems_filesystem_global_location_t *new_fs_current =              
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
                                                                      
    rtems_filesystem_global_location_assign(                          
 8001fac:	78 0b 08 02 	mvhi r11,0x802                                 
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    rtems_filesystem_global_location_t *new_fs_current =              
 8001fb0:	b9 a0 08 00 	mv r1,r13                                      
 8001fb4:	f8 00 05 04 	calli 80033c4 <rtems_filesystem_global_location_obtain>
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
                                                                      
    rtems_filesystem_global_location_assign(                          
 8001fb8:	39 6b 01 90 	ori r11,r11,0x190                              
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    rtems_filesystem_global_location_t *new_fs_current =              
 8001fbc:	b8 20 68 00 	mv r13,r1                                      
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
                                                                      
    rtems_filesystem_global_location_assign(                          
 8001fc0:	29 61 00 00 	lw r1,(r11+0)                                  
 8001fc4:	b9 c0 10 00 	mv r2,r14                                      
 8001fc8:	34 21 00 04 	addi r1,r1,4                                   
 8001fcc:	f8 00 04 f0 	calli 800338c <rtems_filesystem_global_location_assign>
      &rtems_filesystem_root,                                         
      new_fs_root                                                     
    );                                                                
    rtems_filesystem_global_location_assign(                          
 8001fd0:	29 61 00 00 	lw r1,(r11+0)                                  
 8001fd4:	b9 a0 10 00 	mv r2,r13                                      
 8001fd8:	f8 00 04 ed 	calli 800338c <rtems_filesystem_global_location_assign>
 8001fdc:	e3 ff ff 95 	bi 8001e30 <mount+0x1c4>                       
                                                                      

08007620 <mount_and_make_target_path>: const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) {
 8007620:	37 9c ff e8 	addi sp,sp,-24                                 
 8007624:	5b 8b 00 18 	sw (sp+24),r11                                 
 8007628:	5b 8c 00 14 	sw (sp+20),r12                                 
 800762c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8007630:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8007634:	5b 8f 00 08 	sw (sp+8),r15                                  
 8007638:	5b 9d 00 04 	sw (sp+4),ra                                   
 800763c:	b8 40 58 00 	mv r11,r2                                      
 8007640:	b8 20 78 00 	mv r15,r1                                      
 8007644:	b8 60 70 00 	mv r14,r3                                      
 8007648:	b8 80 68 00 	mv r13,r4                                      
 800764c:	b8 a0 60 00 	mv r12,r5                                      
  int rv = -1;                                                        
                                                                      
  if (target != NULL) {                                               
 8007650:	44 40 00 1b 	be r2,r0,80076bc <mount_and_make_target_path+0x9c>
    rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);            
 8007654:	b8 40 08 00 	mv r1,r2                                       
 8007658:	34 02 01 ff 	mvi r2,511                                     
 800765c:	f8 00 03 67 	calli 80083f8 <rtems_mkdir>                    
    if (rv == 0) {                                                    
 8007660:	44 20 00 09 	be r1,r0,8007684 <mount_and_make_target_path+0x64><== ALWAYS TAKEN
  } else {                                                            
    errno = EINVAL;                                                   
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8007664:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007668:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800766c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8007670:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8007674:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8007678:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800767c:	37 9c 00 18 	addi sp,sp,24                                  
 8007680:	c3 a0 00 00 	ret                                            
  int rv = -1;                                                        
                                                                      
  if (target != NULL) {                                               
    rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);            
    if (rv == 0) {                                                    
      rv = mount(                                                     
 8007684:	b9 e0 08 00 	mv r1,r15                                      
 8007688:	b9 60 10 00 	mv r2,r11                                      
 800768c:	b9 c0 18 00 	mv r3,r14                                      
 8007690:	b9 a0 20 00 	mv r4,r13                                      
 8007694:	b9 80 28 00 	mv r5,r12                                      
 8007698:	f8 00 00 0e 	calli 80076d0 <mount>                          
  } else {                                                            
    errno = EINVAL;                                                   
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 800769c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80076a0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80076a4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80076a8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80076ac:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80076b0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80076b4:	37 9c 00 18 	addi sp,sp,24                                  
 80076b8:	c3 a0 00 00 	ret                                            
        options,                                                      
        data                                                          
      );                                                              
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
 80076bc:	f8 00 70 a2 	calli 8023944 <__errno>                        
 80076c0:	34 02 00 16 	mvi r2,22                                      
 80076c4:	58 22 00 00 	sw (r1+0),r2                                   
  const char *filesystemtype,                                         
  rtems_filesystem_options_t options,                                 
  const void *data                                                    
)                                                                     
{                                                                     
  int rv = -1;                                                        
 80076c8:	34 01 ff ff 	mvi r1,-1                                      
 80076cc:	e3 ff ff e6 	bi 8007664 <mount_and_make_target_path+0x44>   
                                                                      

08004374 <mq_open>: int oflag, ... /* mode_t mode, */ /* struct mq_attr attr */ ) {
 8004374:	37 9c ff b0 	addi sp,sp,-80                                 
 8004378:	5b 8b 00 24 	sw (sp+36),r11                                 
 800437c:	5b 8c 00 20 	sw (sp+32),r12                                 
 8004380:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8004384:	5b 8e 00 18 	sw (sp+24),r14                                 
 8004388:	5b 8f 00 14 	sw (sp+20),r15                                 
 800438c:	5b 90 00 10 	sw (sp+16),r16                                 
 8004390:	5b 91 00 0c 	sw (sp+12),r17                                 
 8004394:	5b 92 00 08 	sw (sp+8),r18                                  
 8004398:	5b 9d 00 04 	sw (sp+4),ra                                   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800439c:	78 09 08 02 	mvhi r9,0x802                                  
 80043a0:	39 29 53 28 	ori r9,r9,0x5328                               
 80043a4:	29 2a 00 00 	lw r10,(r9+0)                                  
 80043a8:	b8 20 88 00 	mv r17,r1                                      
 80043ac:	5b 82 00 38 	sw (sp+56),r2                                  
                                                                      
    ++level;                                                          
 80043b0:	35 4a 00 01 	addi r10,r10,1                                 
 80043b4:	5b 83 00 3c 	sw (sp+60),r3                                  
 80043b8:	5b 84 00 40 	sw (sp+64),r4                                  
 80043bc:	5b 85 00 44 	sw (sp+68),r5                                  
 80043c0:	5b 86 00 48 	sw (sp+72),r6                                  
 80043c4:	5b 87 00 4c 	sw (sp+76),r7                                  
 80043c8:	5b 88 00 50 	sw (sp+80),r8                                  
 80043cc:	b8 40 70 00 	mv r14,r2                                      
    _Thread_Dispatch_disable_level = level;                           
 80043d0:	59 2a 00 00 	sw (r9+0),r10                                  
  Objects_Locations               location;                           
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 80043d4:	20 50 02 00 	andi r16,r2,0x200                              
  /* struct mq_attr  attr */                                          
)                                                                     
{                                                                     
  va_list                         arg;                                
  mode_t                          mode;                               
  struct mq_attr                 *attr = NULL;                        
 80043d8:	34 12 00 00 	mvi r18,0                                      
  Objects_Locations               location;                           
  size_t                          name_len;                           
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 80043dc:	5e 00 00 3c 	bne r16,r0,80044cc <mq_open+0x158>             
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 80043e0:	78 0c 08 02 	mvhi r12,0x802                                 
 80043e4:	39 8c 57 70 	ori r12,r12,0x5770                             
 80043e8:	b9 80 08 00 	mv r1,r12                                      
 80043ec:	f8 00 0c df 	calli 8007768 <_Objects_Allocate>              
 80043f0:	b8 20 58 00 	mv r11,r1                                      
    attr = va_arg( arg, struct mq_attr * );                           
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 80043f4:	44 20 00 3d 	be r1,r0,80044e8 <mq_open+0x174>               <== NEVER TAKEN
  const char          *name,                                          
  Objects_Id          *id,                                            
  size_t              *len                                            
)                                                                     
{                                                                     
  return _POSIX_Name_to_id( &_POSIX_Message_queue_Information, name, id, len );
 80043f8:	78 0d 08 02 	mvhi r13,0x802                                 
 80043fc:	39 ad 55 e4 	ori r13,r13,0x55e4                             
    _Thread_Enable_dispatch();                                        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
  }                                                                   
  the_mq_fd->oflag = oflag;                                           
 8004400:	58 2e 00 14 	sw (r1+20),r14                                 
 8004404:	ba 20 10 00 	mv r2,r17                                      
 8004408:	b9 a0 08 00 	mv r1,r13                                      
 800440c:	37 83 00 34 	addi r3,sp,52                                  
 8004410:	37 84 00 28 	addi r4,sp,40                                  
 8004414:	f8 00 01 78 	calli 80049f4 <_POSIX_Name_to_id>              
 8004418:	b8 20 78 00 	mv r15,r1                                      
   *  If the name to id translation worked, then the message queue exists
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "message queue does not exist"
   *  or some other miscellaneous error on the name.                  
   */                                                                 
  if ( status ) {                                                     
 800441c:	5c 20 00 22 	bne r1,r0,80044a4 <mq_open+0x130>              
                                                                      
  } else {                /* name -> ID translation succeeded */      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 8004420:	21 ce 0a 00 	andi r14,r14,0xa00                             
 8004424:	34 01 0a 00 	mvi r1,2560                                    
 8004428:	45 c1 00 36 	be r14,r1,8004500 <mq_open+0x18c>              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Message_queue_Control *)                              
    _Objects_Get( &_POSIX_Message_queue_Information, id, location );  
 800442c:	2b 82 00 34 	lw r2,(sp+52)                                  
 8004430:	37 83 00 2c 	addi r3,sp,44                                  
 8004434:	b9 a0 08 00 	mv r1,r13                                      
 8004438:	f8 00 0e 50 	calli 8007d78 <_Objects_Get>                   
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
    the_mq->open_count += 1;                                          
 800443c:	28 24 00 18 	lw r4,(r1+24)                                  
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8004440:	2d 62 00 0a 	lhu r2,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004444:	29 83 00 1c 	lw r3,(r12+28)                                 
 8004448:	34 84 00 01 	addi r4,r4,1                                   
 800444c:	b4 42 10 00 	add r2,r2,r2                                   
 8004450:	58 24 00 18 	sw (r1+24),r4                                  
 8004454:	b4 42 10 00 	add r2,r2,r2                                   
                                                                      
    /*                                                                
     * In this case we need to do an ID->pointer conversion to        
     * check the mode.                                                
     */                                                               
    the_mq = _POSIX_Message_queue_Get( the_mq_id, &location );        
 8004458:	5b 81 00 30 	sw (sp+48),r1                                  
    the_mq->open_count += 1;                                          
    the_mq_fd->Queue = the_mq;                                        
 800445c:	59 61 00 10 	sw (r11+16),r1                                 
 8004460:	b4 62 10 00 	add r2,r3,r2                                   
 8004464:	58 4b 00 00 	sw (r2+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8004468:	59 60 00 0c 	sw (r11+12),r0                                 
    _Objects_Open_string(                                             
      &_POSIX_Message_queue_Information_fds,                          
      &the_mq_fd->Object,                                             
      NULL                                                            
    );                                                                
    _Thread_Enable_dispatch();                                        
 800446c:	f8 00 12 58 	calli 8008dcc <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 8004470:	f8 00 12 57 	calli 8008dcc <_Thread_Enable_dispatch>        
    return (mqd_t)the_mq_fd->Object.id;                               
 8004474:	29 61 00 08 	lw r1,(r11+8)                                  
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
}                                                                     
 8004478:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800447c:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8004480:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8004484:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8004488:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800448c:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8004490:	2b 90 00 10 	lw r16,(sp+16)                                 
 8004494:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8004498:	2b 92 00 08 	lw r18,(sp+8)                                  
 800449c:	37 9c 00 50 	addi sp,sp,80                                  
 80044a0:	c3 a0 00 00 	ret                                            
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 80044a4:	34 01 00 02 	mvi r1,2                                       
 80044a8:	45 e1 00 1f 	be r15,r1,8004524 <mq_open+0x1b0>              
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
 80044ac:	b9 80 08 00 	mv r1,r12                                      
 80044b0:	b9 60 10 00 	mv r2,r11                                      
 80044b4:	f8 00 0d b8 	calli 8007b94 <_Objects_Free>                  
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
 80044b8:	f8 00 12 45 	calli 8008dcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, mqd_t );     
 80044bc:	f8 00 2c bf 	calli 800f7b8 <__errno>                        
 80044c0:	58 2f 00 00 	sw (r1+0),r15                                  
 80044c4:	34 01 ff ff 	mvi r1,-1                                      
 80044c8:	e3 ff ff ec 	bi 8004478 <mq_open+0x104>                     
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *                 
  _POSIX_Message_queue_Allocate_fd( void )                            
{                                                                     
  return (POSIX_Message_queue_Control_fd *)                           
    _Objects_Allocate( &_POSIX_Message_queue_Information_fds );       
 80044cc:	78 0c 08 02 	mvhi r12,0x802                                 
 80044d0:	39 8c 57 70 	ori r12,r12,0x5770                             
 80044d4:	b9 80 08 00 	mv r1,r12                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = va_arg( arg, mode_t );                                     
    attr = va_arg( arg, struct mq_attr * );                           
 80044d8:	2b 92 00 40 	lw r18,(sp+64)                                 
 80044dc:	f8 00 0c a3 	calli 8007768 <_Objects_Allocate>              
 80044e0:	b8 20 58 00 	mv r11,r1                                      
    va_end(arg);                                                      
  }                                                                   
                                                                      
  the_mq_fd = _POSIX_Message_queue_Allocate_fd();                     
  if ( !the_mq_fd ) {                                                 
 80044e4:	5c 20 ff c5 	bne r1,r0,80043f8 <mq_open+0x84>               
    _Thread_Enable_dispatch();                                        
 80044e8:	f8 00 12 39 	calli 8008dcc <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( ENFILE );                   
 80044ec:	f8 00 2c b3 	calli 800f7b8 <__errno>                        
 80044f0:	34 02 00 17 	mvi r2,23                                      
 80044f4:	58 22 00 00 	sw (r1+0),r2                                   
 80044f8:	34 01 ff ff 	mvi r1,-1                                      
 80044fc:	e3 ff ff df 	bi 8004478 <mq_open+0x104>                     
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free_fd (              
  POSIX_Message_queue_Control_fd *the_mq_fd                           
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Message_queue_Information_fds, &the_mq_fd->Object );
 8004500:	b9 60 10 00 	mv r2,r11                                      
 8004504:	b9 80 08 00 	mv r1,r12                                      
 8004508:	f8 00 0d a3 	calli 8007b94 <_Objects_Free>                  
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _POSIX_Message_queue_Free_fd( the_mq_fd );                      
      _Thread_Enable_dispatch();                                      
 800450c:	f8 00 12 30 	calli 8008dcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, mqd_t );     
 8004510:	f8 00 2c aa 	calli 800f7b8 <__errno>                        
 8004514:	34 02 00 11 	mvi r2,17                                      
 8004518:	58 22 00 00 	sw (r1+0),r2                                   
 800451c:	34 01 ff ff 	mvi r1,-1                                      
 8004520:	e3 ff ff d6 	bi 8004478 <mq_open+0x104>                     
  if ( status ) {                                                     
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 8004524:	46 00 ff e2 	be r16,r0,80044ac <mq_open+0x138>              
                                                                      
  /*                                                                  
   *  At this point, the message queue does not exist and everything has been
   *  checked. We should go ahead and create a message queue.         
   */                                                                 
  status = _POSIX_Message_queue_Create_support(                       
 8004528:	2b 82 00 28 	lw r2,(sp+40)                                  
 800452c:	ba 20 08 00 	mv r1,r17                                      
 8004530:	34 03 00 01 	mvi r3,1                                       
 8004534:	ba 40 20 00 	mv r4,r18                                      
 8004538:	37 85 00 30 	addi r5,sp,48                                  
 800453c:	f8 00 1e 18 	calli 800bd9c <_POSIX_Message_queue_Create_support>
  );                                                                  
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
 8004540:	34 02 ff ff 	mvi r2,-1                                      
 8004544:	44 22 00 0d 	be r1,r2,8004578 <mq_open+0x204>               
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8004548:	2d 61 00 0a 	lhu r1,(r11+10)                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800454c:	29 82 00 1c 	lw r2,(r12+28)                                 
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
    return (mqd_t) -1;                                                
  }                                                                   
                                                                      
  the_mq_fd->Queue = the_mq;                                          
 8004550:	2b 83 00 30 	lw r3,(sp+48)                                  
 8004554:	b4 21 08 00 	add r1,r1,r1                                   
 8004558:	b4 21 08 00 	add r1,r1,r1                                   
 800455c:	b4 41 08 00 	add r1,r2,r1                                   
 8004560:	59 63 00 10 	sw (r11+16),r3                                 
 8004564:	58 2b 00 00 	sw (r1+0),r11                                  
    the_object                                                        
  );                                                                  
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    /* ASSERT: information->is_string */                              
    the_object->name.name_p = name;                                   
 8004568:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Message_queue_Information_fds,                            
    &the_mq_fd->Object,                                               
    NULL                                                              
  );                                                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 800456c:	f8 00 12 18 	calli 8008dcc <_Thread_Enable_dispatch>        
                                                                      
  return (mqd_t) the_mq_fd->Object.id;                                
 8004570:	29 61 00 08 	lw r1,(r11+8)                                  
 8004574:	e3 ff ff c1 	bi 8004478 <mq_open+0x104>                     
 8004578:	b9 80 08 00 	mv r1,r12                                      
 800457c:	b9 60 10 00 	mv r2,r11                                      
 8004580:	f8 00 0d 85 	calli 8007b94 <_Objects_Free>                  
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
  if ( status == -1 ) {                                               
    _POSIX_Message_queue_Free_fd( the_mq_fd );                        
    _Thread_Enable_dispatch();                                        
 8004584:	f8 00 12 12 	calli 8008dcc <_Thread_Enable_dispatch>        
    return (mqd_t) -1;                                                
 8004588:	34 01 ff ff 	mvi r1,-1                                      
 800458c:	e3 ff ff bb 	bi 8004478 <mq_open+0x104>                     
                                                                      

08016ea8 <msdos_creat_node>: msdos_node_type_t type, const char *name, int name_len, mode_t mode, const fat_file_fd_t *link_fd) {
 8016ea8:	37 9c ff 24 	addi sp,sp,-220                                
 8016eac:	5b 8b 00 44 	sw (sp+68),r11                                 
 8016eb0:	5b 8c 00 40 	sw (sp+64),r12                                 
 8016eb4:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8016eb8:	5b 8e 00 38 	sw (sp+56),r14                                 
 8016ebc:	5b 8f 00 34 	sw (sp+52),r15                                 
 8016ec0:	5b 90 00 30 	sw (sp+48),r16                                 
 8016ec4:	5b 91 00 2c 	sw (sp+44),r17                                 
 8016ec8:	5b 92 00 28 	sw (sp+40),r18                                 
 8016ecc:	5b 93 00 24 	sw (sp+36),r19                                 
 8016ed0:	5b 94 00 20 	sw (sp+32),r20                                 
 8016ed4:	5b 95 00 1c 	sw (sp+28),r21                                 
 8016ed8:	5b 96 00 18 	sw (sp+24),r22                                 
 8016edc:	5b 97 00 14 	sw (sp+20),r23                                 
 8016ee0:	5b 98 00 10 	sw (sp+16),r24                                 
 8016ee4:	5b 99 00 0c 	sw (sp+12),r25                                 
 8016ee8:	5b 9b 00 08 	sw (sp+8),fp                                   
 8016eec:	5b 9d 00 04 	sw (sp+4),ra                                   
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
 8016ef0:	28 27 00 14 	lw r7,(r1+20)                                  
    uint32_t          sec = 0;                                        
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 8016ef4:	37 8b 00 a8 	addi r11,sp,168                                
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);     
 8016ef8:	37 92 00 48 	addi r18,sp,72                                 
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
 8016efc:	28 f5 00 08 	lw r21,(r7+8)                                  
                 msdos_node_type_t                        type,       
                 const char                              *name,       
                 int                                      name_len,   
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
 8016f00:	b8 20 98 00 	mv r19,r1                                      
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 8016f04:	34 0d ff ff 	mvi r13,-1                                     
 8016f08:	b8 40 a0 00 	mv r20,r2                                      
 8016f0c:	b8 60 78 00 	mv r15,r3                                      
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);     
 8016f10:	ba 40 08 00 	mv r1,r18                                      
 8016f14:	34 03 00 40 	mvi r3,64                                      
 8016f18:	34 02 00 00 	mvi r2,0                                       
    uint32_t          sec = 0;                                        
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 8016f1c:	59 60 00 04 	sw (r11+4),r0                                  
 8016f20:	59 60 00 08 	sw (r11+8),r0                                  
 8016f24:	59 60 00 0c 	sw (r11+12),r0                                 
 8016f28:	59 60 00 10 	sw (r11+16),r0                                 
 8016f2c:	59 60 00 14 	sw (r11+20),r0                                 
 8016f30:	59 60 00 18 	sw (r11+24),r0                                 
 8016f34:	59 60 00 1c 	sw (r11+28),r0                                 
                 msdos_node_type_t                        type,       
                 const char                              *name,       
                 int                                      name_len,   
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
 8016f38:	b8 80 70 00 	mv r14,r4                                      
 8016f3c:	b8 c0 88 00 	mv r17,r6                                      
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;        
 8016f40:	2a 76 00 08 	lw r22,(r19+8)                                 
    fat_file_fd_t    *fat_fd = NULL;                                  
 8016f44:	5b 80 00 d8 	sw (sp+216),r0                                 
    time_t            time_ret = 0;                                   
    uint16_t          time_val = 0;                                   
 8016f48:	0f 80 00 de 	sh (sp+222),r0                                 
    uint16_t          date = 0;                                       
 8016f4c:	0f 80 00 dc 	sh (sp+220),r0                                 
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
 8016f50:	5b 80 00 c8 	sw (sp+200),r0                                 
  dir_pos->sname.ofs = 0;                                             
 8016f54:	5b 80 00 cc 	sw (sp+204),r0                                 
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 8016f58:	5b 8d 00 d0 	sw (sp+208),r13                                
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 8016f5c:	5b 8d 00 d4 	sw (sp+212),r13                                
    uint32_t          sec = 0;                                        
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 8016f60:	5b 80 00 a8 	sw (sp+168),r0                                 
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);     
 8016f64:	f8 00 19 b3 	calli 801d630 <memset>                         
                                                                      
    if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {                     
 8016f68:	34 03 01 04 	mvi r3,260                                     
 8016f6c:	4c 6e 00 06 	bge r3,r14,8016f84 <msdos_creat_node+0xdc>     <== ALWAYS TAKEN
        rtems_set_errno_and_return_minus_one(ENAMETOOLONG);           
 8016f70:	f8 00 16 21 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8016f74:	34 02 00 5b 	mvi r2,91                                      <== NOT EXECUTED
 8016f78:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8016f7c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8016f80:	e0 00 00 0c 	bi 8016fb0 <msdos_creat_node+0x108>            <== NOT EXECUTED
    }                                                                 
                                                                      
    name_type = msdos_long_to_short (name, name_len,                  
 8016f84:	b9 e0 08 00 	mv r1,r15                                      
 8016f88:	b9 c0 10 00 	mv r2,r14                                      
 8016f8c:	b9 60 18 00 	mv r3,r11                                      
 8016f90:	34 04 00 0b 	mvi r4,11                                      
 8016f94:	f8 00 02 1d 	calli 8017808 <msdos_long_to_short>            
 8016f98:	b8 20 80 00 	mv r16,r1                                      
                                     MSDOS_DIR_NAME(short_node),      
                                     MSDOS_NAME_MAX);                 
    if (name_type == MSDOS_NAME_INVALID) {                            
 8016f9c:	5c 20 00 19 	bne r1,r0,8017000 <msdos_creat_node+0x158>     <== ALWAYS TAKEN
        rtems_set_errno_and_return_minus_one(EINVAL);                 
 8016fa0:	f8 00 16 15 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8016fa4:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8016fa8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8016fac:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
                                                                      
err:                                                                  
    /* mark the used 32bytes structure on the disk as free */         
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
    return rc;                                                        
}                                                                     
 8016fb0:	b9 80 08 00 	mv r1,r12                                      
 8016fb4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8016fb8:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8016fbc:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8016fc0:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8016fc4:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8016fc8:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8016fcc:	2b 90 00 30 	lw r16,(sp+48)                                 
 8016fd0:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8016fd4:	2b 92 00 28 	lw r18,(sp+40)                                 
 8016fd8:	2b 93 00 24 	lw r19,(sp+36)                                 
 8016fdc:	2b 94 00 20 	lw r20,(sp+32)                                 
 8016fe0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8016fe4:	2b 96 00 18 	lw r22,(sp+24)                                 
 8016fe8:	2b 97 00 14 	lw r23,(sp+20)                                 
 8016fec:	2b 98 00 10 	lw r24,(sp+16)                                 
 8016ff0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8016ff4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8016ff8:	37 9c 00 dc 	addi sp,sp,220                                 
 8016ffc:	c3 a0 00 00 	ret                                            
                                                                      
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
 8017000:	34 01 00 00 	mvi r1,0                                       
    if (name_type == MSDOS_NAME_INVALID) {                            
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
 8017004:	33 80 00 b4 	sb (sp+180),r0                                 
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
 8017008:	f8 00 27 ae 	calli 8020ec0 <time>                           
    if ( time_ret == -1 )                                             
        return -1;                                                    
 801700c:	34 0c ff ff 	mvi r12,-1                                     
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
    if ( time_ret == -1 )                                             
 8017010:	44 2d ff e8 	be r1,r13,8016fb0 <msdos_creat_node+0x108>     <== NEVER TAKEN
        return -1;                                                    
                                                                      
    msdos_date_unix2dos(time_ret, &date, &time_val);                  
 8017014:	37 82 00 dc 	addi r2,sp,220                                 
 8017018:	37 83 00 de 	addi r3,sp,222                                 
 801701c:	f8 00 11 15 	calli 801b470 <msdos_date_unix2dos>            
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);              
 8017020:	2f 88 00 de 	lhu r8,(sp+222)                                
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);                  
 8017024:	2f 87 00 dc 	lhu r7,(sp+220)                                
    *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);            
    *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);                
    *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);          
                                                                      
    /* initialize directory/file size */                              
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;           
 8017028:	5b 80 00 c4 	sw (sp+196),r0                                 
 *  @param[in] value is the value to be swapped                       
 *  @return the value after being endian swapped                      
 */                                                                   
static inline uint16_t CPU_swap_u16(uint16_t v)                       
{                                                                     
    return v << 8 | v >> 8;                                           
 801702c:	01 0a 00 01 	srui r10,r8,1                                  
 8017030:	00 e9 00 01 	srui r9,r7,1                                   
 8017034:	01 4a 00 01 	srui r10,r10,1                                 
 8017038:	01 29 00 01 	srui r9,r9,1                                   
 801703c:	01 4a 00 01 	srui r10,r10,1                                 
 8017040:	01 29 00 01 	srui r9,r9,1                                   
 8017044:	01 4a 00 01 	srui r10,r10,1                                 
 8017048:	01 29 00 01 	srui r9,r9,1                                   
 801704c:	b5 08 40 00 	add r8,r8,r8                                   
 8017050:	01 4a 00 01 	srui r10,r10,1                                 
 8017054:	b4 e7 38 00 	add r7,r7,r7                                   
 8017058:	01 29 00 01 	srui r9,r9,1                                   
 801705c:	b5 08 40 00 	add r8,r8,r8                                   
 8017060:	b4 e7 38 00 	add r7,r7,r7                                   
 8017064:	b5 08 40 00 	add r8,r8,r8                                   
 8017068:	01 4a 00 01 	srui r10,r10,1                                 
 801706c:	b4 e7 38 00 	add r7,r7,r7                                   
 8017070:	01 29 00 01 	srui r9,r9,1                                   
 8017074:	b5 08 40 00 	add r8,r8,r8                                   
 8017078:	b4 e7 38 00 	add r7,r7,r7                                   
 801707c:	b5 08 40 00 	add r8,r8,r8                                   
 8017080:	01 4a 00 01 	srui r10,r10,1                                 
 8017084:	b4 e7 38 00 	add r7,r7,r7                                   
 8017088:	01 29 00 01 	srui r9,r9,1                                   
 801708c:	b5 08 40 00 	add r8,r8,r8                                   
 8017090:	b4 e7 38 00 	add r7,r7,r7                                   
 8017094:	b5 08 40 00 	add r8,r8,r8                                   
 8017098:	01 4a 00 01 	srui r10,r10,1                                 
 801709c:	b4 e7 38 00 	add r7,r7,r7                                   
 80170a0:	01 29 00 01 	srui r9,r9,1                                   
 80170a4:	b5 08 40 00 	add r8,r8,r8                                   
 80170a8:	b4 e7 38 00 	add r7,r7,r7                                   
 80170ac:	b9 0a 40 00 	or r8,r8,r10                                   
 80170b0:	b8 e9 38 00 	or r7,r7,r9                                    
 80170b4:	20 e7 ff ff 	andi r7,r7,0xffff                              
 80170b8:	21 08 ff ff 	andi r8,r8,0xffff                              
    time_ret = time(NULL);                                            
    if ( time_ret == -1 )                                             
        return -1;                                                    
                                                                      
    msdos_date_unix2dos(time_ret, &date, &time_val);                  
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);              
 80170bc:	0f 88 00 b6 	sh (sp+182),r8                                 
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);                  
 80170c0:	0f 87 00 b8 	sh (sp+184),r7                                 
    *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);            
 80170c4:	0d 68 00 16 	sh (r11+22),r8                                 
    *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);                
 80170c8:	0d 67 00 18 	sh (r11+24),r7                                 
    *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);          
 80170cc:	0d 67 00 12 	sh (r11+18),r7                                 
                                                                      
    /* initialize directory/file size */                              
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;           
                                                                      
    if (type == MSDOS_DIRECTORY) {                                    
 80170d0:	46 80 01 36 	be r20,r0,80175a8 <msdos_creat_node+0x700>     
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;            
    }                                                                 
    else if (type == MSDOS_HARD_LINK) {                               
 80170d4:	34 03 00 02 	mvi r3,2                                       
 80170d8:	46 83 01 46 	be r20,r3,80175f0 <msdos_creat_node+0x748>     <== NEVER TAKEN
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
    }                                                                 
    else { /* regular file... */                                      
        *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;            
 80170dc:	43 83 00 b3 	lbu r3,(sp+179)                                
 80170e0:	38 63 00 20 	ori r3,r3,0x20                                 
 80170e4:	33 83 00 b3 	sb (sp+179),r3                                 
                                                                      
    /*                                                                
     * find free space in the parent directory and write new initialized
     * FAT 32 Bytes Directory Entry Structure to the disk             
     */                                                               
    rc = msdos_get_name_node(parent_loc, true, name, name_len,        
 80170e8:	37 8d 00 c8 	addi r13,sp,200                                
 80170ec:	ba 60 08 00 	mv r1,r19                                      
 80170f0:	34 02 00 01 	mvi r2,1                                       
 80170f4:	b9 e0 18 00 	mv r3,r15                                      
 80170f8:	b9 c0 20 00 	mv r4,r14                                      
 80170fc:	ba 00 28 00 	mv r5,r16                                      
 8017100:	b9 a0 30 00 	mv r6,r13                                      
 8017104:	b9 60 38 00 	mv r7,r11                                      
 8017108:	f8 00 09 75 	calli 80196dc <msdos_get_name_node>            
 801710c:	b8 20 60 00 	mv r12,r1                                      
                             name_type, &dir_pos, short_node);        
    if ( rc != RC_OK )                                                
 8017110:	5c 20 ff a8 	bne r1,r0,8016fb0 <msdos_creat_node+0x108>     <== NEVER TAKEN
                                                                      
    /*                                                                
     * if we create a new file we are done, if directory there are more steps
     * to do                                                          
     */                                                               
    if (type == MSDOS_DIRECTORY)                                      
 8017114:	5e 81 ff a7 	bne r20,r1,8016fb0 <msdos_creat_node+0x108>    
    {                                                                 
        /* open new directory as fat-file */                          
        rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);         
 8017118:	ba a0 08 00 	mv r1,r21                                      
 801711c:	b9 a0 10 00 	mv r2,r13                                      
 8017120:	37 83 00 d8 	addi r3,sp,216                                 
 8017124:	fb ff e2 f8 	calli 800fd04 <fat_file_open>                  
 8017128:	b8 20 60 00 	mv r12,r1                                      
        if (rc != RC_OK)                                              
 801712c:	5c 34 01 1a 	bne r1,r20,8017594 <msdos_creat_node+0x6ec>    <== NEVER TAKEN
                                                                      
        /*                                                            
         * we opened fat-file for node we just created, so initialize fat-file
         * descritor                                                  
         */                                                           
        fat_fd->fat_file_size = 0;                                    
 8017130:	2b 8b 00 d8 	lw r11,(sp+216)                                
        fat_fd->fat_file_type = FAT_DIRECTORY;                        
        fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                    
 8017134:	78 03 00 20 	mvhi r3,0x20                                   
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
 8017138:	78 02 08 03 	mvhi r2,0x803                                  
                                                                      
        /*                                                            
         * we opened fat-file for node we just created, so initialize fat-file
         * descritor                                                  
         */                                                           
        fat_fd->fat_file_size = 0;                                    
 801713c:	59 60 00 18 	sw (r11+24),r0                                 
        fat_fd->fat_file_type = FAT_DIRECTORY;                        
 8017140:	59 60 00 10 	sw (r11+16),r0                                 
        fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                    
 8017144:	59 63 00 14 	sw (r11+20),r3                                 
                                                                      
        /*                                                            
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
 8017148:	43 83 00 a8 	lbu r3,(sp+168)                                
 801714c:	43 84 00 a9 	lbu r4,(sp+169)                                
 8017150:	43 85 00 aa 	lbu r5,(sp+170)                                
 8017154:	43 88 00 ab 	lbu r8,(sp+171)                                
 8017158:	43 8a 00 ac 	lbu r10,(sp+172)                               
 801715c:	43 8e 00 ad 	lbu r14,(sp+173)                               
 8017160:	43 90 00 ae 	lbu r16,(sp+174)                               
 8017164:	43 97 00 af 	lbu r23,(sp+175)                               
 8017168:	43 99 00 b0 	lbu r25,(sp+176)                               
 801716c:	43 9d 00 b1 	lbu ra,(sp+177)                                
 8017170:	33 83 00 48 	sb (sp+72),r3                                  
 8017174:	43 87 00 c6 	lbu r7,(sp+198)                                
 8017178:	43 98 00 c1 	lbu r24,(sp+193)                               
 801717c:	43 91 00 c2 	lbu r17,(sp+194)                               
 8017180:	43 8f 00 c3 	lbu r15,(sp+195)                               
 8017184:	43 8c 00 c4 	lbu r12,(sp+196)                               
 8017188:	43 89 00 c5 	lbu r9,(sp+197)                                
 801718c:	43 86 00 c7 	lbu r6,(sp+199)                                
 8017190:	32 44 00 01 	sb (r18+1),r4                                  
 8017194:	32 45 00 02 	sb (r18+2),r5                                  
 8017198:	32 48 00 03 	sb (r18+3),r8                                  
 801719c:	32 4a 00 04 	sb (r18+4),r10                                 
 80171a0:	32 4e 00 05 	sb (r18+5),r14                                 
 80171a4:	32 50 00 06 	sb (r18+6),r16                                 
 80171a8:	32 57 00 07 	sb (r18+7),r23                                 
 80171ac:	32 59 00 08 	sb (r18+8),r25                                 
 80171b0:	32 5d 00 09 	sb (r18+9),ra                                  
 80171b4:	43 9b 00 b2 	lbu fp,(sp+178)                                
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
 80171b8:	38 42 07 ac 	ori r2,r2,0x7ac                                
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
 80171bc:	78 01 08 03 	mvhi r1,0x803                                  
                                                                      
        /*                                                            
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
 80171c0:	32 5b 00 0a 	sb (r18+10),fp                                 
 80171c4:	43 9b 00 b3 	lbu fp,(sp+179)                                
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
 80171c8:	38 21 07 b0 	ori r1,r1,0x7b0                                
                                                                      
        /*                                                            
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
 80171cc:	32 5b 00 0b 	sb (r18+11),fp                                 
 80171d0:	43 9b 00 b4 	lbu fp,(sp+180)                                
 80171d4:	32 5b 00 0c 	sb (r18+12),fp                                 
 80171d8:	43 9b 00 b5 	lbu fp,(sp+181)                                
 80171dc:	32 5b 00 0d 	sb (r18+13),fp                                 
 80171e0:	43 9b 00 b6 	lbu fp,(sp+182)                                
 80171e4:	32 5b 00 0e 	sb (r18+14),fp                                 
 80171e8:	43 9b 00 b7 	lbu fp,(sp+183)                                
 80171ec:	32 5b 00 0f 	sb (r18+15),fp                                 
 80171f0:	43 9b 00 b8 	lbu fp,(sp+184)                                
 80171f4:	32 5b 00 10 	sb (r18+16),fp                                 
 80171f8:	43 9b 00 b9 	lbu fp,(sp+185)                                
 80171fc:	32 5b 00 11 	sb (r18+17),fp                                 
 8017200:	43 9b 00 ba 	lbu fp,(sp+186)                                
 8017204:	32 5b 00 12 	sb (r18+18),fp                                 
 8017208:	43 9b 00 bb 	lbu fp,(sp+187)                                
 801720c:	32 5b 00 13 	sb (r18+19),fp                                 
 8017210:	43 9b 00 bc 	lbu fp,(sp+188)                                
 8017214:	32 5b 00 14 	sb (r18+20),fp                                 
 8017218:	43 9b 00 bd 	lbu fp,(sp+189)                                
 801721c:	32 5b 00 15 	sb (r18+21),fp                                 
 8017220:	43 9b 00 be 	lbu fp,(sp+190)                                
 8017224:	32 5b 00 16 	sb (r18+22),fp                                 
 8017228:	43 9b 00 bf 	lbu fp,(sp+191)                                
 801722c:	32 5b 00 17 	sb (r18+23),fp                                 
 8017230:	43 9b 00 c0 	lbu fp,(sp+192)                                
 8017234:	32 47 00 1e 	sb (r18+30),r7                                 
 8017238:	32 58 00 19 	sb (r18+25),r24                                
 801723c:	32 5b 00 18 	sb (r18+24),fp                                 
 8017240:	32 51 00 1a 	sb (r18+26),r17                                
 8017244:	32 4f 00 1b 	sb (r18+27),r15                                
 8017248:	32 4c 00 1c 	sb (r18+28),r12                                
 801724c:	32 49 00 1d 	sb (r18+29),r9                                 
 8017250:	32 46 00 1f 	sb (r18+31),r6                                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
 8017254:	32 43 00 20 	sb (r18+32),r3                                 
 8017258:	32 44 00 21 	sb (r18+33),r4                                 
 801725c:	32 45 00 22 	sb (r18+34),r5                                 
 8017260:	32 48 00 23 	sb (r18+35),r8                                 
 8017264:	32 4a 00 24 	sb (r18+36),r10                                
 8017268:	32 4e 00 25 	sb (r18+37),r14                                
 801726c:	32 50 00 26 	sb (r18+38),r16                                
 8017270:	32 57 00 27 	sb (r18+39),r23                                
 8017274:	32 59 00 28 	sb (r18+40),r25                                
 8017278:	32 5d 00 29 	sb (r18+41),ra                                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
 801727c:	28 45 00 00 	lw r5,(r2+0)                                   
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
 8017280:	43 82 00 b2 	lbu r2,(sp+178)                                
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
 8017284:	37 84 00 68 	addi r4,sp,104                                 
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
 8017288:	32 42 00 2a 	sb (r18+42),r2                                 
 801728c:	43 9b 00 b3 	lbu fp,(sp+179)                                
 8017290:	32 5b 00 2b 	sb (r18+43),fp                                 
 8017294:	43 82 00 b4 	lbu r2,(sp+180)                                
 8017298:	32 42 00 2c 	sb (r18+44),r2                                 
 801729c:	43 9b 00 b5 	lbu fp,(sp+181)                                
 80172a0:	32 5b 00 2d 	sb (r18+45),fp                                 
 80172a4:	43 82 00 b6 	lbu r2,(sp+182)                                
 80172a8:	32 42 00 2e 	sb (r18+46),r2                                 
 80172ac:	43 9b 00 b7 	lbu fp,(sp+183)                                
 80172b0:	32 5b 00 2f 	sb (r18+47),fp                                 
 80172b4:	43 82 00 b8 	lbu r2,(sp+184)                                
 80172b8:	32 42 00 30 	sb (r18+48),r2                                 
 80172bc:	43 9b 00 b9 	lbu fp,(sp+185)                                
 80172c0:	32 5b 00 31 	sb (r18+49),fp                                 
 80172c4:	43 82 00 ba 	lbu r2,(sp+186)                                
 80172c8:	32 42 00 32 	sb (r18+50),r2                                 
 80172cc:	43 9b 00 bb 	lbu fp,(sp+187)                                
 80172d0:	32 5b 00 33 	sb (r18+51),fp                                 
 80172d4:	43 82 00 bc 	lbu r2,(sp+188)                                
 80172d8:	32 42 00 34 	sb (r18+52),r2                                 
 80172dc:	43 9b 00 bd 	lbu fp,(sp+189)                                
 80172e0:	32 5b 00 35 	sb (r18+53),fp                                 
 80172e4:	43 82 00 be 	lbu r2,(sp+190)                                
 80172e8:	32 42 00 36 	sb (r18+54),r2                                 
 80172ec:	43 9b 00 bf 	lbu fp,(sp+191)                                
 80172f0:	32 5b 00 37 	sb (r18+55),fp                                 
 80172f4:	43 82 00 c0 	lbu r2,(sp+192)                                
 80172f8:	32 58 00 39 	sb (r18+57),r24                                
 80172fc:	32 51 00 3a 	sb (r18+58),r17                                
 8017300:	32 42 00 38 	sb (r18+56),r2                                 
 8017304:	32 4f 00 3b 	sb (r18+59),r15                                
 8017308:	32 4c 00 3c 	sb (r18+60),r12                                
 801730c:	32 49 00 3d 	sb (r18+61),r9                                 
 8017310:	32 47 00 3e 	sb (r18+62),r7                                 
 8017314:	32 46 00 3f 	sb (r18+63),r6                                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
 8017318:	40 a3 00 00 	lbu r3,(r5+0)                                  
 801731c:	33 83 00 48 	sb (sp+72),r3                                  
 8017320:	40 a3 00 01 	lbu r3,(r5+1)                                  
 8017324:	32 43 00 01 	sb (r18+1),r3                                  
 8017328:	40 a7 00 02 	lbu r7,(r5+2)                                  
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
 801732c:	28 23 00 00 	lw r3,(r1+0)                                   
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
 8017330:	32 47 00 02 	sb (r18+2),r7                                  
 8017334:	40 a7 00 03 	lbu r7,(r5+3)                                  
 8017338:	32 47 00 03 	sb (r18+3),r7                                  
 801733c:	40 a7 00 04 	lbu r7,(r5+4)                                  
 8017340:	32 47 00 04 	sb (r18+4),r7                                  
 8017344:	40 a7 00 05 	lbu r7,(r5+5)                                  
 8017348:	32 47 00 05 	sb (r18+5),r7                                  
 801734c:	40 a7 00 06 	lbu r7,(r5+6)                                  
 8017350:	32 47 00 06 	sb (r18+6),r7                                  
 8017354:	40 a7 00 07 	lbu r7,(r5+7)                                  
 8017358:	32 47 00 07 	sb (r18+7),r7                                  
 801735c:	40 a7 00 08 	lbu r7,(r5+8)                                  
 8017360:	32 47 00 08 	sb (r18+8),r7                                  
 8017364:	40 a7 00 09 	lbu r7,(r5+9)                                  
 8017368:	32 47 00 09 	sb (r18+9),r7                                  
 801736c:	40 a5 00 0a 	lbu r5,(r5+10)                                 
 8017370:	32 45 00 0a 	sb (r18+10),r5                                 
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
 8017374:	40 65 00 00 	lbu r5,(r3+0)                                  
 8017378:	33 85 00 68 	sb (sp+104),r5                                 
 801737c:	40 65 00 01 	lbu r5,(r3+1)                                  
 8017380:	30 85 00 01 	sb (r4+1),r5                                   
 8017384:	40 65 00 02 	lbu r5,(r3+2)                                  
 8017388:	30 85 00 02 	sb (r4+2),r5                                   
 801738c:	40 65 00 03 	lbu r5,(r3+3)                                  
 8017390:	30 85 00 03 	sb (r4+3),r5                                   
 8017394:	40 65 00 04 	lbu r5,(r3+4)                                  
 8017398:	30 85 00 04 	sb (r4+4),r5                                   
 801739c:	40 65 00 05 	lbu r5,(r3+5)                                  
 80173a0:	30 85 00 05 	sb (r4+5),r5                                   
 80173a4:	40 65 00 06 	lbu r5,(r3+6)                                  
 80173a8:	30 85 00 06 	sb (r4+6),r5                                   
 80173ac:	40 65 00 07 	lbu r5,(r3+7)                                  
 80173b0:	30 85 00 07 	sb (r4+7),r5                                   
 80173b4:	40 65 00 08 	lbu r5,(r3+8)                                  
 80173b8:	30 85 00 08 	sb (r4+8),r5                                   
 80173bc:	40 65 00 09 	lbu r5,(r3+9)                                  
 80173c0:	30 85 00 09 	sb (r4+9),r5                                   
 80173c4:	40 63 00 0a 	lbu r3,(r3+10)                                 
 80173c8:	30 83 00 0a 	sb (r4+10),r3                                  
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
 80173cc:	2a c4 00 20 	lw r4,(r22+32)                                 
 80173d0:	34 03 00 01 	mvi r3,1                                       
 80173d4:	44 83 00 7b 	be r4,r3,80175c0 <msdos_creat_node+0x718>      
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
 80173d8:	2a c5 00 1c 	lw r5,(r22+28)                                 
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));
 80173dc:	34 02 00 10 	mvi r2,16                                      
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
 80173e0:	20 a3 ff ff 	andi r3,r5,0xffff                              
 80173e4:	00 64 00 01 	srui r4,r3,1                                   
 80173e8:	b4 63 18 00 	add r3,r3,r3                                   
 80173ec:	00 84 00 01 	srui r4,r4,1                                   
 80173f0:	b4 63 18 00 	add r3,r3,r3                                   
 80173f4:	00 84 00 01 	srui r4,r4,1                                   
 80173f8:	b4 63 18 00 	add r3,r3,r3                                   
 80173fc:	00 84 00 01 	srui r4,r4,1                                   
 8017400:	b4 63 18 00 	add r3,r3,r3                                   
 8017404:	00 84 00 01 	srui r4,r4,1                                   
 8017408:	b4 63 18 00 	add r3,r3,r3                                   
 801740c:	00 84 00 01 	srui r4,r4,1                                   
 8017410:	b4 63 18 00 	add r3,r3,r3                                   
 8017414:	00 84 00 01 	srui r4,r4,1                                   
 8017418:	b4 63 18 00 	add r3,r3,r3                                   
 801741c:	00 84 00 01 	srui r4,r4,1                                   
 8017420:	b4 63 18 00 	add r3,r3,r3                                   
 8017424:	b8 64 18 00 	or r3,r3,r4                                    
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));
 8017428:	b8 a0 08 00 	mv r1,r5                                       
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
 801742c:	0e 43 00 3a 	sh (r18+58),r3                                 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));
 8017430:	f8 00 5e f2 	calli 802eff8 <__lshrsi3>                      
 8017434:	20 23 ff ff 	andi r3,r1,0xffff                              
 8017438:	00 64 00 01 	srui r4,r3,1                                   
 801743c:	b4 63 18 00 	add r3,r3,r3                                   
 8017440:	00 84 00 01 	srui r4,r4,1                                   
 8017444:	b4 63 18 00 	add r3,r3,r3                                   
 8017448:	00 84 00 01 	srui r4,r4,1                                   
 801744c:	b4 63 18 00 	add r3,r3,r3                                   
 8017450:	00 84 00 01 	srui r4,r4,1                                   
 8017454:	b4 63 18 00 	add r3,r3,r3                                   
 8017458:	00 84 00 01 	srui r4,r4,1                                   
 801745c:	b4 63 18 00 	add r3,r3,r3                                   
 8017460:	00 84 00 01 	srui r4,r4,1                                   
 8017464:	b4 63 18 00 	add r3,r3,r3                                   
 8017468:	00 84 00 01 	srui r4,r4,1                                   
 801746c:	b4 63 18 00 	add r3,r3,r3                                   
 8017470:	00 84 00 01 	srui r4,r4,1                                   
 8017474:	b4 63 18 00 	add r3,r3,r3                                   
 8017478:	b8 64 18 00 	or r3,r3,r4                                    
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
 801747c:	0e 43 00 34 	sh (r18+52),r3                                 
        /*                                                            
         * write dot and dotdot entries to new fat-file: currently fat-file
         * correspondes to a new node is zero length, so it will be extended
         * by one cluster and entries will be written                 
         */                                                           
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
 8017480:	ba a0 08 00 	mv r1,r21                                      
 8017484:	b9 60 10 00 	mv r2,r11                                      
 8017488:	34 03 00 00 	mvi r3,0                                       
 801748c:	34 04 00 40 	mvi r4,64                                      
 8017490:	ba 40 28 00 	mv r5,r18                                      
 8017494:	fb ff e4 df 	calli 8010810 <fat_file_write>                 
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2,   
                             (uint8_t *)dot_dotdot);                  
        if (ret < 0)                                                  
 8017498:	48 01 00 48 	bg r0,r1,80175b8 <msdos_creat_node+0x710>      <== NEVER TAKEN
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
 801749c:	2b 8b 00 d8 	lw r11,(sp+216)                                
 80174a0:	2e a7 00 06 	lhu r7,(r21+6)                                 
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
 80174a4:	34 02 00 10 	mvi r2,16                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
 80174a8:	29 65 00 1c 	lw r5,(r11+28)                                 
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
 80174ac:	29 68 00 18 	lw r8,(r11+24)                                 
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
 80174b0:	20 a3 ff ff 	andi r3,r5,0xffff                              
 80174b4:	00 64 00 01 	srui r4,r3,1                                   
 80174b8:	b4 63 18 00 	add r3,r3,r3                                   
 80174bc:	00 84 00 01 	srui r4,r4,1                                   
 80174c0:	b4 63 18 00 	add r3,r3,r3                                   
 80174c4:	00 84 00 01 	srui r4,r4,1                                   
 80174c8:	b4 63 18 00 	add r3,r3,r3                                   
 80174cc:	00 84 00 01 	srui r4,r4,1                                   
 80174d0:	b4 63 18 00 	add r3,r3,r3                                   
 80174d4:	00 84 00 01 	srui r4,r4,1                                   
 80174d8:	b4 63 18 00 	add r3,r3,r3                                   
 80174dc:	00 84 00 01 	srui r4,r4,1                                   
 80174e0:	b4 63 18 00 	add r3,r3,r3                                   
 80174e4:	00 84 00 01 	srui r4,r4,1                                   
 80174e8:	b4 63 18 00 	add r3,r3,r3                                   
 80174ec:	00 84 00 01 	srui r4,r4,1                                   
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
 80174f0:	b5 07 38 00 	add r7,r8,r7                                   
 80174f4:	b4 63 18 00 	add r3,r3,r3                                   
 80174f8:	b8 64 18 00 	or r3,r3,r4                                    
 80174fc:	59 67 00 18 	sw (r11+24),r7                                 
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
 8017500:	b8 a0 08 00 	mv r1,r5                                       
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
 8017504:	0e 43 00 1a 	sh (r18+26),r3                                 
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
 8017508:	f8 00 5e bc 	calli 802eff8 <__lshrsi3>                      
 801750c:	20 23 ff ff 	andi r3,r1,0xffff                              
 8017510:	00 64 00 01 	srui r4,r3,1                                   
 8017514:	b4 63 18 00 	add r3,r3,r3                                   
 8017518:	00 84 00 01 	srui r4,r4,1                                   
 801751c:	b4 63 18 00 	add r3,r3,r3                                   
 8017520:	00 84 00 01 	srui r4,r4,1                                   
 8017524:	b4 63 18 00 	add r3,r3,r3                                   
 8017528:	00 84 00 01 	srui r4,r4,1                                   
 801752c:	b4 63 18 00 	add r3,r3,r3                                   
 8017530:	00 84 00 01 	srui r4,r4,1                                   
 8017534:	b4 63 18 00 	add r3,r3,r3                                   
 8017538:	00 84 00 01 	srui r4,r4,1                                   
 801753c:	b4 63 18 00 	add r3,r3,r3                                   
 8017540:	00 84 00 01 	srui r4,r4,1                                   
 8017544:	b4 63 18 00 	add r3,r3,r3                                   
 8017548:	00 84 00 01 	srui r4,r4,1                                   
 801754c:	b4 63 18 00 	add r3,r3,r3                                   
 8017550:	b8 64 38 00 	or r7,r3,r4                                    
                                                                      
        /* rewrite dot entry */                                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
 8017554:	ba a0 08 00 	mv r1,r21                                      
 8017558:	b9 60 10 00 	mv r2,r11                                      
 801755c:	34 03 00 00 	mvi r3,0                                       
 8017560:	34 04 00 20 	mvi r4,32                                      
 8017564:	ba 40 28 00 	mv r5,r18                                      
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
 8017568:	0e 47 00 14 	sh (r18+20),r7                                 
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
                                                                      
        /* rewrite dot entry */                                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
 801756c:	fb ff e4 a9 	calli 8010810 <fat_file_write>                 
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,       
                             (uint8_t *)DOT_NODE_P(dot_dotdot));      
        if (ret < 0)                                                  
 8017570:	48 01 00 12 	bg r0,r1,80175b8 <msdos_creat_node+0x710>      <== NEVER TAKEN
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* write first cluster num of a new directory to disk */      
        rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd);
 8017574:	2a 61 00 14 	lw r1,(r19+20)                                 
 8017578:	2b 82 00 d8 	lw r2,(sp+216)                                 
 801757c:	f8 00 01 b7 	calli 8017c58 <msdos_set_first_cluster_num>    
 8017580:	b8 20 60 00 	mv r12,r1                                      
        if (rc != RC_OK)                                              
 8017584:	44 20 00 17 	be r1,r0,80175e0 <msdos_creat_node+0x738>      <== ALWAYS TAKEN
        fat_file_close(&fs_info->fat, fat_fd);                        
    }                                                                 
    return RC_OK;                                                     
                                                                      
error:                                                                
    fat_file_close(&fs_info->fat, fat_fd);                            
 8017588:	2b 82 00 d8 	lw r2,(sp+216)                                 <== NOT EXECUTED
 801758c:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 8017590:	fb ff e3 92 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
                                                                      
err:                                                                  
    /* mark the used 32bytes structure on the disk as free */         
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
 8017594:	2a 61 00 14 	lw r1,(r19+20)                                 <== NOT EXECUTED
 8017598:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 801759c:	34 03 00 e5 	mvi r3,229                                     <== NOT EXECUTED
 80175a0:	f8 00 02 67 	calli 8017f3c <msdos_set_first_char4file_name> <== NOT EXECUTED
    return rc;                                                        
 80175a4:	e3 ff fe 83 	bi 8016fb0 <msdos_creat_node+0x108>            <== NOT EXECUTED
                                                                      
    /* initialize directory/file size */                              
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;           
                                                                      
    if (type == MSDOS_DIRECTORY) {                                    
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;            
 80175a8:	43 83 00 b3 	lbu r3,(sp+179)                                
 80175ac:	38 63 00 10 	ori r3,r3,0x10                                 
 80175b0:	33 83 00 b3 	sb (sp+179),r3                                 
 80175b4:	e3 ff fe cd 	bi 80170e8 <msdos_creat_node+0x240>            
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,       
                             (uint8_t *)DOT_NODE_P(dot_dotdot));      
        if (ret < 0)                                                  
        {                                                             
            rc = -1;                                                  
 80175b8:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 80175bc:	e3 ff ff f3 	bi 8017588 <msdos_creat_node+0x6e0>            <== NOT EXECUTED
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
 80175c0:	2a c1 00 24 	lw r1,(r22+36)                                 
 80175c4:	5c 34 ff 85 	bne r1,r20,80173d8 <msdos_creat_node+0x530>    <== NEVER TAKEN
            (fs_info->fat.vol.type & FAT_FAT32))                      
 80175c8:	42 a1 00 0e 	lbu r1,(r21+14)                                
 80175cc:	20 21 00 04 	andi r1,r1,0x4                                 
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
 80175d0:	44 34 ff 82 	be r1,r20,80173d8 <msdos_creat_node+0x530>     <== ALWAYS TAKEN
            (fs_info->fat.vol.type & FAT_FAT32))                      
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
 80175d4:	0e 40 00 3a 	sh (r18+58),r0                                 <== NOT EXECUTED
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
 80175d8:	0e 40 00 34 	sh (r18+52),r0                                 <== NOT EXECUTED
 80175dc:	e3 ff ff a9 	bi 8017480 <msdos_creat_node+0x5d8>            <== NOT EXECUTED
        /* write first cluster num of a new directory to disk */      
        rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd);
        if (rc != RC_OK)                                              
            goto error;                                               
                                                                      
        fat_file_close(&fs_info->fat, fat_fd);                        
 80175e0:	2b 82 00 d8 	lw r2,(sp+216)                                 
 80175e4:	ba a0 08 00 	mv r1,r21                                      
 80175e8:	fb ff e3 7c 	calli 80103d8 <fat_file_close>                 
 80175ec:	e3 ff fe 71 	bi 8016fb0 <msdos_creat_node+0x108>            
       * node to the newly created                                    
       */                                                             
      /*                                                              
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
 80175f0:	2a 21 00 20 	lw r1,(r17+32)                                 <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 80175f4:	5c 20 00 24 	bne r1,r0,8017684 <msdos_creat_node+0x7dc>     <== NOT EXECUTED
 80175f8:	42 a2 00 0e 	lbu r2,(r21+14)                                <== NOT EXECUTED
 80175fc:	20 42 00 03 	andi r2,r2,0x3                                 <== NOT EXECUTED
 8017600:	44 41 00 21 	be r2,r1,8017684 <msdos_creat_node+0x7dc>      <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
 8017604:	2a b7 00 20 	lw r23,(r21+32)                                <== NOT EXECUTED
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
 8017608:	2a 2c 00 24 	lw r12,(r17+36)                                <== NOT EXECUTED
 801760c:	42 a2 00 02 	lbu r2,(r21+2)                                 <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
 8017610:	37 8d 00 88 	addi r13,sp,136                                <== NOT EXECUTED
      /*                                                              
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
 8017614:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8017618:	f8 00 5e 78 	calli 802eff8 <__lshrsi3>                      <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
 801761c:	2e a3 00 00 	lhu r3,(r21+0)                                 <== NOT EXECUTED
      /*                                                              
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
 8017620:	b6 e1 10 00 	add r2,r23,r1                                  <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
 8017624:	34 04 00 20 	mvi r4,32                                      <== NOT EXECUTED
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
 8017628:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
 801762c:	a0 6c 18 00 	and r3,r3,r12                                  <== NOT EXECUTED
 8017630:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 8017634:	b9 a0 28 00 	mv r5,r13                                      <== NOT EXECUTED
 8017638:	fb ff e6 33 	calli 8010f04 <_fat_block_read>                <== NOT EXECUTED
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
      if (ret < 0) {                                                  
          return -1;                                                  
 801763c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
      if (ret < 0) {                                                  
 8017640:	48 01 fe 5c 	bg r0,r1,8016fb0 <msdos_creat_node+0x108>      <== NOT EXECUTED
      /*                                                              
       * copy various attributes                                      
       */                                                             
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
      *MSDOS_DIR_CRT_TIME(short_node)      =*MSDOS_DIR_CRT_TIME(link_node);
 8017644:	2d a4 00 0e 	lhu r4,(r13+14)                                <== NOT EXECUTED
      *MSDOS_DIR_CRT_DATE(short_node)      =*MSDOS_DIR_CRT_DATE(link_node);
 8017648:	2d a3 00 10 	lhu r3,(r13+16)                                <== NOT EXECUTED
                                                                      
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
 801764c:	29 a2 00 1c 	lw r2,(r13+28)                                 <== NOT EXECUTED
      }                                                               
      /*                                                              
       * copy various attributes                                      
       */                                                             
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
 8017650:	43 87 00 95 	lbu r7,(sp+149)                                <== NOT EXECUTED
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
                                                                      
      *MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =                      
 8017654:	2d a6 00 1a 	lhu r6,(r13+26)                                <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_LOW(link_node);                   
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =                       
 8017658:	2d a5 00 14 	lhu r5,(r13+20)                                <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_HI(link_node);                    
      /*                                                              
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
 801765c:	43 81 00 93 	lbu r1,(sp+147)                                <== NOT EXECUTED
      }                                                               
      /*                                                              
       * copy various attributes                                      
       */                                                             
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
 8017660:	33 87 00 b5 	sb (sp+181),r7                                 <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME(short_node)      =*MSDOS_DIR_CRT_TIME(link_node);
 8017664:	0f 84 00 b6 	sh (sp+182),r4                                 <== NOT EXECUTED
      *MSDOS_DIR_CRT_DATE(short_node)      =*MSDOS_DIR_CRT_DATE(link_node);
 8017668:	0f 83 00 b8 	sh (sp+184),r3                                 <== NOT EXECUTED
                                                                      
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
 801766c:	5b 82 00 c4 	sw (sp+196),r2                                 <== NOT EXECUTED
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =                       
           *MSDOS_DIR_FIRST_CLUSTER_HI(link_node);                    
      /*                                                              
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
 8017670:	38 21 00 20 	ori r1,r1,0x20                                 <== NOT EXECUTED
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
                                                                      
      *MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =                      
 8017674:	0d 66 00 1a 	sh (r11+26),r6                                 <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_LOW(link_node);                   
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =                       
 8017678:	0d 65 00 14 	sh (r11+20),r5                                 <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_HI(link_node);                    
      /*                                                              
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
 801767c:	33 81 00 b3 	sb (sp+179),r1                                 <== NOT EXECUTED
 8017680:	e3 ff fe 9a 	bi 80170e8 <msdos_creat_node+0x240>            <== NOT EXECUTED
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8017684:	42 a2 00 05 	lbu r2,(r21+5)                                 <== NOT EXECUTED
 8017688:	34 21 ff fe 	addi r1,r1,-2                                  <== NOT EXECUTED
 801768c:	fb ff a6 b6 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 8017690:	2a b7 00 34 	lw r23,(r21+52)                                <== NOT EXECUTED
 8017694:	b4 37 b8 00 	add r23,r1,r23                                 <== NOT EXECUTED
 8017698:	e3 ff ff dc 	bi 8017608 <msdos_creat_node+0x760>            <== NOT EXECUTED
                                                                      

0801b63c <msdos_date_dos2unix>: * called from the stat(), and fstat() system calls and so probably need * not be too efficient. */ unsigned int msdos_date_dos2unix(unsigned int dd, unsigned int dt) {
 801b63c:	37 9c ff f4 	addi sp,sp,-12                                 
 801b640:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801b644:	5b 8c 00 08 	sw (sp+8),r12                                  
 801b648:	5b 9d 00 04 	sw (sp+4),ra                                   
 801b64c:	b8 40 60 00 	mv r12,r2                                      
 801b650:	b8 20 58 00 	mv r11,r1                                      
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b654:	34 02 00 0b 	mvi r2,11                                      
 801b658:	21 81 f8 00 	andi r1,r12,0xf800                             
 801b65c:	f8 00 4e 67 	calli 802eff8 <__lshrsi3>                      
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b660:	21 83 07 e0 	andi r3,r12,0x7e0                              
 801b664:	00 63 00 01 	srui r3,r3,1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b668:	b4 21 28 00 	add r5,r1,r1                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b66c:	00 63 00 01 	srui r3,r3,1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b670:	b4 a5 28 00 	add r5,r5,r5                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b674:	00 63 00 01 	srui r3,r3,1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b678:	b4 a5 28 00 	add r5,r5,r5                                   
 801b67c:	b4 a5 20 00 	add r4,r5,r5                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b680:	00 63 00 01 	srui r3,r3,1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b684:	b4 84 20 00 	add r4,r4,r4                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b688:	00 63 00 01 	srui r3,r3,1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b68c:	b4 84 20 00 	add r4,r4,r4                                   
 801b690:	b4 84 20 00 	add r4,r4,r4                                   
 801b694:	c8 85 28 00 	sub r5,r4,r5                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b698:	b4 63 08 00 	add r1,r3,r3                                   
 801b69c:	b4 23 18 00 	add r3,r1,r3                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6a0:	b4 a5 20 00 	add r4,r5,r5                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b6a4:	b4 63 08 00 	add r1,r3,r3                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6a8:	b4 84 20 00 	add r4,r4,r4                                   
 801b6ac:	b4 84 20 00 	add r4,r4,r4                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b6b0:	b4 21 08 00 	add r1,r1,r1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
 801b6b4:	78 06 08 03 	mvhi r6,0x803                                  
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6b8:	b4 84 20 00 	add r4,r4,r4                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b6bc:	b4 61 18 00 	add r3,r3,r1                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
 801b6c0:	38 c6 28 74 	ori r6,r6,0x2874                               
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6c4:	c8 85 20 00 	sub r4,r4,r5                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
 801b6c8:	b4 63 18 00 	add r3,r3,r3                                   
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
 801b6cc:	2c c2 00 00 	lhu r2,(r6+0)                                  
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6d0:	b4 83 18 00 	add r3,r4,r3                                   
	uint32_t m, month;                                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
 801b6d4:	21 8c 00 1f 	andi r12,r12,0x1f                              
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
 801b6d8:	b4 6c 60 00 	add r12,r3,r12                                 
	uint32_t m, month;                                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
 801b6dc:	b5 8c 60 00 	add r12,r12,r12                                
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
 801b6e0:	44 4b 00 4b 	be r2,r11,801b80c <msdos_date_dos2unix+0x1d0>  
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
 801b6e4:	34 02 00 09 	mvi r2,9                                       
 801b6e8:	21 61 fe 00 	andi r1,r11,0xfe00                             
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
 801b6ec:	0c cb 00 00 	sh (r6+0),r11                                  
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
 801b6f0:	f8 00 4e 42 	calli 802eff8 <__lshrsi3>                      
		for (y = 0; y < year; y++)                                          
			days += y & 0x03 ? 365 : 366;                                      
		months = year & 0x03 ? regyear : leapyear;                          
 801b6f4:	78 04 08 03 	mvhi r4,0x803                                  
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
 801b6f8:	b8 20 28 00 	mv r5,r1                                       
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
 801b6fc:	34 02 00 00 	mvi r2,0                                       
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
			days += y & 0x03 ? 365 : 366;                                      
		months = year & 0x03 ? regyear : leapyear;                          
 801b700:	38 84 22 60 	ori r4,r4,0x2260                               
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
 801b704:	44 20 00 0e 	be r1,r0,801b73c <msdos_date_dos2unix+0x100>   <== NEVER TAKEN
 801b708:	34 03 00 00 	mvi r3,0                                       
 801b70c:	34 04 01 6e 	mvi r4,366                                     
 801b710:	34 63 00 01 	addi r3,r3,1                                   
			days += y & 0x03 ? 365 : 366;                                      
 801b714:	20 66 00 03 	andi r6,r3,0x3                                 
 801b718:	b4 44 10 00 	add r2,r2,r4                                   
 801b71c:	64 c4 00 00 	cmpei r4,r6,0                                  
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
 801b720:	54 a3 00 39 	bgu r5,r3,801b804 <msdos_date_dos2unix+0x1c8>  
			days += y & 0x03 ? 365 : 366;                                      
		months = year & 0x03 ? regyear : leapyear;                          
 801b724:	78 04 08 03 	mvhi r4,0x803                                  
 801b728:	20 a5 00 03 	andi r5,r5,0x3                                 
 801b72c:	38 84 22 60 	ori r4,r4,0x2260                               
 801b730:	44 a0 00 03 	be r5,r0,801b73c <msdos_date_dos2unix+0x100>   <== ALWAYS TAKEN
 801b734:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801b738:	38 84 22 48 	ori r4,r4,0x2248                               <== NOT EXECUTED
		/*                                                                  
		 * Prevent going from 0 to 0xffffffff in the following              
		 * loop.                                                            
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
 801b73c:	21 63 01 e0 	andi r3,r11,0x1e0                              
 801b740:	00 63 00 01 	srui r3,r3,1                                   
 801b744:	00 63 00 01 	srui r3,r3,1                                   
 801b748:	00 63 00 01 	srui r3,r3,1                                   
 801b74c:	00 63 00 01 	srui r3,r3,1                                   
 801b750:	00 63 00 01 	srui r3,r3,1                                   
		if (month == 0) {                                                   
 801b754:	44 60 00 09 	be r3,r0,801b778 <msdos_date_dos2unix+0x13c>   <== NEVER TAKEN
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
 801b758:	34 66 ff ff 	addi r6,r3,-1                                  
 801b75c:	44 c0 00 07 	be r6,r0,801b778 <msdos_date_dos2unix+0x13c>   <== ALWAYS TAKEN
 801b760:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
			days += months[m];                                                 
 801b764:	2c 85 00 00 	lhu r5,(r4+0)                                  <== NOT EXECUTED
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
		if (month == 0) {                                                   
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
 801b768:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 801b76c:	34 84 00 02 	addi r4,r4,2                                   <== NOT EXECUTED
			days += months[m];                                                 
 801b770:	b4 45 10 00 	add r2,r2,r5                                   <== NOT EXECUTED
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
		if (month == 0) {                                                   
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
 801b774:	54 c3 ff fc 	bgu r6,r3,801b764 <msdos_date_dos2unix+0x128>  <== NOT EXECUTED
			days += months[m];                                                 
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;       
 801b778:	21 6b 00 1f 	andi r11,r11,0x1f                              
 801b77c:	35 6b ff ff 	addi r11,r11,-1                                
 801b780:	b5 62 10 00 	add r2,r11,r2                                  
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;                  
 801b784:	b4 42 08 00 	add r1,r2,r2                                   
 801b788:	b4 22 10 00 	add r2,r1,r2                                   
 801b78c:	b4 42 10 00 	add r2,r2,r2                                   
 801b790:	b4 42 10 00 	add r2,r2,r2                                   
 801b794:	b4 42 10 00 	add r2,r2,r2                                   
 801b798:	b4 42 10 00 	add r2,r2,r2                                   
 801b79c:	b4 42 10 00 	add r2,r2,r2                                   
 801b7a0:	b4 42 10 00 	add r2,r2,r2                                   
 801b7a4:	b4 42 10 00 	add r2,r2,r2                                   
 801b7a8:	b4 42 18 00 	add r3,r2,r2                                   
 801b7ac:	b4 63 18 00 	add r3,r3,r3                                   
 801b7b0:	b4 63 18 00 	add r3,r3,r3                                   
 801b7b4:	b4 63 18 00 	add r3,r3,r3                                   
 801b7b8:	c8 62 10 00 	sub r2,r3,r2                                   
 801b7bc:	b4 42 18 00 	add r3,r2,r2                                   
 801b7c0:	b4 63 18 00 	add r3,r3,r3                                   
 801b7c4:	b4 63 18 00 	add r3,r3,r3                                   
 801b7c8:	b4 63 18 00 	add r3,r3,r3                                   
 801b7cc:	c8 62 10 00 	sub r2,r3,r2                                   
 801b7d0:	78 03 08 03 	mvhi r3,0x803                                  
 801b7d4:	38 63 08 20 	ori r3,r3,0x820                                
 801b7d8:	28 61 00 00 	lw r1,(r3+0)                                   
 801b7dc:	78 04 08 03 	mvhi r4,0x803                                  
 801b7e0:	38 84 28 78 	ori r4,r4,0x2878                               
 801b7e4:	b4 41 10 00 	add r2,r2,r1                                   
	}                                                                    
	return seconds + lastseconds;                                        
}                                                                     
 801b7e8:	b4 4c 08 00 	add r1,r2,r12                                  
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
			days += months[m];                                                 
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;       
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;                  
 801b7ec:	58 82 00 00 	sw (r4+0),r2                                   
	}                                                                    
	return seconds + lastseconds;                                        
}                                                                     
 801b7f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b7f4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801b7f8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801b7fc:	37 9c 00 0c 	addi sp,sp,12                                  
 801b800:	c3 a0 00 00 	ret                                            
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
			days += y & 0x03 ? 365 : 366;                                      
 801b804:	34 84 01 6d 	addi r4,r4,365                                 
 801b808:	e3 ff ff c2 	bi 801b710 <msdos_date_dos2unix+0xd4>          
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
 801b80c:	78 01 08 03 	mvhi r1,0x803                                  
 801b810:	38 21 28 78 	ori r1,r1,0x2878                               
 801b814:	28 22 00 00 	lw r2,(r1+0)                                   
			days += months[m];                                                 
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;       
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;                  
	}                                                                    
	return seconds + lastseconds;                                        
}                                                                     
 801b818:	b4 4c 08 00 	add r1,r2,r12                                  
 801b81c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b820:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801b824:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801b828:	37 9c 00 0c 	addi sp,sp,12                                  
 801b82c:	c3 a0 00 00 	ret                                            
                                                                      

0801b470 <msdos_date_unix2dos>: * file timestamps. The passed in unix time is assumed to be in GMT. */ void msdos_date_unix2dos(unsigned int t, uint16_t *ddp, uint16_t *dtp) {
 801b470:	37 9c ff e8 	addi sp,sp,-24                                 
 801b474:	5b 8b 00 18 	sw (sp+24),r11                                 
 801b478:	5b 8c 00 14 	sw (sp+20),r12                                 
 801b47c:	5b 8d 00 10 	sw (sp+16),r13                                 
 801b480:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801b484:	5b 8f 00 08 	sw (sp+8),r15                                  
 801b488:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
 801b48c:	78 04 08 03 	mvhi r4,0x803                                  
 801b490:	38 84 28 7c 	ori r4,r4,0x287c                               
 801b494:	28 85 00 00 	lw r5,(r4+0)                                   
 * file timestamps. The passed in unix time is assumed to be in GMT.  
 */                                                                   
void                                                                  
msdos_date_unix2dos(unsigned int t, uint16_t *ddp,                    
                    uint16_t *dtp)                                    
{                                                                     
 801b498:	b8 20 60 00 	mv r12,r1                                      
 801b49c:	b8 40 70 00 	mv r14,r2                                      
 801b4a0:	b8 60 78 00 	mv r15,r3                                      
                                                                      
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
 801b4a4:	44 a1 00 5b 	be r5,r1,801b610 <msdos_date_unix2dos+0x1a0>   
		lasttime = t;                                                       
 801b4a8:	58 81 00 00 	sw (r4+0),r1                                   
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
 801b4ac:	34 02 00 3c 	mvi r2,60                                      
 801b4b0:	f8 00 4f 22 	calli 802f138 <__udivsi3>                      
 801b4b4:	34 02 00 3c 	mvi r2,60                                      
 801b4b8:	f8 00 4f 30 	calli 802f178 <__umodsi3>                      
 801b4bc:	b8 20 58 00 	mv r11,r1                                      
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
 801b4c0:	34 02 0e 10 	mvi r2,3600                                    
 801b4c4:	b9 80 08 00 	mv r1,r12                                      
 801b4c8:	f8 00 4f 1c 	calli 802f138 <__udivsi3>                      
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
 801b4cc:	b5 6b 58 00 	add r11,r11,r11                                
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
 801b4d0:	34 02 00 18 	mvi r2,24                                      
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
 801b4d4:	b5 6b 58 00 	add r11,r11,r11                                
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
 801b4d8:	f8 00 4f 28 	calli 802f178 <__umodsi3>                      
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
 801b4dc:	b5 6b 58 00 	add r11,r11,r11                                
 801b4e0:	34 02 00 0b 	mvi r2,11                                      
 801b4e4:	b5 6b 58 00 	add r11,r11,r11                                
 801b4e8:	fb ff 97 1f 	calli 8001164 <__ashlsi3>                      
 801b4ec:	b5 6b 58 00 	add r11,r11,r11                                
 801b4f0:	b5 61 68 00 	add r13,r11,r1                                 
 801b4f4:	34 02 00 3c 	mvi r2,60                                      
 801b4f8:	b9 80 08 00 	mv r1,r12                                      
 801b4fc:	f8 00 4f 1f 	calli 802f178 <__umodsi3>                      
 801b500:	00 21 00 01 	srui r1,r1,1                                   
		/*                                                                  
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
 801b504:	78 03 08 03 	mvhi r3,0x803                                  
 801b508:	38 63 08 1c 	ori r3,r3,0x81c                                
 801b50c:	28 62 00 00 	lw r2,(r3+0)                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
 801b510:	b5 a1 68 00 	add r13,r13,r1                                 
 801b514:	78 04 08 03 	mvhi r4,0x803                                  
 801b518:	38 84 28 80 	ori r4,r4,0x2880                               
 801b51c:	21 ad ff ff 	andi r13,r13,0xffff                            
 801b520:	0c 8d 00 00 	sh (r4+0),r13                                  
		/*                                                                  
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
 801b524:	b9 80 08 00 	mv r1,r12                                      
 801b528:	f8 00 4f 04 	calli 802f138 <__udivsi3>                      
		if (days != lastday) {                                              
 801b52c:	78 04 08 03 	mvhi r4,0x803                                  
 801b530:	38 84 28 84 	ori r4,r4,0x2884                               
 801b534:	28 82 00 00 	lw r2,(r4+0)                                   
 801b538:	44 22 00 3d 	be r1,r2,801b62c <msdos_date_unix2dos+0x1bc>   
			lastday = days;                                                    
 801b53c:	58 81 00 00 	sw (r4+0),r1                                   
			for (year = 1970;; year++) {                                       
 801b540:	34 05 07 b2 	mvi r5,1970                                    
				inc = year & 0x03 ? 365 : 366;                                    
 801b544:	20 a6 00 03 	andi r6,r5,0x3                                 
 801b548:	64 c4 00 00 	cmpei r4,r6,0                                  
 801b54c:	34 84 01 6d 	addi r4,r4,365                                 
				if (days < inc)                                                   
 801b550:	54 81 00 04 	bgu r4,r1,801b560 <msdos_date_unix2dos+0xf0>   
					break;                                                           
				days -= inc;                                                      
 801b554:	c8 24 08 00 	sub r1,r1,r4                                   
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
			lastday = days;                                                    
			for (year = 1970;; year++) {                                       
 801b558:	34 a5 00 01 	addi r5,r5,1                                   
				inc = year & 0x03 ? 365 : 366;                                    
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
 801b55c:	e3 ff ff fa 	bi 801b544 <msdos_date_unix2dos+0xd4>          
			months = year & 0x03 ? regyear : leapyear;                         
 801b560:	78 04 08 03 	mvhi r4,0x803                                  
 801b564:	38 84 22 60 	ori r4,r4,0x2260                               
 801b568:	5c c0 00 27 	bne r6,r0,801b604 <msdos_date_unix2dos+0x194>  <== NEVER TAKEN
			for (month = 0; month < 12; month++) {                             
 801b56c:	34 06 00 00 	mvi r6,0                                       
 801b570:	34 08 00 0c 	mvi r8,12                                      
				if (days < months[month])                                         
 801b574:	2c 87 00 00 	lhu r7,(r4+0)                                  
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
 801b578:	34 84 00 02 	addi r4,r4,2                                   
				if (days < months[month])                                         
 801b57c:	54 e1 00 04 	bgu r7,r1,801b58c <msdos_date_unix2dos+0x11c>  <== ALWAYS TAKEN
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
 801b580:	34 c6 00 01 	addi r6,r6,1                                   <== NOT EXECUTED
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
 801b584:	c8 27 08 00 	sub r1,r1,r7                                   <== NOT EXECUTED
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
 801b588:	5c c8 ff fb 	bne r6,r8,801b574 <msdos_date_unix2dos+0x104>  <== NOT EXECUTED
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
			}                                                                  
			lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)                     
 801b58c:	34 c6 00 01 	addi r6,r6,1                                   
 801b590:	b4 c6 30 00 	add r6,r6,r6                                   
 801b594:	b4 c6 30 00 	add r6,r6,r6                                   
 801b598:	b4 c6 30 00 	add r6,r6,r6                                   
 801b59c:	b4 c6 30 00 	add r6,r6,r6                                   
 801b5a0:	34 21 00 01 	addi r1,r1,1                                   
 801b5a4:	b4 c6 30 00 	add r6,r6,r6                                   
 801b5a8:	b4 26 30 00 	add r6,r1,r6                                   
 801b5ac:	78 0b 08 03 	mvhi r11,0x803                                 
 801b5b0:	20 cc ff ff 	andi r12,r6,0xffff                             
 801b5b4:	39 6b 28 88 	ori r11,r11,0x2888                             
 801b5b8:	0d 6c 00 00 	sh (r11+0),r12                                 
			 * Remember dos's idea of time is relative to 1980.                
			 * unix's is relative to 1970.  If somehow we get a                
			 * time before 1980 then don't give totally crazy                  
			 * results.                                                        
			 */                                                                
			if (year > 1980)                                                   
 801b5bc:	34 01 07 bc 	mvi r1,1980                                    
 801b5c0:	50 25 00 07 	bgeu r1,r5,801b5dc <msdos_date_unix2dos+0x16c> <== NEVER TAKEN
				lastddate += (year - 1980) <<                                     
 801b5c4:	34 a1 f8 44 	addi r1,r5,-1980                               
 801b5c8:	34 02 00 09 	mvi r2,9                                       
 801b5cc:	fb ff 96 e6 	calli 8001164 <__ashlsi3>                      
 801b5d0:	b5 81 60 00 	add r12,r12,r1                                 
 801b5d4:	21 8c ff ff 	andi r12,r12,0xffff                            
 801b5d8:	0d 6c 00 00 	sh (r11+0),r12                                 
				             MSDOS_DD_YEAR_SHIFT;                                 
		}                                                                   
	}                                                                    
	*dtp = lastdtime;                                                    
 801b5dc:	0d ed 00 00 	sh (r15+0),r13                                 
	*ddp = lastddate;                                                    
 801b5e0:	0d cc 00 00 	sh (r14+0),r12                                 
}                                                                     
 801b5e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b5e8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801b5ec:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801b5f0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801b5f4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801b5f8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801b5fc:	37 9c 00 18 	addi sp,sp,24                                  
 801b600:	c3 a0 00 00 	ret                                            
				inc = year & 0x03 ? 365 : 366;                                    
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
 801b604:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801b608:	38 84 22 48 	ori r4,r4,0x2248                               <== NOT EXECUTED
 801b60c:	e3 ff ff d8 	bi 801b56c <msdos_date_unix2dos+0xfc>          <== NOT EXECUTED
                                                                      
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
 801b610:	78 02 08 03 	mvhi r2,0x803                                  
 801b614:	78 01 08 03 	mvhi r1,0x803                                  
 801b618:	38 42 28 80 	ori r2,r2,0x2880                               
 801b61c:	38 21 28 88 	ori r1,r1,0x2888                               
 801b620:	2c 4d 00 00 	lhu r13,(r2+0)                                 
 801b624:	2c 2c 00 00 	lhu r12,(r1+0)                                 
 801b628:	e3 ff ff ed 	bi 801b5dc <msdos_date_unix2dos+0x16c>         
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
 801b62c:	78 01 08 03 	mvhi r1,0x803                                  
 801b630:	38 21 28 88 	ori r1,r1,0x2888                               
 801b634:	2c 2c 00 00 	lhu r12,(r1+0)                                 
 801b638:	e3 ff ff e9 	bi 801b5dc <msdos_date_unix2dos+0x16c>         
                                                                      

080180ec <msdos_dir_is_empty>: msdos_dir_is_empty( rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd, bool *ret_val ) {
 80180ec:	37 9c ff c4 	addi sp,sp,-60                                 
 80180f0:	5b 8b 00 3c 	sw (sp+60),r11                                 
 80180f4:	5b 8c 00 38 	sw (sp+56),r12                                 
 80180f8:	5b 8d 00 34 	sw (sp+52),r13                                 
 80180fc:	5b 8e 00 30 	sw (sp+48),r14                                 
 8018100:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8018104:	5b 90 00 28 	sw (sp+40),r16                                 
 8018108:	5b 91 00 24 	sw (sp+36),r17                                 
 801810c:	5b 92 00 20 	sw (sp+32),r18                                 
 8018110:	5b 93 00 1c 	sw (sp+28),r19                                 
 8018114:	5b 94 00 18 	sw (sp+24),r20                                 
 8018118:	5b 95 00 14 	sw (sp+20),r21                                 
 801811c:	5b 96 00 10 	sw (sp+16),r22                                 
 8018120:	5b 97 00 0c 	sw (sp+12),r23                                 
 8018124:	5b 98 00 08 	sw (sp+8),r24                                  
 8018128:	5b 9d 00 04 	sw (sp+4),ra                                   
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 801812c:	28 2f 00 08 	lw r15,(r1+8)                                  
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
 8018130:	78 10 08 03 	mvhi r16,0x803                                 
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
                (strncmp(MSDOS_DIR_NAME((entry)),                     
 8018134:	78 12 08 03 	mvhi r18,0x803                                 
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
 8018138:	2d ed 00 00 	lhu r13,(r15+0)                                
 801813c:	29 f3 00 a0 	lw r19,(r15+160)                               
msdos_dir_is_empty(                                                   
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd,                     
    bool                                 *ret_val                     
    )                                                                 
{                                                                     
 8018140:	b8 60 b0 00 	mv r22,r3                                      
 8018144:	b8 40 b8 00 	mv r23,r2                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
 8018148:	30 60 00 00 	sb (r3+0),r0                                   
    bool                                 *ret_val                     
    )                                                                 
{                                                                     
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         j = 0, i = 0;                                    
 801814c:	34 15 00 00 	mvi r21,0                                      
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
                                  fs_info->fat.vol.bps,               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
 8018150:	34 18 00 1f 	mvi r24,31                                     
             * then consider it as empty.                             
             *                                                        
             * Just ignore long file name entries. They must have a short entry to
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
 8018154:	34 11 00 e5 	mvi r17,229                                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
 8018158:	34 14 00 0f 	mvi r20,15                                     
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
 801815c:	3a 10 07 74 	ori r16,r16,0x774                              
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
                (strncmp(MSDOS_DIR_NAME((entry)),                     
 8018160:	3a 52 07 80 	ori r18,r18,0x780                              
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
 8018164:	ba a0 10 00 	mv r2,r21                                      
 8018168:	b9 a0 08 00 	mv r1,r13                                      
 801816c:	fb ff a4 4c 	calli 800129c <__mulsi3>                       
 8018170:	b8 20 18 00 	mv r3,r1                                       
 8018174:	ba e0 10 00 	mv r2,r23                                      
 8018178:	b9 e0 08 00 	mv r1,r15                                      
 801817c:	b9 a0 20 00 	mv r4,r13                                      
 8018180:	ba 60 28 00 	mv r5,r19                                      
 8018184:	fb ff df b3 	calli 8010050 <fat_file_read>                  
 8018188:	44 20 00 34 	be r1,r0,8018258 <msdos_dir_is_empty+0x16c>    <== NEVER TAKEN
                                  fs_info->fat.vol.bps,               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
 801818c:	4f 01 00 37 	bge r24,r1,8018268 <msdos_dir_is_empty+0x17c>  <== NEVER TAKEN
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
 8018190:	2d ed 00 00 	lhu r13,(r15+0)                                
 8018194:	5d a1 00 37 	bne r13,r1,8018270 <msdos_dir_is_empty+0x184>  <== NEVER TAKEN
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
 8018198:	45 a0 00 2d 	be r13,r0,801824c <msdos_dir_is_empty+0x160>   <== NEVER TAKEN
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
 801819c:	29 f3 00 a0 	lw r19,(r15+160)                               
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
 80181a0:	34 0c 00 00 	mvi r12,0                                      
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
 80181a4:	ba 60 58 00 	mv r11,r19                                     
             * then consider it as empty.                             
             *                                                        
             * Just ignore long file name entries. They must have a short entry to
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
 80181a8:	41 6e 00 00 	lbu r14,(r11+0)                                
 80181ac:	45 d1 00 23 	be r14,r17,8018238 <msdos_dir_is_empty+0x14c>  <== NEVER TAKEN
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
 80181b0:	41 64 00 0b 	lbu r4,(r11+11)                                
 80181b4:	20 84 00 3f 	andi r4,r4,0x3f                                
             *                                                        
             * Just ignore long file name entries. They must have a short entry to
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
 80181b8:	44 94 00 20 	be r4,r20,8018238 <msdos_dir_is_empty+0x14c>   <== NEVER TAKEN
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
 80181bc:	b9 60 08 00 	mv r1,r11                                      
 80181c0:	ba 00 10 00 	mv r2,r16                                      
 80181c4:	34 03 00 0b 	mvi r3,11                                      
 80181c8:	f8 00 19 be 	calli 801e8c0 <strncmp>                        
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
 80181cc:	44 20 00 1b 	be r1,r0,8018238 <msdos_dir_is_empty+0x14c>    
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
                (strncmp(MSDOS_DIR_NAME((entry)),                     
 80181d0:	b9 60 08 00 	mv r1,r11                                      
 80181d4:	ba 40 10 00 	mv r2,r18                                      
 80181d8:	34 03 00 0b 	mvi r3,11                                      
 80181dc:	f8 00 19 b9 	calli 801e8c0 <strncmp>                        
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
 80181e0:	44 20 00 16 	be r1,r0,8018238 <msdos_dir_is_empty+0x14c>    
            }                                                         
                                                                      
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
 80181e4:	34 01 00 00 	mvi r1,0                                       
                continue;                                             
                                                                      
            /*                                                        
             * Nothing more to look at.                               
             */                                                       
            if ((*MSDOS_DIR_NAME(entry)) ==                           
 80181e8:	5d c0 00 03 	bne r14,r0,80181f4 <msdos_dir_is_empty+0x108>  
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
            {                                                         
                *ret_val = true;                                      
 80181ec:	34 02 00 01 	mvi r2,1                                       
 80181f0:	32 c2 00 00 	sb (r22+0),r2                                  
        }                                                             
        j++;                                                          
    }                                                                 
    *ret_val = true;                                                  
    return RC_OK;                                                     
}                                                                     
 80181f4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80181f8:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 80181fc:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8018200:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8018204:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8018208:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 801820c:	2b 90 00 28 	lw r16,(sp+40)                                 
 8018210:	2b 91 00 24 	lw r17,(sp+36)                                 
 8018214:	2b 92 00 20 	lw r18,(sp+32)                                 
 8018218:	2b 93 00 1c 	lw r19,(sp+28)                                 
 801821c:	2b 94 00 18 	lw r20,(sp+24)                                 
 8018220:	2b 95 00 14 	lw r21,(sp+20)                                 
 8018224:	2b 96 00 10 	lw r22,(sp+16)                                 
 8018228:	2b 97 00 0c 	lw r23,(sp+12)                                 
 801822c:	2b 98 00 08 	lw r24,(sp+8)                                  
 8018230:	37 9c 00 3c 	addi sp,sp,60                                  
 8018234:	c3 a0 00 00 	ret                                            
        assert(ret == fs_info->fat.vol.bps);                          
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
             i < fs_info->fat.vol.bps;                                
             i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
 8018238:	35 8c 00 20 	addi r12,r12,32                                
 801823c:	35 6b 00 20 	addi r11,r11,32                                
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
 8018240:	55 ac ff da 	bgu r13,r12,80181a8 <msdos_dir_is_empty+0xbc>  <== ALWAYS TAKEN
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
        }                                                             
        j++;                                                          
 8018244:	36 b5 00 01 	addi r21,r21,1                                 <== NOT EXECUTED
 8018248:	e3 ff ff c7 	bi 8018164 <msdos_dir_is_empty+0x78>           <== NOT EXECUTED
             */                                                       
            if ((*MSDOS_DIR_NAME(entry)) ==                           
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
            {                                                         
                *ret_val = true;                                      
                return RC_OK;                                         
 801824c:	29 f3 00 a0 	lw r19,(r15+160)                               <== NOT EXECUTED
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
        }                                                             
        j++;                                                          
 8018250:	36 b5 00 01 	addi r21,r21,1                                 <== NOT EXECUTED
 8018254:	e3 ff ff c4 	bi 8018164 <msdos_dir_is_empty+0x78>           <== NOT EXECUTED
    }                                                                 
    *ret_val = true;                                                  
 8018258:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 801825c:	32 c1 00 00 	sb (r22+0),r1                                  <== NOT EXECUTED
    return RC_OK;                                                     
 8018260:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8018264:	e3 ff ff e4 	bi 80181f4 <msdos_dir_is_empty+0x108>          <== NOT EXECUTED
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
                                  fs_info->fat.vol.bps,               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
 8018268:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801826c:	e3 ff ff e2 	bi 80181f4 <msdos_dir_is_empty+0x108>          <== NOT EXECUTED
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
 8018270:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8018274:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 8018278:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801827c:	38 21 07 0c 	ori r1,r1,0x70c                                <== NOT EXECUTED
 8018280:	34 02 03 65 	mvi r2,869                                     <== NOT EXECUTED
 8018284:	38 63 07 fc 	ori r3,r3,0x7fc                                <== NOT EXECUTED
 8018288:	38 84 07 58 	ori r4,r4,0x758                                <== NOT EXECUTED
 801828c:	fb ff ea e2 	calli 8012e14 <__assert_func>                  <== NOT EXECUTED
                                                                      

0801b9f0 <msdos_dir_read>: * the number of bytes read on success, or -1 if error occured (errno * set apropriately). */ ssize_t msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count) {
 801b9f0:	37 9c fe 84 	addi sp,sp,-380                                <== NOT EXECUTED
 801b9f4:	5b 8b 00 44 	sw (sp+68),r11                                 <== NOT EXECUTED
 801b9f8:	5b 8c 00 40 	sw (sp+64),r12                                 <== NOT EXECUTED
 801b9fc:	5b 8d 00 3c 	sw (sp+60),r13                                 <== NOT EXECUTED
 801ba00:	5b 8e 00 38 	sw (sp+56),r14                                 <== NOT EXECUTED
 801ba04:	5b 8f 00 34 	sw (sp+52),r15                                 <== NOT EXECUTED
 801ba08:	5b 90 00 30 	sw (sp+48),r16                                 <== NOT EXECUTED
 801ba0c:	5b 91 00 2c 	sw (sp+44),r17                                 <== NOT EXECUTED
 801ba10:	5b 92 00 28 	sw (sp+40),r18                                 <== NOT EXECUTED
 801ba14:	5b 93 00 24 	sw (sp+36),r19                                 <== NOT EXECUTED
 801ba18:	5b 94 00 20 	sw (sp+32),r20                                 <== NOT EXECUTED
 801ba1c:	5b 95 00 1c 	sw (sp+28),r21                                 <== NOT EXECUTED
 801ba20:	5b 96 00 18 	sw (sp+24),r22                                 <== NOT EXECUTED
 801ba24:	5b 97 00 14 	sw (sp+20),r23                                 <== NOT EXECUTED
 801ba28:	5b 98 00 10 	sw (sp+16),r24                                 <== NOT EXECUTED
 801ba2c:	5b 99 00 0c 	sw (sp+12),r25                                 <== NOT EXECUTED
 801ba30:	5b 9b 00 08 	sw (sp+8),fp                                   <== NOT EXECUTED
 801ba34:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 801ba38:	b8 20 c8 00 	mv r25,r1                                      <== NOT EXECUTED
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
 801ba3c:	28 21 00 14 	lw r1,(r1+20)                                  <== NOT EXECUTED
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801ba40:	2b 25 00 20 	lw r5,(r25+32)                                 <== NOT EXECUTED
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
 801ba44:	b8 60 60 00 	mv r12,r3                                      <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
 801ba48:	28 24 00 20 	lw r4,(r1+32)                                  <== NOT EXECUTED
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
 801ba4c:	5b 81 00 48 	sw (sp+72),r1                                  <== NOT EXECUTED
    fat_file_fd_t     *tmp_fat_fd = NULL;                             
 801ba50:	5b 80 01 7c 	sw (sp+380),r0                                 <== NOT EXECUTED
    uint32_t           start = 0;                                     
    ssize_t            ret = 0;                                       
    uint32_t           cmpltd = 0;                                    
    uint32_t           j = 0, i = 0;                                  
    uint32_t           bts2rd = 0;                                    
    uint32_t           cur_cln = 0;                                   
 801ba54:	5b 80 01 78 	sw (sp+376),r0                                 <== NOT EXECUTED
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
 801ba58:	5b 82 00 4c 	sw (sp+76),r2                                  <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
 801ba5c:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801ba60:	28 b3 00 08 	lw r19,(r5+8)                                  <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
 801ba64:	2b 2d 00 04 	lw r13,(r25+4)                                 <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
 801ba68:	44 83 00 fc 	be r4,r3,801be58 <msdos_dir_read+0x468>        <== NOT EXECUTED
 801ba6c:	2e 63 00 06 	lhu r3,(r19+6)                                 <== NOT EXECUTED
 801ba70:	5b 83 00 50 	sw (sp+80),r3                                  <== NOT EXECUTED
             fs_info->fat.vol.bpc;                                    
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801ba74:	2a 61 00 9c 	lw r1,(r19+156)                                <== NOT EXECUTED
 801ba78:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801ba7c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801ba80:	fb ff a8 a5 	calli 8005d14 <rtems_semaphore_obtain>         <== NOT EXECUTED
 801ba84:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801ba88:	5c 20 01 1a 	bne r1,r0,801bef0 <msdos_dir_read+0x500>       <== NOT EXECUTED
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);  
 801ba8c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ba90:	34 02 01 0c 	mvi r2,268                                     <== NOT EXECUTED
 801ba94:	f8 00 4d a9 	calli 802f138 <__udivsi3>                      <== NOT EXECUTED
 801ba98:	b4 21 28 00 	add r5,r1,r1                                   <== NOT EXECUTED
 801ba9c:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801baa0:	b4 a5 18 00 	add r3,r5,r5                                   <== NOT EXECUTED
 801baa4:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 801baa8:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 801baac:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 801bab0:	b4 a3 18 00 	add r3,r5,r3                                   <== NOT EXECUTED
 801bab4:	c8 61 30 00 	sub r6,r3,r1                                   <== NOT EXECUTED
 801bab8:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801babc:	b4 c6 60 00 	add r12,r6,r6                                  <== NOT EXECUTED
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    while (count > 0)                                                 
 801bac0:	34 16 00 00 	mvi r22,0                                      <== NOT EXECUTED
 801bac4:	45 8b 00 30 	be r12,r11,801bb84 <msdos_dir_read+0x194>      <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
 801bac8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bacc:	34 02 01 0c 	mvi r2,268                                     <== NOT EXECUTED
 801bad0:	f8 00 4d 9a 	calli 802f138 <__udivsi3>                      <== NOT EXECUTED
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
 801bad4:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801bad8:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
 801badc:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
 801bae0:	38 84 22 78 	ori r4,r4,0x2278                               <== NOT EXECUTED
 801bae4:	5b 99 00 58 	sw (sp+88),r25                                 <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
 801bae8:	b8 20 a0 00 	mv r20,r1                                      <== NOT EXECUTED
 801baec:	34 1b 00 00 	mvi fp,0                                       <== NOT EXECUTED
 801baf0:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 801baf4:	34 10 ff ff 	mvi r16,-1                                     <== NOT EXECUTED
 801baf8:	34 16 00 00 	mvi r22,0                                      <== NOT EXECUTED
                rtems_semaphore_release(fs_info->vol_sema);           
                return cmpltd;                                        
            }                                                         
                                                                      
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
 801bafc:	34 15 00 e5 	mvi r21,229                                    <== NOT EXECUTED
                int   q;                                              
                                                                      
                /*                                                    
                 * Is this is the first entry of a LFN ?              
                 */                                                   
                if (lfn_start == FAT_FILE_SHORT_NAME)                 
 801bb00:	34 18 ff ff 	mvi r24,-1                                     <== NOT EXECUTED
                                                                      
            /*                                                        
             * Check the attribute to see if the entry is for a long file
             * name.                                                  
             */                                                       
            if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==     
 801bb04:	34 17 00 0f 	mvi r23,15                                     <== NOT EXECUTED
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
 801bb08:	5b 84 00 54 	sw (sp+84),r4                                  <== NOT EXECUTED
 801bb0c:	b8 60 c8 00 	mv r25,r3                                      <== NOT EXECUTED
         * fat-file is already opened by open call, so read it        
         * Always read directory fat-file from the beggining because of MSDOS
         * directories feature :( - we should count elements currently
         * present in the directory because there may be holes :)     
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
 801bb10:	2b 82 00 48 	lw r2,(sp+72)                                  <== NOT EXECUTED
 801bb14:	2b 84 00 50 	lw r4,(sp+80)                                  <== NOT EXECUTED
 801bb18:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 801bb1c:	bb 20 18 00 	mv r3,r25                                      <== NOT EXECUTED
 801bb20:	fb ff d1 4c 	calli 8010050 <fat_file_read>                  <== NOT EXECUTED
 801bb24:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
 801bb28:	34 01 00 1f 	mvi r1,31                                      <== NOT EXECUTED
 801bb2c:	4c 31 00 ea 	bge r1,r17,801bed4 <msdos_dir_read+0x4e4>      <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
 801bb30:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 801bb34:	40 a8 00 00 	lbu r8,(r5+0)                                  <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
 801bb38:	b8 a0 70 00 	mv r14,r5                                      <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 801bb3c:	45 00 00 12 	be r8,r0,801bb84 <msdos_dir_read+0x194>        <== NOT EXECUTED
 801bb40:	2b 8b 00 58 	lw r11,(sp+88)                                 <== NOT EXECUTED
 801bb44:	34 0f 00 00 	mvi r15,0                                      <== NOT EXECUTED
                {                                                     
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
 801bb48:	34 12 00 0b 	mvi r18,11                                     <== NOT EXECUTED
                rtems_semaphore_release(fs_info->vol_sema);           
                return cmpltd;                                        
            }                                                         
                                                                      
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
 801bb4c:	45 15 00 06 	be r8,r21,801bb64 <msdos_dir_read+0x174>       <== NOT EXECUTED
                continue;                                             
                                                                      
            /* Is the directory entry empty a volume label */         
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&  
 801bb50:	41 c6 00 0b 	lbu r6,(r14+11)                                <== NOT EXECUTED
 801bb54:	20 c3 00 08 	andi r3,r6,0x8                                 <== NOT EXECUTED
 801bb58:	44 60 00 22 	be r3,r0,801bbe0 <msdos_dir_read+0x1f0>        <== NOT EXECUTED
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) != MSDOS_ATTR_LFN))
 801bb5c:	20 c6 00 3f 	andi r6,r6,0x3f                                <== NOT EXECUTED
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
                continue;                                             
                                                                      
            /* Is the directory entry empty a volume label */         
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&  
 801bb60:	44 d7 00 26 	be r6,r23,801bbf8 <msdos_dir_read+0x208>       <== NOT EXECUTED
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
 801bb64:	35 ef 00 20 	addi r15,r15,32                                <== NOT EXECUTED
 801bb68:	56 2f 00 04 	bgu r17,r15,801bb78 <msdos_dir_read+0x188>     <== NOT EXECUTED
 801bb6c:	2b 81 00 50 	lw r1,(sp+80)                                  <== NOT EXECUTED
 801bb70:	b7 21 c8 00 	add r25,r25,r1                                 <== NOT EXECUTED
 801bb74:	e3 ff ff e7 	bi 801bb10 <msdos_dir_read+0x120>              <== NOT EXECUTED
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
 801bb78:	b4 af 70 00 	add r14,r5,r15                                 <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 801bb7c:	41 c8 00 00 	lbu r8,(r14+0)                                 <== NOT EXECUTED
 801bb80:	5d 00 ff f3 	bne r8,r0,801bb4c <msdos_dir_read+0x15c>       <== NOT EXECUTED
                break;                                                
        }                                                             
        j++;                                                          
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801bb84:	2a 61 00 9c 	lw r1,(r19+156)                                <== NOT EXECUTED
    return cmpltd;                                                    
 801bb88:	ba c0 78 00 	mv r15,r22                                     <== NOT EXECUTED
                break;                                                
        }                                                             
        j++;                                                          
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801bb8c:	fb ff a8 be 	calli 8005e84 <rtems_semaphore_release>        <== NOT EXECUTED
    return cmpltd;                                                    
}                                                                     
 801bb90:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801bb94:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801bb98:	2b 8b 00 44 	lw r11,(sp+68)                                 <== NOT EXECUTED
 801bb9c:	2b 8c 00 40 	lw r12,(sp+64)                                 <== NOT EXECUTED
 801bba0:	2b 8d 00 3c 	lw r13,(sp+60)                                 <== NOT EXECUTED
 801bba4:	2b 8e 00 38 	lw r14,(sp+56)                                 <== NOT EXECUTED
 801bba8:	2b 8f 00 34 	lw r15,(sp+52)                                 <== NOT EXECUTED
 801bbac:	2b 90 00 30 	lw r16,(sp+48)                                 <== NOT EXECUTED
 801bbb0:	2b 91 00 2c 	lw r17,(sp+44)                                 <== NOT EXECUTED
 801bbb4:	2b 92 00 28 	lw r18,(sp+40)                                 <== NOT EXECUTED
 801bbb8:	2b 93 00 24 	lw r19,(sp+36)                                 <== NOT EXECUTED
 801bbbc:	2b 94 00 20 	lw r20,(sp+32)                                 <== NOT EXECUTED
 801bbc0:	2b 95 00 1c 	lw r21,(sp+28)                                 <== NOT EXECUTED
 801bbc4:	2b 96 00 18 	lw r22,(sp+24)                                 <== NOT EXECUTED
 801bbc8:	2b 97 00 14 	lw r23,(sp+20)                                 <== NOT EXECUTED
 801bbcc:	2b 98 00 10 	lw r24,(sp+16)                                 <== NOT EXECUTED
 801bbd0:	2b 99 00 0c 	lw r25,(sp+12)                                 <== NOT EXECUTED
 801bbd4:	2b 9b 00 08 	lw fp,(sp+8)                                   <== NOT EXECUTED
 801bbd8:	37 9c 01 7c 	addi sp,sp,380                                 <== NOT EXECUTED
 801bbdc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
            /*                                                        
             * Check the attribute to see if the entry is for a long file
             * name.                                                  
             */                                                       
            if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==     
 801bbe0:	20 c6 00 3f 	andi r6,r6,0x3f                                <== NOT EXECUTED
 801bbe4:	44 d7 00 05 	be r6,r23,801bbf8 <msdos_dir_read+0x208>       <== NOT EXECUTED
                fat_dir_pos_t dir_pos;                                
                                                                      
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
 801bbe8:	46 80 00 0a 	be r20,r0,801bc10 <msdos_dir_read+0x220>       <== NOT EXECUTED
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
                    start--;                                          
 801bbec:	36 94 ff ff 	addi r20,r20,-1                                <== NOT EXECUTED
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
 801bbf0:	34 10 ff ff 	mvi r16,-1                                     <== NOT EXECUTED
                    start--;                                          
                    continue;                                         
 801bbf4:	e3 ff ff dc 	bi 801bb64 <msdos_dir_read+0x174>              <== NOT EXECUTED
                int   q;                                              
                                                                      
                /*                                                    
                 * Is this is the first entry of a LFN ?              
                 */                                                   
                if (lfn_start == FAT_FILE_SHORT_NAME)                 
 801bbf8:	46 18 00 4c 	be r16,r24,801bd28 <msdos_dir_read+0x338>      <== NOT EXECUTED
                 * If the entry number or the check sum do not match  
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
 801bbfc:	21 03 00 3f 	andi r3,r8,0x3f                                <== NOT EXECUTED
 801bc00:	44 7b 00 5b 	be r3,fp,801bd6c <msdos_dir_read+0x37c>        <== NOT EXECUTED
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
                    (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry))) 
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
 801bc04:	34 10 ff ff 	mvi r16,-1                                     <== NOT EXECUTED
 801bc08:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
 801bc0c:	e3 ff ff d6 	bi 801bb64 <msdos_dir_read+0x174>              <== NOT EXECUTED
                 * unfortunately there is no method to extract ino except to
                 * open fat-file descriptor :( ... so, open it        
                 */                                                   
                                                                      
                /* get number of cluster we are working with */       
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, 
 801bc10:	2b 82 00 48 	lw r2,(sp+72)                                  <== NOT EXECUTED
 801bc14:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 801bc18:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 801bc1c:	bb 20 20 00 	mv r4,r25                                      <== NOT EXECUTED
 801bc20:	37 85 01 78 	addi r5,sp,376                                 <== NOT EXECUTED
 801bc24:	fb ff d2 26 	calli 80104bc <fat_file_ioctl>                 <== NOT EXECUTED
                                    j * bts2rd, &cur_cln);            
                if (rc != RC_OK)                                      
 801bc28:	5c 34 00 94 	bne r1,r20,801be78 <msdos_dir_read+0x488>      <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
                                                                      
                fat_dir_pos_init(&dir_pos);                           
                dir_pos.sname.cln = cur_cln;                          
 801bc2c:	2b 85 01 78 	lw r5,(sp+376)                                 <== NOT EXECUTED
                dir_pos.sname.ofs = i;                                
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
 801bc30:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 801bc34:	37 82 01 68 	addi r2,sp,360                                 <== NOT EXECUTED
 801bc38:	37 83 01 7c 	addi r3,sp,380                                 <== NOT EXECUTED
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 801bc3c:	5b 98 01 70 	sw (sp+368),r24                                <== NOT EXECUTED
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 801bc40:	5b 98 01 74 	sw (sp+372),r24                                <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
                                                                      
                fat_dir_pos_init(&dir_pos);                           
                dir_pos.sname.cln = cur_cln;                          
 801bc44:	5b 85 01 68 	sw (sp+360),r5                                 <== NOT EXECUTED
                dir_pos.sname.ofs = i;                                
 801bc48:	5b 8f 01 6c 	sw (sp+364),r15                                <== NOT EXECUTED
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
 801bc4c:	fb ff d0 2e 	calli 800fd04 <fat_file_open>                  <== NOT EXECUTED
                if (rc != RC_OK)                                      
 801bc50:	5c 20 00 8a 	bne r1,r0,801be78 <msdos_dir_read+0x488>       <== NOT EXECUTED
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
                tmp_dirent.d_reclen = sizeof(struct dirent);          
                tmp_dirent.d_ino = tmp_fat_fd->ino;                   
 801bc54:	2b 83 01 7c 	lw r3,(sp+380)                                 <== NOT EXECUTED
                }                                                     
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
                tmp_dirent.d_reclen = sizeof(struct dirent);          
 801bc58:	34 04 01 0c 	mvi r4,268                                     <== NOT EXECUTED
                    return rc;                                        
                }                                                     
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
 801bc5c:	5b 96 00 60 	sw (sp+96),r22                                 <== NOT EXECUTED
                tmp_dirent.d_reclen = sizeof(struct dirent);          
                tmp_dirent.d_ino = tmp_fat_fd->ino;                   
 801bc60:	28 63 00 0c 	lw r3,(r3+12)                                  <== NOT EXECUTED
                }                                                     
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
                tmp_dirent.d_reclen = sizeof(struct dirent);          
 801bc64:	0f 84 00 64 	sh (sp+100),r4                                 <== NOT EXECUTED
                tmp_dirent.d_ino = tmp_fat_fd->ino;                   
 801bc68:	5b 83 00 5c 	sw (sp+92),r3                                  <== NOT EXECUTED
                /*                                                    
                 * If a long file name check if the correct number of 
                 * entries have been found and if the checksum is correct.
                 * If not return the short file name.                 
                 */                                                   
                if (lfn_start != FAT_FILE_SHORT_NAME)                 
 801bc6c:	46 18 00 1a 	be r16,r24,801bcd4 <msdos_dir_read+0x2e4>      <== NOT EXECUTED
 801bc70:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801bc74:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
 801bc78:	34 07 00 00 	mvi r7,0                                       <== NOT EXECUTED
 801bc7c:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
 801bc80:	e0 00 00 02 	bi 801bc88 <msdos_dir_read+0x298>              <== NOT EXECUTED
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
 801bc84:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
 801bc88:	b5 c7 10 00 	add r2,r14,r7                                  <== NOT EXECUTED
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
 801bc8c:	40 42 00 00 	lbu r2,(r2+0)                                  <== NOT EXECUTED
 801bc90:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
                {                                                     
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
 801bc94:	34 e7 00 01 	addi r7,r7,1                                   <== NOT EXECUTED
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
 801bc98:	b4 22 08 00 	add r1,r1,r2                                   <== NOT EXECUTED
 801bc9c:	b4 a1 28 00 	add r5,r5,r1                                   <== NOT EXECUTED
 801bca0:	20 a5 00 ff 	andi r5,r5,0xff                                <== NOT EXECUTED
 801bca4:	20 a1 00 01 	andi r1,r5,0x1                                 <== NOT EXECUTED
 801bca8:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bcac:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bcb0:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bcb4:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bcb8:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bcbc:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
                {                                                     
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
 801bcc0:	5c f2 ff f1 	bne r7,r18,801bc84 <msdos_dir_read+0x294>      <== NOT EXECUTED
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
                                                                      
                    if (lfn_entries || (lfn_checksum != cs))          
 801bcc4:	fc ad 28 00 	cmpne r5,r5,r13                                <== NOT EXECUTED
 801bcc8:	7f 66 00 00 	cmpnei r6,fp,0                                 <== NOT EXECUTED
 801bccc:	b8 a6 28 00 	or r5,r5,r6                                    <== NOT EXECUTED
 801bcd0:	44 a0 00 2c 	be r5,r0,801bd80 <msdos_dir_read+0x390>        <== NOT EXECUTED
                                                                      
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
	src_tmp = src + MSDOS_SHORT_BASE_LEN-1);                             
 801bcd4:	35 c5 00 07 	addi r5,r14,7                                  <== NOT EXECUTED
  const char *src_tmp;                                                
                                                                      
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
 801bcd8:	34 08 00 08 	mvi r8,8                                       <== NOT EXECUTED
	src_tmp = src + MSDOS_SHORT_BASE_LEN-1);                             
       ((i > 0) &&                                                    
 801bcdc:	40 a1 00 00 	lbu r1,(r5+0)                                  <== NOT EXECUTED
 801bce0:	34 02 00 20 	mvi r2,32                                      <== NOT EXECUTED
	(*src_tmp == ' '));                                                  
       i--,src_tmp--)                                                 
 801bce4:	34 a5 ff ff 	addi r5,r5,-1                                  <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
	src_tmp = src + MSDOS_SHORT_BASE_LEN-1);                             
       ((i > 0) &&                                                    
 801bce8:	5c 22 00 68 	bne r1,r2,801be88 <msdos_dir_read+0x498>       <== NOT EXECUTED
	(*src_tmp == ' '));                                                  
       i--,src_tmp--)                                                 
 801bcec:	35 08 ff ff 	addi r8,r8,-1                                  <== NOT EXECUTED
  const char *src_tmp;                                                
                                                                      
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
 801bcf0:	5d 00 ff fb 	bne r8,r0,801bcdc <msdos_dir_read+0x2ec>       <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
 801bcf4:	37 87 00 68 	addi r7,sp,104                                 <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
 801bcf8:	41 c3 00 0a 	lbu r3,(r14+10)                                <== NOT EXECUTED
 801bcfc:	34 01 00 20 	mvi r1,32                                      <== NOT EXECUTED
 801bd00:	5c 61 00 81 	bne r3,r1,801bf04 <msdos_dir_read+0x514>       <== NOT EXECUTED
 801bd04:	41 c3 00 09 	lbu r3,(r14+9)                                 <== NOT EXECUTED
	(*src_tmp == ' '));                                                  
       i--,src_tmp--)                                                 
 801bd08:	35 c5 00 09 	addi r5,r14,9                                  <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
 801bd0c:	5c 61 00 9a 	bne r3,r1,801bf74 <msdos_dir_read+0x584>       <== NOT EXECUTED
 801bd10:	40 a3 ff ff 	lbu r3,(r5+-1)                                 <== NOT EXECUTED
 801bd14:	5c 61 00 9a 	bne r3,r1,801bf7c <msdos_dir_read+0x58c>       <== NOT EXECUTED
    while (i-- > 0) {                                                 
      *dst++ = tolower((unsigned char)(*src_tmp++));                  
      len++;                                                          
    }                                                                 
  }                                                                   
  *dst = '\0'; /* terminate string */                                 
 801bd18:	30 e0 00 00 	sb (r7+0),r0                                   <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
 801bd1c:	0f 88 00 66 	sh (sp+102),r8                                 <== NOT EXECUTED
 801bd20:	34 10 ff ff 	mvi r16,-1                                     <== NOT EXECUTED
 801bd24:	e0 00 00 1a 	bi 801bd8c <msdos_dir_read+0x39c>              <== NOT EXECUTED
                if (lfn_start == FAT_FILE_SHORT_NAME)                 
                {                                                     
                    /*                                                
                     * The first entry must have the last long entry flag set.
                     */                                               
                    if ((*MSDOS_DIR_ENTRY_TYPE(entry) &               
 801bd28:	21 03 00 40 	andi r3,r8,0x40                                <== NOT EXECUTED
 801bd2c:	44 60 ff 8e 	be r3,r0,801bb64 <msdos_dir_read+0x174>        <== NOT EXECUTED
                        continue;                                     
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
 801bd30:	b5 f9 18 00 	add r3,r15,r25                                 <== NOT EXECUTED
 801bd34:	00 70 00 01 	srui r16,r3,1                                  <== NOT EXECUTED
                                                                      
                    /*                                                
                     * Get the number of entries so we can count down and
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
 801bd38:	21 1b 00 3f 	andi fp,r8,0x3f                                <== NOT EXECUTED
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
 801bd3c:	34 03 01 00 	mvi r3,256                                     <== NOT EXECUTED
 801bd40:	37 81 00 68 	addi r1,sp,104                                 <== NOT EXECUTED
                        continue;                                     
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
 801bd44:	02 10 00 01 	srui r16,r16,1                                 <== NOT EXECUTED
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
 801bd48:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
                     * Get the number of entries so we can count down and
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
 801bd4c:	41 cd 00 0d 	lbu r13,(r14+13)                               <== NOT EXECUTED
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
 801bd50:	f8 00 06 38 	calli 801d630 <memset>                         <== NOT EXECUTED
                        continue;                                     
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
 801bd54:	02 10 00 01 	srui r16,r16,1                                 <== NOT EXECUTED
 801bd58:	41 c8 00 00 	lbu r8,(r14+0)                                 <== NOT EXECUTED
 801bd5c:	02 10 00 01 	srui r16,r16,1                                 <== NOT EXECUTED
                 * If the entry number or the check sum do not match  
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
 801bd60:	21 03 00 3f 	andi r3,r8,0x3f                                <== NOT EXECUTED
                        continue;                                     
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
 801bd64:	02 10 00 01 	srui r16,r16,1                                 <== NOT EXECUTED
                 * If the entry number or the check sum do not match  
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
 801bd68:	5c 7b ff a7 	bne r3,fp,801bc04 <msdos_dir_read+0x214>       <== NOT EXECUTED
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
                    (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry))) 
 801bd6c:	41 c1 00 0d 	lbu r1,(r14+13)                                <== NOT EXECUTED
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
 801bd70:	44 2d 00 18 	be r1,r13,801bdd0 <msdos_dir_read+0x3e0>       <== NOT EXECUTED
 801bd74:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
                    (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry))) 
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
 801bd78:	34 10 ff ff 	mvi r16,-1                                     <== NOT EXECUTED
 801bd7c:	e3 ff ff 7a 	bi 801bb64 <msdos_dir_read+0x174>              <== NOT EXECUTED
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
                        tmp_dirent.d_name, entry); /* src text */     
                }                                                     
                else                                                  
                {                                                     
                    tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);  
 801bd80:	37 81 00 68 	addi r1,sp,104                                 <== NOT EXECUTED
 801bd84:	f8 00 0a a0 	calli 801e804 <strlen>                         <== NOT EXECUTED
 801bd88:	0f 81 00 66 	sh (sp+102),r1                                 <== NOT EXECUTED
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
 801bd8c:	2b 84 00 4c 	lw r4,(sp+76)                                  <== NOT EXECUTED
 801bd90:	37 82 00 5c 	addi r2,sp,92                                  <== NOT EXECUTED
 801bd94:	34 03 01 0c 	mvi r3,268                                     <== NOT EXECUTED
 801bd98:	b4 96 08 00 	add r1,r4,r22                                  <== NOT EXECUTED
 801bd9c:	f8 00 05 e4 	calli 801d52c <memcpy>                         <== NOT EXECUTED
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
 801bda0:	29 63 00 04 	lw r3,(r11+4)                                  <== NOT EXECUTED
                cmpltd += (sizeof(struct dirent));                    
                count -= (sizeof(struct dirent));                     
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
 801bda4:	2b 82 01 7c 	lw r2,(sp+380)                                 <== NOT EXECUTED
 801bda8:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
                    tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);  
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
 801bdac:	34 63 01 0c 	addi r3,r3,268                                 <== NOT EXECUTED
 801bdb0:	59 63 00 04 	sw (r11+4),r3                                  <== NOT EXECUTED
                cmpltd += (sizeof(struct dirent));                    
                count -= (sizeof(struct dirent));                     
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
 801bdb4:	fb ff d1 89 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
                if (rc != RC_OK)                                      
 801bdb8:	5c 20 00 30 	bne r1,r0,801be78 <msdos_dir_read+0x488>       <== NOT EXECUTED
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
                cmpltd += (sizeof(struct dirent));                    
                count -= (sizeof(struct dirent));                     
 801bdbc:	35 8c fe f4 	addi r12,r12,-268                              <== NOT EXECUTED
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
                cmpltd += (sizeof(struct dirent));                    
 801bdc0:	36 d6 01 0c 	addi r22,r22,268                               <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
            }                                                         
                                                                      
            if (count <= 0)                                           
 801bdc4:	45 81 ff 70 	be r12,r1,801bb84 <msdos_dir_read+0x194>       <== NOT EXECUTED
 801bdc8:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
 801bdcc:	e3 ff ff 66 	bi 801bb64 <msdos_dir_read+0x174>              <== NOT EXECUTED
                 * The DOS maximum length is 255 characters without the
                 * trailing nul character. We need to range check the length to
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
 801bdd0:	37 7b ff ff 	addi fp,fp,-1                                  <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
 801bdd4:	b7 7b 18 00 	add r3,fp,fp                                   <== NOT EXECUTED
 801bdd8:	b4 7b 18 00 	add r3,r3,fp                                   <== NOT EXECUTED
 801bddc:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 801bde0:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
                 * trailing nul character. We need to range check the length to
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
 801bde4:	35 ce 00 01 	addi r14,r14,1                                 <== NOT EXECUTED
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
 801bde8:	b4 7b 38 00 	add r7,r3,fp                                   <== NOT EXECUTED
 801bdec:	34 08 00 01 	mvi r8,1                                       <== NOT EXECUTED
 801bdf0:	e0 00 00 08 	bi 801be10 <msdos_dir_read+0x420>              <== NOT EXECUTED
                    tmp_dirent.d_name[o++] = *p;                      
                                                                      
                    if (*p == '\0')                                   
                        break;                                        
                                                                      
                    switch (q)                                        
 801bdf4:	34 02 00 0a 	mvi r2,10                                      <== NOT EXECUTED
 801bdf8:	44 82 00 13 	be r4,r2,801be44 <msdos_dir_read+0x454>        <== NOT EXECUTED
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
 801bdfc:	34 03 00 0c 	mvi r3,12                                      <== NOT EXECUTED
 801be00:	49 03 00 13 	bg r8,r3,801be4c <msdos_dir_read+0x45c>        <== NOT EXECUTED
                            break;                                    
                        case 10:                                      
                            p += 4;                                   
                            break;                                    
                        default:                                      
                            p += 2;                                   
 801be04:	35 ce 00 02 	addi r14,r14,2                                 <== NOT EXECUTED
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
                        break;                                        
                                                                      
                    tmp_dirent.d_name[o++] = *p;                      
 801be08:	34 e7 00 01 	addi r7,r7,1                                   <== NOT EXECUTED
 801be0c:	35 08 00 01 	addi r8,r8,1                                   <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
 801be10:	37 82 00 5c 	addi r2,sp,92                                  <== NOT EXECUTED
 801be14:	b4 47 18 00 	add r3,r2,r7                                   <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
 801be18:	34 02 00 fe 	mvi r2,254                                     <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
 801be1c:	35 04 ff ff 	addi r4,r8,-1                                  <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
 801be20:	54 e2 00 0b 	bgu r7,r2,801be4c <msdos_dir_read+0x45c>       <== NOT EXECUTED
                        break;                                        
                                                                      
                    tmp_dirent.d_name[o++] = *p;                      
 801be24:	41 c2 00 00 	lbu r2,(r14+0)                                 <== NOT EXECUTED
 801be28:	30 62 00 0c 	sb (r3+12),r2                                  <== NOT EXECUTED
                                                                      
                    if (*p == '\0')                                   
 801be2c:	41 c2 00 00 	lbu r2,(r14+0)                                 <== NOT EXECUTED
 801be30:	44 40 00 07 	be r2,r0,801be4c <msdos_dir_read+0x45c>        <== NOT EXECUTED
                        break;                                        
                                                                      
                    switch (q)                                        
 801be34:	34 03 00 04 	mvi r3,4                                       <== NOT EXECUTED
 801be38:	5c 83 ff ef 	bne r4,r3,801bdf4 <msdos_dir_read+0x404>       <== NOT EXECUTED
                    {                                                 
                        case 4:                                       
                            p += 5;                                   
 801be3c:	35 ce 00 05 	addi r14,r14,5                                 <== NOT EXECUTED
                            break;                                    
 801be40:	e3 ff ff f2 	bi 801be08 <msdos_dir_read+0x418>              <== NOT EXECUTED
                        case 10:                                      
                            p += 4;                                   
 801be44:	35 ce 00 04 	addi r14,r14,4                                 <== NOT EXECUTED
 801be48:	e3 ff ff f0 	bi 801be08 <msdos_dir_read+0x418>              <== NOT EXECUTED
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
 801be4c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 801be50:	2a 65 00 a0 	lw r5,(r19+160)                                <== NOT EXECUTED
 801be54:	e3 ff ff 44 	bi 801bb64 <msdos_dir_read+0x174>              <== NOT EXECUTED
     * optimization: we know that root directory for FAT12/16 volumes is
     * sequential set of sectors and any cluster is sequential set of sectors
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
 801be58:	28 23 00 24 	lw r3,(r1+36)                                  <== NOT EXECUTED
 801be5c:	5c 60 ff 04 	bne r3,r0,801ba6c <msdos_dir_read+0x7c>        <== NOT EXECUTED
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
 801be60:	42 64 00 0e 	lbu r4,(r19+14)                                <== NOT EXECUTED
 801be64:	20 84 00 03 	andi r4,r4,0x3                                 <== NOT EXECUTED
     * optimization: we know that root directory for FAT12/16 volumes is
     * sequential set of sectors and any cluster is sequential set of sectors
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
 801be68:	44 83 ff 01 	be r4,r3,801ba6c <msdos_dir_read+0x7c>         <== NOT EXECUTED
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
 801be6c:	28 22 00 18 	lw r2,(r1+24)                                  <== NOT EXECUTED
 801be70:	5b 82 00 50 	sw (sp+80),r2                                  <== NOT EXECUTED
 801be74:	e3 ff ff 00 	bi 801ba74 <msdos_dir_read+0x84>               <== NOT EXECUTED
 801be78:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
                if (rc != RC_OK)                                      
                {                                                     
                    rtems_semaphore_release(fs_info->vol_sema);       
 801be7c:	2a 61 00 9c 	lw r1,(r19+156)                                <== NOT EXECUTED
 801be80:	fb ff a8 01 	calli 8005e84 <rtems_semaphore_release>        <== NOT EXECUTED
                    return rc;                                        
 801be84:	e3 ff ff 43 	bi 801bb90 <msdos_dir_read+0x1a0>              <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
 801be88:	37 87 00 68 	addi r7,sp,104                                 <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
 801be8c:	4c 08 ff 9b 	bge r0,r8,801bcf8 <msdos_dir_read+0x308>       <== NOT EXECUTED
 801be90:	2b 83 00 54 	lw r3,(sp+84)                                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
 801be94:	b4 e8 48 00 	add r9,r7,r8                                   <== NOT EXECUTED
 801be98:	b9 c0 30 00 	mv r6,r14                                      <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
 801be9c:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
 801bea0:	e0 00 00 04 	bi 801beb0 <msdos_dir_read+0x4c0>              <== NOT EXECUTED
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
 801bea4:	30 e2 00 00 	sb (r7+0),r2                                   <== NOT EXECUTED
 801bea8:	34 e7 00 01 	addi r7,r7,1                                   <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
 801beac:	44 e9 ff 93 	be r7,r9,801bcf8 <msdos_dir_read+0x308>        <== NOT EXECUTED
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
 801beb0:	40 c2 00 00 	lbu r2,(r6+0)                                  <== NOT EXECUTED
 801beb4:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801beb8:	34 c6 00 01 	addi r6,r6,1                                   <== NOT EXECUTED
 801bebc:	b5 42 08 00 	add r1,r10,r2                                  <== NOT EXECUTED
 801bec0:	40 21 00 01 	lbu r1,(r1+1)                                  <== NOT EXECUTED
 801bec4:	20 21 00 03 	andi r1,r1,0x3                                 <== NOT EXECUTED
 801bec8:	5c 24 ff f7 	bne r1,r4,801bea4 <msdos_dir_read+0x4b4>       <== NOT EXECUTED
 801becc:	34 42 00 20 	addi r2,r2,32                                  <== NOT EXECUTED
 801bed0:	e3 ff ff f5 	bi 801bea4 <msdos_dir_read+0x4b4>              <== NOT EXECUTED
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
 801bed4:	2a 61 00 9c 	lw r1,(r19+156)                                <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
 801bed8:	34 0f ff ff 	mvi r15,-1                                     <== NOT EXECUTED
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
 801bedc:	fb ff a7 ea 	calli 8005e84 <rtems_semaphore_release>        <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
 801bee0:	f8 00 02 45 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801bee4:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801bee8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801beec:	e3 ff ff 29 	bi 801bb90 <msdos_dir_read+0x1a0>              <== NOT EXECUTED
             fs_info->fat.vol.bpc;                                    
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801bef0:	f8 00 02 41 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801bef4:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801bef8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801befc:	34 0f ff ff 	mvi r15,-1                                     <== NOT EXECUTED
 801bf00:	e3 ff ff 24 	bi 801bb90 <msdos_dir_read+0x1a0>              <== NOT EXECUTED
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
  }                                                                   
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
 801bf04:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
    {};                                                               
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
 801bf08:	34 02 00 2e 	mvi r2,46                                      <== NOT EXECUTED
 801bf0c:	30 e2 00 00 	sb (r7+0),r2                                   <== NOT EXECUTED
    len += i + 1; /* extension + dot */                               
 801bf10:	2b 83 00 54 	lw r3,(sp+84)                                  <== NOT EXECUTED
    {};                                                               
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
 801bf14:	34 e7 00 01 	addi r7,r7,1                                   <== NOT EXECUTED
    len += i + 1; /* extension + dot */                               
 801bf18:	35 08 00 01 	addi r8,r8,1                                   <== NOT EXECUTED
 801bf1c:	b5 01 40 00 	add r8,r8,r1                                   <== NOT EXECUTED
 801bf20:	28 6a 00 00 	lw r10,(r3+0)                                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
 801bf24:	b5 c1 48 00 	add r9,r14,r1                                  <== NOT EXECUTED
    {};                                                               
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
 801bf28:	b8 e0 30 00 	mv r6,r7                                       <== NOT EXECUTED
 801bf2c:	e0 00 00 04 	bi 801bf3c <msdos_dir_read+0x54c>              <== NOT EXECUTED
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
      *dst++ = tolower((unsigned char)(*src_tmp++));                  
 801bf30:	30 c3 00 00 	sb (r6+0),r3                                   <== NOT EXECUTED
 801bf34:	34 c6 00 01 	addi r6,r6,1                                   <== NOT EXECUTED
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
 801bf38:	45 c9 00 0c 	be r14,r9,801bf68 <msdos_dir_read+0x578>       <== NOT EXECUTED
      *dst++ = tolower((unsigned char)(*src_tmp++));                  
 801bf3c:	41 c3 00 08 	lbu r3,(r14+8)                                 <== NOT EXECUTED
 801bf40:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801bf44:	35 ce 00 01 	addi r14,r14,1                                 <== NOT EXECUTED
 801bf48:	b5 43 10 00 	add r2,r10,r3                                  <== NOT EXECUTED
 801bf4c:	40 42 00 01 	lbu r2,(r2+1)                                  <== NOT EXECUTED
 801bf50:	20 42 00 03 	andi r2,r2,0x3                                 <== NOT EXECUTED
 801bf54:	5c 44 ff f7 	bne r2,r4,801bf30 <msdos_dir_read+0x540>       <== NOT EXECUTED
 801bf58:	34 63 00 20 	addi r3,r3,32                                  <== NOT EXECUTED
 801bf5c:	30 c3 00 00 	sb (r6+0),r3                                   <== NOT EXECUTED
 801bf60:	34 c6 00 01 	addi r6,r6,1                                   <== NOT EXECUTED
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
 801bf64:	5d c9 ff f6 	bne r14,r9,801bf3c <msdos_dir_read+0x54c>      <== NOT EXECUTED
 801bf68:	b4 e1 38 00 	add r7,r7,r1                                   <== NOT EXECUTED
 801bf6c:	b5 01 40 00 	add r8,r8,r1                                   <== NOT EXECUTED
 801bf70:	e3 ff ff 6a 	bi 801bd18 <msdos_dir_read+0x328>              <== NOT EXECUTED
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
	(*src_tmp == ' '));                                                  
       i--,src_tmp--)                                                 
 801bf74:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 801bf78:	e3 ff ff e4 	bi 801bf08 <msdos_dir_read+0x518>              <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
 801bf7c:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 801bf80:	e3 ff ff e2 	bi 801bf08 <msdos_dir_read+0x518>              <== NOT EXECUTED
                                                                      

0801bf84 <msdos_dir_stat>: int msdos_dir_stat( const rtems_filesystem_location_info_t *loc, struct stat *buf ) {
 801bf84:	37 9c ff f0 	addi sp,sp,-16                                 
 801bf88:	5b 8b 00 10 	sw (sp+16),r11                                 
 801bf8c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801bf90:	5b 8d 00 08 	sw (sp+8),r13                                  
 801bf94:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
 801bf98:	28 24 00 14 	lw r4,(r1+20)                                  
    fat_file_fd_t     *fat_fd = loc->node_access;                     
 801bf9c:	28 2c 00 08 	lw r12,(r1+8)                                  
int                                                                   
msdos_dir_stat(                                                       
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
 801bfa0:	b8 40 58 00 	mv r11,r2                                      
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
 801bfa4:	28 8d 00 08 	lw r13,(r4+8)                                  
    fat_file_fd_t     *fat_fd = loc->node_access;                     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801bfa8:	34 03 00 00 	mvi r3,0                                       
 801bfac:	34 02 00 00 	mvi r2,0                                       
 801bfb0:	29 a1 00 9c 	lw r1,(r13+156)                                
 801bfb4:	fb ff a7 58 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801bfb8:	5c 20 00 1f 	bne r1,r0,801c034 <msdos_dir_stat+0xb0>        <== NEVER TAKEN
    buf->st_blksize = fs_info->fat.vol.bps;                           
    buf->st_mtime = fat_fd->mtime;                                    
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
    return RC_OK;                                                     
}                                                                     
 801bfbc:	29 a3 00 64 	lw r3,(r13+100)                                
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
 801bfc0:	29 84 00 18 	lw r4,(r12+24)                                 
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
 801bfc4:	29 85 00 0c 	lw r5,(r12+12)                                 
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801bfc8:	28 61 00 00 	lw r1,(r3+0)                                   
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
 801bfcc:	34 02 00 09 	mvi r2,9                                       
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801bfd0:	59 61 00 00 	sw (r11+0),r1                                  
 801bfd4:	28 63 00 04 	lw r3,(r3+4)                                   
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
 801bfd8:	b8 80 08 00 	mv r1,r4                                       
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
 801bfdc:	59 65 00 08 	sw (r11+8),r5                                  
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801bfe0:	59 63 00 04 	sw (r11+4),r3                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
 801bfe4:	34 03 41 ff 	mvi r3,16895                                   
 801bfe8:	59 63 00 0c 	sw (r11+12),r3                                 
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
 801bfec:	59 64 00 20 	sw (r11+32),r4                                 
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
 801bff0:	59 60 00 18 	sw (r11+24),r0                                 
 801bff4:	59 60 00 1c 	sw (r11+28),r0                                 
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
 801bff8:	f8 00 4c 00 	calli 802eff8 <__lshrsi3>                      
    buf->st_blksize = fs_info->fat.vol.bps;                           
 801bffc:	2d a2 00 00 	lhu r2,(r13+0)                                 
    buf->st_mtime = fat_fd->mtime;                                    
 801c000:	29 83 00 40 	lw r3,(r12+64)                                 
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
 801c004:	59 61 00 40 	sw (r11+64),r1                                 
    buf->st_blksize = fs_info->fat.vol.bps;                           
    buf->st_mtime = fat_fd->mtime;                                    
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c008:	29 a1 00 9c 	lw r1,(r13+156)                                
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
    buf->st_blksize = fs_info->fat.vol.bps;                           
 801c00c:	59 62 00 3c 	sw (r11+60),r2                                 
    buf->st_mtime = fat_fd->mtime;                                    
 801c010:	59 63 00 2c 	sw (r11+44),r3                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c014:	fb ff a7 9c 	calli 8005e84 <rtems_semaphore_release>        
    return RC_OK;                                                     
 801c018:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801c01c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c020:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801c024:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801c028:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801c02c:	37 9c 00 10 	addi sp,sp,16                                  
 801c030:	c3 a0 00 00 	ret                                            
    fat_file_fd_t     *fat_fd = loc->node_access;                     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c034:	f8 00 01 f0 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c038:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c03c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c040:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801c044:	e3 ff ff f6 	bi 801c01c <msdos_dir_stat+0x98>               <== NOT EXECUTED
                                                                      

080176ac <msdos_eval_token>: rtems_filesystem_eval_path_context_t *ctx, void *arg, const char *token, size_t tokenlen ) {
 80176ac:	37 9c ff f8 	addi sp,sp,-8                                  
 80176b0:	5b 8b 00 08 	sw (sp+8),r11                                  
 80176b4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80176b8:	b8 20 58 00 	mv r11,r1                                      
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 80176bc:	34 01 00 01 	mvi r1,1                                       
 80176c0:	44 81 00 12 	be r4,r1,8017708 <msdos_eval_token+0x5c>       
    rtems_filesystem_eval_path_clear_token(ctx);                      
    status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;             
  } else {                                                            
    rtems_filesystem_location_info_t *currentloc =                    
      rtems_filesystem_eval_path_get_currentloc(ctx);                 
    int rc = msdos_find_name(currentloc, token, tokenlen);            
 80176c4:	b8 60 10 00 	mv r2,r3                                       
 80176c8:	35 61 00 18 	addi r1,r11,24                                 
 80176cc:	b8 80 18 00 	mv r3,r4                                       
 80176d0:	f8 00 08 6a 	calli 8019878 <msdos_find_name>                
 80176d4:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if (rc == RC_OK) {                                                
 80176d8:	44 20 00 12 	be r1,r0,8017720 <msdos_eval_token+0x74>       
      rtems_filesystem_eval_path_clear_token(ctx);                    
      msdos_set_handlers(currentloc);                                 
      if (rtems_filesystem_eval_path_has_path(ctx)) {                 
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;         
      }                                                               
    } else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {                      
 80176dc:	34 03 7d 01 	mvi r3,32001                                   
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
 80176e0:	34 01 00 02 	mvi r1,2                                       
      rtems_filesystem_eval_path_clear_token(ctx);                    
      msdos_set_handlers(currentloc);                                 
      if (rtems_filesystem_eval_path_has_path(ctx)) {                 
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;         
      }                                                               
    } else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {                      
 80176e4:	44 43 00 05 	be r2,r3,80176f8 <msdos_eval_token+0x4c>       <== ALWAYS TAKEN
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, 0);                       
 80176e8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80176ec:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80176f0:	fb ff b3 91 	calli 8004534 <rtems_filesystem_eval_path_error><== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 80176f4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
      rtems_filesystem_eval_path_error(ctx, 0);                       
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 80176f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80176fc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8017700:	37 9c 00 08 	addi sp,sp,8                                   
 8017704:	c3 a0 00 00 	ret                                            
 8017708:	40 62 00 00 	lbu r2,(r3+0)                                  
 801770c:	34 01 00 2e 	mvi r1,46                                      
 8017710:	5c 41 ff ed 	bne r2,r1,80176c4 <msdos_eval_token+0x18>      
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
 8017714:	59 60 00 0c 	sw (r11+12),r0                                 
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
                                                                      
  if (rtems_filesystem_is_current_directory(token, tokenlen)) {       
    rtems_filesystem_eval_path_clear_token(ctx);                      
    status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;             
 8017718:	34 01 00 00 	mvi r1,0                                       
 801771c:	e3 ff ff f7 	bi 80176f8 <msdos_eval_token+0x4c>             
msdos_set_handlers(rtems_filesystem_location_info_t *loc)             
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
 8017720:	29 63 00 20 	lw r3,(r11+32)                                 
 *     None                                                           
 */                                                                   
static void                                                           
msdos_set_handlers(rtems_filesystem_location_info_t *loc)             
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
 8017724:	29 61 00 2c 	lw r1,(r11+44)                                 
 8017728:	59 60 00 0c 	sw (r11+12),r0                                 
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
 801772c:	28 63 00 10 	lw r3,(r3+16)                                  
 *     None                                                           
 */                                                                   
static void                                                           
msdos_set_handlers(rtems_filesystem_location_info_t *loc)             
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
 8017730:	28 21 00 08 	lw r1,(r1+8)                                   
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
 8017734:	5c 62 00 09 	bne r3,r2,8017758 <msdos_eval_token+0xac>      
        loc->handlers = fs_info->directory_handlers;                  
 8017738:	28 21 00 94 	lw r1,(r1+148)                                 
 801773c:	59 61 00 28 	sw (r11+40),r1                                 
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
                                                                      
  if (rtems_filesystem_is_current_directory(token, tokenlen)) {       
    rtems_filesystem_eval_path_clear_token(ctx);                      
    status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;             
 8017740:	29 61 00 04 	lw r1,(r11+4)                                  
 8017744:	64 21 00 00 	cmpei r1,r1,0                                  
      rtems_filesystem_eval_path_error(ctx, 0);                       
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8017748:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801774c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8017750:	37 9c 00 08 	addi sp,sp,8                                   
 8017754:	c3 a0 00 00 	ret                                            
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
        loc->handlers = fs_info->directory_handlers;                  
    else                                                              
        loc->handlers = fs_info->file_handlers;                       
 8017758:	28 21 00 98 	lw r1,(r1+152)                                 
 801775c:	59 61 00 28 	sw (r11+40),r1                                 
 8017760:	e3 ff ff f8 	bi 8017740 <msdos_eval_token+0x94>             
                                                                      

0801c0bc <msdos_file_close>: * RC_OK, if file closed successfully, or -1 if error occured (errno set * appropriately) */ int msdos_file_close(rtems_libio_t *iop) {
 801c0bc:	37 9c ff f4 	addi sp,sp,-12                                 
 801c0c0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801c0c4:	5b 8c 00 08 	sw (sp+8),r12                                  
 801c0c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c0cc:	b8 20 58 00 	mv r11,r1                                      
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c0d0:	28 21 00 20 	lw r1,(r1+32)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c0d4:	34 02 00 00 	mvi r2,0                                       
 801c0d8:	34 03 00 00 	mvi r3,0                                       
int                                                                   
msdos_file_close(rtems_libio_t *iop)                                  
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c0dc:	28 2c 00 08 	lw r12,(r1+8)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c0e0:	29 81 00 9c 	lw r1,(r12+156)                                
 801c0e4:	fb ff a7 0c 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c0e8:	5c 20 00 0d 	bne r1,r0,801c11c <msdos_file_close+0x60>      <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = msdos_file_update(iop);                                      
 801c0ec:	29 61 00 14 	lw r1,(r11+20)                                 
 801c0f0:	35 62 00 20 	addi r2,r11,32                                 
 801c0f4:	fb ff ff d5 	calli 801c048 <msdos_file_update.clone.1>      
 801c0f8:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c0fc:	29 81 00 9c 	lw r1,(r12+156)                                
 801c100:	fb ff a7 61 	calli 8005e84 <rtems_semaphore_release>        
    return rc;                                                        
}                                                                     
 801c104:	b9 60 08 00 	mv r1,r11                                      
 801c108:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c10c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801c110:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801c114:	37 9c 00 0c 	addi sp,sp,12                                  
 801c118:	c3 a0 00 00 	ret                                            
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c11c:	f8 00 01 b6 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c120:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c124:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c128:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 801c12c:	e3 ff ff f6 	bi 801c104 <msdos_file_close+0x48>             <== NOT EXECUTED
                                                                      

0801c3b8 <msdos_file_ftruncate>: * RETURNS: * RC_OK on success, or -1 if error occured (errno set appropriately). */ int msdos_file_ftruncate(rtems_libio_t *iop, off_t length) {
 801c3b8:	37 9c ff e4 	addi sp,sp,-28                                 
 801c3bc:	5b 8b 00 18 	sw (sp+24),r11                                 
 801c3c0:	5b 8c 00 14 	sw (sp+20),r12                                 
 801c3c4:	5b 8d 00 10 	sw (sp+16),r13                                 
 801c3c8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801c3cc:	5b 8f 00 08 	sw (sp+8),r15                                  
 801c3d0:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c3d4:	28 24 00 20 	lw r4,(r1+32)                                  
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
 801c3d8:	28 2e 00 14 	lw r14,(r1+20)                                 
 * RETURNS:                                                           
 *     RC_OK on success, or -1 if error occured (errno set appropriately).
 */                                                                   
int                                                                   
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)                
{                                                                     
 801c3dc:	b8 40 68 00 	mv r13,r2                                      
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c3e0:	28 8c 00 08 	lw r12,(r4+8)                                  
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c3e4:	34 03 00 00 	mvi r3,0                                       
 801c3e8:	34 02 00 00 	mvi r2,0                                       
 801c3ec:	29 81 00 9c 	lw r1,(r12+156)                                
 801c3f0:	fb ff a6 49 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c3f4:	5c 20 00 29 	bne r1,r0,801c498 <msdos_file_ftruncate+0xe0>  <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    old_length = fat_fd->fat_file_size;                               
 801c3f8:	29 cf 00 18 	lw r15,(r14+24)                                
    if (length < old_length) {                                        
 801c3fc:	51 af 00 14 	bgeu r13,r15,801c44c <msdos_file_ftruncate+0x94>
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
 801c400:	b9 80 08 00 	mv r1,r12                                      
 801c404:	b9 c0 10 00 	mv r2,r14                                      
 801c408:	b9 a0 18 00 	mv r3,r13                                      
 801c40c:	fb ff cf a5 	calli 80102a0 <fat_file_truncate>              
 801c410:	b8 20 58 00 	mv r11,r1                                      
            errno = ENOSPC;                                           
            rc = -1;                                                  
        }                                                             
    }                                                                 
                                                                      
    if (rc == RC_OK) {                                                
 801c414:	5c 20 00 03 	bne r1,r0,801c420 <msdos_file_ftruncate+0x68>  <== NEVER TAKEN
        fat_fd->fat_file_size = length;                               
 801c418:	59 cd 00 18 	sw (r14+24),r13                                
 801c41c:	34 0b 00 00 	mvi r11,0                                      
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c420:	29 81 00 9c 	lw r1,(r12+156)                                
 801c424:	fb ff a6 98 	calli 8005e84 <rtems_semaphore_release>        
                                                                      
    return rc;                                                        
}                                                                     
 801c428:	b9 60 08 00 	mv r1,r11                                      
 801c42c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c430:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801c434:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801c438:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801c43c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801c440:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801c444:	37 9c 00 1c 	addi sp,sp,28                                  
 801c448:	c3 a0 00 00 	ret                                            
    if (length < old_length) {                                        
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
    } else {                                                          
        uint32_t new_length;                                          
                                                                      
        rc = fat_file_extend(&fs_info->fat,                           
 801c44c:	b9 80 08 00 	mv r1,r12                                      
 801c450:	b9 c0 10 00 	mv r2,r14                                      
 801c454:	34 03 00 01 	mvi r3,1                                       
 801c458:	b9 a0 20 00 	mv r4,r13                                      
 801c45c:	37 85 00 1c 	addi r5,sp,28                                  
 801c460:	fb ff d0 53 	calli 80105ac <fat_file_extend>                
 801c464:	b8 20 58 00 	mv r11,r1                                      
                             fat_fd,                                  
                             true,                                    
                             length,                                  
                             &new_length);                            
        if (rc == RC_OK && length != new_length) {                    
 801c468:	5c 20 ff ee 	bne r1,r0,801c420 <msdos_file_ftruncate+0x68>  <== NEVER TAKEN
 801c46c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 801c470:	45 a1 ff ea 	be r13,r1,801c418 <msdos_file_ftruncate+0x60>  <== ALWAYS TAKEN
            fat_file_truncate(&fs_info->fat, fat_fd, old_length);     
 801c474:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801c478:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 801c47c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801c480:	fb ff cf 88 	calli 80102a0 <fat_file_truncate>              <== NOT EXECUTED
            errno = ENOSPC;                                           
 801c484:	f8 00 00 dc 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c488:	34 02 00 1c 	mvi r2,28                                      <== NOT EXECUTED
 801c48c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
            rc = -1;                                                  
 801c490:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 801c494:	e3 ff ff e3 	bi 801c420 <msdos_file_ftruncate+0x68>         <== NOT EXECUTED
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c498:	f8 00 00 d7 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c49c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c4a0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c4a4:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 801c4a8:	e3 ff ff e0 	bi 801c428 <msdos_file_ftruncate+0x70>         <== NOT EXECUTED
                                                                      

0801c130 <msdos_file_read>: * the number of bytes read on success, or -1 if error occured (errno set * appropriately) */ ssize_t msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count) {
 801c130:	37 9c ff e4 	addi sp,sp,-28                                 
 801c134:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801c138:	5b 8c 00 18 	sw (sp+24),r12                                 
 801c13c:	5b 8d 00 14 	sw (sp+20),r13                                 
 801c140:	5b 8e 00 10 	sw (sp+16),r14                                 
 801c144:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801c148:	5b 90 00 08 	sw (sp+8),r16                                  
 801c14c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c150:	b8 20 58 00 	mv r11,r1                                      
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c154:	28 21 00 20 	lw r1,(r1+32)                                  
 *     the number of bytes read on success, or -1 if error occured (errno set
 *     appropriately)                                                 
 */                                                                   
ssize_t                                                               
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)       
{                                                                     
 801c158:	b8 40 68 00 	mv r13,r2                                      
 801c15c:	b8 60 78 00 	mv r15,r3                                      
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c160:	28 2c 00 08 	lw r12,(r1+8)                                  
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c164:	34 02 00 00 	mvi r2,0                                       
 801c168:	34 03 00 00 	mvi r3,0                                       
 801c16c:	29 81 00 9c 	lw r1,(r12+156)                                
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)       
{                                                                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
 801c170:	29 70 00 14 	lw r16,(r11+20)                                
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c174:	fb ff a6 e8 	calli 8005d14 <rtems_semaphore_obtain>         
 801c178:	b8 20 70 00 	mv r14,r1                                      
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c17c:	5c 20 00 18 	bne r1,r0,801c1dc <msdos_file_read+0xac>       <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    ret = fat_file_read(&fs_info->fat, fat_fd, iop->offset, count,    
 801c180:	29 63 00 04 	lw r3,(r11+4)                                  
 801c184:	b9 a0 28 00 	mv r5,r13                                      
 801c188:	b9 80 08 00 	mv r1,r12                                      
 801c18c:	ba 00 10 00 	mv r2,r16                                      
 801c190:	b9 e0 20 00 	mv r4,r15                                      
 801c194:	fb ff cf af 	calli 8010050 <fat_file_read>                  
 801c198:	b8 20 68 00 	mv r13,r1                                      
                        buffer);                                      
    if (ret > 0)                                                      
 801c19c:	4d c1 00 04 	bge r14,r1,801c1ac <msdos_file_read+0x7c>      
        iop->offset += ret;                                           
 801c1a0:	29 61 00 04 	lw r1,(r11+4)                                  
 801c1a4:	b4 2d 08 00 	add r1,r1,r13                                  
 801c1a8:	59 61 00 04 	sw (r11+4),r1                                  
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c1ac:	29 81 00 9c 	lw r1,(r12+156)                                
 801c1b0:	fb ff a7 35 	calli 8005e84 <rtems_semaphore_release>        
    return ret;                                                       
}                                                                     
 801c1b4:	b9 a0 08 00 	mv r1,r13                                      
 801c1b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c1bc:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801c1c0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801c1c4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801c1c8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801c1cc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801c1d0:	2b 90 00 08 	lw r16,(sp+8)                                  
 801c1d4:	37 9c 00 1c 	addi sp,sp,28                                  
 801c1d8:	c3 a0 00 00 	ret                                            
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c1dc:	f8 00 01 86 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c1e0:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c1e4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c1e8:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
 801c1ec:	e3 ff ff f2 	bi 801c1b4 <msdos_file_read+0x84>              <== NOT EXECUTED
                                                                      

0801c2dc <msdos_file_stat>: int msdos_file_stat( const rtems_filesystem_location_info_t *loc, struct stat *buf ) {
 801c2dc:	37 9c ff ec 	addi sp,sp,-20                                 
 801c2e0:	5b 8b 00 14 	sw (sp+20),r11                                 
 801c2e4:	5b 8c 00 10 	sw (sp+16),r12                                 
 801c2e8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801c2ec:	5b 8e 00 08 	sw (sp+8),r14                                  
 801c2f0:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
 801c2f4:	28 24 00 14 	lw r4,(r1+20)                                  
    fat_file_fd_t     *fat_fd = loc->node_access;                     
 801c2f8:	28 2d 00 08 	lw r13,(r1+8)                                  
int                                                                   
msdos_file_stat(                                                      
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
 801c2fc:	b8 40 58 00 	mv r11,r2                                      
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
 801c300:	28 8c 00 08 	lw r12,(r4+8)                                  
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c304:	34 03 00 00 	mvi r3,0                                       
 801c308:	34 02 00 00 	mvi r2,0                                       
 801c30c:	29 81 00 9c 	lw r1,(r12+156)                                
)                                                                     
{                                                                     
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
 801c310:	2d 8e 00 06 	lhu r14,(r12+6)                                
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c314:	fb ff a6 80 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c318:	5c 20 00 23 	bne r1,r0,801c3a4 <msdos_file_stat+0xc8>       <== NEVER TAKEN
                                                                      
    rc = fat_sync(&fs_info->fat);                                     
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
    return RC_OK;                                                     
}                                                                     
 801c31c:	29 82 00 64 	lw r2,(r12+100)                                
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
 801c320:	29 a4 00 18 	lw r4,(r13+24)                                 
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
 801c324:	29 a5 00 0c 	lw r5,(r13+12)                                 
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801c328:	28 46 00 00 	lw r6,(r2+0)                                   
)                                                                     
{                                                                     
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
 801c32c:	35 c3 ff ff 	addi r3,r14,-1                                 
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
 801c330:	a4 60 08 00 	not r1,r3                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801c334:	59 66 00 00 	sw (r11+0),r6                                  
 801c338:	28 46 00 04 	lw r6,(r2+4)                                   
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
 801c33c:	b4 64 18 00 	add r3,r3,r4                                   
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
 801c340:	59 65 00 08 	sw (r11+8),r5                                  
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
 801c344:	38 05 81 ff 	mvu r5,0x81ff                                  
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
 801c348:	34 02 00 09 	mvi r2,9                                       
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
 801c34c:	59 66 00 04 	sw (r11+4),r6                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
 801c350:	59 65 00 0c 	sw (r11+12),r5                                 
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
 801c354:	59 64 00 20 	sw (r11+32),r4                                 
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
 801c358:	a0 23 08 00 	and r1,r1,r3                                   
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
 801c35c:	59 60 00 18 	sw (r11+24),r0                                 
 801c360:	59 60 00 1c 	sw (r11+28),r0                                 
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
 801c364:	f8 00 4b 25 	calli 802eff8 <__lshrsi3>                      
    buf->st_blksize = fs_info->fat.vol.bpc;                           
 801c368:	2d 82 00 06 	lhu r2,(r12+6)                                 
    buf->st_mtime = fat_fd->mtime;                                    
 801c36c:	29 a3 00 40 	lw r3,(r13+64)                                 
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
 801c370:	59 61 00 40 	sw (r11+64),r1                                 
      >> FAT_SECTOR512_BITS;                                          
    buf->st_blksize = fs_info->fat.vol.bpc;                           
    buf->st_mtime = fat_fd->mtime;                                    
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c374:	29 81 00 9c 	lw r1,(r12+156)                                
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
    buf->st_blksize = fs_info->fat.vol.bpc;                           
 801c378:	59 62 00 3c 	sw (r11+60),r2                                 
    buf->st_mtime = fat_fd->mtime;                                    
 801c37c:	59 63 00 2c 	sw (r11+44),r3                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c380:	fb ff a6 c1 	calli 8005e84 <rtems_semaphore_release>        
    return RC_OK;                                                     
 801c384:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801c388:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c38c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801c390:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801c394:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801c398:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801c39c:	37 9c 00 14 	addi sp,sp,20                                  
 801c3a0:	c3 a0 00 00 	ret                                            
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c3a4:	f8 00 01 14 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c3a8:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c3ac:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c3b0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801c3b4:	e3 ff ff f5 	bi 801c388 <msdos_file_stat+0xac>              <== NOT EXECUTED
                                                                      

0801c4ac <msdos_file_sync>: * RETURNS: * RC_OK on success, or -1 if error occured (errno set appropriately) */ int msdos_file_sync(rtems_libio_t *iop) {
 801c4ac:	37 9c ff f0 	addi sp,sp,-16                                 
 801c4b0:	5b 8b 00 10 	sw (sp+16),r11                                 
 801c4b4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801c4b8:	5b 8d 00 08 	sw (sp+8),r13                                  
 801c4bc:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c4c0:	b8 20 58 00 	mv r11,r1                                      
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c4c4:	28 21 00 20 	lw r1,(r1+32)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c4c8:	34 02 00 00 	mvi r2,0                                       
 801c4cc:	34 03 00 00 	mvi r3,0                                       
int                                                                   
msdos_file_sync(rtems_libio_t *iop)                                   
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c4d0:	28 2c 00 08 	lw r12,(r1+8)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c4d4:	29 81 00 9c 	lw r1,(r12+156)                                
 801c4d8:	fb ff a6 0f 	calli 8005d14 <rtems_semaphore_obtain>         
 801c4dc:	b8 20 68 00 	mv r13,r1                                      
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c4e0:	5c 20 00 11 	bne r1,r0,801c524 <msdos_file_sync+0x78>       <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = msdos_file_update(iop);                                      
 801c4e4:	29 61 00 14 	lw r1,(r11+20)                                 
 801c4e8:	35 62 00 20 	addi r2,r11,32                                 
 801c4ec:	fb ff fe d7 	calli 801c048 <msdos_file_update.clone.1>      
 801c4f0:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RC_OK)                                                  
 801c4f4:	5c 2d 00 03 	bne r1,r13,801c500 <msdos_file_sync+0x54>      <== NEVER TAKEN
    {                                                                 
        rtems_semaphore_release(fs_info->vol_sema);                   
        return rc;                                                    
    }                                                                 
                                                                      
    rc = fat_sync(&fs_info->fat);                                     
 801c4f8:	b9 80 08 00 	mv r1,r12                                      
 801c4fc:	fb ff d6 6f 	calli 8011eb8 <fat_sync>                       
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c500:	29 81 00 9c 	lw r1,(r12+156)                                
 801c504:	fb ff a6 60 	calli 8005e84 <rtems_semaphore_release>        
    return RC_OK;                                                     
}                                                                     
 801c508:	b9 60 08 00 	mv r1,r11                                      
 801c50c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c510:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801c514:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801c518:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801c51c:	37 9c 00 10 	addi sp,sp,16                                  
 801c520:	c3 a0 00 00 	ret                                            
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c524:	f8 00 00 b4 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c528:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c52c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c530:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 801c534:	e3 ff ff f5 	bi 801c508 <msdos_file_sync+0x5c>              <== NOT EXECUTED
                                                                      

0801c048 <msdos_file_update.clone.1>: #include "fat_file.h" #include "msdos.h" static int msdos_file_update(rtems_libio_t *iop)
 801c048:	37 9c ff f0 	addi sp,sp,-16                                 
 801c04c:	5b 8b 00 10 	sw (sp+16),r11                                 
 801c050:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801c054:	5b 8d 00 08 	sw (sp+8),r13                                  
 801c058:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    /*                                                                
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
 801c05c:	40 2c 00 30 	lbu r12,(r1+48)                                
#include "fat_file.h"                                                 
                                                                      
#include "msdos.h"                                                    
                                                                      
static int                                                            
msdos_file_update(rtems_libio_t *iop)                                 
 801c060:	b8 20 58 00 	mv r11,r1                                      
 801c064:	b8 40 68 00 	mv r13,r2                                      
                                                                      
    /*                                                                
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
 801c068:	21 8c 00 01 	andi r12,r12,0x1                               
#include "msdos.h"                                                    
                                                                      
static int                                                            
msdos_file_update(rtems_libio_t *iop)                                 
{                                                                     
    int              rc = RC_OK;                                      
 801c06c:	34 01 00 00 	mvi r1,0                                       
                                                                      
    /*                                                                
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
 801c070:	5d 80 00 05 	bne r12,r0,801c084 <msdos_file_update.clone.1+0x3c><== NEVER TAKEN
    {                                                                 
        rc = msdos_set_first_cluster_num(iop->pathinfo.mt_entry, fat_fd);
 801c074:	28 41 00 00 	lw r1,(r2+0)                                   
 801c078:	b9 60 10 00 	mv r2,r11                                      
 801c07c:	fb ff ee f7 	calli 8017c58 <msdos_set_first_cluster_num>    
        if (rc != RC_OK)                                              
 801c080:	44 2c 00 07 	be r1,r12,801c09c <msdos_file_update.clone.1+0x54><== ALWAYS TAKEN
            return rc;                                                
        }                                                             
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 801c084:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c088:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801c08c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801c090:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801c094:	37 9c 00 10 	addi sp,sp,16                                  
 801c098:	c3 a0 00 00 	ret                                            
        if (rc != RC_OK)                                              
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        rc = msdos_set_file_size(iop->pathinfo.mt_entry, fat_fd);     
 801c09c:	29 a1 00 00 	lw r1,(r13+0)                                  
 801c0a0:	b9 60 10 00 	mv r2,r11                                      
 801c0a4:	fb ff ef 56 	calli 8017dfc <msdos_set_file_size>            
        if (rc != RC_OK)                                              
 801c0a8:	5c 20 ff f7 	bne r1,r0,801c084 <msdos_file_update.clone.1+0x3c><== NEVER TAKEN
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
 801c0ac:	29 a1 00 00 	lw r1,(r13+0)                                  
 801c0b0:	b9 60 10 00 	mv r2,r11                                      
 801c0b4:	fb ff ee 75 	calli 8017a88 <msdos_set_dir_wrt_time_and_date>
 801c0b8:	e3 ff ff f3 	bi 801c084 <msdos_file_update.clone.1+0x3c>    
                                                                      

0801c1f0 <msdos_file_write>: * the number of bytes written on success, or -1 if error occured * and errno set appropriately */ ssize_t msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count) {
 801c1f0:	37 9c ff e8 	addi sp,sp,-24                                 
 801c1f4:	5b 8b 00 18 	sw (sp+24),r11                                 
 801c1f8:	5b 8c 00 14 	sw (sp+20),r12                                 
 801c1fc:	5b 8d 00 10 	sw (sp+16),r13                                 
 801c200:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801c204:	5b 8f 00 08 	sw (sp+8),r15                                  
 801c208:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c20c:	b8 20 58 00 	mv r11,r1                                      
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c210:	28 21 00 20 	lw r1,(r1+32)                                  
 *     the number of bytes written on success, or -1 if error occured 
 *     and errno set appropriately                                    
 */                                                                   
ssize_t                                                               
msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count) 
{                                                                     
 801c214:	b8 40 68 00 	mv r13,r2                                      
 801c218:	b8 60 78 00 	mv r15,r3                                      
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 801c21c:	28 2e 00 08 	lw r14,(r1+8)                                  
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c220:	34 02 00 00 	mvi r2,0                                       
 801c224:	34 03 00 00 	mvi r3,0                                       
 801c228:	29 c1 00 9c 	lw r1,(r14+156)                                
msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count) 
{                                                                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
 801c22c:	29 6c 00 14 	lw r12,(r11+20)                                
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 801c230:	fb ff a6 b9 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 801c234:	5c 20 00 25 	bne r1,r0,801c2c8 <msdos_file_write+0xd8>      <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)                       
 801c238:	29 62 00 08 	lw r2,(r11+8)                                  
 801c23c:	20 42 02 00 	andi r2,r2,0x200                               
 801c240:	5c 41 00 1f 	bne r2,r1,801c2bc <msdos_file_write+0xcc>      
 801c244:	29 66 00 04 	lw r6,(r11+4)                                  
        iop->offset = fat_fd->fat_file_size;                          
                                                                      
    ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,   
 801c248:	b9 a0 28 00 	mv r5,r13                                      
 801c24c:	b9 c0 08 00 	mv r1,r14                                      
 801c250:	b9 80 10 00 	mv r2,r12                                      
 801c254:	b8 c0 18 00 	mv r3,r6                                       
 801c258:	b9 e0 20 00 	mv r4,r15                                      
 801c25c:	fb ff d1 6d 	calli 8010810 <fat_file_write>                 
 801c260:	b8 20 68 00 	mv r13,r1                                      
                         buffer);                                     
    if (ret < 0)                                                      
 801c264:	4c 20 00 05 	bge r1,r0,801c278 <msdos_file_write+0x88>      <== ALWAYS TAKEN
    {                                                                 
        rtems_semaphore_release(fs_info->vol_sema);                   
 801c268:	29 c1 00 9c 	lw r1,(r14+156)                                <== NOT EXECUTED
        return -1;                                                    
 801c26c:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
                                                                      
    ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,   
                         buffer);                                     
    if (ret < 0)                                                      
    {                                                                 
        rtems_semaphore_release(fs_info->vol_sema);                   
 801c270:	fb ff a7 05 	calli 8005e84 <rtems_semaphore_release>        <== NOT EXECUTED
        return -1;                                                    
 801c274:	e0 00 00 09 	bi 801c298 <msdos_file_write+0xa8>             <== NOT EXECUTED
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
 801c278:	29 61 00 04 	lw r1,(r11+4)                                  
    if (iop->offset > fat_fd->fat_file_size)                          
 801c27c:	29 82 00 18 	lw r2,(r12+24)                                 
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
 801c280:	b5 a1 08 00 	add r1,r13,r1                                  
 801c284:	59 61 00 04 	sw (r11+4),r1                                  
    if (iop->offset > fat_fd->fat_file_size)                          
 801c288:	50 41 00 02 	bgeu r2,r1,801c290 <msdos_file_write+0xa0>     
        fat_fd->fat_file_size = iop->offset;                          
 801c28c:	59 81 00 18 	sw (r12+24),r1                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 801c290:	29 c1 00 9c 	lw r1,(r14+156)                                
 801c294:	fb ff a6 fc 	calli 8005e84 <rtems_semaphore_release>        
    return ret;                                                       
}                                                                     
 801c298:	b9 a0 08 00 	mv r1,r13                                      
 801c29c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c2a0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801c2a4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801c2a8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801c2ac:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801c2b0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801c2b4:	37 9c 00 18 	addi sp,sp,24                                  
 801c2b8:	c3 a0 00 00 	ret                                            
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)                       
        iop->offset = fat_fd->fat_file_size;                          
 801c2bc:	29 86 00 18 	lw r6,(r12+24)                                 
 801c2c0:	59 66 00 04 	sw (r11+4),r6                                  
 801c2c4:	e3 ff ff e1 	bi 801c248 <msdos_file_write+0x58>             
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 801c2c8:	f8 00 01 4b 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 801c2cc:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801c2d0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c2d4:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
 801c2d8:	e3 ff ff f0 	bi 801c298 <msdos_file_write+0xa8>             <== NOT EXECUTED
                                                                      

0801b830 <msdos_filename_unix2dos>: * Convert a unix filename to a DOS filename. Return -1 if wrong name is * supplied. */ int msdos_filename_unix2dos(const char *un, int unlen, char *dn) {
 801b830:	37 9c ff fc 	addi sp,sp,-4                                  
 801b834:	5b 8b 00 04 	sw (sp+4),r11                                  
                                                                      
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
 801b838:	34 04 00 00 	mvi r4,0                                       
		dn[i] = ' ';                                                        
 801b83c:	34 07 00 20 	mvi r7,32                                      
                                                                      
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
 801b840:	34 06 00 0b 	mvi r6,11                                      
/*                                                                    
 * Convert a unix filename to a DOS filename. Return -1 if wrong name is
 * supplied.                                                          
 */                                                                   
int                                                                   
msdos_filename_unix2dos(const char *un, int unlen, char *dn)          
 801b844:	b4 64 28 00 	add r5,r3,r4                                   
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
		dn[i] = ' ';                                                        
 801b848:	30 a7 00 00 	sb (r5+0),r7                                   
                                                                      
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
 801b84c:	34 84 00 01 	addi r4,r4,1                                   
 801b850:	5c 86 ff fd 	bne r4,r6,801b844 <msdos_filename_unix2dos+0x14>
                                                                      
	/*                                                                   
	 * The filenames "." and ".." are handled specially, since they      
	 * don't follow dos filename rules.                                  
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
 801b854:	40 24 00 00 	lbu r4,(r1+0)                                  
 801b858:	64 45 00 01 	cmpei r5,r2,1                                  
 801b85c:	64 86 00 2e 	cmpei r6,r4,46                                 
 801b860:	a0 c5 28 00 	and r5,r6,r5                                   
 801b864:	5c a0 00 54 	bne r5,r0,801b9b4 <msdos_filename_unix2dos+0x184><== NEVER TAKEN
		dn[0] = '.';                                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
 801b868:	5c c5 00 59 	bne r6,r5,801b9cc <msdos_filename_unix2dos+0x19c><== NEVER TAKEN
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
 801b86c:	44 40 00 45 	be r2,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
 801b870:	34 05 00 2e 	mvi r5,46                                      
 801b874:	5c c0 00 49 	bne r6,r0,801b998 <msdos_filename_unix2dos+0x168><== NEVER TAKEN
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b878:	44 80 00 1d 	be r4,r0,801b8ec <msdos_filename_unix2dos+0xbc><== NEVER TAKEN
 801b87c:	34 05 00 2e 	mvi r5,46                                      
 801b880:	44 85 00 1b 	be r4,r5,801b8ec <msdos_filename_unix2dos+0xbc><== NEVER TAKEN
    if (msdos_map[c] == 0)                                            
 801b884:	78 06 08 03 	mvhi r6,0x803                                  
 801b888:	38 c6 08 24 	ori r6,r6,0x824                                
 801b88c:	b4 c4 28 00 	add r5,r6,r4                                   
 801b890:	40 a7 00 00 	lbu r7,(r5+0)                                  
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b894:	34 0a 00 07 	mvi r10,7                                      
    if (msdos_map[c] == 0)                                            
 801b898:	34 05 00 00 	mvi r5,0                                       
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b89c:	34 0b 00 2e 	mvi r11,46                                     
    if (msdos_map[c] == 0)                                            
 801b8a0:	5c e0 00 08 	bne r7,r0,801b8c0 <msdos_filename_unix2dos+0x90>
 801b8a4:	e0 00 00 12 	bi 801b8ec <msdos_filename_unix2dos+0xbc>      
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b8a8:	40 24 00 00 	lbu r4,(r1+0)                                  
    if (msdos_map[c] == 0)                                            
 801b8ac:	b4 c4 38 00 	add r7,r6,r4                                   
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b8b0:	44 80 00 0f 	be r4,r0,801b8ec <msdos_filename_unix2dos+0xbc><== NEVER TAKEN
 801b8b4:	44 8b 00 0e 	be r4,r11,801b8ec <msdos_filename_unix2dos+0xbc>
    if (msdos_map[c] == 0)                                            
 801b8b8:	40 e7 00 00 	lbu r7,(r7+0)                                  
 801b8bc:	44 e0 00 0c 	be r7,r0,801b8ec <msdos_filename_unix2dos+0xbc>
/*                                                                    
 * Convert a unix filename to a DOS filename. Return -1 if wrong name is
 * supplied.                                                          
 */                                                                   
int                                                                   
msdos_filename_unix2dos(const char *un, int unlen, char *dn)          
 801b8c0:	b4 65 48 00 	add r9,r3,r5                                   
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
    if (msdos_map[c] == 0)                                            
      break;                                                          
		dn[i] = msdos_map[c];                                               
		un++;                                                               
		unlen--;                                                            
 801b8c4:	34 42 ff ff 	addi r2,r2,-1                                  
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b8c8:	34 a5 00 01 	addi r5,r5,1                                   
 801b8cc:	7c 48 00 00 	cmpnei r8,r2,0                                 
 801b8d0:	ed 45 20 00 	cmpge r4,r10,r5                                
    if (msdos_map[c] == 0)                                            
      break;                                                          
		dn[i] = msdos_map[c];                                               
 801b8d4:	31 27 00 00 	sb (r9+0),r7                                   
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b8d8:	a1 04 20 00 	and r4,r8,r4                                   
    if (msdos_map[c] == 0)                                            
      break;                                                          
		dn[i] = msdos_map[c];                                               
		un++;                                                               
 801b8dc:	34 21 00 01 	addi r1,r1,1                                   
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
 801b8e0:	5c 80 ff f2 	bne r4,r0,801b8a8 <msdos_filename_unix2dos+0x78>
                                                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
 801b8e4:	44 44 00 27 	be r2,r4,801b980 <msdos_filename_unix2dos+0x150>
 801b8e8:	40 24 00 00 	lbu r4,(r1+0)                                  
 801b8ec:	44 80 00 25 	be r4,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
		un++;                                                               
		unlen--;                                                            
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
 801b8f0:	34 05 00 2e 	mvi r5,46                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
		un++;                                                               
 801b8f4:	34 21 00 01 	addi r1,r1,1                                   
		unlen--;                                                            
 801b8f8:	34 42 ff ff 	addi r2,r2,-1                                  
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
 801b8fc:	44 85 00 08 	be r4,r5,801b91c <msdos_filename_unix2dos+0xec>
 801b900:	34 05 00 2e 	mvi r5,46                                      
                                                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
 801b904:	44 40 00 1f 	be r2,r0,801b980 <msdos_filename_unix2dos+0x150>
 801b908:	40 24 00 00 	lbu r4,(r1+0)                                  
		un++;                                                               
		unlen--;                                                            
 801b90c:	34 42 ff ff 	addi r2,r2,-1                                  
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
		un++;                                                               
 801b910:	34 21 00 01 	addi r1,r1,1                                   
                                                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
 801b914:	44 80 00 1b 	be r4,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
		un++;                                                               
		unlen--;                                                            
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
 801b918:	5c 85 ff fb 	bne r4,r5,801b904 <msdos_filename_unix2dos+0xd4><== ALWAYS TAKEN
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b91c:	44 40 00 19 	be r2,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
 801b920:	40 24 00 00 	lbu r4,(r1+0)                                  
 801b924:	44 80 00 17 	be r4,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
    if (msdos_map[c] == 0)                                            
 801b928:	78 06 08 03 	mvhi r6,0x803                                  
 801b92c:	38 c6 08 24 	ori r6,r6,0x824                                
 801b930:	b4 c4 20 00 	add r4,r6,r4                                   
 801b934:	40 85 00 00 	lbu r5,(r4+0)                                  
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b938:	34 0a 00 0a 	mvi r10,10                                     
    if (msdos_map[c] == 0)                                            
 801b93c:	34 04 00 08 	mvi r4,8                                       
 801b940:	5c a0 00 07 	bne r5,r0,801b95c <msdos_filename_unix2dos+0x12c>
 801b944:	e0 00 00 0f 	bi 801b980 <msdos_filename_unix2dos+0x150>     
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b948:	40 25 00 00 	lbu r5,(r1+0)                                  
    if (msdos_map[c] == 0)                                            
 801b94c:	b4 c5 38 00 	add r7,r6,r5                                   
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b950:	44 a0 00 0c 	be r5,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
    if (msdos_map[c] == 0)                                            
 801b954:	40 e5 00 00 	lbu r5,(r7+0)                                  
 801b958:	44 a0 00 0a 	be r5,r0,801b980 <msdos_filename_unix2dos+0x150><== NEVER TAKEN
/*                                                                    
 * Convert a unix filename to a DOS filename. Return -1 if wrong name is
 * supplied.                                                          
 */                                                                   
int                                                                   
msdos_filename_unix2dos(const char *un, int unlen, char *dn)          
 801b95c:	b4 64 48 00 	add r9,r3,r4                                   
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
    if (msdos_map[c] == 0)                                            
      break;                                                          
    dn[i] = msdos_map[c];                                             
		un++;                                                               
		unlen--;                                                            
 801b960:	34 42 ff ff 	addi r2,r2,-1                                  
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b964:	34 84 00 01 	addi r4,r4,1                                   
 801b968:	7c 48 00 00 	cmpnei r8,r2,0                                 
 801b96c:	ed 44 38 00 	cmpge r7,r10,r4                                
    if (msdos_map[c] == 0)                                            
      break;                                                          
    dn[i] = msdos_map[c];                                             
 801b970:	31 25 00 00 	sb (r9+0),r5                                   
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b974:	a1 07 28 00 	and r5,r8,r7                                   
    if (msdos_map[c] == 0)                                            
      break;                                                          
    dn[i] = msdos_map[c];                                             
		un++;                                                               
 801b978:	34 21 00 01 	addi r1,r1,1                                   
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
 801b97c:	5c a0 ff f3 	bne r5,r0,801b948 <msdos_filename_unix2dos+0x118>
    dn[i] = msdos_map[c];                                             
		un++;                                                               
		unlen--;                                                            
	}                                                                    
	return 0;                                                            
}                                                                     
 801b980:	34 01 00 00 	mvi r1,0                                       
 801b984:	2b 8b 00 04 	lw r11,(sp+4)                                  
 801b988:	37 9c 00 04 	addi sp,sp,4                                   
 801b98c:	c3 a0 00 00 	ret                                            
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
 801b990:	40 24 00 00 	lbu r4,(r1+0)                                  <== NOT EXECUTED
 801b994:	5c 85 ff b9 	bne r4,r5,801b878 <msdos_filename_unix2dos+0x48><== NOT EXECUTED
		un++;                                                               
		unlen--;                                                            
 801b998:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
		un++;                                                               
 801b99c:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
 801b9a0:	5c 40 ff fc 	bne r2,r0,801b990 <msdos_filename_unix2dos+0x160><== NOT EXECUTED
    dn[i] = msdos_map[c];                                             
		un++;                                                               
		unlen--;                                                            
	}                                                                    
	return 0;                                                            
}                                                                     
 801b9a4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801b9a8:	2b 8b 00 04 	lw r11,(sp+4)                                  <== NOT EXECUTED
 801b9ac:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 801b9b0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
	/*                                                                   
	 * The filenames "." and ".." are handled specially, since they      
	 * don't follow dos filename rules.                                  
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
		dn[0] = '.';                                                        
 801b9b4:	34 01 00 2e 	mvi r1,46                                      <== NOT EXECUTED
 801b9b8:	30 61 00 00 	sb (r3+0),r1                                   <== NOT EXECUTED
    dn[i] = msdos_map[c];                                             
		un++;                                                               
		unlen--;                                                            
	}                                                                    
	return 0;                                                            
}                                                                     
 801b9bc:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801b9c0:	2b 8b 00 04 	lw r11,(sp+4)                                  <== NOT EXECUTED
 801b9c4:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 801b9c8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
		dn[0] = '.';                                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
 801b9cc:	40 27 00 01 	lbu r7,(r1+1)                                  <== NOT EXECUTED
 801b9d0:	64 45 00 02 	cmpei r5,r2,2                                  <== NOT EXECUTED
 801b9d4:	64 e7 00 2e 	cmpei r7,r7,46                                 <== NOT EXECUTED
 801b9d8:	a0 e5 28 00 	and r5,r7,r5                                   <== NOT EXECUTED
 801b9dc:	44 a0 ff a4 	be r5,r0,801b86c <msdos_filename_unix2dos+0x3c><== NOT EXECUTED
		dn[0] = '.';                                                        
 801b9e0:	34 01 00 2e 	mvi r1,46                                      <== NOT EXECUTED
 801b9e4:	30 61 00 00 	sb (r3+0),r1                                   <== NOT EXECUTED
		dn[1] = '.';                                                        
 801b9e8:	30 61 00 01 	sb (r3+1),r1                                   <== NOT EXECUTED
		return 0;                                                           
 801b9ec:	e3 ff ff e5 	bi 801b980 <msdos_filename_unix2dos+0x150>     <== NOT EXECUTED
                                                                      

08019878 <msdos_find_name>: msdos_find_name( rtems_filesystem_location_info_t *parent_loc, const char *name, int name_len ) {
 8019878:	37 9c ff b0 	addi sp,sp,-80                                 
 801987c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8019880:	5b 8c 00 18 	sw (sp+24),r12                                 
 8019884:	5b 8d 00 14 	sw (sp+20),r13                                 
 8019888:	5b 8e 00 10 	sw (sp+16),r14                                 
 801988c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8019890:	5b 90 00 08 	sw (sp+8),r16                                  
 8019894:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
 8019898:	28 25 00 14 	lw r5,(r1+20)                                  
    fat_dir_pos_t      dir_pos;                                       
    unsigned short     time_val = 0;                                  
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 801989c:	37 8b 00 20 	addi r11,sp,32                                 
msdos_find_name(                                                      
    rtems_filesystem_location_info_t *parent_loc,                     
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
 80198a0:	b8 40 70 00 	mv r14,r2                                      
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
 80198a4:	28 b0 00 08 	lw r16,(r5+8)                                  
msdos_find_name(                                                      
    rtems_filesystem_location_info_t *parent_loc,                     
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
 80198a8:	b8 60 60 00 	mv r12,r3                                      
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
                                                                      
    name_type = msdos_long_to_short (name,                            
 80198ac:	b8 60 10 00 	mv r2,r3                                       
msdos_find_name(                                                      
    rtems_filesystem_location_info_t *parent_loc,                     
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
 80198b0:	b8 20 68 00 	mv r13,r1                                      
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
                                                                      
    name_type = msdos_long_to_short (name,                            
 80198b4:	b9 60 18 00 	mv r3,r11                                      
 80198b8:	34 04 00 0b 	mvi r4,11                                      
 80198bc:	b9 c0 08 00 	mv r1,r14                                      
    fat_dir_pos_t      dir_pos;                                       
    unsigned short     time_val = 0;                                  
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 80198c0:	59 60 00 04 	sw (r11+4),r0                                  
 80198c4:	59 60 00 08 	sw (r11+8),r0                                  
 80198c8:	59 60 00 0c 	sw (r11+12),r0                                 
 80198cc:	59 60 00 10 	sw (r11+16),r0                                 
 80198d0:	59 60 00 14 	sw (r11+20),r0                                 
 80198d4:	59 60 00 18 	sw (r11+24),r0                                 
 80198d8:	59 60 00 1c 	sw (r11+28),r0                                 
    int                               name_len                        
    )                                                                 
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
    fat_file_fd_t     *fat_fd = NULL;                                 
 80198dc:	5b 80 00 50 	sw (sp+80),r0                                  
    fat_dir_pos_t      dir_pos;                                       
    unsigned short     time_val = 0;                                  
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
 80198e0:	5b 80 00 20 	sw (sp+32),r0                                  
                                                                      
    /*                                                                
     * find the node which correspondes to the name in the directory pointed by
     * 'parent_loc'                                                   
     */                                                               
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
 80198e4:	37 8f 00 40 	addi r15,sp,64                                 
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
                                                                      
    name_type = msdos_long_to_short (name,                            
 80198e8:	fb ff f7 c8 	calli 8017808 <msdos_long_to_short>            
 80198ec:	b8 20 28 00 	mv r5,r1                                       
                                                                      
    /*                                                                
     * find the node which correspondes to the name in the directory pointed by
     * 'parent_loc'                                                   
     */                                                               
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
 80198f0:	b9 80 20 00 	mv r4,r12                                      
 80198f4:	34 02 00 00 	mvi r2,0                                       
 80198f8:	b9 a0 08 00 	mv r1,r13                                      
 80198fc:	b9 c0 18 00 	mv r3,r14                                      
 8019900:	b9 e0 30 00 	mv r6,r15                                      
 8019904:	b9 60 38 00 	mv r7,r11                                      
 8019908:	fb ff ff 75 	calli 80196dc <msdos_get_name_node>            
 801990c:	b8 20 60 00 	mv r12,r1                                      
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
 8019910:	5c 20 00 21 	bne r1,r0,8019994 <msdos_find_name+0x11c>      
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
 8019914:	43 81 00 2b 	lbu r1,(sp+43)                                 
 8019918:	20 2e 00 08 	andi r14,r1,0x8                                
 801991c:	5d cc 00 28 	bne r14,r12,80199bc <msdos_find_name+0x144>    <== NEVER TAKEN
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
 8019920:	20 21 00 3f 	andi r1,r1,0x3f                                
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
 8019924:	34 02 00 0f 	mvi r2,15                                      
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
        return MSDOS_NAME_NOT_FOUND_ERR;                              
 8019928:	34 0c 7d 01 	mvi r12,32001                                  
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
 801992c:	44 22 00 1a 	be r1,r2,8019994 <msdos_find_name+0x11c>       <== NEVER TAKEN
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
        return MSDOS_NAME_NOT_FOUND_ERR;                              
                                                                      
    /* open fat-file corresponded to the found node */                
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);             
 8019930:	ba 00 08 00 	mv r1,r16                                      
 8019934:	b9 e0 10 00 	mv r2,r15                                      
 8019938:	37 83 00 50 	addi r3,sp,80                                  
 801993c:	fb ff d8 f2 	calli 800fd04 <fat_file_open>                  
 8019940:	b8 20 60 00 	mv r12,r1                                      
    if (rc != RC_OK)                                                  
 8019944:	5c 2e 00 14 	bne r1,r14,8019994 <msdos_find_name+0x11c>     <== NEVER TAKEN
        return rc;                                                    
                                                                      
    fat_fd->dir_pos = dir_pos;                                        
 8019948:	2b 8e 00 50 	lw r14,(sp+80)                                 
 801994c:	2b 81 00 40 	lw r1,(sp+64)                                  
     * size and first cluster num to the disk after each write operation
     * (even if one byte is written  - that is TOO slow) because      
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
 8019950:	29 c2 00 08 	lw r2,(r14+8)                                  
    /* open fat-file corresponded to the found node */                
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);             
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->dir_pos = dir_pos;                                        
 8019954:	59 c1 00 20 	sw (r14+32),r1                                 
 8019958:	2b 81 00 44 	lw r1,(sp+68)                                  
 801995c:	59 c1 00 24 	sw (r14+36),r1                                 
 8019960:	2b 81 00 48 	lw r1,(sp+72)                                  
 8019964:	59 c1 00 28 	sw (r14+40),r1                                 
 8019968:	2b 81 00 4c 	lw r1,(sp+76)                                  
 801996c:	59 c1 00 2c 	sw (r14+44),r1                                 
     * size and first cluster num to the disk after each write operation
     * (even if one byte is written  - that is TOO slow) because      
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
 8019970:	34 01 00 01 	mvi r1,1                                       
 8019974:	44 41 00 14 	be r2,r1,80199c4 <msdos_find_name+0x14c>       
            fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;               
        }                                                             
    }                                                                 
                                                                      
    /* close fat-file corresponded to the node we searched in */      
    rc = fat_file_close(&fs_info->fat, parent_loc->node_access);      
 8019978:	29 a2 00 08 	lw r2,(r13+8)                                  
 801997c:	ba 00 08 00 	mv r1,r16                                      
 8019980:	fb ff da 96 	calli 80103d8 <fat_file_close>                 
 8019984:	b8 20 60 00 	mv r12,r1                                      
    if (rc != RC_OK)                                                  
 8019988:	5c 20 00 97 	bne r1,r0,8019be4 <msdos_find_name+0x36c>      <== NEVER TAKEN
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* update node_info_ptr field */                                  
    parent_loc->node_access = fat_fd;                                 
 801998c:	2b 81 00 50 	lw r1,(sp+80)                                  
 8019990:	59 a1 00 08 	sw (r13+8),r1                                  
                                                                      
    return rc;                                                        
}                                                                     
 8019994:	b9 80 08 00 	mv r1,r12                                      
 8019998:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801999c:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80199a0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80199a4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80199a8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80199ac:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80199b0:	2b 90 00 08 	lw r16,(sp+8)                                  
 80199b4:	37 9c 00 50 	addi sp,sp,80                                  
 80199b8:	c3 a0 00 00 	ret                                            
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
        return MSDOS_NAME_NOT_FOUND_ERR;                              
 80199bc:	34 0c 7d 01 	mvi r12,32001                                  <== NOT EXECUTED
 80199c0:	e3 ff ff f5 	bi 8019994 <msdos_find_name+0x11c>             <== NOT EXECUTED
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
    {                                                                 
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);          
 80199c4:	2d 63 00 14 	lhu r3,(r11+20)                                
 80199c8:	2d 6f 00 1a 	lhu r15,(r11+26)                               
 80199cc:	34 02 00 10 	mvi r2,16                                      
 80199d0:	00 61 00 01 	srui r1,r3,1                                   
 80199d4:	b4 63 18 00 	add r3,r3,r3                                   
 80199d8:	00 21 00 01 	srui r1,r1,1                                   
 80199dc:	b4 63 18 00 	add r3,r3,r3                                   
 80199e0:	00 21 00 01 	srui r1,r1,1                                   
 80199e4:	b4 63 18 00 	add r3,r3,r3                                   
 80199e8:	00 21 00 01 	srui r1,r1,1                                   
 80199ec:	b4 63 18 00 	add r3,r3,r3                                   
 80199f0:	00 21 00 01 	srui r1,r1,1                                   
 80199f4:	b4 63 18 00 	add r3,r3,r3                                   
 80199f8:	00 21 00 01 	srui r1,r1,1                                   
 80199fc:	b4 63 18 00 	add r3,r3,r3                                   
 8019a00:	00 21 00 01 	srui r1,r1,1                                   
 8019a04:	b4 63 18 00 	add r3,r3,r3                                   
 8019a08:	00 21 00 01 	srui r1,r1,1                                   
 8019a0c:	b4 63 18 00 	add r3,r3,r3                                   
 8019a10:	b8 61 08 00 	or r1,r3,r1                                    
 8019a14:	20 21 ff ff 	andi r1,r1,0xffff                              
 8019a18:	fb ff 9d d3 	calli 8001164 <__ashlsi3>                      
                                                                      
        time_val = *MSDOS_DIR_WRITE_TIME(node_entry);                 
 8019a1c:	2d 62 00 16 	lhu r2,(r11+22)                                
        date = *MSDOS_DIR_WRITE_DATE(node_entry);                     
 8019a20:	2d 63 00 18 	lhu r3,(r11+24)                                
 8019a24:	01 e7 00 01 	srui r7,r15,1                                  
 8019a28:	00 45 00 01 	srui r5,r2,1                                   
 8019a2c:	00 66 00 01 	srui r6,r3,1                                   
 8019a30:	00 e7 00 01 	srui r7,r7,1                                   
 8019a34:	00 c6 00 01 	srui r6,r6,1                                   
 8019a38:	00 e7 00 01 	srui r7,r7,1                                   
 8019a3c:	00 a5 00 01 	srui r5,r5,1                                   
 8019a40:	00 e7 00 01 	srui r7,r7,1                                   
 8019a44:	00 c6 00 01 	srui r6,r6,1                                   
 8019a48:	00 a5 00 01 	srui r5,r5,1                                   
 8019a4c:	00 e7 00 01 	srui r7,r7,1                                   
 8019a50:	00 c6 00 01 	srui r6,r6,1                                   
 8019a54:	00 a5 00 01 	srui r5,r5,1                                   
 8019a58:	b5 ef 20 00 	add r4,r15,r15                                 
 8019a5c:	b4 84 20 00 	add r4,r4,r4                                   
 8019a60:	b4 84 20 00 	add r4,r4,r4                                   
 8019a64:	00 e7 00 01 	srui r7,r7,1                                   
 8019a68:	b4 63 18 00 	add r3,r3,r3                                   
 8019a6c:	00 c6 00 01 	srui r6,r6,1                                   
 8019a70:	b4 42 10 00 	add r2,r2,r2                                   
 8019a74:	00 a5 00 01 	srui r5,r5,1                                   
 8019a78:	b4 84 20 00 	add r4,r4,r4                                   
 8019a7c:	b4 63 18 00 	add r3,r3,r3                                   
 8019a80:	b4 42 10 00 	add r2,r2,r2                                   
 8019a84:	b4 84 20 00 	add r4,r4,r4                                   
 8019a88:	00 e7 00 01 	srui r7,r7,1                                   
 8019a8c:	b4 63 18 00 	add r3,r3,r3                                   
 8019a90:	00 c6 00 01 	srui r6,r6,1                                   
 8019a94:	b4 42 10 00 	add r2,r2,r2                                   
 8019a98:	00 a5 00 01 	srui r5,r5,1                                   
 8019a9c:	b4 84 20 00 	add r4,r4,r4                                   
 8019aa0:	b4 63 18 00 	add r3,r3,r3                                   
 8019aa4:	b4 42 10 00 	add r2,r2,r2                                   
 8019aa8:	00 e7 00 01 	srui r7,r7,1                                   
 8019aac:	b4 84 20 00 	add r4,r4,r4                                   
 8019ab0:	b4 63 18 00 	add r3,r3,r3                                   
 8019ab4:	00 c6 00 01 	srui r6,r6,1                                   
 8019ab8:	b4 42 10 00 	add r2,r2,r2                                   
 8019abc:	00 a5 00 01 	srui r5,r5,1                                   
 8019ac0:	b4 84 20 00 	add r4,r4,r4                                   
 8019ac4:	b4 63 18 00 	add r3,r3,r3                                   
 8019ac8:	b4 42 10 00 	add r2,r2,r2                                   
 8019acc:	b8 87 20 00 	or r4,r4,r7                                    
 8019ad0:	00 c6 00 01 	srui r6,r6,1                                   
 8019ad4:	00 a5 00 01 	srui r5,r5,1                                   
 8019ad8:	b4 63 18 00 	add r3,r3,r3                                   
 8019adc:	b4 42 10 00 	add r2,r2,r2                                   
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
    {                                                                 
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);          
 8019ae0:	20 84 ff ff 	andi r4,r4,0xffff                              
 8019ae4:	b4 63 18 00 	add r3,r3,r3                                   
 8019ae8:	b4 42 10 00 	add r2,r2,r2                                   
 8019aec:	b8 24 08 00 	or r1,r1,r4                                    
 8019af0:	b8 66 18 00 	or r3,r3,r6                                    
 8019af4:	b8 45 10 00 	or r2,r2,r5                                    
 8019af8:	59 c1 00 1c 	sw (r14+28),r1                                 
                                                                      
        time_val = *MSDOS_DIR_WRITE_TIME(node_entry);                 
        date = *MSDOS_DIR_WRITE_DATE(node_entry);                     
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
 8019afc:	20 42 ff ff 	andi r2,r2,0xffff                              
 8019b00:	20 61 ff ff 	andi r1,r3,0xffff                              
 8019b04:	f8 00 06 ce 	calli 801b63c <msdos_date_dos2unix>            
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
 8019b08:	43 82 00 2b 	lbu r2,(sp+43)                                 
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);          
                                                                      
        time_val = *MSDOS_DIR_WRITE_TIME(node_entry);                 
        date = *MSDOS_DIR_WRITE_DATE(node_entry);                     
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
 8019b0c:	59 c1 00 40 	sw (r14+64),r1                                 
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
 8019b10:	20 41 00 10 	andi r1,r2,0x10                                
 8019b14:	5c 2c 00 38 	bne r1,r12,8019bf4 <msdos_find_name+0x37c>     
                return rc;                                            
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
 8019b18:	29 6c 00 1c 	lw r12,(r11+28)                                
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019b1c:	34 02 00 18 	mvi r2,24                                      
 8019b20:	2b 8b 00 50 	lw r11,(sp+80)                                 
 8019b24:	21 81 00 ff 	andi r1,r12,0xff                               
 8019b28:	fb ff 9d 8f 	calli 8001164 <__ashlsi3>                      
 8019b2c:	b8 20 70 00 	mv r14,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8019b30:	34 02 00 18 	mvi r2,24                                      
 8019b34:	b9 80 08 00 	mv r1,r12                                      
 8019b38:	f8 00 55 30 	calli 802eff8 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019b3c:	01 83 00 01 	srui r3,r12,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019b40:	b9 c1 70 00 	or r14,r14,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019b44:	00 63 00 01 	srui r3,r3,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019b48:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8019b4c:	00 63 00 01 	srui r3,r3,1                                   
 8019b50:	00 63 00 01 	srui r3,r3,1                                   
 8019b54:	00 63 00 01 	srui r3,r3,1                                   
 8019b58:	00 63 00 01 	srui r3,r3,1                                   
 8019b5c:	00 63 00 01 	srui r3,r3,1                                   
 8019b60:	00 63 00 01 	srui r3,r3,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019b64:	20 61 00 ff 	andi r1,r3,0xff                                
 8019b68:	fb ff 9d 7f 	calli 8001164 <__ashlsi3>                      
 8019b6c:	b9 c1 70 00 	or r14,r14,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 8019b70:	34 02 00 10 	mvi r2,16                                      
 8019b74:	b9 80 08 00 	mv r1,r12                                      
 8019b78:	f8 00 55 20 	calli 802eff8 <__lshrsi3>                      
 8019b7c:	20 22 00 ff 	andi r2,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8019b80:	b4 42 10 00 	add r2,r2,r2                                   
 8019b84:	b4 42 10 00 	add r2,r2,r2                                   
 8019b88:	b4 42 10 00 	add r2,r2,r2                                   
 8019b8c:	b4 42 10 00 	add r2,r2,r2                                   
 8019b90:	b4 42 10 00 	add r2,r2,r2                                   
 8019b94:	b4 42 10 00 	add r2,r2,r2                                   
 8019b98:	b4 42 10 00 	add r2,r2,r2                                   
            fat_fd->fat_file_type = FAT_FILE;                         
 8019b9c:	34 01 00 04 	mvi r1,4                                       
 8019ba0:	b4 42 10 00 	add r2,r2,r2                                   
 8019ba4:	b9 c2 10 00 	or r2,r14,r2                                   
 8019ba8:	59 61 00 10 	sw (r11+16),r1                                 
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
 8019bac:	34 01 ff ff 	mvi r1,-1                                      
                return rc;                                            
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
 8019bb0:	59 62 00 18 	sw (r11+24),r2                                 
            fat_fd->fat_file_type = FAT_FILE;                         
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
 8019bb4:	59 61 00 14 	sw (r11+20),r1                                 
        }                                                             
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
        fat_fd->map.disk_cln = fat_fd->cln;                           
 8019bb8:	29 61 00 1c 	lw r1,(r11+28)                                 
            fat_fd->fat_file_type = FAT_FILE;                         
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
        }                                                             
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
 8019bbc:	59 60 00 34 	sw (r11+52),r0                                 
        fat_fd->map.disk_cln = fat_fd->cln;                           
 8019bc0:	59 61 00 38 	sw (r11+56),r1                                 
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
 8019bc4:	44 40 00 05 	be r2,r0,8019bd8 <msdos_find_name+0x360>       
            (fat_fd->fat_file_size <= fs_info->fat.vol.bpc))          
 8019bc8:	2e 03 00 06 	lhu r3,(r16+6)                                 
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
        fat_fd->map.disk_cln = fat_fd->cln;                           
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
 8019bcc:	54 43 00 03 	bgu r2,r3,8019bd8 <msdos_find_name+0x360>      
        {                                                             
            fat_fd->map.last_cln = fat_fd->cln;                       
        }                                                             
        else                                                          
        {                                                             
            fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;               
 8019bd0:	59 61 00 3c 	sw (r11+60),r1                                 
 8019bd4:	e3 ff ff 69 	bi 8019978 <msdos_find_name+0x100>             
 8019bd8:	34 01 ff ff 	mvi r1,-1                                      
 8019bdc:	59 61 00 3c 	sw (r11+60),r1                                 
 8019be0:	e3 ff ff 66 	bi 8019978 <msdos_find_name+0x100>             
                                                                      
    /* close fat-file corresponded to the node we searched in */      
    rc = fat_file_close(&fs_info->fat, parent_loc->node_access);      
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 8019be4:	2b 82 00 50 	lw r2,(sp+80)                                  <== NOT EXECUTED
 8019be8:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8019bec:	fb ff d9 fb 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
        return rc;                                                    
 8019bf0:	e3 ff ff 69 	bi 8019994 <msdos_find_name+0x11c>             <== NOT EXECUTED
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
        {                                                             
            fat_fd->fat_file_type = FAT_DIRECTORY;                    
 8019bf4:	2b 82 00 50 	lw r2,(sp+80)                                  
            fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                
 8019bf8:	78 03 00 20 	mvhi r3,0x20                                   
                                                                      
            rc = fat_file_size(&fs_info->fat, fat_fd);                
 8019bfc:	ba 00 08 00 	mv r1,r16                                      
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
        {                                                             
            fat_fd->fat_file_type = FAT_DIRECTORY;                    
 8019c00:	58 40 00 10 	sw (r2+16),r0                                  
            fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                
 8019c04:	58 43 00 14 	sw (r2+20),r3                                  
                                                                      
            rc = fat_file_size(&fs_info->fat, fat_fd);                
 8019c08:	fb ff db cc 	calli 8010b38 <fat_file_size>                  
 8019c0c:	b8 20 60 00 	mv r12,r1                                      
            if (rc != RC_OK)                                          
 8019c10:	5c 20 ff f5 	bne r1,r0,8019be4 <msdos_find_name+0x36c>      <== NEVER TAKEN
 8019c14:	2b 8b 00 50 	lw r11,(sp+80)                                 
 8019c18:	29 62 00 18 	lw r2,(r11+24)                                 
 8019c1c:	e3 ff ff e7 	bi 8019bb8 <msdos_find_name+0x340>             
                                                                      

08018290 <msdos_find_name_in_fat_file>: int name_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry ) {
 8018290:	37 9c ff 70 	addi sp,sp,-144                                
 8018294:	5b 8b 00 44 	sw (sp+68),r11                                 
 8018298:	5b 8c 00 40 	sw (sp+64),r12                                 
 801829c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 80182a0:	5b 8e 00 38 	sw (sp+56),r14                                 
 80182a4:	5b 8f 00 34 	sw (sp+52),r15                                 
 80182a8:	5b 90 00 30 	sw (sp+48),r16                                 
 80182ac:	5b 91 00 2c 	sw (sp+44),r17                                 
 80182b0:	5b 92 00 28 	sw (sp+40),r18                                 
 80182b4:	5b 93 00 24 	sw (sp+36),r19                                 
 80182b8:	5b 94 00 20 	sw (sp+32),r20                                 
 80182bc:	5b 95 00 1c 	sw (sp+28),r21                                 
 80182c0:	5b 96 00 18 	sw (sp+24),r22                                 
 80182c4:	5b 97 00 14 	sw (sp+20),r23                                 
 80182c8:	5b 98 00 10 	sw (sp+16),r24                                 
 80182cc:	5b 99 00 0c 	sw (sp+12),r25                                 
 80182d0:	5b 9b 00 08 	sw (sp+8),fp                                   
 80182d4:	5b 9d 00 04 	sw (sp+4),ra                                   
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 80182d8:	28 21 00 08 	lw r1,(r1+8)                                   
    int                                   name_len,                   
    msdos_name_type_t                     name_type,                  
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
 80182dc:	5b 85 00 74 	sw (sp+116),r5                                 
 80182e0:	5b 82 00 64 	sw (sp+100),r2                                 
 80182e4:	5b 84 00 78 	sw (sp+120),r4                                 
 80182e8:	5b 86 00 70 	sw (sp+112),r6                                 
 80182ec:	5b 87 00 6c 	sw (sp+108),r7                                 
 80182f0:	5b 88 00 54 	sw (sp+84),r8                                  
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 80182f4:	5b 81 00 58 	sw (sp+88),r1                                  
    int                                   name_len,                   
    msdos_name_type_t                     name_type,                  
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
 80182f8:	20 74 00 ff 	andi r20,r3,0xff                               
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
                                                                      
    assert(name_len > 0);                                             
 80182fc:	48 a0 00 09 	bg r5,r0,8018320 <msdos_find_name_in_fat_file+0x90><== ALWAYS TAKEN
 8018300:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8018304:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 8018308:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801830c:	38 21 07 0c 	ori r1,r1,0x70c                                <== NOT EXECUTED
 8018310:	34 02 03 c9 	mvi r2,969                                     <== NOT EXECUTED
 8018314:	38 63 07 e0 	ori r3,r3,0x7e0                                <== NOT EXECUTED
 8018318:	38 84 07 8c 	ori r4,r4,0x78c                                <== NOT EXECUTED
 801831c:	fb ff ea be 	calli 8012e14 <__assert_func>                  <== NOT EXECUTED
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
 8018320:	2b 81 00 6c 	lw r1,(sp+108)                                 
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 8018324:	34 09 ff ff 	mvi r9,-1                                      
                                                                      
    fat_dir_pos_init(dir_pos);                                        
                                                                      
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
 8018328:	5b 89 00 8c 	sw (sp+140),r9                                 
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
 801832c:	58 20 00 00 	sw (r1+0),r0                                   
  dir_pos->sname.ofs = 0;                                             
 8018330:	58 20 00 04 	sw (r1+4),r0                                   
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 8018334:	58 29 00 08 	sw (r1+8),r9                                   
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 8018338:	58 29 00 0c 	sw (r1+12),r9                                  
 801833c:	5b 89 00 88 	sw (sp+136),r9                                 
     * is short still check for possible long entries with the short name.
     *                                                                
     * In PR1491 we need to have a LFN for a short file name entry. To
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
 8018340:	46 80 00 05 	be r20,r0,8018354 <msdos_find_name_in_fat_file+0xc4>
 8018344:	2b 82 00 70 	lw r2,(sp+112)                                 
      lfn_entries = 0;                                                
 8018348:	5b 80 00 68 	sw (sp+104),r0                                 
     * is short still check for possible long entries with the short name.
     *                                                                
     * In PR1491 we need to have a LFN for a short file name entry. To
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
 801834c:	34 09 00 01 	mvi r9,1                                       
 8018350:	44 49 00 06 	be r2,r9,8018368 <msdos_find_name_in_fat_file+0xd8>
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
 8018354:	2b 84 00 74 	lw r4,(sp+116)                                 
 8018358:	34 02 00 0d 	mvi r2,13                                      
 801835c:	34 81 00 0c 	addi r1,r4,12                                  
 8018360:	fb ff a3 db 	calli 80012cc <__divsi3>                       
 8018364:	5b 81 00 68 	sw (sp+104),r1                                 
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018368:	2b 86 00 64 	lw r6,(sp+100)                                 
 801836c:	34 09 00 01 	mvi r9,1                                       
 8018370:	28 ca 00 20 	lw r10,(r6+32)                                 
 8018374:	45 49 01 b2 	be r10,r9,8018a3c <msdos_find_name_in_fat_file+0x7ac>
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
 8018378:	2b 81 00 58 	lw r1,(sp+88)                                  
 801837c:	2c 36 00 06 	lhu r22,(r1+6)                                 
 8018380:	2b 82 00 58 	lw r2,(sp+88)                                  
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
 8018384:	2b 84 00 68 	lw r4,(sp+104)                                 
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
 8018388:	34 08 00 00 	mvi r8,0                                       
 801838c:	28 53 00 a0 	lw r19,(r2+160)                                
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
 8018390:	34 07 00 00 	mvi r7,0                                       
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
 8018394:	34 84 00 01 	addi r4,r4,1                                   
    /*                                                                
     * Scan the directory seeing if the file is present. While        
     * doing this see if a suitable location can be found to          
     * create the entry if the name is not found.                     
     */                                                               
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
 8018398:	5b 80 00 60 	sw (sp+96),r0                                  
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
 801839c:	34 12 00 00 	mvi r18,0                                      
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
 80183a0:	34 1b 00 00 	mvi fp,0                                       
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
 80183a4:	34 18 00 00 	mvi r24,0                                      
    uint32_t         dir_offset = 0;                                  
    uint32_t         dir_entry = 0;                                   
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
 80183a8:	34 0f 00 00 	mvi r15,0                                      
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_offset = 0;                                  
    uint32_t         dir_entry = 0;                                   
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
 80183ac:	34 0b 00 00 	mvi r11,0                                      
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_offset = 0;                                  
 80183b0:	34 19 00 00 	mvi r25,0                                      
                  printf ("MSFS:[3.2] esf:%i esc%i\n", empty_space_found, empty_space_count);
#endif                                                                
                }                                                     
                break;                                                
            }                                                         
            else if (entry_empty)                                     
 80183b4:	34 17 00 e5 	mvi r23,229                                    
                                                                      
                /*                                                    
                 * Check the attribute to see if the entry is for a long
                 * file name.                                         
                 */                                                   
                if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) == 
 80183b8:	34 06 00 0f 	mvi r6,15                                      
                        memcpy(name_dir_entry, entry,                 
                               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);    
                        return RC_OK;                                 
                    }                                                 
                                                                      
                    lfn_start.cln = FAT_FILE_SHORT_NAME;              
 80183bc:	34 15 ff ff 	mvi r21,-1                                     
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
 80183c0:	5b 84 00 5c 	sw (sp+92),r4                                  
 80183c4:	b8 e0 88 00 	mv r17,r7                                      
 80183c8:	b9 00 60 00 	mv r12,r8                                      
    /*                                                                
     * Scan the directory seeing if the file is present. While        
     * doing this see if a suitable location can be found to          
     * create the entry if the name is not found.                     
     */                                                               
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
 80183cc:	2b 81 00 58 	lw r1,(sp+88)                                  
 80183d0:	2b 82 00 64 	lw r2,(sp+100)                                 
 80183d4:	2b 83 00 60 	lw r3,(sp+96)                                  
 80183d8:	ba c0 20 00 	mv r4,r22                                      
 80183dc:	ba 60 28 00 	mv r5,r19                                      
 80183e0:	5b 86 00 4c 	sw (sp+76),r6                                  
 80183e4:	fb ff df 1b 	calli 8010050 <fat_file_read>                  
 80183e8:	2b 86 00 4c 	lw r6,(sp+76)                                  
 80183ec:	44 20 02 81 	be r1,r0,8018df0 <msdos_find_name_in_fat_file+0xb60>
        bool remainder_empty = false;                                 
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[2] dir_offset:%li\n", dir_offset);             
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
 80183f0:	34 0e 00 1f 	mvi r14,31                                     
 80183f4:	48 2e 00 19 	bg r1,r14,8018458 <msdos_find_name_in_fat_file+0x1c8><== ALWAYS TAKEN
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.3] extended: %d <-> %d\n", new_length, empty_space_offset * bts2rd);
#endif                                                                
            if (new_length != (empty_space_offset * bts2rd))          
              rtems_set_errno_and_return_minus_one(EIO);              
 80183f8:	f8 00 10 ff 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 80183fc:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8018400:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8018404:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
        empty_space_entry = 0;                                        
        read_cluster = true;                                          
    }                                                                 
                                                                      
    return 0;                                                         
}                                                                     
 8018408:	b9 80 08 00 	mv r1,r12                                      
 801840c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8018410:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8018414:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8018418:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801841c:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8018420:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8018424:	2b 90 00 30 	lw r16,(sp+48)                                 
 8018428:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801842c:	2b 92 00 28 	lw r18,(sp+40)                                 
 8018430:	2b 93 00 24 	lw r19,(sp+36)                                 
 8018434:	2b 94 00 20 	lw r20,(sp+32)                                 
 8018438:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801843c:	2b 96 00 18 	lw r22,(sp+24)                                 
 8018440:	2b 97 00 14 	lw r23,(sp+20)                                 
 8018444:	2b 98 00 10 	lw r24,(sp+16)                                 
 8018448:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801844c:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8018450:	37 9c 00 90 	addi sp,sp,144                                 
 8018454:	c3 a0 00 00 	ret                                            
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
 8018458:	5c 36 02 a6 	bne r1,r22,8018ef0 <msdos_find_name_in_fat_file+0xc60><== NEVER TAKEN
 801845c:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018460:	2b 87 00 70 	lw r7,(sp+112)                                 
 8018464:	34 10 00 00 	mvi r16,0                                      
 8018468:	28 33 00 a0 	lw r19,(r1+160)                                
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char* entry = (char*) fs_info->cl_buf + dir_entry;        
 801846c:	b6 70 70 00 	add r14,r19,r16                                
                                                                      
            /*                                                        
             * See if the entry is empty or the remainder of the directory is
             * empty ? Localise to make the code read better.         
             */                                                       
            bool entry_empty = (*MSDOS_DIR_ENTRY_TYPE(entry) ==       
 8018470:	41 cd 00 00 	lbu r13,(r14+0)                                
             * to here and write the long file name if this is the start of
             * a series of empty entries. If empty_space_count is 0 then
             * we are currently not inside an empty series of entries. It
             * is a count of empty entries.                           
             */                                                       
            if (empty_space_count == 0)                               
 8018474:	5e 40 00 03 	bne r18,r0,8018480 <msdos_find_name_in_fat_file+0x1f0>
 8018478:	ba 00 d8 00 	mv fp,r16                                      
 801847c:	bb 20 88 00 	mv r17,r25                                     
            {                                                         
                empty_space_entry = dir_entry;                        
                empty_space_offset = dir_offset;                      
            }                                                         
                                                                      
            if (remainder_empty)                                      
 8018480:	45 a0 00 e1 	be r13,r0,8018804 <msdos_find_name_in_fat_file+0x574>
                  printf ("MSFS:[3.2] esf:%i esc%i\n", empty_space_found, empty_space_count);
#endif                                                                
                }                                                     
                break;                                                
            }                                                         
            else if (entry_empty)                                     
 8018484:	45 b7 00 8e 	be r13,r23,80186bc <msdos_find_name_in_fat_file+0x42c>
                 * A valid entry so handle it.                        
                 *                                                    
                 * If empty space has not been found we need to start the
                 * count again.                                       
                 */                                                   
                if (create_node && !empty_space_found)                
 8018488:	46 80 00 04 	be r20,r0,8018498 <msdos_find_name_in_fat_file+0x208>
 801848c:	5d 80 00 03 	bne r12,r0,8018498 <msdos_find_name_in_fat_file+0x208><== NEVER TAKEN
                {                                                     
                    empty_space_entry = 0;                            
                    empty_space_count = 0;                            
 8018490:	34 12 00 00 	mvi r18,0                                      
                 * If empty space has not been found we need to start the
                 * count again.                                       
                 */                                                   
                if (create_node && !empty_space_found)                
                {                                                     
                    empty_space_entry = 0;                            
 8018494:	34 1b 00 00 	mvi fp,0                                       
                                                                      
                /*                                                    
                 * Check the attribute to see if the entry is for a long
                 * file name.                                         
                 */                                                   
                if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) == 
 8018498:	41 c4 00 0b 	lbu r4,(r14+11)                                
 801849c:	20 84 00 3f 	andi r4,r4,0x3f                                
 80184a0:	44 86 00 97 	be r4,r6,80186fc <msdos_find_name_in_fat_file+0x46c>
                     * If a LFN has been found and it matched check the
                     * entries have all been found and the checksum is
                     * correct. If this is the case return the short file
                     * name entry.                                    
                     */                                               
                    if (lfn_matched)                                  
 80184a4:	45 60 00 91 	be r11,r0,80186e8 <msdos_find_name_in_fat_file+0x458>
 80184a8:	b9 c0 28 00 	mv r5,r14                                      
 80184ac:	34 09 00 0b 	mvi r9,11                                      
 80184b0:	34 04 00 00 	mvi r4,0                                       
 80184b4:	34 03 00 00 	mvi r3,0                                       
 80184b8:	e0 00 00 0b 	bi 80184e4 <msdos_find_name_in_fat_file+0x254> 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
 80184bc:	20 83 00 01 	andi r3,r4,0x1                                 
 80184c0:	b4 63 18 00 	add r3,r3,r3                                   
 80184c4:	b4 63 18 00 	add r3,r3,r3                                   
 80184c8:	b4 63 18 00 	add r3,r3,r3                                   
 80184cc:	b4 63 18 00 	add r3,r3,r3                                   
                    {                                                 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
 80184d0:	34 a5 00 01 	addi r5,r5,1                                   
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
 80184d4:	b4 63 18 00 	add r3,r3,r3                                   
                    {                                                 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
 80184d8:	40 ad 00 00 	lbu r13,(r5+0)                                 
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
 80184dc:	b4 63 18 00 	add r3,r3,r3                                   
 80184e0:	b4 63 18 00 	add r3,r3,r3                                   
 80184e4:	00 84 00 01 	srui r4,r4,1                                   
 80184e8:	b5 a3 68 00 	add r13,r13,r3                                 
 80184ec:	b4 8d 68 00 	add r13,r4,r13                                 
 80184f0:	35 29 ff ff 	addi r9,r9,-1                                  
 80184f4:	21 a4 00 ff 	andi r4,r13,0xff                               
                    {                                                 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
 80184f8:	5d 20 ff f1 	bne r9,r0,80184bc <msdos_find_name_in_fat_file+0x22c>
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
                                                                      
                        if (lfn_entry || (lfn_checksum != cs))        
 80184fc:	fc 8f 20 00 	cmpne r4,r4,r15                                
 8018500:	7f 05 00 00 	cmpnei r5,r24,0                                
 8018504:	b8 85 20 00 	or r4,r4,r5                                    
 8018508:	5c 89 00 78 	bne r4,r9,80186e8 <msdos_find_name_in_fat_file+0x458><== NEVER TAKEN
#endif                                                                
                        /*                                            
                         * We get the entry we looked for - fill the position
                         * structure and the 32 bytes of the short entry
                         */                                           
                        int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
 801850c:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018510:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018514:	2b 84 00 60 	lw r4,(sp+96)                                  
 8018518:	2b 85 00 6c 	lw r5,(sp+108)                                 
 801851c:	34 03 00 01 	mvi r3,1                                       
 8018520:	fb ff df e7 	calli 80104bc <fat_file_ioctl>                 
 8018524:	b8 20 60 00 	mv r12,r1                                      
                                                dir_offset * bts2rd,  
                                                &dir_pos->sname.cln); 
                        if (rc != RC_OK)                              
 8018528:	5c 20 ff b8 	bne r1,r0,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
                            return rc;                                
                                                                      
                        dir_pos->sname.ofs = dir_entry;               
 801852c:	2b 81 00 6c 	lw r1,(sp+108)                                 
                                                                      
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
 8018530:	2b 86 00 88 	lw r6,(sp+136)                                 
 8018534:	34 09 ff ff 	mvi r9,-1                                      
                                                dir_offset * bts2rd,  
                                                &dir_pos->sname.cln); 
                        if (rc != RC_OK)                              
                            return rc;                                
                                                                      
                        dir_pos->sname.ofs = dir_entry;               
 8018538:	58 30 00 04 	sw (r1+4),r16                                  
                                                                      
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
 801853c:	44 c9 00 0c 	be r6,r9,801856c <msdos_find_name_in_fat_file+0x2dc>
                        {                                             
                          rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
 8018540:	b8 c0 10 00 	mv r2,r6                                       
 8018544:	ba c0 08 00 	mv r1,r22                                      
 8018548:	fb ff a3 55 	calli 800129c <__mulsi3>                       
 801854c:	b8 20 20 00 	mv r4,r1                                       
 8018550:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018554:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018558:	34 03 00 01 	mvi r3,1                                       
 801855c:	37 85 00 88 	addi r5,sp,136                                 
 8018560:	fb ff df d7 	calli 80104bc <fat_file_ioctl>                 
                                              lfn_start.cln * bts2rd, 
                                              &lfn_start.cln);        
                          if (rc != RC_OK)                            
 8018564:	5c 20 01 3e 	bne r1,r0,8018a5c <msdos_find_name_in_fat_file+0x7cc><== NEVER TAKEN
 8018568:	2b 86 00 88 	lw r6,(sp+136)                                 
                            return rc;                                
                        }                                             
                                                                      
                        dir_pos->lname.cln = lfn_start.cln;           
 801856c:	2b 82 00 6c 	lw r2,(sp+108)                                 
                        dir_pos->lname.ofs = lfn_start.ofs;           
 8018570:	2b 81 00 8c 	lw r1,(sp+140)                                 
                                              &lfn_start.cln);        
                          if (rc != RC_OK)                            
                            return rc;                                
                        }                                             
                                                                      
                        dir_pos->lname.cln = lfn_start.cln;           
 8018574:	58 46 00 08 	sw (r2+8),r6                                   
                        dir_pos->lname.ofs = lfn_start.ofs;           
 8018578:	58 41 00 0c 	sw (r2+12),r1                                  
                                                                      
                        memcpy(name_dir_entry, entry,                 
 801857c:	41 c1 00 06 	lbu r1,(r14+6)                                 
 8018580:	41 c4 00 01 	lbu r4,(r14+1)                                 
 8018584:	41 c6 00 02 	lbu r6,(r14+2)                                 
 8018588:	41 c8 00 03 	lbu r8,(r14+3)                                 
 801858c:	41 ca 00 04 	lbu r10,(r14+4)                                
 8018590:	41 cd 00 05 	lbu r13,(r14+5)                                
 8018594:	33 81 00 58 	sb (sp+88),r1                                  
 8018598:	41 c2 00 07 	lbu r2,(r14+7)                                 
 801859c:	33 82 00 5c 	sb (sp+92),r2                                  
 80185a0:	41 c1 00 08 	lbu r1,(r14+8)                                 
 80185a4:	33 81 00 64 	sb (sp+100),r1                                 
 80185a8:	41 c2 00 09 	lbu r2,(r14+9)                                 
 80185ac:	33 82 00 60 	sb (sp+96),r2                                  
 80185b0:	41 c1 00 0a 	lbu r1,(r14+10)                                
 80185b4:	33 81 00 68 	sb (sp+104),r1                                 
 80185b8:	41 c2 00 0b 	lbu r2,(r14+11)                                
 80185bc:	33 82 00 6c 	sb (sp+108),r2                                 
 80185c0:	41 c1 00 0c 	lbu r1,(r14+12)                                
 80185c4:	33 81 00 70 	sb (sp+112),r1                                 
 80185c8:	41 dd 00 0d 	lbu ra,(r14+13)                                
 80185cc:	41 db 00 0e 	lbu fp,(r14+14)                                
 80185d0:	41 d9 00 0f 	lbu r25,(r14+15)                               
 80185d4:	41 d8 00 10 	lbu r24,(r14+16)                               
 80185d8:	41 d7 00 11 	lbu r23,(r14+17)                               
 80185dc:	41 d6 00 12 	lbu r22,(r14+18)                               
 80185e0:	41 d5 00 13 	lbu r21,(r14+19)                               
 80185e4:	41 d4 00 14 	lbu r20,(r14+20)                               
 80185e8:	41 d3 00 15 	lbu r19,(r14+21)                               
 80185ec:	41 d2 00 16 	lbu r18,(r14+22)                               
 80185f0:	41 d1 00 17 	lbu r17,(r14+23)                               
 80185f4:	41 d0 00 18 	lbu r16,(r14+24)                               
 80185f8:	41 cf 00 19 	lbu r15,(r14+25)                               
 80185fc:	41 cb 00 1a 	lbu r11,(r14+26)                               
 8018600:	41 c9 00 1b 	lbu r9,(r14+27)                                
 8018604:	41 c7 00 1c 	lbu r7,(r14+28)                                
 8018608:	41 c5 00 1d 	lbu r5,(r14+29)                                
 801860c:	41 c3 00 1e 	lbu r3,(r14+30)                                
 8018610:	41 c2 00 1f 	lbu r2,(r14+31)                                
 8018614:	41 c1 00 00 	lbu r1,(r14+0)                                 
 8018618:	2b 8e 00 54 	lw r14,(sp+84)                                 
 801861c:	31 c1 00 00 	sb (r14+0),r1                                  
 8018620:	31 c4 00 01 	sb (r14+1),r4                                  
 8018624:	31 c6 00 02 	sb (r14+2),r6                                  
 8018628:	31 c8 00 03 	sb (r14+3),r8                                  
 801862c:	31 ca 00 04 	sb (r14+4),r10                                 
 8018630:	31 cd 00 05 	sb (r14+5),r13                                 
 8018634:	43 81 00 58 	lbu r1,(sp+88)                                 
 8018638:	31 c1 00 06 	sb (r14+6),r1                                  
 801863c:	43 84 00 5c 	lbu r4,(sp+92)                                 
 8018640:	31 c4 00 07 	sb (r14+7),r4                                  
 8018644:	43 86 00 64 	lbu r6,(sp+100)                                
 8018648:	31 c6 00 08 	sb (r14+8),r6                                  
 801864c:	43 81 00 60 	lbu r1,(sp+96)                                 
 8018650:	31 c1 00 09 	sb (r14+9),r1                                  
 8018654:	43 84 00 68 	lbu r4,(sp+104)                                
 8018658:	31 c4 00 0a 	sb (r14+10),r4                                 
 801865c:	43 86 00 6c 	lbu r6,(sp+108)                                
 8018660:	31 c6 00 0b 	sb (r14+11),r6                                 
 8018664:	43 81 00 70 	lbu r1,(sp+112)                                
 8018668:	31 dd 00 0d 	sb (r14+13),ra                                 
 801866c:	31 db 00 0e 	sb (r14+14),fp                                 
 8018670:	31 c1 00 0c 	sb (r14+12),r1                                 
 8018674:	31 d9 00 0f 	sb (r14+15),r25                                
 8018678:	31 d8 00 10 	sb (r14+16),r24                                
 801867c:	31 d7 00 11 	sb (r14+17),r23                                
 8018680:	31 d6 00 12 	sb (r14+18),r22                                
 8018684:	31 d5 00 13 	sb (r14+19),r21                                
 8018688:	31 d4 00 14 	sb (r14+20),r20                                
 801868c:	31 d3 00 15 	sb (r14+21),r19                                
 8018690:	31 d2 00 16 	sb (r14+22),r18                                
 8018694:	31 d1 00 17 	sb (r14+23),r17                                
 8018698:	31 d0 00 18 	sb (r14+24),r16                                
 801869c:	31 cf 00 19 	sb (r14+25),r15                                
 80186a0:	31 cb 00 1a 	sb (r14+26),r11                                
 80186a4:	31 c9 00 1b 	sb (r14+27),r9                                 
 80186a8:	31 c7 00 1c 	sb (r14+28),r7                                 
 80186ac:	31 c5 00 1d 	sb (r14+29),r5                                 
 80186b0:	31 c3 00 1e 	sb (r14+30),r3                                 
 80186b4:	31 c2 00 1f 	sb (r14+31),r2                                 
                               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);    
                        return RC_OK;                                 
 80186b8:	e3 ff ff 54 	bi 8018408 <msdos_find_name_in_fat_file+0x178> 
                }                                                     
                break;                                                
            }                                                         
            else if (entry_empty)                                     
            {                                                         
                if (create_node)                                      
 80186bc:	46 80 00 04 	be r20,r0,80186cc <msdos_find_name_in_fat_file+0x43c>
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
 80186c0:	2b 82 00 5c 	lw r2,(sp+92)                                  
                if (create_node)                                      
                {                                                     
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
 80186c4:	36 52 00 01 	addi r18,r18,1                                 
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
 80186c8:	44 52 00 4b 	be r2,r18,80187f4 <msdos_find_name_in_fat_file+0x564><== NEVER TAKEN
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
 80186cc:	36 10 00 20 	addi r16,r16,32                                
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
 80186d0:	56 d0 ff 67 	bgu r22,r16,801846c <msdos_find_name_in_fat_file+0x1dc>
 80186d4:	2b 82 00 60 	lw r2,(sp+96)                                  
        }                                                             
                                                                      
        if (remainder_empty)                                          
            break;                                                    
                                                                      
        dir_offset++;                                                 
 80186d8:	37 39 00 01 	addi r25,r25,1                                 
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
 80186dc:	b4 56 10 00 	add r2,r2,r22                                  
 80186e0:	5b 82 00 60 	sw (sp+96),r2                                  
 80186e4:	e3 ff ff 3a 	bi 80183cc <msdos_find_name_in_fat_file+0x13c> 
                     * short and they match then we have the entry. We will not
                     * match a long file name against a short file name because
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
 80186e8:	34 04 00 01 	mvi r4,1                                       
 80186ec:	44 e4 00 2a 	be r7,r4,8018794 <msdos_find_name_in_fat_file+0x504>
                        memcpy(name_dir_entry, entry,                 
                               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);    
                        return RC_OK;                                 
                    }                                                 
                                                                      
                    lfn_start.cln = FAT_FILE_SHORT_NAME;              
 80186f0:	5b 95 00 88 	sw (sp+136),r21                                
                    lfn_matched = false;                              
 80186f4:	34 0b 00 00 	mvi r11,0                                      
 80186f8:	e3 ff ff f5 	bi 80186cc <msdos_find_name_in_fat_file+0x43c> 
#endif                                                                
                    /*                                                
                     * If we are not already processing a LFN see if this is
                     * the first entry of a LFN ?                     
                     */                                               
                    if (lfn_start.cln == FAT_FILE_SHORT_NAME)         
 80186fc:	2b 83 00 88 	lw r3,(sp+136)                                 
 8018700:	44 75 00 31 	be r3,r21,80187c4 <msdos_find_name_in_fat_file+0x534>
                     * If the entry number or the check sum do not match
                     * forget this series of long directory entries. These
                     * could be orphaned entries depending on the history
                     * of the disk.                                   
                     */                                               
                    if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) & 
 8018704:	21 ad 00 3f 	andi r13,r13,0x3f                              
 8018708:	45 b8 00 03 	be r13,r24,8018714 <msdos_find_name_in_fat_file+0x484><== ALWAYS TAKEN
                        (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
                    {                                                 
#if MSDOS_FIND_PRINT                                                  
                        printf ("MSFS:[4.4] no match\n");             
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
 801870c:	5b 95 00 88 	sw (sp+136),r21                                <== NOT EXECUTED
                        continue;                                     
 8018710:	e3 ff ff ef 	bi 80186cc <msdos_find_name_in_fat_file+0x43c> <== NOT EXECUTED
                     * forget this series of long directory entries. These
                     * could be orphaned entries depending on the history
                     * of the disk.                                   
                     */                                               
                    if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) & 
                                       MSDOS_LAST_LONG_ENTRY_MASK)) ||
 8018714:	41 c4 00 0d 	lbu r4,(r14+13)                                
 8018718:	5c 8f ff fd 	bne r4,r15,801870c <msdos_find_name_in_fat_file+0x47c><== NEVER TAKEN
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
 801871c:	37 18 ff ff 	addi r24,r24,-1                                
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
 8018720:	b7 18 08 00 	add r1,r24,r24                                 
 8018724:	b4 38 08 00 	add r1,r1,r24                                  
 8018728:	b4 21 08 00 	add r1,r1,r1                                   
 801872c:	b4 21 08 00 	add r1,r1,r1                                   
 8018730:	b4 38 18 00 	add r3,r1,r24                                  
                    p = entry + 1;                                    
 8018734:	35 ce 00 01 	addi r14,r14,1                                 
 8018738:	b8 60 48 00 	mv r9,r3                                       
 801873c:	34 0a 00 01 	mvi r10,1                                      
 8018740:	2b 88 00 78 	lw r8,(sp+120)                                 
 8018744:	2b 84 00 74 	lw r4,(sp+116)                                 
 8018748:	e0 00 00 08 	bi 8018768 <msdos_find_name_in_fat_file+0x4d8> 
                        {                                             
                            lfn_start.cln = FAT_FILE_SHORT_NAME;      
                            break;                                    
                        }                                             
                                                                      
                        switch (i)                                    
 801874c:	34 01 00 0a 	mvi r1,10                                      
 8018750:	44 a1 00 2b 	be r5,r1,80187fc <msdos_find_name_in_fat_file+0x56c>
                    p = entry + 1;                                    
                                                                      
#if MSDOS_FIND_PRINT                                                  
                    printf ("MSFS:[5] lfne:%i\n", lfn_entry);         
#endif                                                                
                    for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)     
 8018754:	34 02 00 0c 	mvi r2,12                                      
 8018758:	49 42 00 b4 	bg r10,r2,8018a28 <msdos_find_name_in_fat_file+0x798>
                                break;                                
                            case 10:                                  
                                p += 4;                               
                                break;                                
                            default:                                  
                                p += 2;                               
 801875c:	35 ce 00 02 	addi r14,r14,2                                 
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
 8018760:	35 4a 00 01 	addi r10,r10,1                                 
 8018764:	35 29 00 01 	addi r9,r9,1                                   
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
 8018768:	41 c2 00 00 	lbu r2,(r14+0)                                 
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 801876c:	35 45 ff ff 	addi r5,r10,-1                                 
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
 8018770:	44 40 00 a8 	be r2,r0,8018a10 <msdos_find_name_in_fat_file+0x780>
                                ((o + i) != name_len))                
                                lfn_start.cln = FAT_FILE_SHORT_NAME;  
                            break;                                    
                        }                                             
                                                                      
                        if (((o + i) >= name_len) || (*p != name[o + i]))
 8018774:	4d 24 00 ac 	bge r9,r4,8018a24 <msdos_find_name_in_fat_file+0x794>
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018778:	b5 09 08 00 	add r1,r8,r9                                   
                                ((o + i) != name_len))                
                                lfn_start.cln = FAT_FILE_SHORT_NAME;  
                            break;                                    
                        }                                             
                                                                      
                        if (((o + i) >= name_len) || (*p != name[o + i]))
 801877c:	40 21 00 00 	lbu r1,(r1+0)                                  
 8018780:	5c 22 00 a9 	bne r1,r2,8018a24 <msdos_find_name_in_fat_file+0x794>
                        {                                             
                            lfn_start.cln = FAT_FILE_SHORT_NAME;      
                            break;                                    
                        }                                             
                                                                      
                        switch (i)                                    
 8018784:	34 02 00 04 	mvi r2,4                                       
 8018788:	5c a2 ff f1 	bne r5,r2,801874c <msdos_find_name_in_fat_file+0x4bc>
                        {                                             
                            case 4:                                   
                                p += 5;                               
 801878c:	35 ce 00 05 	addi r14,r14,5                                 
                                break;                                
 8018790:	e3 ff ff f4 	bi 8018760 <msdos_find_name_in_fat_file+0x4d0> 
                     * match a long file name against a short file name because
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
                        ((name_type == MSDOS_NAME_SHORT) &&           
 8018794:	2b 83 00 88 	lw r3,(sp+136)                                 
 8018798:	5c 75 ff d6 	bne r3,r21,80186f0 <msdos_find_name_in_fat_file+0x460><== NEVER TAKEN
                         (lfn_start.cln == FAT_FILE_SHORT_NAME) &&    
                         (memcmp(MSDOS_DIR_NAME(entry),               
 801879c:	2b 82 00 54 	lw r2,(sp+84)                                  
 80187a0:	b9 c0 08 00 	mv r1,r14                                      
 80187a4:	34 03 00 0b 	mvi r3,11                                      
 80187a8:	5b 86 00 4c 	sw (sp+76),r6                                  
 80187ac:	5b 87 00 50 	sw (sp+80),r7                                  
 80187b0:	f8 00 13 3e 	calli 801d4a8 <memcmp>                         
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
                        ((name_type == MSDOS_NAME_SHORT) &&           
                         (lfn_start.cln == FAT_FILE_SHORT_NAME) &&    
 80187b4:	2b 86 00 4c 	lw r6,(sp+76)                                  
 80187b8:	2b 87 00 50 	lw r7,(sp+80)                                  
 80187bc:	5c 20 ff cd 	bne r1,r0,80186f0 <msdos_find_name_in_fat_file+0x460>
 80187c0:	e3 ff ff 53 	bi 801850c <msdos_find_name_in_fat_file+0x27c> 
                                                                      
                        /*                                            
                         * The first entry must have the last long entry
                         * flag set.                                  
                         */                                           
                        if ((*MSDOS_DIR_ENTRY_TYPE(entry) &           
 80187c4:	21 a1 00 40 	andi r1,r13,0x40                               
                     * If we are not already processing a LFN see if this is
                     * the first entry of a LFN ?                     
                     */                                               
                    if (lfn_start.cln == FAT_FILE_SHORT_NAME)         
                    {                                                 
                        lfn_matched = false;                          
 80187c8:	34 0b 00 00 	mvi r11,0                                      
                                                                      
                        /*                                            
                         * The first entry must have the last long entry
                         * flag set.                                  
                         */                                           
                        if ((*MSDOS_DIR_ENTRY_TYPE(entry) &           
 80187cc:	44 20 ff c0 	be r1,r0,80186cc <msdos_find_name_in_fat_file+0x43c>
                         * entry match the number we expect for this  
                         * file name. Note we do not know the number of
                         * characters in the entry so this is check further
                         * on when the characters are checked.        
                         */                                           
                        if (lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
 80187d0:	2b 84 00 68 	lw r4,(sp+104)                                 
 80187d4:	21 ad 00 3f 	andi r13,r13,0x3f                              
 80187d8:	5d a4 ff bd 	bne r13,r4,80186cc <msdos_find_name_in_fat_file+0x43c>
                            continue;                                 
                                                                      
                        /*                                            
                         * Get the checksum of the short entry.       
                         */                                           
                        lfn_start.cln = dir_offset;                   
 80187dc:	5b 99 00 88 	sw (sp+136),r25                                
                        lfn_start.ofs = dir_entry;                    
 80187e0:	5b 90 00 8c 	sw (sp+140),r16                                
                        lfn_entry = lfn_entries;                      
                        lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
 80187e4:	41 cf 00 0d 	lbu r15,(r14+13)                               
 80187e8:	41 cd 00 00 	lbu r13,(r14+0)                                
 80187ec:	b8 80 c0 00 	mv r24,r4                                      
 80187f0:	e3 ff ff c5 	bi 8018704 <msdos_find_name_in_fat_file+0x474> 
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
                    empty_space_found = true;                         
 80187f4:	34 0c 00 01 	mvi r12,1                                      
 80187f8:	e3 ff ff b5 	bi 80186cc <msdos_find_name_in_fat_file+0x43c> 
                        {                                             
                            case 4:                                   
                                p += 5;                               
                                break;                                
                            case 10:                                  
                                p += 4;                               
 80187fc:	35 ce 00 04 	addi r14,r14,4                                 
 8018800:	e3 ff ff d8 	bi 8018760 <msdos_find_name_in_fat_file+0x4d0> 
 8018804:	b9 80 40 00 	mv r8,r12                                      
 8018808:	ba 20 38 00 	mv r7,r17                                      
                /*                                                    
                 * If just looking and there is no more entries in the
                 * directory - return name-not-found                  
                 */                                                   
                if (!create_node)                                     
                    return MSDOS_NAME_NOT_FOUND_ERR;                  
 801880c:	34 0c 7d 01 	mvi r12,32001                                  
#endif                                                                
                /*                                                    
                 * If just looking and there is no more entries in the
                 * directory - return name-not-found                  
                 */                                                   
                if (!create_node)                                     
 8018810:	46 8d fe fe 	be r20,r13,8018408 <msdos_find_name_in_fat_file+0x178>
                 * Lets go and write the directory entries. If we have not found
                 * any available space add the remaining number of entries to any that
                 * we may have already found that are just before this entry. If more
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
 8018814:	5d 00 00 0d 	bne r8,r0,8018848 <msdos_find_name_in_fat_file+0x5b8>
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;   
 8018818:	02 ca 00 01 	srui r10,r22,1                                 
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
 801881c:	02 09 00 01 	srui r9,r16,1                                  
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;   
 8018820:	01 4a 00 01 	srui r10,r10,1                                 
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
 8018824:	01 29 00 01 	srui r9,r9,1                                   
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;   
 8018828:	01 4a 00 01 	srui r10,r10,1                                 
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
 801882c:	01 29 00 01 	srui r9,r9,1                                   
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;   
 8018830:	01 4a 00 01 	srui r10,r10,1                                 
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
 8018834:	01 29 00 01 	srui r9,r9,1                                   
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;   
 8018838:	01 4a 00 01 	srui r10,r10,1                                 
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
 801883c:	01 29 00 01 	srui r9,r9,1                                   
 8018840:	b6 4a 50 00 	add r10,r18,r10                                
                 * we may have already found that are just before this entry. If more
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
 8018844:	c9 49 90 00 	sub r18,r10,r9                                 
     * data to place in each long file name entry. First set the short
     * file name to the slot of the SFN entry. This will mean no clashes
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
 8018848:	2b 84 00 70 	lw r4,(sp+112)                                 
 801884c:	34 03 00 02 	mvi r3,2                                       
 8018850:	44 83 01 72 	be r4,r3,8018e18 <msdos_find_name_in_fat_file+0xb88>
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
        msdos_short_name_hex(MSDOS_DIR_NAME(name_dir_entry), slot);   
    }                                                                 
                                                                      
    if (lfn_entries)                                                  
 8018854:	2b 84 00 68 	lw r4,(sp+104)                                 
     * If a long file name calculate the checksum of the short file name
     * data to place in each long file name entry. First set the short
     * file name to the slot of the SFN entry. This will mean no clashes
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
 8018858:	5b 80 00 60 	sw (sp+96),r0                                  
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
        msdos_short_name_hex(MSDOS_DIR_NAME(name_dir_entry), slot);   
    }                                                                 
                                                                      
    if (lfn_entries)                                                  
 801885c:	44 80 00 19 	be r4,r0,80188c0 <msdos_find_name_in_fat_file+0x630>
 8018860:	34 06 00 00 	mvi r6,0                                       
 8018864:	34 09 00 00 	mvi r9,0                                       
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
 8018868:	34 0a 00 0b 	mvi r10,11                                     
 801886c:	b8 c0 08 00 	mv r1,r6                                       
 8018870:	34 02 00 00 	mvi r2,0                                       
 8018874:	2b 84 00 54 	lw r4,(sp+84)                                  
 8018878:	e0 00 00 09 	bi 801889c <msdos_find_name_in_fat_file+0x60c> 
            lfn_checksum =                                            
 801887c:	20 41 00 01 	andi r1,r2,0x1                                 
 8018880:	b4 21 08 00 	add r1,r1,r1                                   
 8018884:	b4 21 08 00 	add r1,r1,r1                                   
 8018888:	b4 21 08 00 	add r1,r1,r1                                   
 801888c:	b4 21 08 00 	add r1,r1,r1                                   
 8018890:	b4 21 08 00 	add r1,r1,r1                                   
 8018894:	b4 21 08 00 	add r1,r1,r1                                   
 8018898:	b4 21 08 00 	add r1,r1,r1                                   
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 801889c:	b4 89 18 00 	add r3,r4,r9                                   
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
            lfn_checksum =                                            
 80188a0:	40 63 00 00 	lbu r3,(r3+0)                                  
 80188a4:	00 42 00 01 	srui r2,r2,1                                   
                                                                      
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
 80188a8:	35 29 00 01 	addi r9,r9,1                                   
            lfn_checksum =                                            
 80188ac:	b4 23 08 00 	add r1,r1,r3                                   
 80188b0:	b4 41 10 00 	add r2,r2,r1                                   
 80188b4:	20 42 00 ff 	andi r2,r2,0xff                                
                                                                      
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
 80188b8:	5d 2a ff f1 	bne r9,r10,801887c <msdos_find_name_in_fat_file+0x5ec>
 80188bc:	5b 82 00 60 	sw (sp+96),r2                                  
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
 80188c0:	fc f9 68 00 	cmpne r13,r7,r25                               
     * empty_space_count is a count of empty entries in the currently 
     * read cluster so if 0 there is no space. Note, dir_offset will  
     * be at the next cluster so we can just make empty_space_offset  
     * that value.                                                    
     */                                                               
    if (empty_space_count == 0)                                       
 80188c4:	5e 40 00 04 	bne r18,r0,80188d4 <msdos_find_name_in_fat_file+0x644>
 80188c8:	bb 20 38 00 	mv r7,r25                                      
    {                                                                 
        read_cluster = true;                                          
 80188cc:	34 0d 00 01 	mvi r13,1                                      
        empty_space_offset = dir_offset;                              
        empty_space_entry = 0;                                        
 80188d0:	34 1b 00 00 	mvi fp,0                                       
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
 80188d4:	2b 86 00 68 	lw r6,(sp+104)                                 
        read_cluster = true;                                          
                                                                      
    /*                                                                
     * Handle the entry writes.                                       
     */                                                               
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
 80188d8:	34 09 ff ff 	mvi r9,-1                                      
 80188dc:	5b 89 00 8c 	sw (sp+140),r9                                 
 80188e0:	5b 89 00 88 	sw (sp+136),r9                                 
        empty_space_offset++;                                         
        empty_space_entry = 0;                                        
        read_cluster = true;                                          
    }                                                                 
                                                                      
    return 0;                                                         
 80188e4:	34 0c 00 00 	mvi r12,0                                      
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
 80188e8:	48 06 fe c8 	bg r0,r6,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
 80188ec:	b8 e0 08 00 	mv r1,r7                                       
 80188f0:	ba c0 10 00 	mv r2,r22                                      
 80188f4:	5b 87 00 50 	sw (sp+80),r7                                  
 80188f8:	fb ff a2 69 	calli 800129c <__mulsi3>                       
 80188fc:	5b 81 00 5c 	sw (sp+92),r1                                  
                                                                      
    /*                                                                
     * Handle the entry writes.                                       
     */                                                               
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
    lfn_entry = 0;                                                    
 8018900:	34 14 00 00 	mvi r20,0                                      
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
    {                                                                 
        int length = 0;                                               
                                                                      
        if (read_cluster)                                             
 8018904:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018908:	5d a0 00 76 	bne r13,r0,8018ae0 <msdos_find_name_in_fat_file+0x850>
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
 801890c:	53 76 01 3d 	bgeu fp,r22,8018e00 <msdos_find_name_in_fat_file+0xb70><== NEVER TAKEN
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
 8018910:	2b 81 00 58 	lw r1,(sp+88)                                  
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
 8018914:	2b 82 00 68 	lw r2,(sp+104)                                 
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
            lfn_entry++;                                              
 8018918:	36 8b 00 01 	addi r11,r20,1                                 
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
 801891c:	28 30 00 a0 	lw r16,(r1+160)                                
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
 8018920:	34 55 00 01 	addi r21,r2,1                                  
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
 8018924:	b6 1b 80 00 	add r16,r16,fp                                 
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
 8018928:	46 ab 01 38 	be r21,r11,8018e08 <msdos_find_name_in_fat_file+0xb78>
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 801892c:	2b 8e 00 68 	lw r14,(sp+104)                                
 8018930:	a6 80 30 00 	not r6,r20                                     
 8018934:	2b 81 00 78 	lw r1,(sp+120)                                 
 8018938:	b4 ce 30 00 	add r6,r6,r14                                  
 801893c:	b4 c6 50 00 	add r10,r6,r6                                  
 8018940:	b5 46 50 00 	add r10,r10,r6                                 
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
 8018944:	21 d1 00 ff 	andi r17,r14,0xff                              
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018948:	b5 4a 50 00 	add r10,r10,r10                                
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
 801894c:	36 31 00 01 	addi r17,r17,1                                 
 8018950:	ca 2b 88 00 	sub r17,r17,r11                                
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018954:	b5 4a 50 00 	add r10,r10,r10                                
 8018958:	b9 60 a0 00 	mv r20,r11                                     
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
 801895c:	2b 8c 00 60 	lw r12,(sp+96)                                 
 8018960:	2b 8b 00 58 	lw r11,(sp+88)                                 
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018964:	b5 46 30 00 	add r6,r10,r6                                  
 8018968:	bb 60 78 00 	mv r15,fp                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
 801896c:	5b 9b 00 70 	sw (sp+112),fp                                 
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
 8018970:	22 31 00 ff 	andi r17,r17,0xff                              
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018974:	b4 26 90 00 	add r18,r1,r6                                  
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
 8018978:	34 19 00 20 	mvi r25,32                                     
             * This is a long file name and we need to write          
             * a long file name entry. See if this is the             
             * first entry written and if so remember the             
             * the location of the long file name.                    
             */                                                       
            if (lfn_start.cln == FAT_FILE_SHORT_NAME)                 
 801897c:	34 18 ff ff 	mvi r24,-1                                     
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 8018980:	34 17 00 01 	mvi r23,1                                      
                    p [0] = fill;                                     
                    p [1] = fill;                                     
                    fill = 0xff;                                      
                }                                                     
                                                                      
                switch (i)                                            
 8018984:	34 0d 00 04 	mvi r13,4                                      
 8018988:	34 0e 00 0a 	mvi r14,10                                     
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
 801898c:	34 13 00 0c 	mvi r19,12                                     
 8018990:	b8 e0 d8 00 	mv fp,r7                                       
             * This is a long file name and we need to write          
             * a long file name entry. See if this is the             
             * first entry written and if so remember the             
             * the location of the long file name.                    
             */                                                       
            if (lfn_start.cln == FAT_FILE_SHORT_NAME)                 
 8018994:	2b 83 00 88 	lw r3,(sp+136)                                 
 8018998:	44 78 01 13 	be r3,r24,8018de4 <msdos_find_name_in_fat_file+0xb54>
            }                                                         
                                                                      
            /*                                                        
             * Clear the entry before loading the data.               
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
 801899c:	34 02 00 00 	mvi r2,0                                       
 80189a0:	ba 00 08 00 	mv r1,r16                                      
 80189a4:	34 03 00 20 	mvi r3,32                                      
 80189a8:	f8 00 13 22 	calli 801d630 <memset>                         
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 80189ac:	ba 40 30 00 	mv r6,r18                                      
            /*                                                        
             * Clear the entry before loading the data.               
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
 80189b0:	32 0c 00 0d 	sb (r16+13),r12                                
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
 80189b4:	40 c1 00 00 	lbu r1,(r6+0)                                  
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 80189b8:	34 05 00 01 	mvi r5,1                                       
 80189bc:	36 04 00 01 	addi r4,r16,1                                  
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
 80189c0:	34 08 00 00 	mvi r8,0                                       
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 80189c4:	34 a2 ff ff 	addi r2,r5,-1                                  
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
 80189c8:	44 20 00 0b 	be r1,r0,80189f4 <msdos_find_name_in_fat_file+0x764><== NEVER TAKEN
                {                                                     
                    *p = *n;                                          
 80189cc:	30 81 00 00 	sb (r4+0),r1                                   
                    n++;                                              
 80189d0:	34 c6 00 01 	addi r6,r6,1                                   
                    p [0] = fill;                                     
                    p [1] = fill;                                     
                    fill = 0xff;                                      
                }                                                     
                                                                      
                switch (i)                                            
 80189d4:	44 4d 00 0c 	be r2,r13,8018a04 <msdos_find_name_in_fat_file+0x774>
 80189d8:	44 4e 00 6f 	be r2,r14,8018b94 <msdos_find_name_in_fat_file+0x904>
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
 80189dc:	48 b3 00 22 	bg r5,r19,8018a64 <msdos_find_name_in_fat_file+0x7d4>
                        break;                                        
                    case 10:                                          
                        p += 4;                                       
                        break;                                        
                    default:                                          
                        p += 2;                                       
 80189e0:	34 84 00 02 	addi r4,r4,2                                   
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 80189e4:	34 a5 00 01 	addi r5,r5,1                                   
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
 80189e8:	40 c1 00 00 	lbu r1,(r6+0)                                  
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 80189ec:	34 a2 ff ff 	addi r2,r5,-1                                  
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
 80189f0:	5c 20 ff f7 	bne r1,r0,80189cc <msdos_find_name_in_fat_file+0x73c>
                    *p = *n;                                          
                    n++;                                              
                }                                                     
                else                                                  
                {                                                     
                    p [0] = fill;                                     
 80189f4:	30 88 00 00 	sb (r4+0),r8                                   
                    p [1] = fill;                                     
 80189f8:	30 88 00 01 	sb (r4+1),r8                                   
                    fill = 0xff;                                      
 80189fc:	34 08 00 ff 	mvi r8,255                                     
                }                                                     
                                                                      
                switch (i)                                            
 8018a00:	5c 4d ff f6 	bne r2,r13,80189d8 <msdos_find_name_in_fat_file+0x748>
                {                                                     
                    case 4:                                           
                        p += 5;                                       
 8018a04:	34 84 00 05 	addi r4,r4,5                                   
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 8018a08:	34 a5 00 01 	addi r5,r5,1                                   
 8018a0c:	e3 ff ff f7 	bi 80189e8 <msdos_find_name_in_fat_file+0x758> 
                            /*                                        
                             * If this is the first entry, ie the last part of the
                             * long file name and the length does not match then
                             * the file names do not match.           
                             */                                       
                            if (((lfn_entry + 1) == lfn_entries) &&   
 8018a10:	2b 8e 00 68 	lw r14,(sp+104)                                
 8018a14:	5d cd 00 05 	bne r14,r13,8018a28 <msdos_find_name_in_fat_file+0x798><== NEVER TAKEN
 8018a18:	2b 81 00 74 	lw r1,(sp+116)                                 
                                ((o + i) != name_len))                
 8018a1c:	b4 a3 28 00 	add r5,r5,r3                                   
                            /*                                        
                             * If this is the first entry, ie the last part of the
                             * long file name and the length does not match then
                             * the file names do not match.           
                             */                                       
                            if (((lfn_entry + 1) == lfn_entries) &&   
 8018a20:	44 a1 00 02 	be r5,r1,8018a28 <msdos_find_name_in_fat_file+0x798><== ALWAYS TAKEN
                            break;                                    
                        }                                             
                                                                      
                        if (((o + i) >= name_len) || (*p != name[o + i]))
                        {                                             
                            lfn_start.cln = FAT_FILE_SHORT_NAME;      
 8018a24:	5b 95 00 88 	sw (sp+136),r21                                
                                p += 2;                               
                                break;                                
                        }                                             
                    }                                                 
                                                                      
                    lfn_matched = ((lfn_entry == 0) &&                
 8018a28:	34 0b 00 00 	mvi r11,0                                      
 8018a2c:	5f 00 ff 28 	bne r24,r0,80186cc <msdos_find_name_in_fat_file+0x43c>
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
 8018a30:	2b 8b 00 88 	lw r11,(sp+136)                                
 8018a34:	7d 6b ff ff 	cmpnei r11,r11,-1                              
 8018a38:	e3 ff ff 25 	bi 80186cc <msdos_find_name_in_fat_file+0x43c> 
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018a3c:	28 c9 00 24 	lw r9,(r6+36)                                  
 8018a40:	5d 20 fe 4e 	bne r9,r0,8018378 <msdos_find_name_in_fat_file+0xe8><== NEVER TAKEN
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
 8018a44:	2b 8e 00 58 	lw r14,(sp+88)                                 
 8018a48:	41 ca 00 0e 	lbu r10,(r14+14)                               
 8018a4c:	21 4a 00 03 	andi r10,r10,0x3                               
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018a50:	45 49 fe 4a 	be r10,r9,8018378 <msdos_find_name_in_fat_file+0xe8>
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
 8018a54:	28 d6 00 18 	lw r22,(r6+24)                                 
 8018a58:	e3 ff fe 4a 	bi 8018380 <msdos_find_name_in_fat_file+0xf0>  
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
                        {                                             
                          rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
                                              lfn_start.cln * bts2rd, 
                                              &lfn_start.cln);        
                          if (rc != RC_OK)                            
 8018a5c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
 8018a60:	e3 ff fe 6a 	bi 8018408 <msdos_find_name_in_fat_file+0x178> <== NOT EXECUTED
                        p += 2;                                       
                        break;                                        
                }                                                     
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
 8018a64:	32 11 00 00 	sb (r16+0),r17                                 
            if (lfn_entry == 1)                                       
 8018a68:	46 97 00 dc 	be r20,r23,8018dd8 <msdos_find_name_in_fat_file+0xb48>
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
 8018a6c:	42 03 00 0b 	lbu r3,(r16+11)                                
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
 8018a70:	35 ef 00 20 	addi r15,r15,32                                
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
 8018a74:	38 62 00 0f 	ori r2,r3,0xf                                  
 8018a78:	32 02 00 0b 	sb (r16+11),r2                                 
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
 8018a7c:	56 cf 00 49 	bgu r22,r15,8018ba0 <msdos_find_name_in_fat_file+0x910><== ALWAYS TAKEN
 8018a80:	bb 60 38 00 	mv r7,fp                                       <== NOT EXECUTED
 8018a84:	2b 9b 00 70 	lw fp,(sp+112)                                 <== NOT EXECUTED
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
        }                                                             
                                                                      
        ret = fat_file_write(&fs_info->fat, fat_fd,                   
 8018a88:	2b 82 00 58 	lw r2,(sp+88)                                  
 8018a8c:	2b 84 00 5c 	lw r4,(sp+92)                                  
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
 8018a90:	34 0c ff ff 	mvi r12,-1                                     
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
        }                                                             
                                                                      
        ret = fat_file_write(&fs_info->fat, fat_fd,                   
 8018a94:	28 49 00 a0 	lw r9,(r2+160)                                 
 8018a98:	b8 40 08 00 	mv r1,r2                                       
 8018a9c:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018aa0:	b4 9b 18 00 	add r3,r4,fp                                   
 8018aa4:	b5 3b 28 00 	add r5,r9,fp                                   
 8018aa8:	bb 20 20 00 	mv r4,r25                                      
 8018aac:	5b 87 00 50 	sw (sp+80),r7                                  
 8018ab0:	fb ff df 58 	calli 8010810 <fat_file_write>                 
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
 8018ab4:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018ab8:	44 2c fe 54 	be r1,r12,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
            return ret;                                               
        else if (ret != length)                                       
 8018abc:	5c 39 00 32 	bne r1,r25,8018b84 <msdos_find_name_in_fat_file+0x8f4><== NEVER TAKEN
            rtems_set_errno_and_return_minus_one(EIO);                
 8018ac0:	2b 86 00 5c 	lw r6,(sp+92)                                  
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
 8018ac4:	2b 8e 00 68 	lw r14,(sp+104)                                
        empty_space_offset++;                                         
        empty_space_entry = 0;                                        
        read_cluster = true;                                          
    }                                                                 
                                                                      
    return 0;                                                         
 8018ac8:	34 0c 00 00 	mvi r12,0                                      
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
 8018acc:	b4 d6 30 00 	add r6,r6,r22                                  
 8018ad0:	5b 86 00 5c 	sw (sp+92),r6                                  
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
 8018ad4:	4a 8e fe 4d 	bg r20,r14,8018408 <msdos_find_name_in_fat_file+0x178><== ALWAYS TAKEN
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        empty_space_offset++;                                         
 8018ad8:	34 e7 00 01 	addi r7,r7,1                                   <== NOT EXECUTED
        empty_space_entry = 0;                                        
 8018adc:	34 1b 00 00 	mvi fp,0                                       <== NOT EXECUTED
        {                                                             
          uint32_t new_length;                                        
#if MSDOS_FIND_PRINT                                                  
          printf ("MSFS:[9.1] eso:%li\n", empty_space_offset);        
#endif                                                                
          ret = fat_file_read(&fs_info->fat, fat_fd,                  
 8018ae0:	2b 8e 00 58 	lw r14,(sp+88)                                 
 8018ae4:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018ae8:	2b 83 00 5c 	lw r3,(sp+92)                                  
 8018aec:	29 c5 00 a0 	lw r5,(r14+160)                                
 8018af0:	b9 c0 08 00 	mv r1,r14                                      
 8018af4:	ba c0 20 00 	mv r4,r22                                      
 8018af8:	5b 87 00 50 	sw (sp+80),r7                                  
 8018afc:	fb ff dd 55 	calli 8010050 <fat_file_read>                  
 8018b00:	b8 20 58 00 	mv r11,r1                                      
                              (empty_space_offset * bts2rd), bts2rd,  
                              fs_info->cl_buf);                       
                                                                      
          if (ret != bts2rd)                                          
 8018b04:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018b08:	44 36 ff 81 	be r1,r22,801890c <msdos_find_name_in_fat_file+0x67c><== NEVER TAKEN
          {                                                           
            if (ret != FAT_EOF)                                       
 8018b0c:	5c 20 fe 3b 	bne r1,r0,80183f8 <msdos_find_name_in_fat_file+0x168><== NEVER TAKEN
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.2] extending file:%li\n", empty_space_offset);
#endif                                                                
            ret = fat_file_extend (&fs_info->fat, fat_fd, false,      
 8018b10:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018b14:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018b18:	2b 84 00 5c 	lw r4,(sp+92)                                  
 8018b1c:	34 03 00 00 	mvi r3,0                                       
 8018b20:	37 85 00 90 	addi r5,sp,144                                 
 8018b24:	5b 87 00 50 	sw (sp+80),r7                                  
 8018b28:	fb ff de a1 	calli 80105ac <fat_file_extend>                
 8018b2c:	b8 20 60 00 	mv r12,r1                                      
                                   empty_space_offset * bts2rd, &new_length);
                                                                      
            if (ret != RC_OK)                                         
 8018b30:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018b34:	5c 2b fe 35 	bne r1,r11,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
              return ret;                                             
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.3] extended: %d <-> %d\n", new_length, empty_space_offset * bts2rd);
#endif                                                                
            if (new_length != (empty_space_offset * bts2rd))          
 8018b38:	2b 89 00 90 	lw r9,(sp+144)                                 
 8018b3c:	2b 84 00 5c 	lw r4,(sp+92)                                  
 8018b40:	5d 24 fe 2e 	bne r9,r4,80183f8 <msdos_find_name_in_fat_file+0x168><== NEVER TAKEN
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
            memset(fs_info->cl_buf, 0, bts2rd);                       
 8018b44:	2b 86 00 58 	lw r6,(sp+88)                                  
 8018b48:	34 02 00 00 	mvi r2,0                                       
 8018b4c:	ba c0 18 00 	mv r3,r22                                      
 8018b50:	28 c1 00 a0 	lw r1,(r6+160)                                 
 8018b54:	5b 87 00 50 	sw (sp+80),r7                                  
                                 empty_space_offset * bts2rd,         
                                 bts2rd, fs_info->cl_buf);            
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.4] clear write: %d\n", ret);             
#endif                                                                
            if (ret == -1)                                            
 8018b58:	34 0c ff ff 	mvi r12,-1                                     
            printf ("MSFS:[9.3] extended: %d <-> %d\n", new_length, empty_space_offset * bts2rd);
#endif                                                                
            if (new_length != (empty_space_offset * bts2rd))          
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
            memset(fs_info->cl_buf, 0, bts2rd);                       
 8018b5c:	f8 00 12 b5 	calli 801d630 <memset>                         
                                                                      
            ret = fat_file_write(&fs_info->fat, fat_fd,               
 8018b60:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018b64:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018b68:	2b 83 00 5c 	lw r3,(sp+92)                                  
 8018b6c:	28 25 00 a0 	lw r5,(r1+160)                                 
 8018b70:	ba c0 20 00 	mv r4,r22                                      
 8018b74:	fb ff df 27 	calli 8010810 <fat_file_write>                 
                                 empty_space_offset * bts2rd,         
                                 bts2rd, fs_info->cl_buf);            
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.4] clear write: %d\n", ret);             
#endif                                                                
            if (ret == -1)                                            
 8018b78:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018b7c:	44 2c fe 23 	be r1,r12,8018408 <msdos_find_name_in_fat_file+0x178><== ALWAYS TAKEN
              return ret;                                             
            else if (ret != bts2rd)                                   
 8018b80:	44 36 ff 63 	be r1,r22,801890c <msdos_find_name_in_fat_file+0x67c><== NOT EXECUTED
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
 8018b84:	f8 00 0f 1c 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8018b88:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8018b8c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8018b90:	e3 ff fe 1e 	bi 8018408 <msdos_find_name_in_fat_file+0x178> <== NOT EXECUTED
                {                                                     
                    case 4:                                           
                        p += 5;                                       
                        break;                                        
                    case 10:                                          
                        p += 4;                                       
 8018b94:	34 84 00 04 	addi r4,r4,4                                   
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
 8018b98:	34 a5 00 01 	addi r5,r5,1                                   
 8018b9c:	e3 ff ff 93 	bi 80189e8 <msdos_find_name_in_fat_file+0x758> 
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
 8018ba0:	29 61 00 a0 	lw r1,(r11+160)                                
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
            lfn_entry++;                                              
 8018ba4:	36 22 ff ff 	addi r2,r17,-1                                 
 8018ba8:	36 94 00 01 	addi r20,r20,1                                 
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
 8018bac:	b4 2f 80 00 	add r16,r1,r15                                 
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
 8018bb0:	37 39 00 20 	addi r25,r25,32                                
            lfn_entry++;                                              
 8018bb4:	20 51 00 ff 	andi r17,r2,0xff                               
 8018bb8:	36 52 ff f3 	addi r18,r18,-13                               
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
 8018bbc:	5e b4 ff 76 	bne r21,r20,8018994 <msdos_find_name_in_fat_file+0x704>
 8018bc0:	bb 60 38 00 	mv r7,fp                                       
 8018bc4:	2b 9b 00 70 	lw fp,(sp+112)                                 
            {                                                         
                /* get current cluster number */                      
                int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
 8018bc8:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018bcc:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018bd0:	2b 84 00 5c 	lw r4,(sp+92)                                  
 8018bd4:	2b 85 00 6c 	lw r5,(sp+108)                                 
 8018bd8:	34 03 00 01 	mvi r3,1                                       
 8018bdc:	5b 87 00 50 	sw (sp+80),r7                                  
 8018be0:	fb ff de 37 	calli 80104bc <fat_file_ioctl>                 
 8018be4:	b8 20 60 00 	mv r12,r1                                      
                                        empty_space_offset * bts2rd,  
                                        &dir_pos->sname.cln);         
                if (rc != RC_OK)                                      
 8018be8:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018bec:	5c 20 fe 07 	bne r1,r0,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
                  return rc;                                          
                                                                      
                dir_pos->sname.ofs = dir_entry;                       
 8018bf0:	2b 8e 00 6c 	lw r14,(sp+108)                                
                                                                      
                if (lfn_start.cln != FAT_FILE_SHORT_NAME)             
 8018bf4:	2b 86 00 88 	lw r6,(sp+136)                                 
 8018bf8:	34 09 ff ff 	mvi r9,-1                                      
                                        empty_space_offset * bts2rd,  
                                        &dir_pos->sname.cln);         
                if (rc != RC_OK)                                      
                  return rc;                                          
                                                                      
                dir_pos->sname.ofs = dir_entry;                       
 8018bfc:	59 cf 00 04 	sw (r14+4),r15                                 
                                                                      
                if (lfn_start.cln != FAT_FILE_SHORT_NAME)             
 8018c00:	44 c9 00 0f 	be r6,r9,8018c3c <msdos_find_name_in_fat_file+0x9ac>
                {                                                     
                  rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
 8018c04:	b8 c0 10 00 	mv r2,r6                                       
 8018c08:	ba c0 08 00 	mv r1,r22                                      
 8018c0c:	fb ff a1 a4 	calli 800129c <__mulsi3>                       
 8018c10:	b8 20 48 00 	mv r9,r1                                       
 8018c14:	2b 82 00 64 	lw r2,(sp+100)                                 
 8018c18:	2b 81 00 58 	lw r1,(sp+88)                                  
 8018c1c:	34 03 00 01 	mvi r3,1                                       
 8018c20:	b9 20 20 00 	mv r4,r9                                       
 8018c24:	37 85 00 88 	addi r5,sp,136                                 
 8018c28:	fb ff de 25 	calli 80104bc <fat_file_ioctl>                 
 8018c2c:	b8 20 60 00 	mv r12,r1                                      
                                      lfn_start.cln * bts2rd,         
                                      &lfn_start.cln);                
                  if (rc != RC_OK)                                    
 8018c30:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018c34:	5c 20 fd f5 	bne r1,r0,8018408 <msdos_find_name_in_fat_file+0x178><== NEVER TAKEN
 8018c38:	2b 86 00 88 	lw r6,(sp+136)                                 
                    return rc;                                        
                }                                                     
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
 8018c3c:	2b 81 00 6c 	lw r1,(sp+108)                                 
                dir_pos->lname.ofs = lfn_start.ofs;                   
 8018c40:	2b 89 00 8c 	lw r9,(sp+140)                                 
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
 8018c44:	2b 84 00 54 	lw r4,(sp+84)                                  
                                      &lfn_start.cln);                
                  if (rc != RC_OK)                                    
                    return rc;                                        
                }                                                     
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
 8018c48:	58 26 00 08 	sw (r1+8),r6                                   
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
 8018c4c:	2b 86 00 54 	lw r6,(sp+84)                                  
                  if (rc != RC_OK)                                    
                    return rc;                                        
                }                                                     
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
                dir_pos->lname.ofs = lfn_start.ofs;                   
 8018c50:	58 29 00 0c 	sw (r1+12),r9                                  
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
 8018c54:	40 82 00 01 	lbu r2,(r4+1)                                  
 8018c58:	40 c1 00 0b 	lbu r1,(r6+11)                                 
 8018c5c:	40 ce 00 06 	lbu r14,(r6+6)                                 
 8018c60:	40 84 00 02 	lbu r4,(r4+2)                                  
 8018c64:	40 c8 00 03 	lbu r8,(r6+3)                                  
 8018c68:	40 ca 00 04 	lbu r10,(r6+4)                                 
 8018c6c:	40 cc 00 05 	lbu r12,(r6+5)                                 
 8018c70:	40 d1 00 07 	lbu r17,(r6+7)                                 
 8018c74:	40 d3 00 08 	lbu r19,(r6+8)                                 
 8018c78:	40 d7 00 09 	lbu r23,(r6+9)                                 
 8018c7c:	40 dd 00 0a 	lbu ra,(r6+10)                                 
 8018c80:	33 81 00 70 	sb (sp+112),r1                                 
 8018c84:	40 c6 00 0c 	lbu r6,(r6+12)                                 
 8018c88:	2b 81 00 54 	lw r1,(sp+84)                                  
 8018c8c:	33 86 00 74 	sb (sp+116),r6                                 
 8018c90:	40 21 00 0d 	lbu r1,(r1+13)                                 
 8018c94:	2b 86 00 54 	lw r6,(sp+84)                                  
 8018c98:	33 81 00 7f 	sb (sp+127),r1                                 
 8018c9c:	40 c6 00 0e 	lbu r6,(r6+14)                                 
 8018ca0:	2b 81 00 54 	lw r1,(sp+84)                                  
 8018ca4:	33 86 00 80 	sb (sp+128),r6                                 
 8018ca8:	40 21 00 0f 	lbu r1,(r1+15)                                 
 8018cac:	2b 86 00 54 	lw r6,(sp+84)                                  
 8018cb0:	33 81 00 81 	sb (sp+129),r1                                 
 8018cb4:	40 c6 00 10 	lbu r6,(r6+16)                                 
 8018cb8:	2b 81 00 54 	lw r1,(sp+84)                                  
 8018cbc:	33 86 00 82 	sb (sp+130),r6                                 
 8018cc0:	40 21 00 11 	lbu r1,(r1+17)                                 
 8018cc4:	33 81 00 83 	sb (sp+131),r1                                 
 8018cc8:	2b 86 00 54 	lw r6,(sp+84)                                  
 8018ccc:	2b 81 00 54 	lw r1,(sp+84)                                  
 8018cd0:	40 c6 00 12 	lbu r6,(r6+18)                                 
 8018cd4:	33 86 00 84 	sb (sp+132),r6                                 
 8018cd8:	40 21 00 13 	lbu r1,(r1+19)                                 
 8018cdc:	2b 86 00 54 	lw r6,(sp+84)                                  
 8018ce0:	33 81 00 85 	sb (sp+133),r1                                 
 8018ce4:	40 c6 00 14 	lbu r6,(r6+20)                                 
 8018ce8:	2b 81 00 54 	lw r1,(sp+84)                                  
 8018cec:	33 86 00 86 	sb (sp+134),r6                                 
 8018cf0:	40 21 00 15 	lbu r1,(r1+21)                                 
 8018cf4:	2b 86 00 54 	lw r6,(sp+84)                                  
 8018cf8:	33 81 00 87 	sb (sp+135),r1                                 
 8018cfc:	40 d8 00 16 	lbu r24,(r6+22)                                
 8018d00:	40 d5 00 17 	lbu r21,(r6+23)                                
 8018d04:	40 d2 00 18 	lbu r18,(r6+24)                                
 8018d08:	40 cf 00 19 	lbu r15,(r6+25)                                
 8018d0c:	40 cd 00 1a 	lbu r13,(r6+26)                                
 8018d10:	40 cb 00 1b 	lbu r11,(r6+27)                                
 8018d14:	40 c9 00 1c 	lbu r9,(r6+28)                                 
 8018d18:	40 c5 00 1d 	lbu r5,(r6+29)                                 
 8018d1c:	40 c3 00 1e 	lbu r3,(r6+30)                                 
 8018d20:	40 c1 00 1f 	lbu r1,(r6+31)                                 
 8018d24:	40 c6 00 00 	lbu r6,(r6+0)                                  
 8018d28:	32 02 00 01 	sb (r16+1),r2                                  
 8018d2c:	32 04 00 02 	sb (r16+2),r4                                  
 8018d30:	32 06 00 00 	sb (r16+0),r6                                  
 8018d34:	32 0e 00 06 	sb (r16+6),r14                                 
 8018d38:	32 08 00 03 	sb (r16+3),r8                                  
 8018d3c:	32 0a 00 04 	sb (r16+4),r10                                 
 8018d40:	32 0c 00 05 	sb (r16+5),r12                                 
 8018d44:	32 11 00 07 	sb (r16+7),r17                                 
 8018d48:	32 13 00 08 	sb (r16+8),r19                                 
 8018d4c:	32 17 00 09 	sb (r16+9),r23                                 
 8018d50:	32 1d 00 0a 	sb (r16+10),ra                                 
 8018d54:	43 8e 00 70 	lbu r14,(sp+112)                               
 8018d58:	32 0e 00 0b 	sb (r16+11),r14                                
 8018d5c:	43 82 00 74 	lbu r2,(sp+116)                                
 8018d60:	32 02 00 0c 	sb (r16+12),r2                                 
 8018d64:	43 84 00 7f 	lbu r4,(sp+127)                                
 8018d68:	32 04 00 0d 	sb (r16+13),r4                                 
 8018d6c:	43 86 00 80 	lbu r6,(sp+128)                                
 8018d70:	32 06 00 0e 	sb (r16+14),r6                                 
 8018d74:	43 8e 00 81 	lbu r14,(sp+129)                               
 8018d78:	32 0e 00 0f 	sb (r16+15),r14                                
 8018d7c:	43 82 00 82 	lbu r2,(sp+130)                                
 8018d80:	32 02 00 10 	sb (r16+16),r2                                 
 8018d84:	43 84 00 83 	lbu r4,(sp+131)                                
 8018d88:	32 04 00 11 	sb (r16+17),r4                                 
 8018d8c:	43 86 00 84 	lbu r6,(sp+132)                                
 8018d90:	32 06 00 12 	sb (r16+18),r6                                 
 8018d94:	43 8e 00 85 	lbu r14,(sp+133)                               
 8018d98:	32 0e 00 13 	sb (r16+19),r14                                
 8018d9c:	43 82 00 86 	lbu r2,(sp+134)                                
 8018da0:	32 02 00 14 	sb (r16+20),r2                                 
 8018da4:	43 84 00 87 	lbu r4,(sp+135)                                
 8018da8:	32 18 00 16 	sb (r16+22),r24                                
 8018dac:	32 15 00 17 	sb (r16+23),r21                                
 8018db0:	32 04 00 15 	sb (r16+21),r4                                 
 8018db4:	32 12 00 18 	sb (r16+24),r18                                
 8018db8:	32 0f 00 19 	sb (r16+25),r15                                
 8018dbc:	32 0d 00 1a 	sb (r16+26),r13                                
 8018dc0:	32 0b 00 1b 	sb (r16+27),r11                                
 8018dc4:	32 09 00 1c 	sb (r16+28),r9                                 
 8018dc8:	32 05 00 1d 	sb (r16+29),r5                                 
 8018dcc:	32 03 00 1e 	sb (r16+30),r3                                 
 8018dd0:	32 01 00 1f 	sb (r16+31),r1                                 
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
 8018dd4:	e3 ff ff 2d 	bi 8018a88 <msdos_find_name_in_fat_file+0x7f8> 
                }                                                     
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
 8018dd8:	3a 21 00 40 	ori r1,r17,0x40                                
 8018ddc:	32 01 00 00 	sb (r16+0),r1                                  
 8018de0:	e3 ff ff 23 	bi 8018a6c <msdos_find_name_in_fat_file+0x7dc> 
             * first entry written and if so remember the             
             * the location of the long file name.                    
             */                                                       
            if (lfn_start.cln == FAT_FILE_SHORT_NAME)                 
            {                                                         
              lfn_start.cln = empty_space_offset;                     
 8018de4:	5b 9b 00 88 	sw (sp+136),fp                                 
              lfn_start.ofs = dir_entry;                              
 8018de8:	5b 8f 00 8c 	sw (sp+140),r15                                
 8018dec:	e3 ff fe ec 	bi 801899c <msdos_find_name_in_fat_file+0x70c> 
 8018df0:	ba 20 38 00 	mv r7,r17                                      
                                                                      
    /*                                                                
     * If we are not to create the entry return a not found error.    
     */                                                               
    if (!create_node)                                                 
      return MSDOS_NAME_NOT_FOUND_ERR;                                
 8018df4:	34 0c 7d 01 	mvi r12,32001                                  
    }                                                                 
                                                                      
    /*                                                                
     * If we are not to create the entry return a not found error.    
     */                                                               
    if (!create_node)                                                 
 8018df8:	46 81 fd 84 	be r20,r1,8018408 <msdos_find_name_in_fat_file+0x178>
 8018dfc:	e3 ff fe 93 	bi 8018848 <msdos_find_name_in_fat_file+0x5b8> 
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
 8018e00:	34 19 00 00 	mvi r25,0                                      <== NOT EXECUTED
 8018e04:	e3 ff ff 21 	bi 8018a88 <msdos_find_name_in_fat_file+0x7f8> <== NOT EXECUTED
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
 8018e08:	ba a0 a0 00 	mv r20,r21                                     
 8018e0c:	bb 60 78 00 	mv r15,fp                                      
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
 8018e10:	34 19 00 20 	mvi r25,32                                     
 8018e14:	e3 ff ff 6d 	bi 8018bc8 <msdos_find_name_in_fat_file+0x938> 
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
 8018e18:	b8 e0 08 00 	mv r1,r7                                       
 8018e1c:	ba c0 10 00 	mv r2,r22                                      
 8018e20:	5b 87 00 50 	sw (sp+80),r7                                  
 8018e24:	fb ff a1 1e 	calli 800129c <__mulsi3>                       
 8018e28:	b4 3b 30 00 	add r6,r1,fp                                   
 8018e2c:	00 c6 00 01 	srui r6,r6,1                                   
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e30:	2b 8e 00 54 	lw r14,(sp+84)                                 
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
 8018e34:	00 c6 00 01 	srui r6,r6,1                                   
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
 8018e38:	2b 81 00 68 	lw r1,(sp+104)                                 
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e3c:	41 c9 00 00 	lbu r9,(r14+0)                                 
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
 8018e40:	00 c6 00 01 	srui r6,r6,1                                   
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
 8018e44:	34 30 00 01 	addi r16,r1,1                                  
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
 8018e48:	00 c6 00 01 	srui r6,r6,1                                   
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e4c:	65 23 00 2e 	cmpei r3,r9,46                                 
 8018e50:	65 29 00 20 	cmpei r9,r9,32                                 
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
 8018e54:	00 c6 00 01 	srui r6,r6,1                                   
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e58:	b8 69 18 00 	or r3,r3,r9                                    
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
 8018e5c:	b6 06 80 00 	add r16,r16,r6                                 
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e60:	2b 87 00 50 	lw r7,(sp+80)                                  
 8018e64:	44 60 00 03 	be r3,r0,8018e70 <msdos_find_name_in_fat_file+0xbe0>
        *c = '_';                                                     
 8018e68:	34 03 00 5f 	mvi r3,95                                      
 8018e6c:	31 c3 00 00 	sb (r14+0),r3                                  
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
 8018e70:	2b 82 00 54 	lw r2,(sp+84)                                  
 8018e74:	40 49 00 01 	lbu r9,(r2+1)                                  
msdos_short_name_hex(char* sfn, int num)                              
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
 8018e78:	34 4c 00 01 	addi r12,r2,1                                  
      if ((*c == ' ') || (*c == '.'))                                 
 8018e7c:	65 23 00 2e 	cmpei r3,r9,46                                 
 8018e80:	65 29 00 20 	cmpei r9,r9,32                                 
 8018e84:	b8 69 18 00 	or r3,r3,r9                                    
 8018e88:	44 60 00 03 	be r3,r0,8018e94 <msdos_find_name_in_fat_file+0xc04>
        *c = '_';                                                     
 8018e8c:	34 03 00 5f 	mvi r3,95                                      
 8018e90:	30 43 00 01 	sb (r2+1),r3                                   
msdos_short_name_hex(char* sfn, int num)                              
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
 8018e94:	35 8c 00 01 	addi r12,r12,1                                 
 8018e98:	78 0d 08 02 	mvhi r13,0x802                                 
 8018e9c:	b9 80 70 00 	mv r14,r12                                     
 8018ea0:	34 0b 00 0c 	mvi r11,12                                     
 8018ea4:	39 ad fe 10 	ori r13,r13,0xfe10                             
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
 8018ea8:	34 0f ff fc 	mvi r15,-4                                     
 8018eac:	b8 e0 88 00 	mv r17,r7                                      
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
 8018eb0:	b9 60 10 00 	mv r2,r11                                      
 8018eb4:	ba 00 08 00 	mv r1,r16                                      
 8018eb8:	fb ff a0 d2 	calli 8001200 <__ashrsi3>                      
 8018ebc:	20 22 00 0f 	andi r2,r1,0xf                                 
 8018ec0:	b5 a2 10 00 	add r2,r13,r2                                  
 8018ec4:	40 42 00 00 	lbu r2,(r2+0)                                  
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
 8018ec8:	35 6b ff fc 	addi r11,r11,-4                                
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
 8018ecc:	31 c2 00 00 	sb (r14+0),r2                                  
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
 8018ed0:	35 ce 00 01 	addi r14,r14,1                                 
 8018ed4:	5d 6f ff f7 	bne r11,r15,8018eb0 <msdos_find_name_in_fat_file+0xc20>
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
    *c++ = '~';                                                       
 8018ed8:	34 03 00 7e 	mvi r3,126                                     
 8018edc:	31 83 00 04 	sb (r12+4),r3                                  
    *c++ = '1';                                                       
 8018ee0:	34 03 00 31 	mvi r3,49                                      
 8018ee4:	ba 20 38 00 	mv r7,r17                                      
 8018ee8:	31 83 00 05 	sb (r12+5),r3                                  
 8018eec:	e3 ff fe 5a 	bi 8018854 <msdos_find_name_in_fat_file+0x5c4> 
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
 8018ef0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8018ef4:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 8018ef8:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8018efc:	38 21 07 0c 	ori r1,r1,0x70c                                <== NOT EXECUTED
 8018f00:	34 02 03 f9 	mvi r2,1017                                    <== NOT EXECUTED
 8018f04:	38 63 07 e0 	ori r3,r3,0x7e0                                <== NOT EXECUTED
 8018f08:	38 84 07 9c 	ori r4,r4,0x79c                                <== NOT EXECUTED
 8018f0c:	fb ff e7 c2 	calli 8012e14 <__assert_func>                  <== NOT EXECUTED
                                                                      

08018f10 <msdos_find_node_by_cluster_num_in_fat_file>: fat_file_fd_t *fat_fd, uint32_t cl4find, fat_dir_pos_t *dir_pos, char *dir_entry ) {
 8018f10:	37 9c ff b4 	addi sp,sp,-76                                 
 8018f14:	5b 8b 00 44 	sw (sp+68),r11                                 
 8018f18:	5b 8c 00 40 	sw (sp+64),r12                                 
 8018f1c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8018f20:	5b 8e 00 38 	sw (sp+56),r14                                 
 8018f24:	5b 8f 00 34 	sw (sp+52),r15                                 
 8018f28:	5b 90 00 30 	sw (sp+48),r16                                 
 8018f2c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8018f30:	5b 92 00 28 	sw (sp+40),r18                                 
 8018f34:	5b 93 00 24 	sw (sp+36),r19                                 
 8018f38:	5b 94 00 20 	sw (sp+32),r20                                 
 8018f3c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8018f40:	5b 96 00 18 	sw (sp+24),r22                                 
 8018f44:	5b 97 00 14 	sw (sp+20),r23                                 
 8018f48:	5b 98 00 10 	sw (sp+16),r24                                 
 8018f4c:	5b 99 00 0c 	sw (sp+12),r25                                 
 8018f50:	5b 9b 00 08 	sw (sp+8),fp                                   
 8018f54:	5b 9d 00 04 	sw (sp+4),ra                                   
 8018f58:	b8 40 98 00 	mv r19,r2                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018f5c:	28 42 00 20 	lw r2,(r2+32)                                  
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
    int              rc = RC_OK;                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 8018f60:	28 31 00 08 	lw r17,(r1+8)                                  
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018f64:	34 01 00 01 	mvi r1,1                                       
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              cl4find,                    
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
 8018f68:	b8 60 80 00 	mv r16,r3                                      
 8018f6c:	b8 80 b0 00 	mv r22,r4                                      
 8018f70:	b8 a0 b8 00 	mv r23,r5                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 8018f74:	44 41 00 5d 	be r2,r1,80190e8 <msdos_find_node_by_cluster_num_in_fat_file+0x1d8><== NEVER TAKEN
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
 8018f78:	2e 2d 00 06 	lhu r13,(r17+6)                                
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
 8018f7c:	2a 32 00 a0 	lw r18,(r17+160)                               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
            rtems_set_errno_and_return_minus_one( EIO );              
                                                                      
        assert(ret == bts2rd);                                        
 8018f80:	34 14 00 00 	mvi r20,0                                      
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
 8018f84:	34 15 00 1f 	mvi r21,31                                     
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
                return MSDOS_NAME_NOT_FOUND_ERR;                      
                                                                      
            /* if this entry is empty - skip it */                    
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 8018f88:	34 0e 00 e5 	mvi r14,229                                    
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
 8018f8c:	ba 20 08 00 	mv r1,r17                                      
 8018f90:	ba 60 10 00 	mv r2,r19                                      
 8018f94:	ba 80 18 00 	mv r3,r20                                      
 8018f98:	b9 a0 20 00 	mv r4,r13                                      
 8018f9c:	ba 40 28 00 	mv r5,r18                                      
 8018fa0:	fb ff dc 2c 	calli 8010050 <fat_file_read>                  
 8018fa4:	44 20 00 3d 	be r1,r0,8019098 <msdos_find_node_by_cluster_num_in_fat_file+0x188><== NEVER TAKEN
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
 8018fa8:	48 35 00 06 	bg r1,r21,8018fc0 <msdos_find_node_by_cluster_num_in_fat_file+0xb0><== ALWAYS TAKEN
            rtems_set_errno_and_return_minus_one( EIO );              
 8018fac:	f8 00 0e 12 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8018fb0:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8018fb4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8018fb8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8018fbc:	e0 00 00 38 	bi 801909c <msdos_find_node_by_cluster_num_in_fat_file+0x18c><== NOT EXECUTED
                                                                      
        assert(ret == bts2rd);                                        
 8018fc0:	5c 2d 00 ad 	bne r1,r13,8019274 <msdos_find_node_by_cluster_num_in_fat_file+0x364><== NEVER TAKEN
 8018fc4:	2a 32 00 a0 	lw r18,(r17+160)                               
 8018fc8:	34 0b 00 00 	mvi r11,0                                      
 8018fcc:	ba 40 78 00 	mv r15,r18                                     
        for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
                                                                      
            /* if this and all rest entries are empty - return not-found */
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 8018fd0:	41 e6 00 00 	lbu r6,(r15+0)                                 
 8018fd4:	44 c0 00 31 	be r6,r0,8019098 <msdos_find_node_by_cluster_num_in_fat_file+0x188><== NEVER TAKEN
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
                return MSDOS_NAME_NOT_FOUND_ERR;                      
                                                                      
            /* if this entry is empty - skip it */                    
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
 8018fd8:	44 ce 00 2b 	be r6,r14,8019084 <msdos_find_node_by_cluster_num_in_fat_file+0x174><== NEVER TAKEN
                MSDOS_THIS_DIR_ENTRY_EMPTY)                           
                continue;                                             
                                                                      
            /* if get a non-empty entry - compare clusters num */     
            if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)          
 8018fdc:	2d e7 00 14 	lhu r7,(r15+20)                                
 8018fe0:	2d ec 00 1a 	lhu r12,(r15+26)                               
 8018fe4:	34 02 00 10 	mvi r2,16                                      
 *  @param[in] value is the value to be swapped                       
 *  @return the value after being endian swapped                      
 */                                                                   
static inline uint16_t CPU_swap_u16(uint16_t v)                       
{                                                                     
    return v << 8 | v >> 8;                                           
 8018fe8:	00 e8 00 01 	srui r8,r7,1                                   
 8018fec:	b4 e7 38 00 	add r7,r7,r7                                   
 8018ff0:	01 08 00 01 	srui r8,r8,1                                   
 8018ff4:	b4 e7 38 00 	add r7,r7,r7                                   
 8018ff8:	01 08 00 01 	srui r8,r8,1                                   
 8018ffc:	b4 e7 38 00 	add r7,r7,r7                                   
 8019000:	01 08 00 01 	srui r8,r8,1                                   
 8019004:	b4 e7 38 00 	add r7,r7,r7                                   
 8019008:	01 08 00 01 	srui r8,r8,1                                   
 801900c:	b4 e7 38 00 	add r7,r7,r7                                   
 8019010:	01 08 00 01 	srui r8,r8,1                                   
 8019014:	b4 e7 38 00 	add r7,r7,r7                                   
 8019018:	01 08 00 01 	srui r8,r8,1                                   
 801901c:	b4 e7 38 00 	add r7,r7,r7                                   
 8019020:	01 08 00 01 	srui r8,r8,1                                   
 8019024:	b4 e7 38 00 	add r7,r7,r7                                   
 8019028:	b8 e8 38 00 	or r7,r7,r8                                    
 801902c:	20 e1 ff ff 	andi r1,r7,0xffff                              
 8019030:	fb ff a0 4d 	calli 8001164 <__ashlsi3>                      
 8019034:	01 87 00 01 	srui r7,r12,1                                  
 8019038:	b5 8c 30 00 	add r6,r12,r12                                 
 801903c:	00 e7 00 01 	srui r7,r7,1                                   
 8019040:	b4 c6 30 00 	add r6,r6,r6                                   
 8019044:	00 e7 00 01 	srui r7,r7,1                                   
 8019048:	b4 c6 30 00 	add r6,r6,r6                                   
 801904c:	00 e7 00 01 	srui r7,r7,1                                   
 8019050:	b4 c6 30 00 	add r6,r6,r6                                   
 8019054:	00 e7 00 01 	srui r7,r7,1                                   
 8019058:	b4 c6 30 00 	add r6,r6,r6                                   
 801905c:	00 e7 00 01 	srui r7,r7,1                                   
 8019060:	b4 c6 30 00 	add r6,r6,r6                                   
 8019064:	00 e7 00 01 	srui r7,r7,1                                   
 8019068:	b4 c6 30 00 	add r6,r6,r6                                   
 801906c:	00 e7 00 01 	srui r7,r7,1                                   
 8019070:	b4 c6 30 00 	add r6,r6,r6                                   
 8019074:	b8 c7 30 00 	or r6,r6,r7                                    
 8019078:	20 c6 ff ff 	andi r6,r6,0xffff                              
 801907c:	b8 26 30 00 	or r6,r1,r6                                    
 8019080:	44 d0 00 21 	be r6,r16,8019104 <msdos_find_node_by_cluster_num_in_fat_file+0x1f4>
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
            rtems_set_errno_and_return_minus_one( EIO );              
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
 8019084:	35 6b 00 20 	addi r11,r11,32                                
 8019088:	35 ef 00 20 	addi r15,r15,32                                
 801908c:	55 ab ff d1 	bgu r13,r11,8018fd0 <msdos_find_node_by_cluster_num_in_fat_file+0xc0><== ALWAYS TAKEN
 8019090:	b6 8d a0 00 	add r20,r20,r13                                <== NOT EXECUTED
 8019094:	e3 ff ff be 	bi 8018f8c <msdos_find_node_by_cluster_num_in_fat_file+0x7c><== NOT EXECUTED
            char* entry = (char*) fs_info->cl_buf + i;                
                                                                      
            /* if this and all rest entries are empty - return not-found */
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
                return MSDOS_NAME_NOT_FOUND_ERR;                      
 8019098:	34 01 7d 01 	mvi r1,32001                                   <== NOT EXECUTED
            }                                                         
        }                                                             
        j++;                                                          
    }                                                                 
    return MSDOS_NAME_NOT_FOUND_ERR;                                  
}                                                                     
 801909c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80190a0:	2b 8b 00 44 	lw r11,(sp+68)                                 
 80190a4:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80190a8:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80190ac:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80190b0:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80190b4:	2b 90 00 30 	lw r16,(sp+48)                                 
 80190b8:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80190bc:	2b 92 00 28 	lw r18,(sp+40)                                 
 80190c0:	2b 93 00 24 	lw r19,(sp+36)                                 
 80190c4:	2b 94 00 20 	lw r20,(sp+32)                                 
 80190c8:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80190cc:	2b 96 00 18 	lw r22,(sp+24)                                 
 80190d0:	2b 97 00 14 	lw r23,(sp+20)                                 
 80190d4:	2b 98 00 10 	lw r24,(sp+16)                                 
 80190d8:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80190dc:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80190e0:	37 9c 00 4c 	addi sp,sp,76                                  
 80190e4:	c3 a0 00 00 	ret                                            
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 80190e8:	2a 61 00 24 	lw r1,(r19+36)                                 <== NOT EXECUTED
 80190ec:	5c 20 ff a3 	bne r1,r0,8018f78 <msdos_find_node_by_cluster_num_in_fat_file+0x68><== NOT EXECUTED
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
 80190f0:	42 22 00 0e 	lbu r2,(r17+14)                                <== NOT EXECUTED
 80190f4:	20 42 00 03 	andi r2,r2,0x3                                 <== NOT EXECUTED
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
 80190f8:	44 41 ff a0 	be r2,r1,8018f78 <msdos_find_node_by_cluster_num_in_fat_file+0x68><== NOT EXECUTED
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
 80190fc:	2a 6d 00 18 	lw r13,(r19+24)                                <== NOT EXECUTED
 8019100:	e3 ff ff 9f 	bi 8018f7c <msdos_find_node_by_cluster_num_in_fat_file+0x6c><== NOT EXECUTED
                                                                      
            /* if get a non-empty entry - compare clusters num */     
            if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)          
            {                                                         
                /* on success fill aux structure and copy all 32 bytes */
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
 8019104:	ba 20 08 00 	mv r1,r17                                      
 8019108:	ba 60 10 00 	mv r2,r19                                      
 801910c:	34 03 00 01 	mvi r3,1                                       
 8019110:	ba 80 20 00 	mv r4,r20                                      
 8019114:	ba c0 28 00 	mv r5,r22                                      
 8019118:	fb ff dc e9 	calli 80104bc <fat_file_ioctl>                 
                                    &dir_pos->sname.cln);             
                if (rc != RC_OK)                                      
 801911c:	5c 20 ff e0 	bne r1,r0,801909c <msdos_find_node_by_cluster_num_in_fat_file+0x18c><== NEVER TAKEN
                    return rc;                                        
                                                                      
                dir_pos->sname.ofs = i;                               
                dir_pos->lname.cln = FAT_FILE_SHORT_NAME;             
 8019120:	34 02 ff ff 	mvi r2,-1                                      
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
                                    &dir_pos->sname.cln);             
                if (rc != RC_OK)                                      
                    return rc;                                        
                                                                      
                dir_pos->sname.ofs = i;                               
 8019124:	5a cb 00 04 	sw (r22+4),r11                                 
                dir_pos->lname.cln = FAT_FILE_SHORT_NAME;             
 8019128:	5a c2 00 08 	sw (r22+8),r2                                  
                dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;             
 801912c:	5a c2 00 0c 	sw (r22+12),r2                                 
                                                                      
                memcpy(dir_entry, entry,                              
 8019130:	41 e2 00 06 	lbu r2,(r15+6)                                 
 8019134:	41 e5 00 01 	lbu r5,(r15+1)                                 
 8019138:	41 e7 00 02 	lbu r7,(r15+2)                                 
 801913c:	41 e9 00 03 	lbu r9,(r15+3)                                 
 8019140:	41 eb 00 04 	lbu r11,(r15+4)                                
 8019144:	41 ed 00 05 	lbu r13,(r15+5)                                
 8019148:	33 82 00 48 	sb (sp+72),r2                                  
 801914c:	41 e2 00 07 	lbu r2,(r15+7)                                 
 8019150:	33 82 00 49 	sb (sp+73),r2                                  
 8019154:	41 e2 00 08 	lbu r2,(r15+8)                                 
 8019158:	33 82 00 4a 	sb (sp+74),r2                                  
 801915c:	41 e2 00 09 	lbu r2,(r15+9)                                 
 8019160:	33 82 00 4b 	sb (sp+75),r2                                  
 8019164:	41 e2 00 0a 	lbu r2,(r15+10)                                
 8019168:	33 82 00 4c 	sb (sp+76),r2                                  
 801916c:	41 e2 00 0b 	lbu r2,(r15+11)                                
 8019170:	33 82 00 4d 	sb (sp+77),r2                                  
 8019174:	41 e2 00 0c 	lbu r2,(r15+12)                                
 8019178:	33 82 00 4e 	sb (sp+78),r2                                  
 801917c:	41 e2 00 0d 	lbu r2,(r15+13)                                
 8019180:	33 82 00 4f 	sb (sp+79),r2                                  
 8019184:	41 e2 00 00 	lbu r2,(r15+0)                                 
 8019188:	41 fd 00 0e 	lbu ra,(r15+14)                                
 801918c:	41 fb 00 0f 	lbu fp,(r15+15)                                
 8019190:	41 f9 00 10 	lbu r25,(r15+16)                               
 8019194:	41 f8 00 11 	lbu r24,(r15+17)                               
 8019198:	41 f6 00 12 	lbu r22,(r15+18)                               
 801919c:	41 f5 00 13 	lbu r21,(r15+19)                               
 80191a0:	41 f4 00 14 	lbu r20,(r15+20)                               
 80191a4:	41 f3 00 15 	lbu r19,(r15+21)                               
 80191a8:	41 f2 00 16 	lbu r18,(r15+22)                               
 80191ac:	41 f1 00 17 	lbu r17,(r15+23)                               
 80191b0:	41 f0 00 18 	lbu r16,(r15+24)                               
 80191b4:	41 ee 00 19 	lbu r14,(r15+25)                               
 80191b8:	41 ec 00 1a 	lbu r12,(r15+26)                               
 80191bc:	41 ea 00 1b 	lbu r10,(r15+27)                               
 80191c0:	41 e8 00 1c 	lbu r8,(r15+28)                                
 80191c4:	41 e6 00 1d 	lbu r6,(r15+29)                                
 80191c8:	41 e4 00 1e 	lbu r4,(r15+30)                                
 80191cc:	41 e3 00 1f 	lbu r3,(r15+31)                                
 80191d0:	32 e2 00 00 	sb (r23+0),r2                                  
 80191d4:	32 e5 00 01 	sb (r23+1),r5                                  
 80191d8:	32 e7 00 02 	sb (r23+2),r7                                  
 80191dc:	32 e9 00 03 	sb (r23+3),r9                                  
 80191e0:	32 eb 00 04 	sb (r23+4),r11                                 
 80191e4:	32 ed 00 05 	sb (r23+5),r13                                 
 80191e8:	43 82 00 48 	lbu r2,(sp+72)                                 
 80191ec:	32 e2 00 06 	sb (r23+6),r2                                  
 80191f0:	43 82 00 49 	lbu r2,(sp+73)                                 
 80191f4:	32 e2 00 07 	sb (r23+7),r2                                  
 80191f8:	43 82 00 4a 	lbu r2,(sp+74)                                 
 80191fc:	32 e2 00 08 	sb (r23+8),r2                                  
 8019200:	43 82 00 4b 	lbu r2,(sp+75)                                 
 8019204:	32 e2 00 09 	sb (r23+9),r2                                  
 8019208:	43 82 00 4c 	lbu r2,(sp+76)                                 
 801920c:	32 e2 00 0a 	sb (r23+10),r2                                 
 8019210:	43 82 00 4d 	lbu r2,(sp+77)                                 
 8019214:	32 e2 00 0b 	sb (r23+11),r2                                 
 8019218:	43 82 00 4e 	lbu r2,(sp+78)                                 
 801921c:	32 e2 00 0c 	sb (r23+12),r2                                 
 8019220:	43 82 00 4f 	lbu r2,(sp+79)                                 
 8019224:	32 fd 00 0e 	sb (r23+14),ra                                 
 8019228:	32 fb 00 0f 	sb (r23+15),fp                                 
 801922c:	32 e2 00 0d 	sb (r23+13),r2                                 
 8019230:	32 f9 00 10 	sb (r23+16),r25                                
 8019234:	32 f8 00 11 	sb (r23+17),r24                                
 8019238:	32 f6 00 12 	sb (r23+18),r22                                
 801923c:	32 f5 00 13 	sb (r23+19),r21                                
 8019240:	32 f4 00 14 	sb (r23+20),r20                                
 8019244:	32 f3 00 15 	sb (r23+21),r19                                
 8019248:	32 f2 00 16 	sb (r23+22),r18                                
 801924c:	32 f1 00 17 	sb (r23+23),r17                                
 8019250:	32 f0 00 18 	sb (r23+24),r16                                
 8019254:	32 ee 00 19 	sb (r23+25),r14                                
 8019258:	32 ec 00 1a 	sb (r23+26),r12                                
 801925c:	32 ea 00 1b 	sb (r23+27),r10                                
 8019260:	32 e8 00 1c 	sb (r23+28),r8                                 
 8019264:	32 e6 00 1d 	sb (r23+29),r6                                 
 8019268:	32 e4 00 1e 	sb (r23+30),r4                                 
 801926c:	32 e3 00 1f 	sb (r23+31),r3                                 
                       MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);            
                return RC_OK;                                         
 8019270:	e3 ff ff 8b 	bi 801909c <msdos_find_node_by_cluster_num_in_fat_file+0x18c>
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
            rtems_set_errno_and_return_minus_one( EIO );              
                                                                      
        assert(ret == bts2rd);                                        
 8019274:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8019278:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801927c:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8019280:	38 21 07 0c 	ori r1,r1,0x70c                                <== NOT EXECUTED
 8019284:	34 02 06 4e 	mvi r2,1614                                    <== NOT EXECUTED
 8019288:	38 63 07 b4 	ori r3,r3,0x7b4                                <== NOT EXECUTED
 801928c:	38 84 07 9c 	ori r4,r4,0x79c                                <== NOT EXECUTED
 8019290:	fb ff e6 e1 	calli 8012e14 <__assert_func>                  <== NOT EXECUTED
                                                                      

0800a388 <msdos_format>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
 800a388:	37 9c fc f0 	addi sp,sp,-784                                
 800a38c:	5b 8b 00 44 	sw (sp+68),r11                                 
 800a390:	5b 8c 00 40 	sw (sp+64),r12                                 
 800a394:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800a398:	5b 8e 00 38 	sw (sp+56),r14                                 
 800a39c:	5b 8f 00 34 	sw (sp+52),r15                                 
 800a3a0:	5b 90 00 30 	sw (sp+48),r16                                 
 800a3a4:	5b 91 00 2c 	sw (sp+44),r17                                 
 800a3a8:	5b 92 00 28 	sw (sp+40),r18                                 
 800a3ac:	5b 93 00 24 	sw (sp+36),r19                                 
 800a3b0:	5b 94 00 20 	sw (sp+32),r20                                 
 800a3b4:	5b 95 00 1c 	sw (sp+28),r21                                 
 800a3b8:	5b 96 00 18 	sw (sp+24),r22                                 
 800a3bc:	5b 97 00 14 	sw (sp+20),r23                                 
 800a3c0:	5b 98 00 10 	sw (sp+16),r24                                 
 800a3c4:	5b 99 00 0c 	sw (sp+12),r25                                 
 800a3c8:	5b 9b 00 08 	sw (sp+8),fp                                   
 800a3cc:	5b 9d 00 04 	sw (sp+4),ra                                   
  msdos_format_param_t fmt_params;                                    
                                                                      
  /*                                                                  
   * open device for writing                                          
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
 800a3d0:	78 03 08 03 	mvhi r3,0x803                                  
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
 800a3d4:	b8 40 d8 00 	mv fp,r2                                       
  msdos_format_param_t fmt_params;                                    
                                                                      
  /*                                                                  
   * open device for writing                                          
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
 800a3d8:	38 63 00 04 	ori r3,r3,0x4                                  
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
 800a3dc:	b8 20 58 00 	mv r11,r1                                      
  msdos_format_param_t fmt_params;                                    
                                                                      
  /*                                                                  
   * open device for writing                                          
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
 800a3e0:	34 02 00 02 	mvi r2,2                                       
 800a3e4:	bb 60 08 00 	mv r1,fp                                       
 800a3e8:	fb ff ff 34 	calli 800a0b8 <msdos_format_printf>            
  fd = open(devname, O_RDWR);                                         
 800a3ec:	b9 60 08 00 	mv r1,r11                                      
 800a3f0:	34 02 00 02 	mvi r2,2                                       
 800a3f4:	fb ff e7 0e 	calli 800402c <open>                           
 800a3f8:	5b 81 00 4c 	sw (sp+76),r1                                  
  if (fd == -1) {                                                     
 800a3fc:	34 03 ff ff 	mvi r3,-1                                      
 800a400:	44 23 00 ad 	be r1,r3,800a6b4 <msdos_format+0x32c>          <== NEVER TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
 800a404:	78 03 08 03 	mvhi r3,0x803                                  
 800a408:	38 63 00 14 	ori r3,r3,0x14                                 
 800a40c:	b9 60 20 00 	mv r4,r11                                      
 800a410:	34 02 00 02 	mvi r2,2                                       
 800a414:	bb 60 08 00 	mv r1,fp                                       
 800a418:	fb ff ff 28 	calli 800a0b8 <msdos_format_printf>            
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
 800a41c:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800a420:	37 82 02 c0 	addi r2,sp,704                                 
 800a424:	fb ff e3 37 	calli 8003100 <fstat>                          
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
 800a428:	78 03 08 03 	mvhi r3,0x803                                  
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
 800a42c:	5b 81 00 48 	sw (sp+72),r1                                  
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
 800a430:	34 02 00 01 	mvi r2,1                                       
 800a434:	bb 60 08 00 	mv r1,fp                                       
 800a438:	38 63 00 24 	ori r3,r3,0x24                                 
 800a43c:	b9 60 20 00 	mv r4,r11                                      
 800a440:	fb ff ff 1e 	calli 800a0b8 <msdos_format_printf>            
                       "formating: %s\n", devname);                   
  /* rtems feature: no block devices, all are character devices */    
  if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {               
 800a444:	2b 81 00 48 	lw r1,(sp+72)                                  
 800a448:	5c 20 00 0a 	bne r1,r0,800a470 <msdos_format+0xe8>          <== NEVER TAKEN
 800a44c:	2b 84 02 cc 	lw r4,(sp+716)                                 
 800a450:	34 03 60 00 	mvi r3,24576                                   
 800a454:	20 84 f0 00 	andi r4,r4,0xf000                              
 800a458:	44 83 00 23 	be r4,r3,800a4e4 <msdos_format+0x15c>          <== ALWAYS TAKEN
    errno = ENOTTY;                                                   
 800a45c:	f8 00 48 e6 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800a460:	34 03 00 19 	mvi r3,25                                      <== NOT EXECUTED
 800a464:	58 23 00 00 	sw (r1+0),r3                                   <== NOT EXECUTED
    ret_val = -1;                                                     
 800a468:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 800a46c:	5b 82 00 48 	sw (sp+72),r2                                  <== NOT EXECUTED
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
                       "formating: %s\n", devname);                   
  /* rtems feature: no block devices, all are character devices */    
  if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {               
    errno = ENOTTY;                                                   
 800a470:	7f 63 00 00 	cmpnei r3,fp,0                                 <== NOT EXECUTED
 800a474:	5b 83 00 5c 	sw (sp+92),r3                                  <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * create master boot record                                        
   */                                                                 
  if (ret_val == 0) {                                                 
 800a478:	2b 84 00 48 	lw r4,(sp+72)                                  
 800a47c:	44 80 00 7a 	be r4,r0,800a664 <msdos_format+0x2dc>          
  /*                                                                  
   * cleanup:                                                         
   * sync and unlock disk                                             
   * free any data structures (not needed now)                        
   */                                                                 
  if (fd != -1) {                                                     
 800a480:	2b 84 00 4c 	lw r4,(sp+76)                                  
 800a484:	34 03 ff ff 	mvi r3,-1                                      
 800a488:	44 83 00 03 	be r4,r3,800a494 <msdos_format+0x10c>          <== NEVER TAKEN
    close(fd);                                                        
 800a48c:	b8 80 08 00 	mv r1,r4                                       
 800a490:	fb ff e2 bf 	calli 8002f8c <close>                          
  }                                                                   
                                                                      
  return ret_val;                                                     
}                                                                     
 800a494:	2b 81 00 48 	lw r1,(sp+72)                                  
 800a498:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a49c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800a4a0:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800a4a4:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800a4a8:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800a4ac:	2b 8f 00 34 	lw r15,(sp+52)                                 
 800a4b0:	2b 90 00 30 	lw r16,(sp+48)                                 
 800a4b4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800a4b8:	2b 92 00 28 	lw r18,(sp+40)                                 
 800a4bc:	2b 93 00 24 	lw r19,(sp+36)                                 
 800a4c0:	2b 94 00 20 	lw r20,(sp+32)                                 
 800a4c4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800a4c8:	2b 96 00 18 	lw r22,(sp+24)                                 
 800a4cc:	2b 97 00 14 	lw r23,(sp+20)                                 
 800a4d0:	2b 98 00 10 	lw r24,(sp+16)                                 
 800a4d4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800a4d8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800a4dc:	37 9c 03 10 	addi sp,sp,784                                 
 800a4e0:	c3 a0 00 00 	ret                                            
  uint64_t total_size = 0;                                            
  uint32_t data_clusters_cnt;                                         
  uint8_t  iteration_cnt = 0;                                         
  uint8_t  fat_type = UINT8_MAX;                                      
                                                                      
  memset(fmt_params,0,sizeof(*fmt_params));                           
 800a4e4:	34 02 00 00 	mvi r2,0                                       
 800a4e8:	34 03 00 54 	mvi r3,84                                      
 800a4ec:	37 81 02 6c 	addi r1,sp,620                                 
 800a4f0:	f8 00 4c 50 	calli 801d630 <memset>                         
static inline int rtems_disk_fd_get_media_block_size(                 
  int fd,                                                             
  uint32_t *media_block_size                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETMEDIABLKSIZE, media_block_size);    
 800a4f4:	78 03 08 03 	mvhi r3,0x803                                  
 800a4f8:	38 63 01 04 	ori r3,r3,0x104                                
 800a4fc:	28 62 00 00 	lw r2,(r3+0)                                   
 800a500:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800a504:	37 83 02 6c 	addi r3,sp,620                                 
 800a508:	f8 00 23 0f 	calli 8013144 <ioctl>                          
 800a50c:	5b 81 00 48 	sw (sp+72),r1                                  
   * At least one thing we don't have to magically guess...           
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
  }                                                                   
  if (ret_val == 0) {                                                 
 800a510:	44 20 00 a7 	be r1,r0,800a7ac <msdos_format+0x424>          <== ALWAYS TAKEN
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
    }                                                                 
    else {                                                            
      errno = EINVAL;                                                 
 800a514:	7f 63 00 00 	cmpnei r3,fp,0                                 
 800a518:	2b 99 02 70 	lw r25,(sp+624)                                
 800a51c:	5b 83 00 64 	sw (sp+100),r3                                 
 800a520:	5b 83 00 5c 	sw (sp+92),r3                                  
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
 800a524:	47 20 02 26 	be r25,r0,800adbc <msdos_format+0xa34>         <== NEVER TAKEN
  {                                                                   
    errno = EINVAL;                                                   
    ret_val = -1;                                                     
  }                                                                   
                                                                      
  if (0 == ret_val)                                                   
 800a528:	2b 82 00 48 	lw r2,(sp+72)                                  
 800a52c:	5c 40 02 29 	bne r2,r0,800add0 <msdos_format+0xa48>         
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
 800a530:	43 86 02 9e 	lbu r6,(sp+670)                                
 800a534:	34 05 00 04 	mvi r5,4                                       
 800a538:	44 c5 04 1f 	be r6,r5,800b5b4 <msdos_format+0x122c>         <== NEVER TAKEN
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
 800a53c:	43 8d 02 bc 	lbu r13,(sp+700)                               
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
 800a540:	2b 85 02 88 	lw r5,(sp+648)                                 
 800a544:	2b 8e 02 78 	lw r14,(sp+632)                                
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800a548:	5d a0 00 05 	bne r13,r0,800a55c <msdos_format+0x1d4>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800a54c:	b4 ae 28 00 	add r5,r5,r14                                  
 800a550:	34 a6 ff ff 	addi r6,r5,-1                                  
 800a554:	c8 0e 28 00 	sub r5,r0,r14                                  
 800a558:	a0 c5 28 00 	and r5,r6,r5                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
 800a55c:	b8 a0 08 00 	mv r1,r5                                       
 800a560:	2b 85 02 6c 	lw r5,(sp+620)                                 
 800a564:	00 a5 00 01 	srui r5,r5,1                                   
 800a568:	00 a5 00 01 	srui r5,r5,1                                   
 800a56c:	00 a5 00 01 	srui r5,r5,1                                   
 800a570:	00 a5 00 01 	srui r5,r5,1                                   
 800a574:	00 a2 00 01 	srui r2,r5,1                                   
 800a578:	fb ff db 49 	calli 800129c <__mulsi3>                       
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
 800a57c:	5b 81 02 84 	sw (sp+644),r1                                 
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
    }                                                                 
                                                                      
    fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
 800a580:	2b 8b 02 74 	lw r11,(sp+628)                                
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800a584:	5d a0 00 05 	bne r13,r0,800a598 <msdos_format+0x210>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800a588:	35 6b ff ff 	addi r11,r11,-1                                
 800a58c:	b5 6e 58 00 	add r11,r11,r14                                
 800a590:	c8 0e 70 00 	sub r14,r0,r14                                 
 800a594:	a1 6e 58 00 	and r11,r11,r14                                
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
    }                                                                 
                                                                      
    fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
 800a598:	5b 8b 02 74 	sw (sp+628),r11                                
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
 800a59c:	47 60 02 1e 	be fp,r0,800ae14 <msdos_format+0xa8c>          
	(rqdata->media != 0)) {                                              
 800a5a0:	43 6d 00 14 	lbu r13,(fp+20)                                
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
 800a5a4:	45 a0 02 1c 	be r13,r0,800ae14 <msdos_format+0xa8c>         
	(rqdata->media != 0)) {                                              
      const char valid_media_codes[] =                                
 800a5a8:	34 05 ff f0 	mvi r5,-16                                     
 800a5ac:	33 85 03 08 	sb (sp+776),r5                                 
 800a5b0:	34 05 ff f8 	mvi r5,-8                                      
 800a5b4:	33 85 03 09 	sb (sp+777),r5                                 
 800a5b8:	34 05 ff f9 	mvi r5,-7                                      
 800a5bc:	33 85 03 0a 	sb (sp+778),r5                                 
 800a5c0:	34 05 ff fa 	mvi r5,-6                                      
 800a5c4:	33 85 03 0b 	sb (sp+779),r5                                 
 800a5c8:	34 05 ff fb 	mvi r5,-5                                      
 800a5cc:	33 85 03 0c 	sb (sp+780),r5                                 
 800a5d0:	34 05 ff fc 	mvi r5,-4                                      
 800a5d4:	33 85 03 0d 	sb (sp+781),r5                                 
 800a5d8:	34 05 ff fd 	mvi r5,-3                                      
 800a5dc:	33 85 03 0e 	sb (sp+782),r5                                 
 800a5e0:	34 05 ff fe 	mvi r5,-2                                      
 800a5e4:	33 85 03 0f 	sb (sp+783),r5                                 
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
 800a5e8:	37 81 03 08 	addi r1,sp,776                                 
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
	(rqdata->media != 0)) {                                              
      const char valid_media_codes[] =                                
 800a5ec:	34 05 ff ff 	mvi r5,-1                                      
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
 800a5f0:	b9 a0 10 00 	mv r2,r13                                      
 800a5f4:	34 03 00 09 	mvi r3,9                                       
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
	(rqdata->media != 0)) {                                              
      const char valid_media_codes[] =                                
 800a5f8:	33 85 03 10 	sb (sp+784),r5                                 
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
 800a5fc:	f8 00 4b 56 	calli 801d354 <memchr>                         
 800a600:	44 20 04 5d 	be r1,r0,800b774 <msdos_format+0x13ec>         
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
	errno = EINVAL;                                                      
      }                                                               
      else {                                                          
	fmt_params->media_code = rqdata->media;                              
 800a604:	33 8d 02 9d 	sb (sp+669),r13                                <== NOT EXECUTED
 800a608:	34 0c 00 01 	mvi r12,1                                      <== NOT EXECUTED
  }                                                                   
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
 800a60c:	2b 8d 02 88 	lw r13,(sp+648)                                
 800a610:	45 a0 01 d5 	be r13,r0,800ad64 <msdos_format+0x9dc>         
    fmt_params->root_dir_start_sec =                                  
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
 800a614:	43 81 02 9c 	lbu r1,(sp+668)                                
 800a618:	2b 82 02 7c 	lw r2,(sp+636)                                 
 800a61c:	fb ff db 20 	calli 800129c <__mulsi3>                       
 800a620:	b5 61 58 00 	add r11,r11,r1                                 
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
    fmt_params->root_dir_start_sec =                                  
 800a624:	5b 8b 02 8c 	sw (sp+652),r11                                
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->root_dir_sectors;  
 800a628:	5b 8d 02 90 	sw (sp+656),r13                                
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
  }                                                                   
  /*                                                                  
   * determine usable OEMName                                         
   */                                                                 
  if (ret_val == 0) {                                                 
 800a62c:	2b 81 00 48 	lw r1,(sp+72)                                  
 800a630:	5c 20 01 bb 	bne r1,r0,800ad1c <msdos_format+0x994>         
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
 800a634:	78 05 08 02 	mvhi r5,0x802                                  
 800a638:	38 a5 ff e4 	ori r5,r5,0xffe4                               
    if ((rqdata != NULL) &&                                           
 800a63c:	47 61 00 03 	be fp,r1,800a648 <msdos_format+0x2c0>          
	(rqdata->OEMName != NULL)) {                                         
 800a640:	2b 65 00 00 	lw r5,(fp+0)                                   
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
 800a644:	44 a0 04 1f 	be r5,r0,800b6c0 <msdos_format+0x1338>         <== NEVER TAKEN
 800a648:	78 06 08 03 	mvhi r6,0x803                                  
 800a64c:	38 c6 22 78 	ori r6,r6,0x2278                               
 800a650:	28 c7 00 00 	lw r7,(r6+0)                                   
 800a654:	37 84 02 a0 	addi r4,sp,672                                 
}                                                                     
                                                                      
/*=========================================================================*\
| Function:                                                                 |
\*-------------------------------------------------------------------------*/
int msdos_format                                                      
 800a658:	37 89 02 a8 	addi r9,sp,680                                 
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
 800a65c:	34 0a 00 20 	mvi r10,32                                     
 800a660:	e0 00 00 40 	bi 800a760 <msdos_format+0x3d8>                
   */                                                                 
  if (ret_val == 0) {                                                 
    /*                                                                
     * Read the current MBR to obtain the partition table.            
     */                                                               
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a664:	78 03 08 03 	mvhi r3,0x803                                  
 800a668:	bb 60 08 00 	mv r1,fp                                       
 800a66c:	34 02 00 02 	mvi r2,2                                       
 800a670:	38 63 00 a0 	ori r3,r3,0xa0                                 
 800a674:	fb ff fe 91 	calli 800a0b8 <msdos_format_printf>            
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
 800a678:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800a67c:	34 02 00 00 	mvi r2,0                                       
 800a680:	34 03 00 00 	mvi r3,0                                       
    /*                                                                
     * Read the current MBR to obtain the partition table.            
     */                                                               
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
                         "read MRB sector\n");                        
    ret_val = msdos_format_read_sec(fd,                               
 800a684:	2b 8b 02 6c 	lw r11,(sp+620)                                
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
 800a688:	f8 00 22 d5 	calli 80131dc <lseek>                          
 800a68c:	48 01 00 07 	bg r0,r1,800a6a8 <msdos_format+0x320>          <== NEVER TAKEN
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
 800a690:	2b 81 00 4c 	lw r1,(sp+76)                                  
    /*                                                                
     * Read the current MBR to obtain the partition table.            
     */                                                               
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
                         "read MRB sector\n");                        
    ret_val = msdos_format_read_sec(fd,                               
 800a694:	37 8c 00 6c 	addi r12,sp,108                                
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
 800a698:	b9 80 10 00 	mv r2,r12                                      
 800a69c:	b9 60 18 00 	mv r3,r11                                      
 800a6a0:	f8 00 23 d2 	calli 80135e8 <read>                           
 800a6a4:	4c 20 00 13 	bge r1,r0,800a6f0 <msdos_format+0x368>         <== ALWAYS TAKEN
  /*                                                                  
   * write FAT entry 0 as (0xffffff00|Media_type)EOC,                 
   * write FAT entry 1 as EOC                                         
   * allocate directory in a FAT32 FS                                 
   */                                                                 
  if (ret_val == 0) {                                                 
 800a6a8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800a6ac:	5b 81 00 48 	sw (sp+72),r1                                  <== NOT EXECUTED
 800a6b0:	e3 ff ff 74 	bi 800a480 <msdos_format+0xf8>                 <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
 800a6b4:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 800a6b8:	bb 60 08 00 	mv r1,fp                                       <== NOT EXECUTED
 800a6bc:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a6c0:	38 63 00 14 	ori r3,r3,0x14                                 <== NOT EXECUTED
 800a6c4:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 800a6c8:	fb ff fe 7c 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
 800a6cc:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 800a6d0:	bb 60 08 00 	mv r1,fp                                       <== NOT EXECUTED
 800a6d4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 800a6d8:	38 63 00 24 	ori r3,r3,0x24                                 <== NOT EXECUTED
 800a6dc:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 800a6e0:	fb ff fe 76 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
 800a6e4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800a6e8:	5b 81 00 48 	sw (sp+72),r1                                  <== NOT EXECUTED
 800a6ec:	e3 ff ff 61 	bi 800a470 <msdos_format+0xe8>                 <== NOT EXECUTED
    ret_val = msdos_format_read_sec(fd,                               
                                    0,                                
                                    fmt_params.bytes_per_sector,      
                                    tmp_sec);                         
    if (ret_val == 0) {                                               
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
 800a6f0:	78 03 08 03 	mvhi r3,0x803                                  
 800a6f4:	38 63 00 e4 	ori r3,r3,0xe4                                 
 800a6f8:	bb 60 08 00 	mv r1,fp                                       
 800a6fc:	34 02 00 02 	mvi r2,2                                       
 800a700:	fb ff fe 6e 	calli 800a0b8 <msdos_format_printf>            
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
 800a704:	2b 8b 02 70 	lw r11,(sp+624)                                
 800a708:	38 03 ff ff 	mvu r3,0xffff                                  
 800a70c:	55 63 01 fa 	bgu r11,r3,800aef4 <msdos_format+0xb6c>        
 800a710:	01 65 00 01 	srui r5,r11,1                                  
 800a714:	21 79 00 ff 	andi r25,r11,0xff                              
 800a718:	00 a5 00 01 	srui r5,r5,1                                   
 800a71c:	34 18 00 00 	mvi r24,0                                      
 800a720:	00 a5 00 01 	srui r5,r5,1                                   
 800a724:	34 17 00 00 	mvi r23,0                                      
 800a728:	00 a5 00 01 	srui r5,r5,1                                   
 800a72c:	34 16 00 00 	mvi r22,0                                      
 800a730:	00 a5 00 01 	srui r5,r5,1                                   
 800a734:	34 15 00 00 	mvi r21,0                                      
 800a738:	00 a5 00 01 	srui r5,r5,1                                   
 800a73c:	00 a5 00 01 	srui r5,r5,1                                   
 800a740:	00 a5 00 01 	srui r5,r5,1                                   
 800a744:	20 b4 00 ff 	andi r20,r5,0xff                               
 800a748:	e0 00 02 00 	bi 800af48 <msdos_format+0xbc0>                
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->OEMName)-1);                              
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
	*to++ = *from++;                                                     
 800a74c:	30 81 ff ff 	sb (r4+-1),r1                                  
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
      }                                                               
      *to = '\0';                                                     
 800a750:	30 80 00 00 	sb (r4+0),r0                                   
 800a754:	34 84 00 01 	addi r4,r4,1                                   
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->OEMName)-1);                              
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
	*to++ = *from++;                                                     
 800a758:	34 a5 00 01 	addi r5,r5,1                                   
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
	(rqdata->OEMName != NULL)) {                                         
      from = rqdata->OEMName;                                         
    }                                                                 
    for (cnt = 0;                                                     
 800a75c:	44 89 00 0a 	be r4,r9,800a784 <msdos_format+0x3fc>          <== NEVER TAKEN
	 cnt < (sizeof(fmt_params->OEMName)-1);                              
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
 800a760:	40 a1 00 00 	lbu r1,(r5+0)                                  
 800a764:	b4 e1 10 00 	add r2,r7,r1                                   
 800a768:	40 42 00 01 	lbu r2,(r2+1)                                  
 800a76c:	20 42 00 97 	andi r2,r2,0x97                                
 800a770:	5c 40 ff f7 	bne r2,r0,800a74c <msdos_format+0x3c4>         
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
 800a774:	30 8a ff ff 	sb (r4+-1),r10                                 
      }                                                               
      *to = '\0';                                                     
 800a778:	30 80 00 00 	sb (r4+0),r0                                   
 800a77c:	34 84 00 01 	addi r4,r4,1                                   
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
	(rqdata->OEMName != NULL)) {                                         
      from = rqdata->OEMName;                                         
    }                                                                 
    for (cnt = 0;                                                     
 800a780:	5c 89 ff f8 	bne r4,r9,800a760 <msdos_format+0x3d8>         
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
 800a784:	47 60 03 89 	be fp,r0,800b5a8 <msdos_format+0x1220>         <== NEVER TAKEN
	(rqdata->VolLabel != NULL)) {                                        
 800a788:	2b 65 00 04 	lw r5,(fp+4)                                   
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
 800a78c:	44 a0 03 87 	be r5,r0,800b5a8 <msdos_format+0x1220>         
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
 800a790:	34 06 00 01 	mvi r6,1                                       
 800a794:	33 86 02 b4 	sb (sp+692),r6                                 
}                                                                     
                                                                      
/*=========================================================================*\
| Function:                                                                 |
\*-------------------------------------------------------------------------*/
int msdos_format                                                      
 800a798:	37 82 02 6c 	addi r2,sp,620                                 
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
 800a79c:	37 84 02 a9 	addi r4,sp,681                                 
}                                                                     
                                                                      
/*=========================================================================*\
| Function:                                                                 |
\*-------------------------------------------------------------------------*/
int msdos_format                                                      
 800a7a0:	34 48 00 48 	addi r8,r2,72                                  
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
 800a7a4:	34 09 00 20 	mvi r9,32                                      
 800a7a8:	e0 00 01 7c 	bi 800ad98 <msdos_format+0xa10>                
static inline int rtems_disk_fd_get_block_count(                      
  int fd,                                                             
  rtems_blkdev_bnum *block_count                                      
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETSIZE, block_count);                 
 800a7ac:	78 04 08 03 	mvhi r4,0x803                                  
 800a7b0:	38 84 00 fc 	ori r4,r4,0xfc                                 
 800a7b4:	28 82 00 00 	lw r2,(r4+0)                                   
 800a7b8:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800a7bc:	37 83 02 70 	addi r3,sp,624                                 
 800a7c0:	f8 00 22 61 	calli 8013144 <ioctl>                          
 800a7c4:	5b 81 00 48 	sw (sp+72),r1                                  
    ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
  }                                                                   
  if (ret_val == 0) {                                                 
    ret_val = rtems_disk_fd_get_block_count(fd, &fmt_params->totl_sector_cnt);
  }                                                                   
  if (ret_val == 0) {                                                 
 800a7c8:	5c 20 ff 53 	bne r1,r0,800a514 <msdos_format+0x18c>         <== NEVER TAKEN
    total_size = fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;
 800a7cc:	2b 8c 02 6c 	lw r12,(sp+620)                                
 800a7d0:	2b 8b 02 70 	lw r11,(sp+624)                                
 800a7d4:	b9 80 10 00 	mv r2,r12                                      
 800a7d8:	b9 60 08 00 	mv r1,r11                                      
 800a7dc:	fb ff da b0 	calli 800129c <__mulsi3>                       
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a7e0:	78 06 08 03 	mvhi r6,0x803                                  
  }                                                                   
  if (ret_val == 0) {                                                 
    ret_val = rtems_disk_fd_get_block_count(fd, &fmt_params->totl_sector_cnt);
  }                                                                   
  if (ret_val == 0) {                                                 
    total_size = fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;
 800a7e4:	b8 20 70 00 	mv r14,r1                                      
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a7e8:	b8 c0 18 00 	mv r3,r6                                       
 800a7ec:	bb 60 08 00 	mv r1,fp                                       
 800a7f0:	34 02 00 02 	mvi r2,2                                       
 800a7f4:	38 63 00 34 	ori r3,r3,0x34                                 
 800a7f8:	b9 80 20 00 	mv r4,r12                                      
 800a7fc:	b9 60 28 00 	mv r5,r11                                      
 800a800:	34 06 00 00 	mvi r6,0                                       
 800a804:	b9 c0 38 00 	mv r7,r14                                      
 800a808:	fb ff fe 2c 	calli 800a0b8 <msdos_format_printf>            
                                                                      
  /*                                                                  
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
 800a80c:	2b 81 00 48 	lw r1,(sp+72)                                  
 800a810:	47 61 03 b2 	be fp,r1,800b6d8 <msdos_format+0x1350>         <== NEVER TAKEN
	(rqdata->fat_num == 0)) {                                            
 800a814:	2b 64 00 0c 	lw r4,(fp+12)                                  
                                                                      
  /*                                                                  
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
 800a818:	5c 80 01 96 	bne r4,r0,800ae70 <msdos_format+0xae8>         
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a81c:	78 04 08 03 	mvhi r4,0x803                                  
 800a820:	b8 80 18 00 	mv r3,r4                                       
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
 800a824:	34 05 00 02 	mvi r5,2                                       
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a828:	bb 60 08 00 	mv r1,fp                                       
 800a82c:	34 02 00 02 	mvi r2,2                                       
 800a830:	38 63 00 70 	ori r3,r3,0x70                                 
 800a834:	34 04 00 02 	mvi r4,2                                       
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
 800a838:	33 85 02 9c 	sb (sp+668),r5                                 
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800a83c:	fb ff fe 1f 	calli 800a0b8 <msdos_format_printf>            
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
                                                                      
    if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {         
 800a840:	2b 6b 00 08 	lw r11,(fp+8)                                  
 800a844:	45 60 01 88 	be r11,r0,800ae64 <msdos_format+0xadc>         
 800a848:	b5 6b 20 00 	add r4,r11,r11                                 
 800a84c:	b4 8b 20 00 	add r4,r4,r11                                  
 800a850:	b4 84 20 00 	add r4,r4,r4                                   
 800a854:	b4 84 20 00 	add r4,r4,r4                                   
 800a858:	b4 84 20 00 	add r4,r4,r4                                   
 800a85c:	b4 84 20 00 	add r4,r4,r4                                   
 800a860:	b4 84 28 00 	add r5,r4,r4                                   
 800a864:	b4 a5 28 00 	add r5,r5,r5                                   
 800a868:	b4 a5 28 00 	add r5,r5,r5                                   
 800a86c:	b4 a5 28 00 	add r5,r5,r5                                   
 800a870:	b4 85 28 00 	add r5,r4,r5                                   
 800a874:	b4 ab 28 00 	add r5,r5,r11                                  
 800a878:	b4 a5 20 00 	add r4,r5,r5                                   
 800a87c:	b4 84 20 00 	add r4,r4,r4                                   
 800a880:	b4 a4 20 00 	add r4,r5,r4                                   
      fat12_sect_per_clust = rqdata->sectors_per_cluster;             
      fat16_sect_per_clust = rqdata->sectors_per_cluster;             
    }                                                                 
                                                                      
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
 800a884:	2b 8f 02 70 	lw r15,(sp+624)                                
 800a888:	51 e4 01 67 	bgeu r15,r4,800ae24 <msdos_format+0xa9c>       
      fmt_params->fattype = FAT_FAT12;                                
 800a88c:	34 04 00 01 	mvi r4,1                                       
 800a890:	33 84 02 9e 	sb (sp+670),r4                                 
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
 800a894:	34 04 00 02 	mvi r4,2                                       
 800a898:	5b 84 02 78 	sw (sp+632),r4                                 
  msdos_format_param_t               *fmt_params )                    
{                                                                     
  int      ret_val = -1;                                              
  uint32_t onebit;                                                    
                                                                      
  if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {          
 800a89c:	47 60 00 04 	be fp,r0,800a8ac <msdos_format+0x524>          
 800a8a0:	2b 64 00 08 	lw r4,(fp+8)                                   
 800a8a4:	b8 80 28 00 	mv r5,r4                                       
 800a8a8:	5c 80 00 03 	bne r4,r0,800a8b4 <msdos_format+0x52c>         
 800a8ac:	2b 85 02 78 	lw r5,(sp+632)                                 
 800a8b0:	b8 a0 20 00 	mv r4,r5                                       
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800a8b4:	2b 8d 02 6c 	lw r13,(sp+620)                                
 800a8b8:	34 0c 00 08 	mvi r12,8                                      
 800a8bc:	34 0b 00 80 	mvi r11,128                                    
 800a8c0:	38 01 80 00 	mvu r1,0x8000                                  
 800a8c4:	b9 a0 10 00 	mv r2,r13                                      
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800a8c8:	35 8c ff ff 	addi r12,r12,-1                                
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
 800a8cc:	55 64 00 04 	bgu r11,r4,800a8dc <msdos_format+0x554>        <== ALWAYS TAKEN
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800a8d0:	f8 00 92 1a 	calli 802f138 <__udivsi3>                      
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
 800a8d4:	50 2b 00 0a 	bgeu r1,r11,800a8fc <msdos_format+0x574>       <== ALWAYS TAKEN
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
 800a8d8:	b9 60 28 00 	mv r5,r11                                      <== NOT EXECUTED
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800a8dc:	01 6b 00 01 	srui r11,r11,1                                 
 800a8e0:	45 80 03 92 	be r12,r0,800b728 <msdos_format+0x13a0>        <== NEVER TAKEN
 800a8e4:	b8 a0 20 00 	mv r4,r5                                       
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800a8e8:	38 01 80 00 	mvu r1,0x8000                                  
 800a8ec:	b9 a0 10 00 	mv r2,r13                                      
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800a8f0:	35 8c ff ff 	addi r12,r12,-1                                
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
 800a8f4:	55 64 ff fa 	bgu r11,r4,800a8dc <msdos_format+0x554>        
 800a8f8:	e3 ff ff f6 	bi 800a8d0 <msdos_format+0x548>                
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
 800a8fc:	43 85 02 9e 	lbu r5,(sp+670)                                
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
 800a900:	5b 8b 02 78 	sw (sp+632),r11                                
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
 800a904:	34 04 00 ff 	mvi r4,255                                     
 800a908:	44 a4 03 83 	be r5,r4,800b714 <msdos_format+0x138c>         <== NEVER TAKEN
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800a90c:	45 e0 01 2a 	be r15,r0,800adb4 <msdos_format+0xa2c>         <== NEVER TAKEN
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
 800a910:	78 05 40 00 	mvhi r5,0x4000                                 
 800a914:	b5 c5 28 00 	add r5,r14,r5                                  
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800a918:	7f 64 00 00 	cmpnei r4,fp,0                                 
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
 800a91c:	f5 c5 08 00 	cmpgu r1,r14,r5                                
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800a920:	5b 84 00 64 	sw (sp+100),r4                                 
 800a924:	5b 84 00 5c 	sw (sp+92),r4                                  
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
 800a928:	b8 a0 10 00 	mv r2,r5                                       
 800a92c:	78 04 08 03 	mvhi r4,0x803                                  
 800a930:	34 03 00 1e 	mvi r3,30                                      
 800a934:	5b 84 00 58 	sw (sp+88),r4                                  
 800a938:	f8 00 7c d4 	calli 8029c88 <__lshrdi3>                      
 800a93c:	5b 82 00 68 	sw (sp+104),r2                                 
 800a940:	2b 82 00 58 	lw r2,(sp+88)                                  
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800a944:	2b 81 00 5c 	lw r1,(sp+92)                                  
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
 800a948:	5b 80 00 50 	sw (sp+80),r0                                  
 800a94c:	38 42 00 84 	ori r2,r2,0x84                                 
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800a950:	5b 81 00 60 	sw (sp+96),r1                                  
 800a954:	5b 82 00 58 	sw (sp+88),r2                                  
      /*                                                              
       * Skip aligning structures or d align them                     
       */                                                             
      if (ret_val == 0 && rqdata != NULL)                             
 800a958:	2b 83 00 60 	lw r3,(sp+96)                                  
 800a95c:	44 60 00 03 	be r3,r0,800a968 <msdos_format+0x5e0>          
        fmt_params->skip_alignment = rqdata->skip_alignment;          
 800a960:	43 64 00 16 	lbu r4,(fp+22)                                 
 800a964:	33 84 02 bc 	sb (sp+700),r4                                 
                                                                      
      if (ret_val == 0) {                                             
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
 800a968:	2b 84 02 78 	lw r4,(sp+632)                                 
 800a96c:	2b 83 00 58 	lw r3,(sp+88)                                  
 800a970:	bb 60 08 00 	mv r1,fp                                       
 800a974:	34 02 00 02 	mvi r2,2                                       
 800a978:	fb ff fd d0 	calli 800a0b8 <msdos_format_printf>            
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
 800a97c:	43 84 02 9e 	lbu r4,(sp+670)                                
 800a980:	34 01 00 04 	mvi r1,4                                       
 800a984:	44 81 01 18 	be r4,r1,800ade4 <msdos_format+0xa5c>          
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
 800a988:	2b 82 00 5c 	lw r2,(sp+92)                                  
          fmt_params->fsinfo_sec = 1;                                 
                                                                      
        }                                                             
        else {                                                        
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
 800a98c:	34 01 00 01 	mvi r1,1                                       
 800a990:	5b 81 02 74 	sw (sp+628),r1                                 
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
 800a994:	44 40 00 ef 	be r2,r0,800ad50 <msdos_format+0x9c8>          
              (rqdata->files_per_root_dir > 0)) {                     
 800a998:	2b 65 00 10 	lw r5,(fp+16)                                  
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
 800a99c:	44 a0 00 ed 	be r5,r0,800ad50 <msdos_format+0x9c8>          
 800a9a0:	34 a5 ff ff 	addi r5,r5,-1                                  
            else {                                                    
              fmt_params->files_per_root_dir = 64;                    
            }                                                         
          }                                                           
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
                                           (2*fmt_params->bytes_per_sector/
 800a9a4:	2b 90 02 6c 	lw r16,(sp+620)                                
                                           FAT_DIRENTRY_SIZE-1));     
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
 800a9a8:	b8 80 78 00 	mv r15,r4                                      
            else {                                                    
              fmt_params->files_per_root_dir = 64;                    
            }                                                         
          }                                                           
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
                                           (2*fmt_params->bytes_per_sector/
 800a9ac:	b6 10 20 00 	add r4,r16,r16                                 
 800a9b0:	00 84 00 01 	srui r4,r4,1                                   
 800a9b4:	00 84 00 01 	srui r4,r4,1                                   
 800a9b8:	00 84 00 01 	srui r4,r4,1                                   
 800a9bc:	00 84 00 01 	srui r4,r4,1                                   
 800a9c0:	00 84 00 01 	srui r4,r4,1                                   
            }                                                         
            else {                                                    
              fmt_params->files_per_root_dir = 64;                    
            }                                                         
          }                                                           
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
 800a9c4:	b4 a4 58 00 	add r11,r5,r4                                  
                                           (2*fmt_params->bytes_per_sector/
                                           FAT_DIRENTRY_SIZE-1));     
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
 800a9c8:	b8 80 10 00 	mv r2,r4                                       
 800a9cc:	b9 60 08 00 	mv r1,r11                                      
 800a9d0:	f8 00 91 ea 	calli 802f178 <__umodsi3>                      
 800a9d4:	c9 61 28 00 	sub r5,r11,r1                                  
 800a9d8:	b4 a5 20 00 	add r4,r5,r5                                   
 800a9dc:	b4 84 20 00 	add r4,r4,r4                                   
 800a9e0:	b4 84 20 00 	add r4,r4,r4                                   
 800a9e4:	2b 92 02 74 	lw r18,(sp+628)                                
 800a9e8:	b4 84 20 00 	add r4,r4,r4                                   
 800a9ec:	5b 85 02 84 	sw (sp+644),r5                                 
 800a9f0:	b4 84 20 00 	add r4,r4,r4                                   
                                            /FAT_DIRENTRY_SIZE));     
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
          (((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)      
            + fmt_params->bytes_per_sector - 1)                       
 800a9f4:	36 17 ff ff 	addi r23,r16,-1                                
           / fmt_params->bytes_per_sector);                           
 800a9f8:	b6 e4 08 00 	add r1,r23,r4                                  
 800a9fc:	ba 00 10 00 	mv r2,r16                                      
 800aa00:	f8 00 91 ce 	calli 802f138 <__udivsi3>                      
      if (ret_val == 0) {                                             
        /*                                                            
         * check values to get legal arrangement of FAT type and cluster count
         */                                                           
                                                                      
        ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
 800aa04:	2b 95 02 70 	lw r21,(sp+624)                                
 800aa08:	2b 8d 02 78 	lw r13,(sp+632)                                
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
          (((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)      
            + fmt_params->bytes_per_sector - 1)                       
           / fmt_params->bytes_per_sector);                           
 800aa0c:	b8 20 a0 00 	mv r20,r1                                      
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
 800aa10:	ba 00 10 00 	mv r2,r16                                      
 800aa14:	38 01 80 00 	mvu r1,0x8000                                  
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
                                            (2*fmt_params->bytes_per_sector
                                            /FAT_DIRENTRY_SIZE));     
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
 800aa18:	5b 94 02 88 	sw (sp+648),r20                                
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
 800aa1c:	f8 00 91 c7 	calli 802f138 <__udivsi3>                      
 800aa20:	b8 20 20 00 	mv r4,r1                                       
      if (ret_val == 0) {                                             
        /*                                                            
         * check values to get legal arrangement of FAT type and cluster count
         */                                                           
                                                                      
        ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
 800aa24:	ba a0 c8 00 	mv r25,r21                                     
                                                        fmt_params->bytes_per_sector,
                                                        fmt_params->totl_sector_cnt,
                                                        fmt_params->rsvd_sector_cnt,
                                                        fmt_params->root_dir_sectors,
                                                        fmt_params->fat_num,
 800aa28:	43 96 02 9c 	lbu r22,(sp+668)                               
                                                        fmt_params->sectors_per_cluster,
                                                        fmt_params->skip_alignment,
 800aa2c:	43 91 02 bc 	lbu r17,(sp+700)                               
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
 800aa30:	50 2d 00 03 	bgeu r1,r13,800aa3c <msdos_format+0x6b4>       <== ALWAYS TAKEN
    sectors_per_cluster /= 2;                                         
 800aa34:	01 ad 00 01 	srui r13,r13,1                                 <== NOT EXECUTED
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
 800aa38:	55 a4 ff ff 	bgu r13,r4,800aa34 <msdos_format+0x6ac>        <== NOT EXECUTED
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800aa3c:	36 83 ff ff 	addi r3,r20,-1                                 
 800aa40:	36 58 ff ff 	addi r24,r18,-1                                
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    }                                                                 
    else if (fattype == FAT_FAT16) {                                  
 800aa44:	34 13 00 02 	mvi r19,2                                      
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800aa48:	5b 83 00 54 	sw (sp+84),r3                                  
  else                                                                
    return sectors;                                                   
 800aa4c:	ba 40 18 00 	mv r3,r18                                      
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800aa50:	5e 20 00 04 	bne r17,r0,800aa60 <msdos_format+0x6d8>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800aa54:	b7 0d 20 00 	add r4,r24,r13                                 
 800aa58:	c8 0d 18 00 	sub r3,r0,r13                                  
 800aa5c:	a0 64 18 00 	and r3,r3,r4                                   
     * - compute storage size for FAT                                 
     * - subtract from total cluster count                            
     */                                                               
    fatdata_sect_cnt = total_sector_cnt                               
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
 800aa60:	34 04 00 01 	mvi r4,1                                       
     * compute number of data clusters for current data:              
     * - compute cluster count for data AND fat                       
     * - compute storage size for FAT                                 
     * - subtract from total cluster count                            
     */                                                               
    fatdata_sect_cnt = total_sector_cnt                               
 800aa64:	ca a3 18 00 	sub r3,r21,r3                                  
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
 800aa68:	45 e4 00 68 	be r15,r4,800ac08 <msdos_format+0x880>         
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    }                                                                 
    else if (fattype == FAT_FAT16) {                                  
 800aa6c:	45 f3 00 84 	be r15,r19,800ac7c <msdos_format+0x8f4>        
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 2;                  
    }                                                                 
    else { /* FAT32 */                                                
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
 800aa70:	b8 60 08 00 	mv r1,r3                                       
 800aa74:	b9 a0 10 00 	mv r2,r13                                      
 800aa78:	f8 00 91 b0 	calli 802f138 <__udivsi3>                      
      fat_capacity        = fatdata_cluster_cnt * 4;                  
 800aa7c:	b4 21 18 00 	add r3,r1,r1                                   
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 2;                  
    }                                                                 
    else { /* FAT32 */                                                
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
 800aa80:	b8 20 58 00 	mv r11,r1                                      
      fat_capacity        = fatdata_cluster_cnt * 4;                  
 800aa84:	b4 63 18 00 	add r3,r3,r3                                   
    }                                                                 
                                                                      
    sectors_per_fat = ((fat_capacity                                  
 800aa88:	b4 77 08 00 	add r1,r3,r23                                  
 800aa8c:	ba 00 10 00 	mv r2,r16                                      
 800aa90:	f8 00 91 aa 	calli 802f138 <__udivsi3>                      
			+ (bytes_per_sector - 1))                                          
		       / bytes_per_sector);                                         
                                                                      
    fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,    
 800aa94:	ba c0 10 00 	mv r2,r22                                      
 800aa98:	fb ff da 01 	calli 800129c <__mulsi3>                       
 800aa9c:	b8 20 70 00 	mv r14,r1                                      
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800aaa0:	35 a4 ff ff 	addi r4,r13,-1                                 
 800aaa4:	5e 20 00 05 	bne r17,r0,800aab8 <msdos_format+0x730>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800aaa8:	35 a4 ff ff 	addi r4,r13,-1                                 
 800aaac:	b4 24 70 00 	add r14,r1,r4                                  
 800aab0:	c8 0d 18 00 	sub r3,r0,r13                                  
 800aab4:	a1 c3 70 00 	and r14,r14,r3                                 
                                        skip_alignment);              
                                                                      
    *data_cluster_cnt = (fatdata_cluster_cnt -                        
			((fat_sectors_cnt                                                  
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
 800aab8:	b4 8e 08 00 	add r1,r4,r14                                  
 800aabc:	b9 a0 10 00 	mv r2,r13                                      
 800aac0:	f8 00 91 9e 	calli 802f138 <__udivsi3>                      
                                                                      
    fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,    
                                        sectors_per_cluster,          
                                        skip_alignment);              
                                                                      
    *data_cluster_cnt = (fatdata_cluster_cnt -                        
 800aac4:	c9 61 58 00 	sub r11,r11,r1                                 
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
 800aac8:	34 01 00 01 	mvi r1,1                                       
 800aacc:	45 e1 00 5d 	be r15,r1,800ac40 <msdos_format+0x8b8>         
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
    }                                                                 
    else {                                                            
      finished = true;                                                
 800aad0:	34 0c 00 01 	mvi r12,1                                      
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
 800aad4:	45 f3 00 65 	be r15,r19,800ac68 <msdos_format+0x8e0>        
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
        finished = true;                                              
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
 800aad8:	ba 00 10 00 	mv r2,r16                                      
 800aadc:	b9 a0 08 00 	mv r1,r13                                      
 800aae0:	fb ff d9 ef 	calli 800129c <__mulsi3>                       
 800aae4:	38 02 80 00 	mvu r2,0x8000                                  
 800aae8:	54 22 00 02 	bgu r1,r2,800aaf0 <msdos_format+0x768>         
	> MS_BYTES_PER_CLUSTER_LIMIT) {                                      
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
 800aaec:	45 80 ff d8 	be r12,r0,800aa4c <msdos_format+0x6c4>         
                                                                      
  *sectors_per_cluster_adj = sectors_per_cluster;                     
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;               
 800aaf0:	ba c0 10 00 	mv r2,r22                                      
 800aaf4:	b9 c0 08 00 	mv r1,r14                                      
 800aaf8:	f8 00 91 90 	calli 802f138 <__udivsi3>                      
 800aafc:	5b 81 02 7c 	sw (sp+636),r1                                 
static uint8_t                                                        
msdos_get_fat_type( const uint32_t bytes_per_sector,                  
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
 800ab00:	ba 00 10 00 	mv r2,r16                                      
 800ab04:	34 01 10 01 	mvi r1,4097                                    
                                                        fmt_params->sectors_per_cluster,
                                                        fmt_params->skip_alignment,
                                                        §ors_per_cluster_adj,
                                                        &fmt_params->sectors_per_fat,
                                                        &data_clusters_cnt);
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;    
 800ab08:	5b 8d 02 78 	sw (sp+632),r13                                
static uint8_t                                                        
msdos_get_fat_type( const uint32_t bytes_per_sector,                  
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
 800ab0c:	f8 00 91 8b 	calli 802f138 <__udivsi3>                      
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
 800ab10:	34 03 0f f4 	mvi r3,4084                                    
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
 800ab14:	f0 2d 30 00 	cmpgeu r6,r1,r13                               
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
 800ab18:	f0 6b 28 00 	cmpgeu r5,r3,r11                               
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
 800ab1c:	34 04 00 01 	mvi r4,1                                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
 800ab20:	a0 c5 60 00 	and r12,r6,r5                                  
 800ab24:	5d 80 00 0d 	bne r12,r0,800ab58 <msdos_format+0x7d0>        
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
 800ab28:	38 01 80 01 	mvu r1,0x8001                                  
 800ab2c:	ba 00 10 00 	mv r2,r16                                      
 800ab30:	f8 00 91 82 	calli 802f138 <__udivsi3>                      
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
  }                                                                   
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN                  
 800ab34:	38 04 ff f4 	mvu r4,0xfff4                                  
           && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT16 ) {
 800ab38:	f0 2d 68 00 	cmpgeu r13,r1,r13                              
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
  }                                                                   
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN                  
 800ab3c:	f0 8b 58 00 	cmpgeu r11,r4,r11                              
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
 800ab40:	34 01 ff fe 	mvi r1,-2                                      
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
  }                                                                   
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN                  
 800ab44:	a1 ab 68 00 	and r13,r13,r11                                
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
 800ab48:	fd ac 20 00 	cmpne r4,r13,r12                               
 800ab4c:	c8 04 20 00 	sub r4,r0,r4                                   
 800ab50:	a0 81 20 00 	and r4,r4,r1                                   
 800ab54:	34 84 00 04 	addi r4,r4,4                                   
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;    
        fat_type = fmt_params->fattype;                               
                                                                      
        /* Correct the FAT type according to the new data cluster count */
        if ( ret_val == 0 ) {                                         
          fmt_params->fattype = msdos_get_fat_type(                   
 800ab58:	33 84 02 9e 	sb (sp+670),r4                                 
            fmt_params->bytes_per_sector,                             
            fmt_params->sectors_per_cluster,                          
            data_clusters_cnt );                                      
          /* Correct sectors per cluster to the fat type specific default value */
          if (fat_type != fmt_params->fattype) {                      
 800ab5c:	44 8f fe 72 	be r4,r15,800a524 <msdos_format+0x19c>         
msdos_set_default_sectors_per_cluster_for_fattype(                    
  msdos_format_param_t *fmt_params,                                   
  const uint64_t        total_size )                                  
{                                                                     
  if (   fmt_params->fattype == FAT_FAT12                             
      || fmt_params->fattype == FAT_FAT16 ) {                         
 800ab60:	34 84 ff ff 	addi r4,r4,-1                                  
static void                                                           
msdos_set_default_sectors_per_cluster_for_fattype(                    
  msdos_format_param_t *fmt_params,                                   
  const uint64_t        total_size )                                  
{                                                                     
  if (   fmt_params->fattype == FAT_FAT12                             
 800ab64:	20 84 00 ff 	andi r4,r4,0xff                                
 800ab68:	34 02 00 01 	mvi r2,1                                       
 800ab6c:	34 0b 00 1f 	mvi r11,31                                     
 800ab70:	54 82 00 04 	bgu r4,r2,800ab80 <msdos_format+0x7f8>         
      || fmt_params->fattype == FAT_FAT16 ) {                         
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
 800ab74:	34 04 00 02 	mvi r4,2                                       
 800ab78:	5b 84 02 78 	sw (sp+632),r4                                 
 800ab7c:	e0 00 00 0b 	bi 800aba8 <msdos_format+0x820>                
 800ab80:	2b 8c 00 68 	lw r12,(sp+104)                                
 800ab84:	e0 00 00 02 	bi 800ab8c <msdos_format+0x804>                
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
 800ab88:	45 62 02 73 	be r11,r2,800b554 <msdos_format+0x11cc>        <== NEVER TAKEN
      if ( (gigs & ( 1 << b) ) != 0 )                                 
 800ab8c:	b9 60 10 00 	mv r2,r11                                      
 800ab90:	34 01 00 01 	mvi r1,1                                       
 800ab94:	fb ff d9 74 	calli 8001164 <__ashlsi3>                      
 800ab98:	a0 2c 10 00 	and r2,r1,r12                                  
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
 800ab9c:	35 6b ff ff 	addi r11,r11,-1                                
      if ( (gigs & ( 1 << b) ) != 0 )                                 
 800aba0:	44 40 ff fa 	be r2,r0,800ab88 <msdos_format+0x800>          
        break;                                                        
    }                                                                 
    fmt_params->sectors_per_cluster = 1 << b;                         
 800aba4:	5b 81 02 78 	sw (sp+632),r1                                 
  msdos_format_param_t               *fmt_params )                    
{                                                                     
  int      ret_val = -1;                                              
  uint32_t onebit;                                                    
                                                                      
  if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {          
 800aba8:	2b 83 00 5c 	lw r3,(sp+92)                                  
 800abac:	44 60 00 04 	be r3,r0,800abbc <msdos_format+0x834>          <== NEVER TAKEN
 800abb0:	2b 65 00 08 	lw r5,(fp+8)                                   
 800abb4:	b8 a0 20 00 	mv r4,r5                                       
 800abb8:	5c a0 00 03 	bne r5,r0,800abc4 <msdos_format+0x83c>         <== ALWAYS TAKEN
 800abbc:	2b 84 02 78 	lw r4,(sp+632)                                 <== NOT EXECUTED
 800abc0:	b8 80 28 00 	mv r5,r4                                       <== NOT EXECUTED
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800abc4:	34 0c 00 08 	mvi r12,8                                      
 800abc8:	34 0b 00 80 	mvi r11,128                                    
 800abcc:	38 01 80 00 	mvu r1,0x8000                                  
 800abd0:	ba 00 10 00 	mv r2,r16                                      
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800abd4:	35 8c ff ff 	addi r12,r12,-1                                
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
 800abd8:	55 65 00 04 	bgu r11,r5,800abe8 <msdos_format+0x860>        <== ALWAYS TAKEN
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800abdc:	f8 00 91 57 	calli 802f138 <__udivsi3>                      
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
 800abe0:	50 2b 00 36 	bgeu r1,r11,800acb8 <msdos_format+0x930>       <== ALWAYS TAKEN
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
 800abe4:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800abe8:	01 6b 00 01 	srui r11,r11,1                                 
 800abec:	45 80 02 db 	be r12,r0,800b758 <msdos_format+0x13d0>        <== NEVER TAKEN
 800abf0:	b8 80 28 00 	mv r5,r4                                       
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
 800abf4:	38 01 80 00 	mvu r1,0x8000                                  
 800abf8:	ba 00 10 00 	mv r2,r16                                      
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800abfc:	35 8c ff ff 	addi r12,r12,-1                                
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
 800ac00:	55 65 ff fa 	bgu r11,r5,800abe8 <msdos_format+0x860>        
 800ac04:	e3 ff ff f6 	bi 800abdc <msdos_format+0x854>                
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
  else                                                                
    return sectors;                                                   
 800ac08:	ba 80 20 00 	mv r4,r20                                      
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800ac0c:	5e 20 00 05 	bne r17,r0,800ac20 <msdos_format+0x898>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800ac10:	2b 82 00 54 	lw r2,(sp+84)                                  
 800ac14:	c8 0d 20 00 	sub r4,r0,r13                                  
 800ac18:	b4 4d 08 00 	add r1,r2,r13                                  
 800ac1c:	a0 81 20 00 	and r4,r4,r1                                   
    fatdata_sect_cnt = total_sector_cnt                               
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
 800ac20:	c8 64 08 00 	sub r1,r3,r4                                   
 800ac24:	b9 a0 10 00 	mv r2,r13                                      
 800ac28:	f8 00 91 44 	calli 802f138 <__udivsi3>                      
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
 800ac2c:	b4 21 18 00 	add r3,r1,r1                                   
 800ac30:	b4 61 18 00 	add r3,r3,r1                                   
    fatdata_sect_cnt = total_sector_cnt                               
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
 800ac34:	b8 20 58 00 	mv r11,r1                                      
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
 800ac38:	00 63 00 01 	srui r3,r3,1                                   
 800ac3c:	e3 ff ff 93 	bi 800aa88 <msdos_format+0x700>                
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
 800ac40:	34 02 0f f5 	mvi r2,4085                                    
 800ac44:	55 62 00 1a 	bgu r11,r2,800acac <msdos_format+0x924>        
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
    }                                                                 
    else {                                                            
      finished = true;                                                
 800ac48:	34 0c 00 01 	mvi r12,1                                      
    }                                                                 
    /*                                                                
     * when maximum cluster size is exceeded, we have invalid data, abort...
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
 800ac4c:	b9 a0 08 00 	mv r1,r13                                      
 800ac50:	ba 00 10 00 	mv r2,r16                                      
 800ac54:	fb ff d9 92 	calli 800129c <__mulsi3>                       
 800ac58:	34 04 10 00 	mvi r4,4096                                    
 800ac5c:	54 24 ff a5 	bgu r1,r4,800aaf0 <msdos_format+0x768>         
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
	> MS_BYTES_PER_CLUSTER_LIMIT) {                                      
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
 800ac60:	45 80 ff 7b 	be r12,r0,800aa4c <msdos_format+0x6c4>         
 800ac64:	e3 ff ff a3 	bi 800aaf0 <msdos_format+0x768>                
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
 800ac68:	38 03 ff f5 	mvu r3,0xfff5                                  
 800ac6c:	50 6b ff 9b 	bgeu r3,r11,800aad8 <msdos_format+0x750>       
      sectors_per_cluster *= 2;                                       
 800ac70:	b5 ad 68 00 	add r13,r13,r13                                
 800ac74:	34 0c 00 00 	mvi r12,0                                      
 800ac78:	e3 ff ff 98 	bi 800aad8 <msdos_format+0x750>                
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
  else                                                                
    return sectors;                                                   
 800ac7c:	ba 80 08 00 	mv r1,r20                                      
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800ac80:	5e 20 00 05 	bne r17,r0,800ac94 <msdos_format+0x90c>        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800ac84:	2b 84 00 54 	lw r4,(sp+84)                                  
 800ac88:	b4 8d 08 00 	add r1,r4,r13                                  
 800ac8c:	c8 0d 20 00 	sub r4,r0,r13                                  
 800ac90:	a0 81 08 00 	and r1,r4,r1                                   
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    }                                                                 
    else if (fattype == FAT_FAT16) {                                  
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
 800ac94:	c8 61 08 00 	sub r1,r3,r1                                   
 800ac98:	b9 a0 10 00 	mv r2,r13                                      
 800ac9c:	f8 00 91 27 	calli 802f138 <__udivsi3>                      
 800aca0:	b8 20 58 00 	mv r11,r1                                      
      fat_capacity        = fatdata_cluster_cnt * 2;                  
 800aca4:	b4 21 18 00 	add r3,r1,r1                                   
 800aca8:	e3 ff ff 78 	bi 800aa88 <msdos_format+0x700>                
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
 800acac:	b5 ad 68 00 	add r13,r13,r13                                
 800acb0:	34 0c 00 00 	mvi r12,0                                      
 800acb4:	e3 ff ff e6 	bi 800ac4c <msdos_format+0x8c4>                
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
 800acb8:	5b 8b 02 78 	sw (sp+632),r11                                
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
 800acbc:	34 05 00 00 	mvi r5,0                                       
                                                               total_size );
            ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
                                                                  fmt_params );
          }                                                           
        }                                                             
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {   
 800acc0:	43 84 02 9e 	lbu r4,(sp+670)                                
 800acc4:	2b 81 00 50 	lw r1,(sp+80)                                  
 800acc8:	ba a0 c8 00 	mv r25,r21                                     
 800accc:	fc 8f 38 00 	cmpne r7,r4,r15                                
 800acd0:	74 26 00 01 	cmpgui r6,r1,0x1                               
 800acd4:	a0 e6 30 00 	and r6,r7,r6                                   
 800acd8:	44 c0 00 03 	be r6,r0,800ace4 <msdos_format+0x95c>          
          --fmt_params->totl_sector_cnt;                              
 800acdc:	36 b9 ff ff 	addi r25,r21,-1                                
 800ace0:	5b 99 02 70 	sw (sp+624),r25                                
    if (ret_val == 0) {                                               
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
 800ace4:	5c a0 02 1e 	bne r5,r0,800b55c <msdos_format+0x11d4>        <== NEVER TAKEN
          && fmt_params->fattype != fat_type                          
 800ace8:	44 8f fe 0f 	be r4,r15,800a524 <msdos_format+0x19c>         <== NEVER TAKEN
          && fmt_params->totl_sector_cnt > 0 ) {                      
 800acec:	47 20 00 34 	be r25,r0,800adbc <msdos_format+0xa34>         <== NEVER TAKEN
          --fmt_params->totl_sector_cnt;                              
        }                                                             
                                                                      
      }                                                               
                                                                      
      ++iteration_cnt;                                                
 800acf0:	2b 83 00 50 	lw r3,(sp+80)                                  
 800acf4:	34 62 00 01 	addi r2,r3,1                                   
 800acf8:	20 42 00 ff 	andi r2,r2,0xff                                
 800acfc:	5b 82 00 50 	sw (sp+80),r2                                  
 800ad00:	e3 ff ff 16 	bi 800a958 <msdos_format+0x5d0>                
{                                                                     
  int ret_val = 0;                                                    
  int rc;                                                             
  struct timeval time_value;                                          
                                                                      
  rc = rtems_clock_get_tod_timeval(&time_value);                      
 800ad04:	37 81 03 08 	addi r1,sp,776                                 
 800ad08:	f8 00 26 35 	calli 80145dc <rtems_clock_get_tod_timeval>    
  if (rc == RTEMS_SUCCESSFUL) {                                       
 800ad0c:	5c 20 02 17 	bne r1,r0,800b568 <msdos_format+0x11e0>        <== ALWAYS TAKEN
    *volid_ptr = time_value.tv_sec + time_value.tv_sec;               
 800ad10:	2b 83 03 08 	lw r3,(sp+776)                                 <== NOT EXECUTED
 800ad14:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ad18:	5b 83 02 b8 	sw (sp+696),r3                                 <== NOT EXECUTED
    ret_val = msdos_format_determine_fmt_params(fd,rqdata,&fmt_params);
  }                                                                   
  /*                                                                  
   * if requested, write whole disk/partition with 0xe5               
   */                                                                 
  if ((ret_val == 0) &&                                               
 800ad1c:	2b 83 00 64 	lw r3,(sp+100)                                 
 800ad20:	a1 83 60 00 	and r12,r12,r3                                 
 800ad24:	45 80 fd d5 	be r12,r0,800a478 <msdos_format+0xf0>          
      (rqdata != NULL) &&                                             
 800ad28:	43 63 00 15 	lbu r3,(fp+21)                                 
 800ad2c:	5c 60 fe 4e 	bne r3,r0,800a664 <msdos_format+0x2dc>         
      !(rqdata->quick_format)) {                                      
    ret_val = msdos_format_fill_sectors                               
 800ad30:	2b 84 02 70 	lw r4,(sp+624)                                 
 800ad34:	2b 85 02 6c 	lw r5,(sp+620)                                 
 800ad38:	2b 82 00 4c 	lw r2,(sp+76)                                  
 800ad3c:	bb 60 08 00 	mv r1,fp                                       
 800ad40:	34 06 00 e5 	mvi r6,229                                     
 800ad44:	fb ff fd 15 	calli 800a198 <msdos_format_fill_sectors>      
 800ad48:	5b 81 00 48 	sw (sp+72),r1                                  
 800ad4c:	e3 ff fd cb 	bi 800a478 <msdos_format+0xf0>                 
          if ((rqdata != NULL) &&                                     
              (rqdata->files_per_root_dir > 0)) {                     
            fmt_params->files_per_root_dir = rqdata->files_per_root_dir;
          }                                                           
          else {                                                      
            if (fmt_params->fattype == FAT_FAT16) {                   
 800ad50:	64 85 00 02 	cmpei r5,r4,2                                  
 800ad54:	c8 05 28 00 	sub r5,r0,r5                                   
 800ad58:	20 a5 01 c0 	andi r5,r5,0x1c0                               
 800ad5c:	34 a5 00 3f 	addi r5,r5,63                                  
 800ad60:	e3 ff ff 11 	bi 800a9a4 <msdos_format+0x61c>                
    /*                                                                
     * for FAT32: root directory is in cluster 2                      
     */                                                               
    fmt_params->root_dir_start_sec =                                  
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
 800ad64:	43 81 02 9c 	lbu r1,(sp+668)                                
 800ad68:	2b 82 02 7c 	lw r2,(sp+636)                                 
 800ad6c:	fb ff d9 4c 	calli 800129c <__mulsi3>                       
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
 800ad70:	2b 85 02 78 	lw r5,(sp+632)                                 
    /*                                                                
     * for FAT32: root directory is in cluster 2                      
     */                                                               
    fmt_params->root_dir_start_sec =                                  
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
 800ad74:	b5 61 58 00 	add r11,r11,r1                                 
  }                                                                   
  else {                                                              
    /*                                                                
     * for FAT32: root directory is in cluster 2                      
     */                                                               
    fmt_params->root_dir_start_sec =                                  
 800ad78:	5b 8b 02 8c 	sw (sp+652),r11                                
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
 800ad7c:	5b 85 02 90 	sw (sp+656),r5                                 
 800ad80:	e3 ff fe 2b 	bi 800a62c <msdos_format+0x2a4>                
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->VolLabel)-1);                             
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
	*to++ = *from++;                                                     
 800ad84:	30 81 ff ff 	sb (r4+-1),r1                                  
 800ad88:	34 a5 00 01 	addi r5,r5,1                                   
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
      }                                                               
      *to = '\0';                                                     
 800ad8c:	30 80 00 00 	sb (r4+0),r0                                   
 800ad90:	34 84 00 01 	addi r4,r4,1                                   
    if ((rqdata != NULL) &&                                           
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
    }                                                                 
    for (cnt = 0;                                                     
 800ad94:	44 88 ff dc 	be r4,r8,800ad04 <msdos_format+0x97c>          
	 cnt < (sizeof(fmt_params->VolLabel)-1);                             
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
 800ad98:	40 a1 00 00 	lbu r1,(r5+0)                                  
 800ad9c:	b4 e1 10 00 	add r2,r7,r1                                   
 800ada0:	40 42 00 01 	lbu r2,(r2+1)                                  
 800ada4:	20 42 00 97 	andi r2,r2,0x97                                
 800ada8:	5c 40 ff f7 	bne r2,r0,800ad84 <msdos_format+0x9fc>         
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
 800adac:	30 89 ff ff 	sb (r4+-1),r9                                  
 800adb0:	e3 ff ff f7 	bi 800ad8c <msdos_format+0xa04>                
 800adb4:	7f 63 00 00 	cmpnei r3,fp,0                                 <== NOT EXECUTED
 800adb8:	5b 83 00 64 	sw (sp+100),r3                                 <== NOT EXECUTED
      ++iteration_cnt;                                                
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
  {                                                                   
    errno = EINVAL;                                                   
 800adbc:	f8 00 46 8e 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800adc0:	34 04 00 16 	mvi r4,22                                      <== NOT EXECUTED
 800adc4:	58 24 00 00 	sw (r1+0),r4                                   <== NOT EXECUTED
    ret_val = -1;                                                     
 800adc8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800adcc:	5b 81 00 48 	sw (sp+72),r1                                  <== NOT EXECUTED
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
 800add0:	2b 83 00 64 	lw r3,(sp+100)                                 
 800add4:	2b 8b 02 74 	lw r11,(sp+628)                                
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
  {                                                                   
    errno = EINVAL;                                                   
    ret_val = -1;                                                     
 800add8:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
 800addc:	5b 83 00 5c 	sw (sp+92),r3                                  
 800ade0:	e3 ff fe 0b 	bi 800a60c <msdos_format+0x284>                
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
          /* location of fsinfo sector */                             
          fmt_params->fsinfo_sec = 1;                                 
 800ade4:	34 04 00 01 	mvi r4,1                                       
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
          /* recommended: for FAT32, always set reserved sector count to 32 */
          fmt_params->rsvd_sector_cnt = 32;                           
 800ade8:	34 02 00 20 	mvi r2,32                                      
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
 800adec:	34 03 00 06 	mvi r3,6                                       
          /* location of fsinfo sector */                             
          fmt_params->fsinfo_sec = 1;                                 
 800adf0:	5b 84 02 98 	sw (sp+664),r4                                 
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
          /* recommended: for FAT32, always set reserved sector count to 32 */
          fmt_params->rsvd_sector_cnt = 32;                           
 800adf4:	5b 82 02 74 	sw (sp+628),r2                                 
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
 800adf8:	5b 80 02 84 	sw (sp+644),r0                                 
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
 800adfc:	5b 83 02 94 	sw (sp+660),r3                                 
          /* location of fsinfo sector */                             
          fmt_params->fsinfo_sec = 1;                                 
 800ae00:	2b 90 02 6c 	lw r16,(sp+620)                                
 800ae04:	34 12 00 20 	mvi r18,32                                     
 800ae08:	34 0f 00 04 	mvi r15,4                                      
 800ae0c:	34 04 00 00 	mvi r4,0                                       
 800ae10:	e3 ff fe f9 	bi 800a9f4 <msdos_format+0x66c>                
      else {                                                          
	fmt_params->media_code = rqdata->media;                              
      }                                                               
    }                                                                 
    else {                                                            
      fmt_params->media_code = FAT_BR_MEDIA_FIXED;                    
 800ae14:	34 05 ff f8 	mvi r5,-8                                      
 800ae18:	33 85 02 9d 	sb (sp+669),r5                                 
 800ae1c:	34 0c 00 01 	mvi r12,1                                      
 800ae20:	e3 ff fd fb 	bi 800a60c <msdos_format+0x284>                
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
      fmt_params->fattype = FAT_FAT12;                                
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
 800ae24:	b5 6b 60 00 	add r12,r11,r11                                
 800ae28:	b5 8c 60 00 	add r12,r12,r12                                
 800ae2c:	b9 80 08 00 	mv r1,r12                                      
 800ae30:	34 02 00 0c 	mvi r2,12                                      
 800ae34:	fb ff d8 cc 	calli 8001164 <__ashlsi3>                      
 800ae38:	c8 2c 20 00 	sub r4,r1,r12                                  
 800ae3c:	b4 8b 20 00 	add r4,r4,r11                                  
 800ae40:	b4 84 20 00 	add r4,r4,r4                                   
 800ae44:	b4 84 20 00 	add r4,r4,r4                                   
 800ae48:	b4 8b 20 00 	add r4,r4,r11                                  
 800ae4c:	51 e4 00 15 	bgeu r15,r4,800aea0 <msdos_format+0xb18>       
      fmt_params->fattype = FAT_FAT16;                                
 800ae50:	34 02 00 02 	mvi r2,2                                       
 800ae54:	33 82 02 9e 	sb (sp+670),r2                                 
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
 800ae58:	34 02 00 02 	mvi r2,2                                       
 800ae5c:	5b 82 02 78 	sw (sp+632),r2                                 
 800ae60:	e3 ff fe 8f 	bi 800a89c <msdos_format+0x514>                
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
                                                                      
    if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {         
 800ae64:	34 04 7f a8 	mvi r4,32680                                   
     * limiting values for disk size, fat type, sectors per cluster   
     * NOTE: maximum sect_per_clust is arbitrarily choosen with values that
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
 800ae68:	34 0b 00 20 	mvi r11,32                                     
 800ae6c:	e3 ff fe 86 	bi 800a884 <msdos_format+0x4fc>                
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
 800ae70:	34 05 00 06 	mvi r5,6                                       
 800ae74:	54 85 01 3d 	bgu r4,r5,800b368 <msdos_format+0xfe0>         <== NEVER TAKEN
      fmt_params->fat_num = rqdata->fat_num;                          
 800ae78:	20 85 00 ff 	andi r5,r4,0xff                                
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800ae7c:	78 04 08 03 	mvhi r4,0x803                                  
 800ae80:	b8 80 18 00 	mv r3,r4                                       
 800ae84:	bb 60 08 00 	mv r1,fp                                       
 800ae88:	34 02 00 02 	mvi r2,2                                       
 800ae8c:	38 63 00 70 	ori r3,r3,0x70                                 
 800ae90:	b8 a0 20 00 	mv r4,r5                                       
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
 800ae94:	33 85 02 9c 	sb (sp+668),r5                                 
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800ae98:	fb ff fc 88 	calli 800a0b8 <msdos_format_printf>            
 800ae9c:	e3 ff fe 69 	bi 800a840 <msdos_format+0x4b8>                
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else {                                                            
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
 800aea0:	78 04 40 00 	mvhi r4,0x4000                                 
 800aea4:	b5 c4 20 00 	add r4,r14,r4                                  
 800aea8:	f5 c4 08 00 	cmpgu r1,r14,r4                                
 800aeac:	b8 80 10 00 	mv r2,r4                                       
 800aeb0:	34 03 00 1e 	mvi r3,30                                      
 800aeb4:	f8 00 7b 75 	calli 8029c88 <__lshrdi3>                      
 800aeb8:	b8 40 60 00 	mv r12,r2                                      
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
 800aebc:	34 02 00 04 	mvi r2,4                                       
 800aec0:	33 82 02 9e 	sb (sp+670),r2                                 
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
 800aec4:	34 0b 00 1f 	mvi r11,31                                     
 800aec8:	e0 00 00 02 	bi 800aed0 <msdos_format+0xb48>                
 800aecc:	45 62 02 00 	be r11,r2,800b6cc <msdos_format+0x1344>        <== NEVER TAKEN
        if ((gigs & (1 << b)) != 0)                                   
 800aed0:	b9 60 10 00 	mv r2,r11                                      
 800aed4:	34 01 00 01 	mvi r1,1                                       
 800aed8:	fb ff d8 a3 	calli 8001164 <__ashlsi3>                      
 800aedc:	a0 2c 10 00 	and r2,r1,r12                                  
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
 800aee0:	35 6b ff ff 	addi r11,r11,-1                                
        if ((gigs & (1 << b)) != 0)                                   
 800aee4:	44 40 ff fa 	be r2,r0,800aecc <msdos_format+0xb44>          
 800aee8:	b8 20 20 00 	mv r4,r1                                       
          break;                                                      
      fmt_params->sectors_per_cluster = 1 << b;                       
 800aeec:	5b 84 02 78 	sw (sp+632),r4                                 
 800aef0:	e3 ff fe 6b 	bi 800a89c <msdos_format+0x514>                
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
 800aef4:	21 63 ff ff 	andi r3,r11,0xffff                             
 800aef8:	00 63 00 01 	srui r3,r3,1                                   
 800aefc:	34 02 00 10 	mvi r2,16                                      
 800af00:	00 63 00 01 	srui r3,r3,1                                   
 800af04:	b9 60 08 00 	mv r1,r11                                      
 800af08:	00 63 00 01 	srui r3,r3,1                                   
 800af0c:	21 75 00 ff 	andi r21,r11,0xff                              
 800af10:	00 63 00 01 	srui r3,r3,1                                   
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
 800af14:	34 14 00 00 	mvi r20,0                                      
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
 800af18:	00 63 00 01 	srui r3,r3,1                                   
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
 800af1c:	34 19 00 00 	mvi r25,0                                      
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
 800af20:	00 63 00 01 	srui r3,r3,1                                   
 800af24:	00 63 00 01 	srui r3,r3,1                                   
 800af28:	00 63 00 01 	srui r3,r3,1                                   
 800af2c:	20 76 00 ff 	andi r22,r3,0xff                               
 800af30:	f8 00 90 32 	calli 802eff8 <__lshrsi3>                      
 800af34:	20 37 00 ff 	andi r23,r1,0xff                               
 800af38:	34 02 00 18 	mvi r2,24                                      
 800af3c:	b9 60 08 00 	mv r1,r11                                      
 800af40:	f8 00 90 2e 	calli 802eff8 <__lshrsi3>                      
 800af44:	20 38 00 ff 	andi r24,r1,0xff                               
   * finally we are there: let's fill in the values into the MBR      
   * but first clear the MRB leaving the partition table.             
   */                                                                 
#define RTEMS_IDE_PARTITION_TABLE_OFFSET                  0x1be       
#define RTEMS_IDE_PARTITION_TABLE_SIZE                    (4 * 16)    
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);                     
 800af48:	34 03 01 be 	mvi r3,446                                     
 800af4c:	b9 80 08 00 	mv r1,r12                                      
 800af50:	34 02 00 00 	mvi r2,0                                       
 800af54:	f8 00 49 b7 	calli 801d630 <memset>                         
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af58:	2b 8a 02 6c 	lw r10,(sp+620)                                
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af5c:	2b 88 02 84 	lw r8,(sp+644)                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800af60:	2b 89 02 74 	lw r9,(sp+628)                                 
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af64:	01 46 00 01 	srui r6,r10,1                                  
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af68:	01 03 00 01 	srui r3,r8,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af6c:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af70:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800af74:	01 25 00 01 	srui r5,r9,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af78:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af7c:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800af80:	00 a5 00 01 	srui r5,r5,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af84:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af88:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800af8c:	00 a5 00 01 	srui r5,r5,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af90:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800af94:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800af98:	00 a5 00 01 	srui r5,r5,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800af9c:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800afa0:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800afa4:	00 a5 00 01 	srui r5,r5,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800afa8:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800afac:	00 63 00 01 	srui r3,r3,1                                   
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800afb0:	00 a5 00 01 	srui r5,r5,1                                   
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800afb4:	00 c6 00 01 	srui r6,r6,1                                   
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800afb8:	00 63 00 01 	srui r3,r3,1                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
 800afbc:	37 87 02 9f 	addi r7,sp,671                                 
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800afc0:	00 a5 00 01 	srui r5,r5,1                                   
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
 800afc4:	40 ed 00 06 	lbu r13,(r7+6)                                 
 800afc8:	40 eb 00 07 	lbu r11,(r7+7)                                 
 800afcc:	40 f3 00 01 	lbu r19,(r7+1)                                 
 800afd0:	40 f2 00 02 	lbu r18,(r7+2)                                 
 800afd4:	40 f1 00 03 	lbu r17,(r7+3)                                 
 800afd8:	40 f0 00 04 	lbu r16,(r7+4)                                 
 800afdc:	40 ef 00 05 	lbu r15,(r7+5)                                 
 800afe0:	43 9d 02 9f 	lbu ra,(sp+671)                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800afe4:	33 86 00 78 	sb (sp+120),r6                                 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800afe8:	33 83 00 7e 	sb (sp+126),r3                                 
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
 800afec:	2b 86 02 78 	lw r6,(sp+632)                                 
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
 800aff0:	43 83 02 9d 	lbu r3,(sp+669)                                
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800aff4:	00 a5 00 01 	srui r5,r5,1                                   
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
 800aff8:	37 87 00 6f 	addi r7,sp,111                                 
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
 800affc:	34 0e 00 02 	mvi r14,2                                      
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
 800b000:	30 ed 00 06 	sb (r7+6),r13                                  
 800b004:	30 eb 00 07 	sb (r7+7),r11                                  
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800b008:	33 85 00 7b 	sb (sp+123),r5                                 
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
 800b00c:	33 83 00 81 	sb (sp+129),r3                                 
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
 800b010:	34 05 ff ff 	mvi r5,-1                                      
   * but first clear the MRB leaving the partition table.             
   */                                                                 
#define RTEMS_IDE_PARTITION_TABLE_OFFSET                  0x1be       
#define RTEMS_IDE_PARTITION_TABLE_SIZE                    (4 * 16)    
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);                     
  memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
 800b014:	0f 80 02 6a 	sh (sp+618),r0                                 
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
 800b018:	33 9d 00 6f 	sb (sp+111),ra                                 
 800b01c:	30 f3 00 01 	sb (r7+1),r19                                  
 800b020:	30 f2 00 02 	sb (r7+2),r18                                  
 800b024:	30 f1 00 03 	sb (r7+3),r17                                  
 800b028:	30 f0 00 04 	sb (r7+4),r16                                  
 800b02c:	30 ef 00 05 	sb (r7+5),r15                                  
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
 800b030:	33 8a 00 77 	sb (sp+119),r10                                
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
 800b034:	33 86 00 79 	sb (sp+121),r6                                 
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
 800b038:	33 89 00 7a 	sb (sp+122),r9                                 
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
 800b03c:	33 8e 00 7c 	sb (sp+124),r14                                
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
 800b040:	33 88 00 7d 	sb (sp+125),r8                                 
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
 800b044:	33 99 00 7f 	sb (sp+127),r25                                
 800b048:	33 94 00 80 	sb (sp+128),r20                                
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
 800b04c:	33 85 00 84 	sb (sp+132),r5                                 
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
 800b050:	43 8d 02 9e 	lbu r13,(sp+670)                               
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
 800b054:	34 0b 00 01 	mvi r11,1                                      
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
 800b058:	34 05 00 06 	mvi r5,6                                       
 800b05c:	33 85 00 86 	sb (sp+134),r5                                 
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
 800b060:	33 8b 00 88 	sb (sp+136),r11                                
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
 800b064:	33 95 00 8c 	sb (sp+140),r21                                
 800b068:	33 96 00 8d 	sb (sp+141),r22                                
 800b06c:	33 97 00 8e 	sb (sp+142),r23                                
 800b070:	33 98 00 8f 	sb (sp+143),r24                                
  if (fmt_params->fattype != FAT_FAT32) {                             
 800b074:	34 03 00 04 	mvi r3,4                                       
 800b078:	45 a3 01 55 	be r13,r3,800b5cc <msdos_format+0x1244>        
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b07c:	2b 8b 02 b8 	lw r11,(sp+696)                                
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b080:	2b 86 02 7c 	lw r6,(sp+636)                                 
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b084:	34 02 00 10 	mvi r2,16                                      
 800b088:	21 63 ff ff 	andi r3,r11,0xffff                             
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b08c:	00 c5 00 01 	srui r5,r6,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b090:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b094:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b098:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b09c:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0a0:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0a4:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0a8:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0ac:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0b0:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0b4:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0b8:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0bc:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0c0:	00 63 00 01 	srui r3,r3,1                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0c4:	00 a5 00 01 	srui r5,r5,1                                   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0c8:	00 63 00 01 	srui r3,r3,1                                   
 800b0cc:	b9 60 08 00 	mv r1,r11                                      
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0d0:	33 85 00 83 	sb (sp+131),r5                                 
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
 800b0d4:	34 05 00 29 	mvi r5,41                                      
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
 800b0d8:	33 86 00 82 	sb (sp+130),r6                                 
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
 800b0dc:	33 85 00 92 	sb (sp+146),r5                                 
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b0e0:	33 83 00 94 	sb (sp+148),r3                                 
 800b0e4:	33 8b 00 93 	sb (sp+147),r11                                
 800b0e8:	f8 00 8f c4 	calli 802eff8 <__lshrsi3>                      
 800b0ec:	33 81 00 95 	sb (sp+149),r1                                 
 800b0f0:	34 02 00 18 	mvi r2,24                                      
 800b0f4:	b9 60 08 00 	mv r1,r11                                      
 800b0f8:	f8 00 8f c0 	calli 802eff8 <__lshrsi3>                      
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
	 fmt_params->VolLabel,                                               
 800b0fc:	37 83 02 a8 	addi r3,sp,680                                 
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
 800b100:	40 71 00 01 	lbu r17,(r3+1)                                 
 800b104:	40 70 00 02 	lbu r16,(r3+2)                                 
 800b108:	40 6f 00 03 	lbu r15,(r3+3)                                 
 800b10c:	40 6e 00 04 	lbu r14,(r3+4)                                 
 800b110:	40 6b 00 05 	lbu r11,(r3+5)                                 
 800b114:	40 6a 00 06 	lbu r10,(r3+6)                                 
 800b118:	40 69 00 07 	lbu r9,(r3+7)                                  
 800b11c:	40 68 00 08 	lbu r8,(r3+8)                                  
 800b120:	40 67 00 09 	lbu r7,(r3+9)                                  
 800b124:	40 66 00 0a 	lbu r6,(r3+10)                                 
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
 800b128:	33 81 00 96 	sb (sp+150),r1                                 
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
 800b12c:	43 81 02 a8 	lbu r1,(sp+680)                                
 800b130:	37 85 00 97 	addi r5,sp,151                                 
	 fmt_params->VolLabel,                                               
	 FAT_BR_VOLLAB_SIZE);                                                
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),                           
 800b134:	78 03 08 02 	mvhi r3,0x802                                  
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
 800b138:	30 b1 00 01 	sb (r5+1),r17                                  
 800b13c:	30 b0 00 02 	sb (r5+2),r16                                  
 800b140:	30 af 00 03 	sb (r5+3),r15                                  
 800b144:	30 ae 00 04 	sb (r5+4),r14                                  
 800b148:	30 ab 00 05 	sb (r5+5),r11                                  
 800b14c:	30 aa 00 06 	sb (r5+6),r10                                  
 800b150:	30 a9 00 07 	sb (r5+7),r9                                   
 800b154:	30 a8 00 08 	sb (r5+8),r8                                   
 800b158:	30 a7 00 09 	sb (r5+9),r7                                   
 800b15c:	30 a6 00 0a 	sb (r5+10),r6                                  
 800b160:	33 81 00 97 	sb (sp+151),r1                                 
	 fmt_params->VolLabel,                                               
	 FAT_BR_VOLLAB_SIZE);                                                
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),                           
 800b164:	34 05 00 01 	mvi r5,1                                       
 800b168:	38 63 ff f8 	ori r3,r3,0xfff8                               
 800b16c:	45 a5 01 67 	be r13,r5,800b708 <msdos_format+0x1380>        
 800b170:	40 61 00 00 	lbu r1,(r3+0)                                  
 800b174:	37 85 00 a2 	addi r5,sp,162                                 
 800b178:	33 81 00 a2 	sb (sp+162),r1                                 
 800b17c:	40 61 00 01 	lbu r1,(r3+1)                                  
 800b180:	30 a1 00 01 	sb (r5+1),r1                                   
 800b184:	40 61 00 02 	lbu r1,(r3+2)                                  
 800b188:	30 a1 00 02 	sb (r5+2),r1                                   
 800b18c:	40 61 00 03 	lbu r1,(r3+3)                                  
 800b190:	30 a1 00 03 	sb (r5+3),r1                                   
 800b194:	40 61 00 04 	lbu r1,(r3+4)                                  
 800b198:	30 a1 00 04 	sb (r5+4),r1                                   
 800b19c:	40 61 00 05 	lbu r1,(r3+5)                                  
 800b1a0:	30 a1 00 05 	sb (r5+5),r1                                   
 800b1a4:	40 61 00 06 	lbu r1,(r3+6)                                  
 800b1a8:	30 a1 00 06 	sb (r5+6),r1                                   
 800b1ac:	40 61 00 07 	lbu r1,(r3+7)                                  
 800b1b0:	30 a1 00 07 	sb (r5+7),r1                                   
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  /*                                                                  
   * add boot record signature                                        
   */                                                                 
  FAT_SET_BR_SIGNATURE(mbr,      FAT_BR_SIGNATURE_VAL);               
 800b1b4:	34 05 00 55 	mvi r5,85                                      
 800b1b8:	33 85 02 6a 	sb (sp+618),r5                                 
 800b1bc:	34 05 ff aa 	mvi r5,-86                                     
 800b1c0:	33 85 02 6b 	sb (sp+619),r5                                 
                                                                      
  /*                                                                  
   * add jump to boot loader at start of sector                       
   */                                                                 
  FAT_SET_VAL8(mbr,0,0xeb);                                           
 800b1c4:	34 05 ff eb 	mvi r5,-21                                     
 800b1c8:	33 85 00 6c 	sb (sp+108),r5                                 
    /*                                                                
     * write master boot record to disk                               
     * also write copy of MBR to disk                                 
     */                                                               
    if (ret_val == 0) {                                               
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
 800b1cc:	78 03 08 03 	mvhi r3,0x803                                  
                                                                      
  /*                                                                  
   * add jump to boot loader at start of sector                       
   */                                                                 
  FAT_SET_VAL8(mbr,0,0xeb);                                           
  FAT_SET_VAL8(mbr,1,0x3c);                                           
 800b1d0:	34 05 00 3c 	mvi r5,60                                      
    /*                                                                
     * write master boot record to disk                               
     * also write copy of MBR to disk                                 
     */                                                               
    if (ret_val == 0) {                                               
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
 800b1d4:	34 02 00 02 	mvi r2,2                                       
 800b1d8:	38 63 00 b4 	ori r3,r3,0xb4                                 
 800b1dc:	bb 60 08 00 	mv r1,fp                                       
                                                                      
  /*                                                                  
   * add jump to boot loader at start of sector                       
   */                                                                 
  FAT_SET_VAL8(mbr,0,0xeb);                                           
  FAT_SET_VAL8(mbr,1,0x3c);                                           
 800b1e0:	33 85 00 6d 	sb (sp+109),r5                                 
  FAT_SET_VAL8(mbr,2,0x90);                                           
 800b1e4:	34 05 ff 90 	mvi r5,-112                                    
 800b1e8:	33 85 00 6e 	sb (sp+110),r5                                 
    /*                                                                
     * write master boot record to disk                               
     * also write copy of MBR to disk                                 
     */                                                               
    if (ret_val == 0) {                                               
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
 800b1ec:	fb ff fb b3 	calli 800a0b8 <msdos_format_printf>            
                           "write MRB sector\n");                     
      ret_val = msdos_format_write_sec(fd,                            
 800b1f0:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800b1f4:	2b 83 02 6c 	lw r3,(sp+620)                                 
 800b1f8:	34 02 00 00 	mvi r2,0                                       
 800b1fc:	b9 80 20 00 	mv r4,r12                                      
 800b200:	fb ff fb c8 	calli 800a120 <msdos_format_write_sec>         
 800b204:	5b 81 00 48 	sw (sp+72),r1                                  
                                       0,                             
                                       fmt_params.bytes_per_sector,   
                                       tmp_sec);                      
    }                                                                 
    if ((ret_val == 0) &&                                             
 800b208:	5c 20 fc 9e 	bne r1,r0,800a480 <msdos_format+0xf8>          <== NEVER TAKEN
 800b20c:	2b 83 02 94 	lw r3,(sp+660)                                 
 800b210:	5c 61 00 d9 	bne r3,r1,800b574 <msdos_format+0x11ec>        
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
 800b214:	2b 8b 02 98 	lw r11,(sp+664)                                
    }                                                                 
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
 800b218:	5d 60 00 72 	bne r11,r0,800b3e0 <msdos_format+0x1058>       
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = msdos_format_fill_sectors                               
      (rqdata,                                                        
 800b21c:	2b 82 02 7c 	lw r2,(sp+636)                                 
 800b220:	43 81 02 9c 	lbu r1,(sp+668)                                
 800b224:	fb ff d8 1e 	calli 800129c <__mulsi3>                       
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = msdos_format_fill_sectors                               
 800b228:	2b 82 00 4c 	lw r2,(sp+76)                                  
 800b22c:	2b 83 02 74 	lw r3,(sp+628)                                 
 800b230:	2b 85 02 6c 	lw r5,(sp+620)                                 
      (rqdata,                                                        
 800b234:	b8 20 20 00 	mv r4,r1                                       
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = msdos_format_fill_sectors                               
 800b238:	34 06 00 00 	mvi r6,0                                       
 800b23c:	bb 60 08 00 	mv r1,fp                                       
 800b240:	fb ff fb d6 	calli 800a198 <msdos_format_fill_sectors>      
 800b244:	5b 81 00 48 	sw (sp+72),r1                                  
  }                                                                   
  /*                                                                  
   * clear/init root directory                                        
   * -> write all directory sectors as 0x00                           
   */                                                                 
  if (ret_val == 0) {                                                 
 800b248:	5c 20 fc 8e 	bne r1,r0,800a480 <msdos_format+0xf8>          <== NEVER TAKEN
    ret_val = msdos_format_fill_sectors                               
 800b24c:	2b 83 02 8c 	lw r3,(sp+652)                                 
 800b250:	2b 84 02 90 	lw r4,(sp+656)                                 
 800b254:	2b 85 02 6c 	lw r5,(sp+620)                                 
 800b258:	2b 82 00 4c 	lw r2,(sp+76)                                  
 800b25c:	bb 60 08 00 	mv r1,fp                                       
 800b260:	34 06 00 00 	mvi r6,0                                       
 800b264:	fb ff fb cd 	calli 800a198 <msdos_format_fill_sectors>      
 800b268:	5b 81 00 48 	sw (sp+72),r1                                  
       0x00);                                                         
  }                                                                   
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
 800b26c:	5c 20 fc 85 	bne r1,r0,800a480 <msdos_format+0xf8>          <== NEVER TAKEN
 800b270:	43 83 02 b4 	lbu r3,(sp+692)                                
 800b274:	5c 61 00 43 	bne r3,r1,800b380 <msdos_format+0xff8>         
    uint32_t start_sector;                                            
                                                                      
    /*                                                                
     * empty sector: all clusters are free/do not link further on     
     */                                                               
    memset(tmp_sec,0,sizeof(tmp_sec));                                
 800b278:	34 03 02 00 	mvi r3,512                                     
 800b27c:	b9 80 08 00 	mv r1,r12                                      
 800b280:	34 02 00 00 	mvi r2,0                                       
 800b284:	f8 00 48 eb 	calli 801d630 <memset>                         
                                                                      
    switch(fmt_params.fattype) {                                      
 800b288:	43 83 02 9e 	lbu r3,(sp+670)                                
 800b28c:	34 05 00 02 	mvi r5,2                                       
 800b290:	44 65 00 a7 	be r3,r5,800b52c <msdos_format+0x11a4>         
 800b294:	34 0b 00 04 	mvi r11,4                                      
 800b298:	44 6b 00 77 	be r3,r11,800b474 <msdos_format+0x10ec>        
 800b29c:	34 05 00 01 	mvi r5,1                                       
 800b2a0:	44 65 00 98 	be r3,r5,800b500 <msdos_format+0x1178>         <== ALWAYS TAKEN
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
      errno = EINVAL;                                                 
 800b2a4:	f8 00 45 54 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800b2a8:	34 03 00 16 	mvi r3,22                                      <== NOT EXECUTED
 800b2ac:	58 23 00 00 	sw (r1+0),r3                                   <== NOT EXECUTED
    }                                                                 
    if (fmt_params.fattype == FAT_FAT32) {                            
 800b2b0:	43 86 02 9e 	lbu r6,(sp+670)                                <== NOT EXECUTED
 800b2b4:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
 800b2b8:	34 08 00 00 	mvi r8,0                                       <== NOT EXECUTED
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
 800b2bc:	34 03 ff ff 	mvi r3,-1                                      <== NOT EXECUTED
      errno = EINVAL;                                                 
    }                                                                 
    if (fmt_params.fattype == FAT_FAT32) {                            
 800b2c0:	44 cb 00 88 	be r6,r11,800b4e0 <msdos_format+0x1158>        <== NOT EXECUTED
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800b2c4:	43 86 02 bc 	lbu r6,(sp+700)                                
       * mark this in every copy of the FAT                           
       */                                                             
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);                         
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
 800b2c8:	2b 8d 02 74 	lw r13,(sp+628)                                
 800b2cc:	2b 87 02 78 	lw r7,(sp+632)                                 
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
 800b2d0:	5c c0 00 05 	bne r6,r0,800b2e4 <msdos_format+0xf5c>         
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
 800b2d4:	b5 a7 68 00 	add r13,r13,r7                                 
 800b2d8:	35 ad ff ff 	addi r13,r13,-1                                
 800b2dc:	c8 07 38 00 	sub r7,r0,r7                                   
 800b2e0:	a1 a7 68 00 	and r13,r13,r7                                 
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
 800b2e4:	44 a0 00 b7 	be r5,r0,800b5c0 <msdos_format+0x1238>         <== NEVER TAKEN
 800b2e8:	2b 83 02 7c 	lw r3,(sp+636)                                 
 800b2ec:	34 0b 00 00 	mvi r11,0                                      
 800b2f0:	2b 8e 00 4c 	lw r14,(sp+76)                                 
 800b2f4:	b8 60 08 00 	mv r1,r3                                       
 800b2f8:	e0 00 00 02 	bi 800b300 <msdos_format+0xf78>                
 800b2fc:	2b 81 02 7c 	lw r1,(sp+636)                                 
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
	 i++) {                                                              
      ret_val = msdos_format_write_sec                                
        (fd,                                                          
         start_sector                                                 
         + (i * fmt_params.sectors_per_fat),                          
 800b300:	b9 60 10 00 	mv r2,r11                                      
 800b304:	fb ff d7 e6 	calli 800129c <__mulsi3>                       
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
	 i++) {                                                              
      ret_val = msdos_format_write_sec                                
 800b308:	2b 83 02 6c 	lw r3,(sp+620)                                 
        (fd,                                                          
 800b30c:	b4 2d 10 00 	add r2,r1,r13                                  
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
	 i++) {                                                              
      ret_val = msdos_format_write_sec                                
 800b310:	b9 80 20 00 	mv r4,r12                                      
 800b314:	b9 c0 08 00 	mv r1,r14                                      
 800b318:	fb ff fb 82 	calli 800a120 <msdos_format_write_sec>         
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
 800b31c:	43 82 02 9c 	lbu r2,(sp+668)                                
	 i++) {                                                              
 800b320:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
 800b324:	64 24 00 00 	cmpei r4,r1,0                                  
 800b328:	e8 4b 10 00 	cmpg r2,r2,r11                                 
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
 800b32c:	a0 82 10 00 	and r2,r4,r2                                   
 800b330:	5c 40 ff f3 	bne r2,r0,800b2fc <msdos_format+0xf74>         
 800b334:	b8 20 18 00 	mv r3,r1                                       
 800b338:	2b 81 00 5c 	lw r1,(sp+92)                                  
 800b33c:	a0 81 20 00 	and r4,r4,r1                                   
         fmt_params.bytes_per_sector,                                 
         tmp_sec);                                                    
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {        
 800b340:	44 80 00 26 	be r4,r0,800b3d8 <msdos_format+0x1050>         
 800b344:	43 63 00 17 	lbu r3,(fp+23)                                 
 800b348:	44 60 fc 4e 	be r3,r0,800a480 <msdos_format+0xf8>           <== NEVER TAKEN
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
}                                                                     
                                                                      
static inline int rtems_disk_fd_sync(int fd)                          
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_SYNCDEV);                              
 800b34c:	78 03 08 03 	mvhi r3,0x803                                  
 800b350:	38 63 01 00 	ori r3,r3,0x100                                
 800b354:	28 62 00 00 	lw r2,(r3+0)                                   
 800b358:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800b35c:	f8 00 1f 7a 	calli 8013144 <ioctl>                          
 800b360:	5b 81 00 48 	sw (sp+72),r1                                  
 800b364:	e3 ff fc 47 	bi 800a480 <msdos_format+0xf8>                 
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
    }                                                                 
    else {                                                            
      errno = EINVAL;                                                 
 800b368:	f8 00 45 23 	calli 801c7f4 <__errno>                        
 800b36c:	34 02 00 16 	mvi r2,22                                      
 800b370:	58 22 00 00 	sw (r1+0),r2                                   
      ret_val = -1;                                                   
 800b374:	34 02 ff ff 	mvi r2,-1                                      
 800b378:	5b 82 00 48 	sw (sp+72),r2                                  
 800b37c:	e3 ff fc 66 	bi 800a514 <msdos_format+0x18c>                
  }                                                                   
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
 800b380:	34 02 00 00 	mvi r2,0                                       
 800b384:	34 03 02 00 	mvi r3,512                                     
 800b388:	b9 80 08 00 	mv r1,r12                                      
 800b38c:	f8 00 48 a9 	calli 801d630 <memset>                         
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
 800b390:	37 83 02 a8 	addi r3,sp,680                                 
 800b394:	40 65 00 0a 	lbu r5,(r3+10)                                 
 800b398:	28 67 00 04 	lw r7,(r3+4)                                   
 800b39c:	2c 66 00 08 	lhu r6,(r3+8)                                  
 800b3a0:	2b 88 02 a8 	lw r8,(sp+680)                                 
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
    ret_val = msdos_format_write_sec                                  
 800b3a4:	2b 83 02 6c 	lw r3,(sp+620)                                 
 800b3a8:	2b 82 02 8c 	lw r2,(sp+652)                                 
 800b3ac:	2b 81 00 4c 	lw r1,(sp+76)                                  
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
 800b3b0:	31 85 00 0a 	sb (r12+10),r5                                 
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
    ret_val = msdos_format_write_sec                                  
 800b3b4:	b9 80 20 00 	mv r4,r12                                      
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
 800b3b8:	34 05 00 08 	mvi r5,8                                       
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
 800b3bc:	59 87 00 04 	sw (r12+4),r7                                  
 800b3c0:	0d 86 00 08 	sh (r12+8),r6                                  
 800b3c4:	5b 88 00 6c 	sw (sp+108),r8                                 
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
 800b3c8:	33 85 00 77 	sb (sp+119),r5                                 
    ret_val = msdos_format_write_sec                                  
 800b3cc:	fb ff fb 55 	calli 800a120 <msdos_format_write_sec>         
 800b3d0:	b8 20 18 00 	mv r3,r1                                       
  /*                                                                  
   * write FAT entry 0 as (0xffffff00|Media_type)EOC,                 
   * write FAT entry 1 as EOC                                         
   * allocate directory in a FAT32 FS                                 
   */                                                                 
  if (ret_val == 0) {                                                 
 800b3d4:	44 20 ff a9 	be r1,r0,800b278 <msdos_format+0xef0>          <== ALWAYS TAKEN
         fmt_params.bytes_per_sector,                                 
         tmp_sec);                                                    
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {        
 800b3d8:	5b 83 00 48 	sw (sp+72),r3                                  
 800b3dc:	e3 ff fc 29 	bi 800a480 <msdos_format+0xf8>                 
\*=========================================================================*/
{                                                                     
  /*                                                                  
   * clear fsinfo sector data                                         
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
 800b3e0:	34 02 00 00 	mvi r2,0                                       
 800b3e4:	34 03 02 00 	mvi r3,512                                     
 800b3e8:	b9 80 08 00 	mv r1,r12                                      
 800b3ec:	f8 00 48 91 	calli 801d630 <memset>                         
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
 800b3f0:	34 06 00 61 	mvi r6,97                                      
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
 800b3f4:	2b 83 02 6c 	lw r3,(sp+620)                                 
 800b3f8:	2b 81 00 4c 	lw r1,(sp+76)                                  
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
 800b3fc:	33 86 00 6e 	sb (sp+110),r6                                 
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
 800b400:	33 86 02 53 	sb (sp+595),r6                                 
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
 800b404:	34 06 00 55 	mvi r6,85                                      
  /*                                                                  
   * write "empty" values for free cluster count and next cluster number
   */                                                                 
  FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,              
 800b408:	34 05 ff ff 	mvi r5,-1                                      
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
 800b40c:	34 09 00 52 	mvi r9,82                                      
 800b410:	34 07 00 41 	mvi r7,65                                      
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
 800b414:	34 08 00 72 	mvi r8,114                                     
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
 800b418:	33 86 02 6a 	sb (sp+618),r6                                 
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
 800b41c:	b9 60 10 00 	mv r2,r11                                      
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
 800b420:	34 06 ff aa 	mvi r6,-86                                     
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
 800b424:	b9 80 20 00 	mv r4,r12                                      
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
 800b428:	33 89 00 6c 	sb (sp+108),r9                                 
 800b42c:	33 89 00 6d 	sb (sp+109),r9                                 
 800b430:	33 87 00 6f 	sb (sp+111),r7                                 
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
 800b434:	33 88 02 50 	sb (sp+592),r8                                 
 800b438:	33 88 02 51 	sb (sp+593),r8                                 
 800b43c:	33 87 02 52 	sb (sp+594),r7                                 
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
 800b440:	33 86 02 6b 	sb (sp+619),r6                                 
  /*                                                                  
   * write "empty" values for free cluster count and next cluster number
   */                                                                 
  FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,              
 800b444:	33 85 02 54 	sb (sp+596),r5                                 
 800b448:	33 85 02 55 	sb (sp+597),r5                                 
 800b44c:	33 85 02 56 	sb (sp+598),r5                                 
 800b450:	33 85 02 57 	sb (sp+599),r5                                 
				    0xffffffff);                                                  
  FAT_SET_FSINFO_NEXT_FREE_CLUSTER (fsinfo+FAT_FSI_INFO,              
 800b454:	33 85 02 58 	sb (sp+600),r5                                 
 800b458:	33 85 02 59 	sb (sp+601),r5                                 
 800b45c:	33 85 02 5a 	sb (sp+602),r5                                 
 800b460:	33 85 02 5b 	sb (sp+603),r5                                 
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
 800b464:	fb ff fb 2f 	calli 800a120 <msdos_format_write_sec>         
 800b468:	5b 81 00 48 	sw (sp+72),r1                                  
  }                                                                   
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
 800b46c:	5c 20 fc 05 	bne r1,r0,800a480 <msdos_format+0xf8>          <== NEVER TAKEN
 800b470:	e3 ff ff 6b 	bi 800b21c <msdos_format+0xe94>                
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b474:	43 87 02 9d 	lbu r7,(sp+669)                                
 800b478:	34 03 ff 00 	mvi r3,-256                                    
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b47c:	43 85 02 9c 	lbu r5,(sp+668)                                
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b480:	b8 e3 38 00 	or r7,r7,r3                                    
 800b484:	20 e3 ff ff 	andi r3,r7,0xffff                              
 800b488:	00 63 00 01 	srui r3,r3,1                                   
 800b48c:	34 06 ff ff 	mvi r6,-1                                      
 800b490:	00 63 00 01 	srui r3,r3,1                                   
 800b494:	33 87 00 6c 	sb (sp+108),r7                                 
 800b498:	00 63 00 01 	srui r3,r3,1                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b49c:	34 07 ff f8 	mvi r7,-8                                      
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b4a0:	00 63 00 01 	srui r3,r3,1                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b4a4:	7c a5 00 00 	cmpnei r5,r5,0                                 
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b4a8:	00 63 00 01 	srui r3,r3,1                                   
 800b4ac:	33 86 00 6e 	sb (sp+110),r6                                 
 800b4b0:	00 63 00 01 	srui r3,r3,1                                   
 800b4b4:	33 86 00 6f 	sb (sp+111),r6                                 
 800b4b8:	00 63 00 01 	srui r3,r3,1                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b4bc:	33 87 00 70 	sb (sp+112),r7                                 
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b4c0:	00 63 00 01 	srui r3,r3,1                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b4c4:	33 86 00 71 	sb (sp+113),r6                                 
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
 800b4c8:	33 83 00 6d 	sb (sp+109),r3                                 
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
 800b4cc:	34 03 00 0f 	mvi r3,15                                      
 800b4d0:	33 83 00 73 	sb (sp+115),r3                                 
 800b4d4:	33 86 00 72 	sb (sp+114),r6                                 
 800b4d8:	34 03 00 00 	mvi r3,0                                       
 800b4dc:	34 08 00 01 	mvi r8,1                                       
      /*                                                              
       * only first valid cluster (cluster number 2) belongs          
       * to root directory, and is end of chain                       
       * mark this in every copy of the FAT                           
       */                                                             
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);                         
 800b4e0:	34 06 ff ff 	mvi r6,-1                                      
 800b4e4:	34 07 ff f8 	mvi r7,-8                                      
 800b4e8:	33 86 00 75 	sb (sp+117),r6                                 
 800b4ec:	33 86 00 76 	sb (sp+118),r6                                 
 800b4f0:	34 06 00 0f 	mvi r6,15                                      
 800b4f4:	33 87 00 74 	sb (sp+116),r7                                 
 800b4f8:	33 86 00 77 	sb (sp+119),r6                                 
 800b4fc:	e3 ff ff 72 	bi 800b2c4 <msdos_format+0xf3c>                
      /* LSBits of FAT entry 0: media_type */                         
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));                
      /* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));          
      /* MSBits of FAT entry 1: MSBits of EOC */                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
 800b500:	43 85 02 9c 	lbu r5,(sp+668)                                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
                                                                      
    switch(fmt_params.fattype) {                                      
    case FAT_FAT12:                                                   
      /* LSBits of FAT entry 0: media_type */                         
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));                
 800b504:	43 81 02 9d 	lbu r1,(sp+669)                                
      /* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));          
 800b508:	34 03 ff 8f 	mvi r3,-113                                    
 800b50c:	33 83 00 6d 	sb (sp+109),r3                                 
      /* MSBits of FAT entry 1: MSBits of EOC */                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
 800b510:	7c a5 00 00 	cmpnei r5,r5,0                                 
 800b514:	34 03 ff ff 	mvi r3,-1                                      
    memset(tmp_sec,0,sizeof(tmp_sec));                                
                                                                      
    switch(fmt_params.fattype) {                                      
    case FAT_FAT12:                                                   
      /* LSBits of FAT entry 0: media_type */                         
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));                
 800b518:	33 81 00 6c 	sb (sp+108),r1                                 
      /* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));          
      /* MSBits of FAT entry 1: MSBits of EOC */                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
 800b51c:	33 83 00 6e 	sb (sp+110),r3                                 
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
 800b520:	34 03 00 00 	mvi r3,0                                       
 800b524:	34 08 00 01 	mvi r8,1                                       
 800b528:	e3 ff ff 67 	bi 800b2c4 <msdos_format+0xf3c>                
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
 800b52c:	43 85 02 9c 	lbu r5,(sp+668)                                
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
 800b530:	43 81 02 9d 	lbu r1,(sp+669)                                
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
 800b534:	34 03 ff ff 	mvi r3,-1                                      
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
 800b538:	34 06 ff f8 	mvi r6,-8                                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
 800b53c:	33 81 00 6c 	sb (sp+108),r1                                 
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
 800b540:	33 83 00 6d 	sb (sp+109),r3                                 
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
 800b544:	33 86 00 6e 	sb (sp+110),r6                                 
 800b548:	33 83 00 6f 	sb (sp+111),r3                                 
 800b54c:	7c a5 00 00 	cmpnei r5,r5,0                                 
      break;                                                          
 800b550:	e3 ff ff f4 	bi 800b520 <msdos_format+0x1198>               
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
 800b554:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 800b558:	e3 ff fd 93 	bi 800aba4 <msdos_format+0x81c>                <== NOT EXECUTED
    if (ret_val == 0) {                                               
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
 800b55c:	34 04 ff ff 	mvi r4,-1                                      <== NOT EXECUTED
 800b560:	5b 84 00 48 	sw (sp+72),r4                                  <== NOT EXECUTED
 800b564:	e3 ff fb f0 	bi 800a524 <msdos_format+0x19c>                <== NOT EXECUTED
  rc = rtems_clock_get_tod_timeval(&time_value);                      
  if (rc == RTEMS_SUCCESSFUL) {                                       
    *volid_ptr = time_value.tv_sec + time_value.tv_sec;               
  }                                                                   
  else {                                                              
    *volid_ptr = rand();                                              
 800b568:	f8 00 4a ae 	calli 801e020 <rand>                           
 800b56c:	5b 81 02 b8 	sw (sp+696),r1                                 
 800b570:	e3 ff fd eb 	bi 800ad1c <msdos_format+0x994>                
    if ((ret_val == 0) &&                                             
        (fmt_params.mbr_copy_sec != 0)) {                             
      /*                                                              
       * write copy of MBR                                            
       */                                                             
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
 800b574:	78 03 08 03 	mvhi r3,0x803                                  
 800b578:	34 02 00 02 	mvi r2,2                                       
 800b57c:	38 63 00 c8 	ori r3,r3,0xc8                                 
 800b580:	bb 60 08 00 	mv r1,fp                                       
 800b584:	fb ff fa cd 	calli 800a0b8 <msdos_format_printf>            
                           "write back up MRB sector\n");             
      ret_val = msdos_format_write_sec(fd,                            
 800b588:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800b58c:	2b 82 02 94 	lw r2,(sp+660)                                 
 800b590:	2b 83 02 6c 	lw r3,(sp+620)                                 
 800b594:	b9 80 20 00 	mv r4,r12                                      
 800b598:	fb ff fa e2 	calli 800a120 <msdos_format_write_sec>         
 800b59c:	5b 81 00 48 	sw (sp+72),r1                                  
    }                                                                 
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
 800b5a0:	44 20 ff 1d 	be r1,r0,800b214 <msdos_format+0xe8c>          <== ALWAYS TAKEN
 800b5a4:	e3 ff fb b7 	bi 800a480 <msdos_format+0xf8>                 <== NOT EXECUTED
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
 800b5a8:	78 05 08 03 	mvhi r5,0x803                                  
 800b5ac:	38 a5 00 9c 	ori r5,r5,0x9c                                 
 800b5b0:	e3 ff fc 7a 	bi 800a798 <msdos_format+0x410>                
    ret_val = -1;                                                     
  }                                                                   
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
 800b5b4:	2b 8e 02 78 	lw r14,(sp+632)                                
 800b5b8:	43 8d 02 bc 	lbu r13,(sp+700)                               
 800b5bc:	e3 ff fb f1 	bi 800a580 <msdos_format+0x1f8>                
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
 800b5c0:	2b 82 00 5c 	lw r2,(sp+92)                                  <== NOT EXECUTED
 800b5c4:	a1 02 20 00 	and r4,r8,r2                                   <== NOT EXECUTED
 800b5c8:	e3 ff ff 5e 	bi 800b340 <msdos_format+0xfb8>                <== NOT EXECUTED
	   ? "FAT12   "                                                      
	   : "FAT16   ",                                                     
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
 800b5cc:	2b 8d 02 7c 	lw r13,(sp+636)                                
 800b5d0:	34 02 00 10 	mvi r2,16                                      
 800b5d4:	21 a3 ff ff 	andi r3,r13,0xffff                             
 800b5d8:	00 63 00 01 	srui r3,r3,1                                   
 800b5dc:	b9 a0 08 00 	mv r1,r13                                      
 800b5e0:	00 63 00 01 	srui r3,r3,1                                   
 800b5e4:	33 8d 00 90 	sb (sp+144),r13                                
 800b5e8:	00 63 00 01 	srui r3,r3,1                                   
 800b5ec:	00 63 00 01 	srui r3,r3,1                                   
 800b5f0:	00 63 00 01 	srui r3,r3,1                                   
 800b5f4:	00 63 00 01 	srui r3,r3,1                                   
 800b5f8:	00 63 00 01 	srui r3,r3,1                                   
 800b5fc:	00 63 00 01 	srui r3,r3,1                                   
 800b600:	33 83 00 91 	sb (sp+145),r3                                 
 800b604:	f8 00 8e 7d 	calli 802eff8 <__lshrsi3>                      
 800b608:	33 81 00 92 	sb (sp+146),r1                                 
 800b60c:	34 02 00 18 	mvi r2,24                                      
 800b610:	b9 a0 08 00 	mv r1,r13                                      
 800b614:	f8 00 8e 79 	calli 802eff8 <__lshrsi3>                      
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b618:	2b 87 02 94 	lw r7,(sp+660)                                 
	   ? "FAT12   "                                                      
	   : "FAT16   ",                                                     
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
 800b61c:	33 81 00 93 	sb (sp+147),r1                                 
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
 800b620:	34 01 00 29 	mvi r1,41                                      
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b624:	00 e3 00 01 	srui r3,r7,1                                   
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
 800b628:	33 81 00 ae 	sb (sp+174),r1                                 
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b62c:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b630:	34 01 46 41 	mvi r1,17985                                   
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b634:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b638:	37 86 00 be 	addi r6,sp,190                                 
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b63c:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b640:	0f 81 00 be 	sh (sp+190),r1                                 
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b644:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b648:	34 01 54 33 	mvi r1,21555                                   
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b64c:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b650:	0c c1 00 02 	sh (r6+2),r1                                   
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b654:	00 63 00 01 	srui r3,r3,1                                   
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b658:	34 01 32 20 	mvi r1,12832                                   
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b65c:	00 63 00 01 	srui r3,r3,1                                   
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
 800b660:	37 85 00 b3 	addi r5,sp,179                                 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
 800b664:	37 82 00 a0 	addi r2,sp,160                                 
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b668:	0c c1 00 04 	sh (r6+4),r1                                   
 800b66c:	34 01 20 20 	mvi r1,8224                                    
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
 800b670:	33 8e 00 98 	sb (sp+152),r14                                
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
 800b674:	33 8b 00 9c 	sb (sp+156),r11                                
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
 800b678:	33 87 00 9e 	sb (sp+158),r7                                 
 800b67c:	33 83 00 9f 	sb (sp+159),r3                                 
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
 800b680:	5b 80 00 a0 	sw (sp+160),r0                                 
 800b684:	58 40 00 04 	sw (r2+4),r0                                   
 800b688:	58 40 00 08 	sw (r2+8),r0                                   
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
 800b68c:	33 80 00 b3 	sb (sp+179),r0                                 
 800b690:	30 a0 00 01 	sb (r5+1),r0                                   
 800b694:	30 a0 00 02 	sb (r5+2),r0                                   
 800b698:	30 a0 00 03 	sb (r5+3),r0                                   
 800b69c:	30 a0 00 04 	sb (r5+4),r0                                   
 800b6a0:	30 a0 00 05 	sb (r5+5),r0                                   
 800b6a4:	30 a0 00 06 	sb (r5+6),r0                                   
 800b6a8:	30 a0 00 07 	sb (r5+7),r0                                   
 800b6ac:	30 a0 00 08 	sb (r5+8),r0                                   
 800b6b0:	30 a0 00 09 	sb (r5+9),r0                                   
 800b6b4:	30 a0 00 0a 	sb (r5+10),r0                                  
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
 800b6b8:	0c c1 00 06 	sh (r6+6),r1                                   
 800b6bc:	e3 ff fe be 	bi 800b1b4 <msdos_format+0xe2c>                
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
 800b6c0:	78 05 08 02 	mvhi r5,0x802                                  
 800b6c4:	38 a5 ff e4 	ori r5,r5,0xffe4                               
 800b6c8:	e3 ff fb e0 	bi 800a648 <msdos_format+0x2c0>                
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
 800b6cc:	34 04 00 01 	mvi r4,1                                       
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fmt_params->sectors_per_cluster = 1 << b;                       
 800b6d0:	5b 84 02 78 	sw (sp+632),r4                                 
 800b6d4:	e3 ff fc 72 	bi 800a89c <msdos_format+0x514>                
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800b6d8:	78 04 08 03 	mvhi r4,0x803                                  
 800b6dc:	b8 80 18 00 	mv r3,r4                                       
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
 800b6e0:	34 05 00 02 	mvi r5,2                                       
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800b6e4:	34 04 00 02 	mvi r4,2                                       
 800b6e8:	34 01 00 00 	mvi r1,0                                       
 800b6ec:	34 02 00 02 	mvi r2,2                                       
 800b6f0:	38 63 00 70 	ori r3,r3,0x70                                 
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
 800b6f4:	33 85 02 9c 	sb (sp+668),r5                                 
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
 800b6f8:	fb ff fa 70 	calli 800a0b8 <msdos_format_printf>            
     * limiting values for disk size, fat type, sectors per cluster   
     * NOTE: maximum sect_per_clust is arbitrarily choosen with values that
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
 800b6fc:	34 0b 00 20 	mvi r11,32                                     
  /*                                                                  
   * determine FAT type and sectors per cluster                       
   * depends on                                                       
   */                                                                 
  if (ret_val == 0) {                                                 
    fmt_params->sectors_per_cluster = 1;                              
 800b700:	34 04 7f a8 	mvi r4,32680                                   
 800b704:	e3 ff fc 60 	bi 800a884 <msdos_format+0x4fc>                
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
	 fmt_params->VolLabel,                                               
	 FAT_BR_VOLLAB_SIZE);                                                
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),                           
 800b708:	78 03 08 02 	mvhi r3,0x802                                  
 800b70c:	38 63 ff ec 	ori r3,r3,0xffec                               
 800b710:	e3 ff fe 98 	bi 800b170 <msdos_format+0xde8>                
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
 800b714:	7f 64 00 00 	cmpnei r4,fp,0                                 <== NOT EXECUTED
 800b718:	b9 e0 c8 00 	mv r25,r15                                     <== NOT EXECUTED
 800b71c:	5b 84 00 64 	sw (sp+100),r4                                 <== NOT EXECUTED
 800b720:	5b 84 00 5c 	sw (sp+92),r4                                  <== NOT EXECUTED
 800b724:	e3 ff fb 80 	bi 800a524 <msdos_format+0x19c>                <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
 800b728:	7f 64 00 00 	cmpnei r4,fp,0                                 <== NOT EXECUTED
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800b72c:	5b 85 02 78 	sw (sp+632),r5                                 <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
 800b730:	5b 84 00 64 	sw (sp+100),r4                                 <== NOT EXECUTED
 800b734:	f8 00 44 30 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800b738:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 800b73c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800b740:	2b 81 00 64 	lw r1,(sp+100)                                 <== NOT EXECUTED
 800b744:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 800b748:	2b 99 02 70 	lw r25,(sp+624)                                <== NOT EXECUTED
 800b74c:	5b 81 00 5c 	sw (sp+92),r1                                  <== NOT EXECUTED
 800b750:	5b 82 00 48 	sw (sp+72),r2                                  <== NOT EXECUTED
 800b754:	e3 ff fb 74 	bi 800a524 <msdos_format+0x19c>                <== NOT EXECUTED
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
 800b758:	5b 84 02 78 	sw (sp+632),r4                                 <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
 800b75c:	f8 00 44 26 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800b760:	34 04 00 16 	mvi r4,22                                      <== NOT EXECUTED
 800b764:	58 24 00 00 	sw (r1+0),r4                                   <== NOT EXECUTED
 800b768:	34 05 ff ff 	mvi r5,-1                                      <== NOT EXECUTED
 800b76c:	2b 95 02 70 	lw r21,(sp+624)                                <== NOT EXECUTED
 800b770:	e3 ff fd 54 	bi 800acc0 <msdos_format+0x938>                <== NOT EXECUTED
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
		       rqdata->media,                                               
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
	errno = EINVAL;                                                      
 800b774:	f8 00 44 20 	calli 801c7f4 <__errno>                        
 800b778:	34 02 00 16 	mvi r2,22                                      
 800b77c:	58 22 00 00 	sw (r1+0),r2                                   
      const char valid_media_codes[] =                                
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
		       rqdata->media,                                               
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
 800b780:	34 04 ff ff 	mvi r4,-1                                      
	errno = EINVAL;                                                      
 800b784:	2b 8b 02 74 	lw r11,(sp+628)                                
 800b788:	34 0c 00 00 	mvi r12,0                                      
      const char valid_media_codes[] =                                
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
		       rqdata->media,                                               
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
 800b78c:	5b 84 00 48 	sw (sp+72),r4                                  
 800b790:	e3 ff fb 9f 	bi 800a60c <msdos_format+0x284>                
                                                                      

0800a198 <msdos_format_fill_sectors>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
 800a198:	37 9c ff cc 	addi sp,sp,-52                                 
 800a19c:	5b 8b 00 34 	sw (sp+52),r11                                 
 800a1a0:	5b 8c 00 30 	sw (sp+48),r12                                 
 800a1a4:	5b 8d 00 2c 	sw (sp+44),r13                                 
 800a1a8:	5b 8e 00 28 	sw (sp+40),r14                                 
 800a1ac:	5b 8f 00 24 	sw (sp+36),r15                                 
 800a1b0:	5b 90 00 20 	sw (sp+32),r16                                 
 800a1b4:	5b 91 00 1c 	sw (sp+28),r17                                 
 800a1b8:	5b 92 00 18 	sw (sp+24),r18                                 
 800a1bc:	5b 93 00 14 	sw (sp+20),r19                                 
 800a1c0:	5b 94 00 10 	sw (sp+16),r20                                 
 800a1c4:	5b 95 00 0c 	sw (sp+12),r21                                 
 800a1c8:	5b 96 00 08 	sw (sp+8),r22                                  
 800a1cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a1d0:	b8 20 a8 00 	mv r21,r1                                      
                                                                      
  /*                                                                  
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
 800a1d4:	b8 a0 08 00 	mv r1,r5                                       
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
 800a1d8:	b8 a0 90 00 	mv r18,r5                                      
 800a1dc:	b8 40 a0 00 	mv r20,r2                                      
 800a1e0:	b8 60 58 00 	mv r11,r3                                      
 800a1e4:	b8 80 78 00 	mv r15,r4                                      
 800a1e8:	b8 c0 60 00 	mv r12,r6                                      
                                                                      
  /*                                                                  
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
 800a1ec:	fb ff e5 3d 	calli 80036e0 <malloc>                         
 800a1f0:	b8 20 88 00 	mv r17,r1                                      
    if (fill_buffer == NULL) {                                        
 800a1f4:	44 20 00 48 	be r1,r0,800a314 <msdos_format_fill_sectors+0x17c><== NEVER TAKEN
      errno = ENOMEM;                                                 
      ret_val = -1;                                                   
    }                                                                 
    else {                                                            
      memset(fill_buffer,fill_byte,sector_size);                      
 800a1f8:	b9 80 10 00 	mv r2,r12                                      
 800a1fc:	ba 40 18 00 	mv r3,r18                                      
 800a200:	f8 00 4d 0c 	calli 801d630 <memset>                         
    }                                                                 
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
 800a204:	78 03 08 02 	mvhi r3,0x802                                  
 800a208:	ba a0 08 00 	mv r1,r21                                      
 800a20c:	34 02 00 02 	mvi r2,2                                       
 800a210:	38 63 ff b8 	ori r3,r3,0xffb8                               
 800a214:	fb ff ff a9 	calli 800a0b8 <msdos_format_printf>            
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
 800a218:	45 e0 00 55 	be r15,r0,800a36c <msdos_format_fill_sectors+0x1d4><== NEVER TAKEN
 800a21c:	b5 ef 08 00 	add r1,r15,r15                                 
 800a220:	b4 21 08 00 	add r1,r1,r1                                   
 800a224:	b4 21 68 00 	add r13,r1,r1                                  
 800a228:	b5 ad 68 00 	add r13,r13,r13                                
 800a22c:	b4 2d 68 00 	add r13,r1,r13                                 
 800a230:	b5 ad 10 00 	add r2,r13,r13                                 
 800a234:	b4 42 10 00 	add r2,r2,r2                                   
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    if (percent != last_percent) {                                    
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
 800a238:	78 16 08 02 	mvhi r22,0x802                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
 800a23c:	b5 a2 68 00 	add r13,r13,r2                                 
 800a240:	b9 e0 60 00 	mv r12,r15                                     
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
  char *fill_buffer = NULL;                                           
  uint32_t total_sectors = sector_cnt;                                
  int last_percent = -1;                                              
 800a244:	34 13 ff ff 	mvi r19,-1                                     
  while ((ret_val == 0) &&                                            
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    if (percent != last_percent) {                                    
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
 800a248:	3a d6 fd 8c 	ori r22,r22,0xfd8c                             
 800a24c:	e0 00 00 0d 	bi 800a280 <msdos_format_fill_sectors+0xe8>    
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
 800a250:	b9 60 10 00 	mv r2,r11                                      
 800a254:	ba 80 08 00 	mv r1,r20                                      
 800a258:	ba 40 18 00 	mv r3,r18                                      
 800a25c:	ba 20 20 00 	mv r4,r17                                      
 800a260:	fb ff ff b0 	calli 800a120 <msdos_format_write_sec>         
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
 800a264:	64 30 00 00 	cmpei r16,r1,0                                 
	 (sector_cnt > 0)) {                                                 
 800a268:	7d 86 00 00 	cmpnei r6,r12,0                                
    if (percent != last_percent) {                                    
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
 800a26c:	b8 20 70 00 	mv r14,r1                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
 800a270:	a2 06 80 00 	and r16,r16,r6                                 
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
 800a274:	35 6b 00 01 	addi r11,r11,1                                 
    sector_cnt--;                                                     
 800a278:	35 ad ff 9c 	addi r13,r13,-100                              
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
 800a27c:	46 00 00 0e 	be r16,r0,800a2b4 <msdos_format_fill_sectors+0x11c>
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
 800a280:	b9 e0 10 00 	mv r2,r15                                      
 800a284:	b9 a0 08 00 	mv r1,r13                                      
 800a288:	f8 00 93 ac 	calli 802f138 <__udivsi3>                      
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
 800a28c:	35 8c ff ff 	addi r12,r12,-1                                
   */                                                                 
  while ((ret_val == 0) &&                                            
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    if (percent != last_percent) {                                    
      if ((percent & 1) == 0)                                         
 800a290:	20 24 00 01 	andi r4,r1,0x1                                 
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    if (percent != last_percent) {                                    
 800a294:	44 33 ff ef 	be r1,r19,800a250 <msdos_format_fill_sectors+0xb8>
      if ((percent & 1) == 0)                                         
 800a298:	b8 20 98 00 	mv r19,r1                                      
 800a29c:	5c 80 ff ed 	bne r4,r0,800a250 <msdos_format_fill_sectors+0xb8>
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
 800a2a0:	ba a0 08 00 	mv r1,r21                                      
 800a2a4:	34 02 00 02 	mvi r2,2                                       
 800a2a8:	ba c0 18 00 	mv r3,r22                                      
 800a2ac:	fb ff ff 83 	calli 800a0b8 <msdos_format_printf>            
 800a2b0:	e3 ff ff e8 	bi 800a250 <msdos_format_fill_sectors+0xb8>    
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
 800a2b4:	78 03 08 03 	mvhi r3,0x803                                  
 800a2b8:	ba a0 08 00 	mv r1,r21                                      
 800a2bc:	34 02 00 02 	mvi r2,2                                       
 800a2c0:	38 63 00 c4 	ori r3,r3,0xc4                                 
 800a2c4:	fb ff ff 7d 	calli 800a0b8 <msdos_format_printf>            
                                                                      
  if (ret_val)                                                        
 800a2c8:	5d d0 00 21 	bne r14,r16,800a34c <msdos_format_fill_sectors+0x1b4><== NEVER TAKEN
                                                                      
  /*                                                                  
   * cleanup                                                          
   */                                                                 
  if (fill_buffer != NULL) {                                          
    free(fill_buffer);                                                
 800a2cc:	ba 20 08 00 	mv r1,r17                                      
 800a2d0:	fb ff e3 5e 	calli 8003048 <free>                           
    fill_buffer = NULL;                                               
  }                                                                   
  return ret_val;                                                     
}                                                                     
 800a2d4:	b9 c0 08 00 	mv r1,r14                                      
 800a2d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a2dc:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800a2e0:	2b 8c 00 30 	lw r12,(sp+48)                                 
 800a2e4:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800a2e8:	2b 8e 00 28 	lw r14,(sp+40)                                 
 800a2ec:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800a2f0:	2b 90 00 20 	lw r16,(sp+32)                                 
 800a2f4:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800a2f8:	2b 92 00 18 	lw r18,(sp+24)                                 
 800a2fc:	2b 93 00 14 	lw r19,(sp+20)                                 
 800a300:	2b 94 00 10 	lw r20,(sp+16)                                 
 800a304:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800a308:	2b 96 00 08 	lw r22,(sp+8)                                  
 800a30c:	37 9c 00 34 	addi sp,sp,52                                  
 800a310:	c3 a0 00 00 	ret                                            
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    if (fill_buffer == NULL) {                                        
      errno = ENOMEM;                                                 
 800a314:	f8 00 49 38 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800a318:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
    else {                                                            
      memset(fill_buffer,fill_byte,sector_size);                      
    }                                                                 
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
 800a31c:	78 03 08 02 	mvhi r3,0x802                                  <== NOT EXECUTED
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    if (fill_buffer == NULL) {                                        
      errno = ENOMEM;                                                 
 800a320:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    else {                                                            
      memset(fill_buffer,fill_byte,sector_size);                      
    }                                                                 
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
 800a324:	38 63 ff b8 	ori r3,r3,0xffb8                               <== NOT EXECUTED
 800a328:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a32c:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 800a330:	fb ff ff 62 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
 800a334:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 800a338:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 800a33c:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a340:	38 63 00 c4 	ori r3,r3,0xc4                                 <== NOT EXECUTED
 800a344:	fb ff ff 5d 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    if (fill_buffer == NULL) {                                        
      errno = ENOMEM;                                                 
      ret_val = -1;                                                   
 800a348:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
                                                                      
  if (ret_val)                                                        
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,           
 800a34c:	78 03 08 02 	mvhi r3,0x802                                  <== NOT EXECUTED
 800a350:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 800a354:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 800a358:	38 63 ff c4 	ori r3,r3,0xffc4                               <== NOT EXECUTED
 800a35c:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 800a360:	fb ff ff 56 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
                         "filling error on sector: %d\n", start_sector);
                                                                      
  /*                                                                  
   * cleanup                                                          
   */                                                                 
  if (fill_buffer != NULL) {                                          
 800a364:	46 20 ff dc 	be r17,r0,800a2d4 <msdos_format_fill_sectors+0x13c><== NOT EXECUTED
 800a368:	e3 ff ff d9 	bi 800a2cc <msdos_format_fill_sectors+0x134>   <== NOT EXECUTED
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
 800a36c:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 800a370:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 800a374:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a378:	38 63 00 c4 	ori r3,r3,0xc4                                 <== NOT EXECUTED
 800a37c:	fb ff ff 4f 	calli 800a0b8 <msdos_format_printf>            <== NOT EXECUTED
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
 800a380:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
 800a384:	e3 ff ff d2 	bi 800a2cc <msdos_format_fill_sectors+0x134>   <== NOT EXECUTED
                                                                      

0800a0b8 <msdos_format_printf>: */ static void msdos_format_printf (const msdos_format_request_param_t *rqdata, int info_level, const char *format, ...) {
 800a0b8:	37 9c ff e0 	addi sp,sp,-32                                 
 800a0bc:	5b 8b 00 08 	sw (sp+8),r11                                  
 800a0c0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a0c4:	5b 83 00 0c 	sw (sp+12),r3                                  
 800a0c8:	5b 84 00 10 	sw (sp+16),r4                                  
 800a0cc:	5b 85 00 14 	sw (sp+20),r5                                  
 800a0d0:	5b 86 00 18 	sw (sp+24),r6                                  
 800a0d4:	5b 87 00 1c 	sw (sp+28),r7                                  
 800a0d8:	5b 88 00 20 	sw (sp+32),r8                                  
  va_list args;                                                       
  va_start (args, format);                                            
  if (rqdata != NULL && rqdata->info_level >= info_level)             
 800a0dc:	44 20 00 0d 	be r1,r0,800a110 <msdos_format_printf+0x58>    
 800a0e0:	28 21 00 18 	lw r1,(r1+24)                                  
 800a0e4:	48 41 00 0b 	bg r2,r1,800a110 <msdos_format_printf+0x58>    <== ALWAYS TAKEN
  {                                                                   
    vfprintf (stdout, format, args);                                  
 800a0e8:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 800a0ec:	39 6b 22 80 	ori r11,r11,0x2280                             <== NOT EXECUTED
 800a0f0:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800a0f4:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 800a0f8:	37 83 00 10 	addi r3,sp,16                                  <== NOT EXECUTED
 800a0fc:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 800a100:	f8 00 69 b3 	calli 80247cc <vfprintf>                       <== NOT EXECUTED
    fflush (stdout);                                                  
 800a104:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800a108:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 800a10c:	f8 00 4a ca 	calli 801cc34 <fflush>                         <== NOT EXECUTED
  }                                                                   
  va_end (args);                                                      
}                                                                     
 800a110:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a114:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800a118:	37 9c 00 20 	addi sp,sp,32                                  
 800a11c:	c3 a0 00 00 	ret                                            
                                                                      

0800a120 <msdos_format_write_sec>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
 800a120:	37 9c ff f0 	addi sp,sp,-16                                 
 800a124:	5b 8b 00 10 	sw (sp+16),r11                                 
 800a128:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800a12c:	5b 8d 00 08 	sw (sp+8),r13                                  
 800a130:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a134:	b8 20 58 00 	mv r11,r1                                      
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
 800a138:	b8 60 08 00 	mv r1,r3                                       
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
 800a13c:	b8 60 60 00 	mv r12,r3                                      
 800a140:	b8 80 68 00 	mv r13,r4                                      
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
 800a144:	fb ff dc 56 	calli 800129c <__mulsi3>                       
 800a148:	b8 20 10 00 	mv r2,r1                                       
 800a14c:	34 03 00 00 	mvi r3,0                                       
 800a150:	b9 60 08 00 	mv r1,r11                                      
 800a154:	f8 00 24 22 	calli 80131dc <lseek>                          
 800a158:	34 05 ff ff 	mvi r5,-1                                      
 800a15c:	48 01 00 08 	bg r0,r1,800a17c <msdos_format_write_sec+0x5c> <== NEVER TAKEN
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > write(fd,buffer,sector_size)) {                           
 800a160:	b9 a0 10 00 	mv r2,r13                                      
 800a164:	b9 80 18 00 	mv r3,r12                                      
 800a168:	b9 60 08 00 	mv r1,r11                                      
 800a16c:	fb ff ed dc 	calli 80058dc <write>                          
 800a170:	34 02 00 1f 	mvi r2,31                                      
 800a174:	f8 00 93 a1 	calli 802eff8 <__lshrsi3>                      
 800a178:	c8 01 28 00 	sub r5,r0,r1                                   
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  return ret_val;                                                     
}                                                                     
 800a17c:	b8 a0 08 00 	mv r1,r5                                       
 800a180:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a184:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800a188:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800a18c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800a190:	37 9c 00 10 	addi sp,sp,16                                  
 800a194:	c3 a0 00 00 	ret                                            
                                                                      

08019294 <msdos_get_dotdot_dir_info_cluster_num_and_offset>: rtems_filesystem_mount_table_entry_t *mt_entry, uint32_t cln, fat_dir_pos_t *dir_pos, char *dir_entry ) {
 8019294:	37 9c ff 98 	addi sp,sp,-104                                
 8019298:	5b 8b 00 24 	sw (sp+36),r11                                 
 801929c:	5b 8c 00 20 	sw (sp+32),r12                                 
 80192a0:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80192a4:	5b 8e 00 18 	sw (sp+24),r14                                 
 80192a8:	5b 8f 00 14 	sw (sp+20),r15                                 
 80192ac:	5b 90 00 10 	sw (sp+16),r16                                 
 80192b0:	5b 91 00 0c 	sw (sp+12),r17                                 
 80192b4:	5b 92 00 08 	sw (sp+8),r18                                  
 80192b8:	5b 9d 00 04 	sw (sp+4),ra                                   
    int              rc = RC_OK;                                      
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 80192bc:	28 2c 00 08 	lw r12,(r1+8)                                  
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    uint32_t                              cln,                        
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
 80192c0:	b8 20 78 00 	mv r15,r1                                      
 80192c4:	b8 60 68 00 	mv r13,r3                                      
 80192c8:	b8 40 70 00 	mv r14,r2                                      
    uint32_t         cl4find = 0;                                     
                                                                      
    /*                                                                
     * open fat-file corresponded to ".."                             
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
 80192cc:	b9 80 08 00 	mv r1,r12                                      
 80192d0:	b8 60 10 00 	mv r2,r3                                       
 80192d4:	37 83 00 68 	addi r3,sp,104                                 
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    uint32_t                              cln,                        
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
 80192d8:	b8 80 88 00 	mv r17,r4                                      
    int              rc = RC_OK;                                      
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    fat_file_fd_t   *fat_fd = NULL;                                   
 80192dc:	5b 80 00 68 	sw (sp+104),r0                                 
    uint32_t         cl4find = 0;                                     
                                                                      
    /*                                                                
     * open fat-file corresponded to ".."                             
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
 80192e0:	fb ff da 89 	calli 800fd04 <fat_file_open>                  
 80192e4:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RC_OK)                                                  
 80192e8:	44 20 00 0d 	be r1,r0,801931c <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x88><== ALWAYS TAKEN
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
    return rc;                                                        
}                                                                     
 80192ec:	b9 60 08 00 	mv r1,r11                                      
 80192f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80192f4:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80192f8:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80192fc:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8019300:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8019304:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8019308:	2b 90 00 10 	lw r16,(sp+16)                                 
 801930c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8019310:	2b 92 00 08 	lw r18,(sp+8)                                  
 8019314:	37 9c 00 68 	addi sp,sp,104                                 
 8019318:	c3 a0 00 00 	ret                                            
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
 801931c:	2b 83 00 68 	lw r3,(sp+104)                                 
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
 8019320:	78 02 00 20 	mvhi r2,0x20                                   
                                                                      
    fat_fd->map.file_cln = 0;                                         
    fat_fd->map.disk_cln = fat_fd->cln;                               
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
 8019324:	b9 80 08 00 	mv r1,r12                                      
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
 8019328:	58 62 00 14 	sw (r3+20),r2                                  
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
 801932c:	58 6e 00 1c 	sw (r3+28),r14                                 
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
 8019330:	58 60 00 10 	sw (r3+16),r0                                  
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
 8019334:	58 60 00 34 	sw (r3+52),r0                                  
    fat_fd->map.disk_cln = fat_fd->cln;                               
 8019338:	58 6e 00 38 	sw (r3+56),r14                                 
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
 801933c:	b8 60 10 00 	mv r2,r3                                       
 8019340:	fb ff dd fe 	calli 8010b38 <fat_file_size>                  
 8019344:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RC_OK)                                                  
 8019348:	5c 20 00 de 	bne r1,r0,80196c0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x42c><== NEVER TAKEN
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
 801934c:	78 0b 08 02 	mvhi r11,0x802                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
 8019350:	37 8e 00 48 	addi r14,sp,72                                 
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
 8019354:	39 6b fd 8c 	ori r11,r11,0xfd8c                             
 8019358:	34 02 00 01 	mvi r2,1                                       
 801935c:	b9 c0 18 00 	mv r3,r14                                      
 8019360:	34 04 00 0b 	mvi r4,11                                      
 8019364:	b9 60 08 00 	mv r1,r11                                      
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
 8019368:	59 c0 00 04 	sw (r14+4),r0                                  
 801936c:	59 c0 00 08 	sw (r14+8),r0                                  
 8019370:	59 c0 00 0c 	sw (r14+12),r0                                 
 8019374:	59 c0 00 10 	sw (r14+16),r0                                 
 8019378:	59 c0 00 14 	sw (r14+20),r0                                 
 801937c:	59 c0 00 18 	sw (r14+24),r0                                 
 8019380:	59 c0 00 1c 	sw (r14+28),r0                                 
 8019384:	5b 80 00 48 	sw (sp+72),r0                                  
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
 8019388:	fb ff f9 20 	calli 8017808 <msdos_long_to_short>            
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1, 
 801938c:	2b 82 00 68 	lw r2,(sp+104)                                 
 8019390:	b9 60 20 00 	mv r4,r11                                      
 8019394:	b9 e0 08 00 	mv r1,r15                                      
 8019398:	34 03 00 00 	mvi r3,0                                       
 801939c:	34 05 00 01 	mvi r5,1                                       
 80193a0:	34 06 00 01 	mvi r6,1                                       
 80193a4:	b9 a0 38 00 	mv r7,r13                                      
 80193a8:	b9 c0 40 00 	mv r8,r14                                      
 80193ac:	fb ff fb b9 	calli 8018290 <msdos_find_name_in_fat_file>    
 80193b0:	b8 20 58 00 	mv r11,r1                                      
                                     MSDOS_NAME_SHORT, dir_pos, dot_node);
                                                                      
    if (rc != RC_OK)                                                  
 80193b4:	5c 20 00 c3 	bne r1,r0,80196c0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x42c><== NEVER TAKEN
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
 80193b8:	78 10 08 03 	mvhi r16,0x803                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
 80193bc:	37 8b 00 28 	addi r11,sp,40                                 
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
 80193c0:	3a 10 04 c4 	ori r16,r16,0x4c4                              
 80193c4:	b9 60 18 00 	mv r3,r11                                      
 80193c8:	34 02 00 02 	mvi r2,2                                       
 80193cc:	34 04 00 0b 	mvi r4,11                                      
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
 80193d0:	59 60 00 04 	sw (r11+4),r0                                  
 80193d4:	59 60 00 08 	sw (r11+8),r0                                  
 80193d8:	59 60 00 0c 	sw (r11+12),r0                                 
 80193dc:	59 60 00 10 	sw (r11+16),r0                                 
 80193e0:	59 60 00 14 	sw (r11+20),r0                                 
 80193e4:	59 60 00 18 	sw (r11+24),r0                                 
 80193e8:	59 60 00 1c 	sw (r11+28),r0                                 
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
 80193ec:	ba 00 08 00 	mv r1,r16                                      
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
 80193f0:	5b 80 00 28 	sw (sp+40),r0                                  
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
 80193f4:	fb ff f9 05 	calli 8017808 <msdos_long_to_short>            
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, "..", 2,
 80193f8:	2b 82 00 68 	lw r2,(sp+104)                                 
 80193fc:	b9 60 40 00 	mv r8,r11                                      
 8019400:	b9 e0 08 00 	mv r1,r15                                      
 8019404:	34 03 00 00 	mvi r3,0                                       
 8019408:	ba 00 20 00 	mv r4,r16                                      
 801940c:	34 05 00 02 	mvi r5,2                                       
 8019410:	34 06 00 01 	mvi r6,1                                       
 8019414:	b9 a0 38 00 	mv r7,r13                                      
 8019418:	fb ff fb 9e 	calli 8018290 <msdos_find_name_in_fat_file>    
 801941c:	b8 20 58 00 	mv r11,r1                                      
                                     MSDOS_NAME_SHORT, dir_pos,       
                                     dotdot_node);                    
                                                                      
    if (rc != RC_OK)                                                  
 8019420:	5c 20 00 a8 	bne r1,r0,80196c0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x42c><== NEVER TAKEN
    }                                                                 
                                                                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);                    
                                                                      
    /* close fat-file corresponded to ".." directory */               
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
 8019424:	2b 82 00 68 	lw r2,(sp+104)                                 
 8019428:	b9 80 08 00 	mv r1,r12                                      
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);                    
 801942c:	2d d0 00 1a 	lhu r16,(r14+26)                               
 8019430:	2d d2 00 14 	lhu r18,(r14+20)                               
                                                                      
    /* close fat-file corresponded to ".." directory */               
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
 8019434:	fb ff db e9 	calli 80103d8 <fat_file_close>                 
 8019438:	b8 20 58 00 	mv r11,r1                                      
    if ( rc != RC_OK )                                                
 801943c:	5c 20 ff ac 	bne r1,r0,80192ec <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x58><== NEVER TAKEN
        return rc;                                                    
                                                                      
    if ( (MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)               
 8019440:	2f 81 00 3c 	lhu r1,(sp+60)                                 
 8019444:	2f 8e 00 42 	lhu r14,(sp+66)                                
 8019448:	34 02 00 10 	mvi r2,16                                      
 801944c:	00 23 00 01 	srui r3,r1,1                                   
 8019450:	b4 21 08 00 	add r1,r1,r1                                   
 8019454:	00 63 00 01 	srui r3,r3,1                                   
 8019458:	b4 21 08 00 	add r1,r1,r1                                   
 801945c:	00 63 00 01 	srui r3,r3,1                                   
 8019460:	b4 21 08 00 	add r1,r1,r1                                   
 8019464:	00 63 00 01 	srui r3,r3,1                                   
 8019468:	b4 21 08 00 	add r1,r1,r1                                   
 801946c:	00 63 00 01 	srui r3,r3,1                                   
 8019470:	b4 21 08 00 	add r1,r1,r1                                   
 8019474:	00 63 00 01 	srui r3,r3,1                                   
 8019478:	b4 21 08 00 	add r1,r1,r1                                   
 801947c:	00 63 00 01 	srui r3,r3,1                                   
 8019480:	b4 21 08 00 	add r1,r1,r1                                   
 8019484:	00 63 00 01 	srui r3,r3,1                                   
 8019488:	b4 21 08 00 	add r1,r1,r1                                   
 801948c:	b8 23 08 00 	or r1,r1,r3                                    
 8019490:	20 21 ff ff 	andi r1,r1,0xffff                              
 8019494:	fb ff 9f 34 	calli 8001164 <__ashlsi3>                      
 8019498:	01 c3 00 01 	srui r3,r14,1                                  
 801949c:	b5 ce 10 00 	add r2,r14,r14                                 
 80194a0:	00 63 00 01 	srui r3,r3,1                                   
 80194a4:	b4 42 10 00 	add r2,r2,r2                                   
 80194a8:	00 63 00 01 	srui r3,r3,1                                   
 80194ac:	b4 42 10 00 	add r2,r2,r2                                   
 80194b0:	00 63 00 01 	srui r3,r3,1                                   
 80194b4:	b4 42 10 00 	add r2,r2,r2                                   
 80194b8:	00 63 00 01 	srui r3,r3,1                                   
 80194bc:	b4 42 10 00 	add r2,r2,r2                                   
 80194c0:	00 63 00 01 	srui r3,r3,1                                   
 80194c4:	b4 42 10 00 	add r2,r2,r2                                   
 80194c8:	00 63 00 01 	srui r3,r3,1                                   
 80194cc:	b4 42 10 00 	add r2,r2,r2                                   
 80194d0:	00 63 00 01 	srui r3,r3,1                                   
 80194d4:	b4 42 10 00 	add r2,r2,r2                                   
 80194d8:	b8 43 10 00 	or r2,r2,r3                                    
 80194dc:	20 42 ff ff 	andi r2,r2,0xffff                              
 80194e0:	b8 22 08 00 	or r1,r1,r2                                    
 80194e4:	5c 2b 00 07 	bne r1,r11,8019500 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x26c><== ALWAYS TAKEN
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 80194e8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80194ec:	59 a1 00 08 	sw (r13+8),r1                                  <== NOT EXECUTED
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 80194f0:	59 a1 00 0c 	sw (r13+12),r1                                 <== NOT EXECUTED
        /*                                                            
         * we handle root dir for all FAT types in the same way with the
         * ordinary directories ( through fat_file_* calls )          
         */                                                           
        fat_dir_pos_init(dir_pos);                                    
        dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                 
 80194f4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
 80194f8:	59 a0 00 04 	sw (r13+4),r0                                  <== NOT EXECUTED
 80194fc:	59 a1 00 00 	sw (r13+0),r1                                  <== NOT EXECUTED
    }                                                                 
                                                                      
    /* open fat-file corresponded to second ".." */                   
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
 8019500:	b9 80 08 00 	mv r1,r12                                      
 8019504:	b9 a0 10 00 	mv r2,r13                                      
 8019508:	37 83 00 68 	addi r3,sp,104                                 
 801950c:	fb ff d9 fe 	calli 800fd04 <fat_file_open>                  
 8019510:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RC_OK)                                                  
 8019514:	5c 20 ff 76 	bne r1,r0,80192ec <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x58><== NEVER TAKEN
        return rc;                                                    
                                                                      
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
 8019518:	2f 81 00 3c 	lhu r1,(sp+60)                                 
 801951c:	2f 8e 00 42 	lhu r14,(sp+66)                                
 8019520:	34 02 00 10 	mvi r2,16                                      
 8019524:	00 23 00 01 	srui r3,r1,1                                   
 8019528:	b4 21 08 00 	add r1,r1,r1                                   
 801952c:	00 63 00 01 	srui r3,r3,1                                   
 8019530:	b4 21 08 00 	add r1,r1,r1                                   
 8019534:	00 63 00 01 	srui r3,r3,1                                   
 8019538:	b4 21 08 00 	add r1,r1,r1                                   
 801953c:	00 63 00 01 	srui r3,r3,1                                   
 8019540:	b4 21 08 00 	add r1,r1,r1                                   
 8019544:	00 63 00 01 	srui r3,r3,1                                   
 8019548:	b4 21 08 00 	add r1,r1,r1                                   
 801954c:	00 63 00 01 	srui r3,r3,1                                   
 8019550:	b4 21 08 00 	add r1,r1,r1                                   
 8019554:	00 63 00 01 	srui r3,r3,1                                   
 8019558:	b4 21 08 00 	add r1,r1,r1                                   
 801955c:	00 63 00 01 	srui r3,r3,1                                   
 8019560:	b4 21 08 00 	add r1,r1,r1                                   
 8019564:	b8 23 08 00 	or r1,r1,r3                                    
 8019568:	20 21 ff ff 	andi r1,r1,0xffff                              
 801956c:	fb ff 9e fe 	calli 8001164 <__ashlsi3>                      
 8019570:	01 c3 00 01 	srui r3,r14,1                                  
 8019574:	b5 ce 10 00 	add r2,r14,r14                                 
 8019578:	00 63 00 01 	srui r3,r3,1                                   
 801957c:	b4 42 10 00 	add r2,r2,r2                                   
 8019580:	00 63 00 01 	srui r3,r3,1                                   
 8019584:	b4 42 10 00 	add r2,r2,r2                                   
 8019588:	00 63 00 01 	srui r3,r3,1                                   
 801958c:	b4 42 10 00 	add r2,r2,r2                                   
 8019590:	00 63 00 01 	srui r3,r3,1                                   
 8019594:	b4 42 10 00 	add r2,r2,r2                                   
 8019598:	00 63 00 01 	srui r3,r3,1                                   
 801959c:	b4 42 10 00 	add r2,r2,r2                                   
 80195a0:	00 63 00 01 	srui r3,r3,1                                   
 80195a4:	b4 42 10 00 	add r2,r2,r2                                   
 80195a8:	00 63 00 01 	srui r3,r3,1                                   
 80195ac:	b4 42 10 00 	add r2,r2,r2                                   
 80195b0:	b8 43 10 00 	or r2,r2,r3                                    
 80195b4:	20 42 ff ff 	andi r2,r2,0xffff                              
 80195b8:	b8 22 08 00 	or r1,r1,r2                                    
 80195bc:	5c 2b 00 45 	bne r1,r11,80196d0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x43c><== ALWAYS TAKEN
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
 80195c0:	2b 82 00 68 	lw r2,(sp+104)                                 <== NOT EXECUTED
 80195c4:	29 81 00 3c 	lw r1,(r12+60)                                 <== NOT EXECUTED
 80195c8:	58 41 00 1c 	sw (r2+28),r1                                  <== NOT EXECUTED
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
    fat_fd->map.disk_cln = fat_fd->cln;                               
 80195cc:	28 43 00 1c 	lw r3,(r2+28)                                  
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
 80195d0:	78 01 00 20 	mvhi r1,0x20                                   
 80195d4:	58 41 00 14 	sw (r2+20),r1                                  
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
 80195d8:	58 40 00 10 	sw (r2+16),r0                                  
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
 80195dc:	58 40 00 34 	sw (r2+52),r0                                  
    fat_fd->map.disk_cln = fat_fd->cln;                               
 80195e0:	58 43 00 38 	sw (r2+56),r3                                  
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
 80195e4:	b9 80 08 00 	mv r1,r12                                      
 80195e8:	fb ff dd 54 	calli 8010b38 <fat_file_size>                  
 80195ec:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RC_OK)                                                  
 80195f0:	5c 20 00 34 	bne r1,r0,80196c0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x42c><== NEVER TAKEN
 80195f4:	02 43 00 01 	srui r3,r18,1                                  
 80195f8:	b6 52 08 00 	add r1,r18,r18                                 
 80195fc:	00 63 00 01 	srui r3,r3,1                                   
 8019600:	b4 21 08 00 	add r1,r1,r1                                   
 8019604:	00 63 00 01 	srui r3,r3,1                                   
 8019608:	b4 21 08 00 	add r1,r1,r1                                   
 801960c:	00 63 00 01 	srui r3,r3,1                                   
 8019610:	b4 21 08 00 	add r1,r1,r1                                   
 8019614:	00 63 00 01 	srui r3,r3,1                                   
 8019618:	b4 21 08 00 	add r1,r1,r1                                   
 801961c:	00 63 00 01 	srui r3,r3,1                                   
 8019620:	b4 21 08 00 	add r1,r1,r1                                   
 8019624:	00 63 00 01 	srui r3,r3,1                                   
 8019628:	b4 21 08 00 	add r1,r1,r1                                   
 801962c:	00 63 00 01 	srui r3,r3,1                                   
 8019630:	b4 21 08 00 	add r1,r1,r1                                   
 8019634:	b8 23 08 00 	or r1,r1,r3                                    
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);                    
 8019638:	34 02 00 10 	mvi r2,16                                      
 801963c:	20 21 ff ff 	andi r1,r1,0xffff                              
 8019640:	fb ff 9e c9 	calli 8001164 <__ashlsi3>                      
 8019644:	02 03 00 01 	srui r3,r16,1                                  
 8019648:	b6 10 10 00 	add r2,r16,r16                                 
 801964c:	00 63 00 01 	srui r3,r3,1                                   
 8019650:	b4 42 10 00 	add r2,r2,r2                                   
 8019654:	00 63 00 01 	srui r3,r3,1                                   
 8019658:	b4 42 10 00 	add r2,r2,r2                                   
 801965c:	00 63 00 01 	srui r3,r3,1                                   
 8019660:	b4 42 10 00 	add r2,r2,r2                                   
 8019664:	00 63 00 01 	srui r3,r3,1                                   
 8019668:	b4 42 10 00 	add r2,r2,r2                                   
 801966c:	00 63 00 01 	srui r3,r3,1                                   
 8019670:	b4 42 10 00 	add r2,r2,r2                                   
 8019674:	00 63 00 01 	srui r3,r3,1                                   
 8019678:	b4 42 10 00 	add r2,r2,r2                                   
 801967c:	00 63 00 01 	srui r3,r3,1                                   
 8019680:	b4 42 10 00 	add r2,r2,r2                                   
 8019684:	b8 43 18 00 	or r3,r2,r3                                    
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
 8019688:	2b 82 00 68 	lw r2,(sp+104)                                 
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);                    
 801968c:	20 63 ff ff 	andi r3,r3,0xffff                              
 8019690:	b8 23 18 00 	or r3,r1,r3                                    
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
 8019694:	b9 a0 20 00 	mv r4,r13                                      
 8019698:	b9 e0 08 00 	mv r1,r15                                      
 801969c:	ba 20 28 00 	mv r5,r17                                      
 80196a0:	fb ff fe 1c 	calli 8018f10 <msdos_find_node_by_cluster_num_in_fat_file>
 80196a4:	b8 20 58 00 	mv r11,r1                                      
                                                    dir_pos, dir_entry);
    if (rc != RC_OK)                                                  
 80196a8:	5c 20 00 06 	bne r1,r0,80196c0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x42c><== NEVER TAKEN
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
 80196ac:	2b 82 00 68 	lw r2,(sp+104)                                 
 80196b0:	b9 80 08 00 	mv r1,r12                                      
 80196b4:	fb ff db 49 	calli 80103d8 <fat_file_close>                 
 80196b8:	b8 20 58 00 	mv r11,r1                                      
    return rc;                                                        
 80196bc:	e3 ff ff 0c 	bi 80192ec <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x58>
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
                                                    dir_pos, dir_entry);
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 80196c0:	2b 82 00 68 	lw r2,(sp+104)                                 <== NOT EXECUTED
 80196c4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80196c8:	fb ff db 44 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
        return rc;                                                    
 80196cc:	e3 ff ff 08 	bi 80192ec <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x58><== NOT EXECUTED
        return rc;                                                    
                                                                      
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
 80196d0:	2b 82 00 68 	lw r2,(sp+104)                                 
 80196d4:	58 41 00 1c 	sw (r2+28),r1                                  
 80196d8:	e3 ff ff bd 	bi 80195cc <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x338>
                                                                      

080196dc <msdos_get_name_node>: int name_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry ) {
 80196dc:	37 9c ff e4 	addi sp,sp,-28                                 
 80196e0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80196e4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80196e8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80196ec:	5b 8e 00 10 	sw (sp+16),r14                                 
 80196f0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80196f4:	5b 90 00 08 	sw (sp+8),r16                                  
 80196f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80196fc:	b8 20 60 00 	mv r12,r1                                      
 8019700:	20 4d 00 ff 	andi r13,r2,0xff                               
    int              rc = RC_OK;                                      
    fat_file_fd_t   *fat_fd = parent_loc->node_access;                
    uint32_t         dotdot_cln = 0;                                  
                                                                      
    /* find name in fat-file which corresponds to the directory */    
    rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,    
 8019704:	28 21 00 14 	lw r1,(r1+20)                                  
 8019708:	29 82 00 08 	lw r2,(r12+8)                                  
    int                                     name_len,                 
    msdos_name_type_t                       name_type,                
    fat_dir_pos_t                          *dir_pos,                  
    char                                   *name_dir_entry            
    )                                                                 
{                                                                     
 801970c:	b8 80 48 00 	mv r9,r4                                       
 8019710:	b8 a0 40 00 	mv r8,r5                                       
 8019714:	b8 60 80 00 	mv r16,r3                                      
 8019718:	b8 c0 70 00 	mv r14,r6                                      
 801971c:	b8 e0 78 00 	mv r15,r7                                      
    int              rc = RC_OK;                                      
    fat_file_fd_t   *fat_fd = parent_loc->node_access;                
    uint32_t         dotdot_cln = 0;                                  
                                                                      
    /* find name in fat-file which corresponds to the directory */    
    rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,    
 8019720:	b9 00 30 00 	mv r6,r8                                       
 8019724:	b9 a0 18 00 	mv r3,r13                                      
 8019728:	ba 00 20 00 	mv r4,r16                                      
 801972c:	b9 20 28 00 	mv r5,r9                                       
 8019730:	b9 c0 38 00 	mv r7,r14                                      
 8019734:	b9 e0 40 00 	mv r8,r15                                      
 8019738:	fb ff fa d6 	calli 8018290 <msdos_find_name_in_fat_file>    
                                     create_node, name, name_len, name_type,
                                     dir_pos, name_dir_entry);        
    if ((rc != RC_OK) && (rc != MSDOS_NAME_NOT_FOUND_ERR))            
 801973c:	7c 22 7d 01 	cmpnei r2,r1,32001                             
    int              rc = RC_OK;                                      
    fat_file_fd_t   *fat_fd = parent_loc->node_access;                
    uint32_t         dotdot_cln = 0;                                  
                                                                      
    /* find name in fat-file which corresponds to the directory */    
    rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,    
 8019740:	b8 20 58 00 	mv r11,r1                                      
                                     create_node, name, name_len, name_type,
                                     dir_pos, name_dir_entry);        
    if ((rc != RC_OK) && (rc != MSDOS_NAME_NOT_FOUND_ERR))            
 8019744:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8019748:	a0 41 10 00 	and r2,r2,r1                                   
 801974c:	5c 40 00 3b 	bne r2,r0,8019838 <msdos_get_name_node+0x15c>  
        return rc;                                                    
                                                                      
    if (!create_node)                                                 
 8019750:	5d a2 00 3a 	bne r13,r2,8019838 <msdos_get_name_node+0x15c> 
    {                                                                 
        /* if we search for valid name and name not found -> return */
        if (rc == MSDOS_NAME_NOT_FOUND_ERR)                           
 8019754:	34 01 7d 01 	mvi r1,32001                                   
 8019758:	45 61 00 38 	be r11,r1,8019838 <msdos_get_name_node+0x15c>  
         * if we have deal with ".." - it is a special case :(((      
         *                                                            
         * Really, we should return cluster num and offset not of ".." slot, but
         * slot which correspondes to real directory name.            
         */                                                           
        if (rc == RC_OK)                                              
 801975c:	5d 6d 00 37 	bne r11,r13,8019838 <msdos_get_name_node+0x15c><== NEVER TAKEN
        {                                                             
            if (strncmp(name, "..", 2) == 0)                          
 8019760:	78 02 08 03 	mvhi r2,0x803                                  
 8019764:	ba 00 08 00 	mv r1,r16                                      
 8019768:	38 42 04 c4 	ori r2,r2,0x4c4                                
 801976c:	34 03 00 02 	mvi r3,2                                       
 8019770:	f8 00 14 54 	calli 801e8c0 <strncmp>                        
 8019774:	5c 2b 00 31 	bne r1,r11,8019838 <msdos_get_name_node+0x15c> 
            {                                                         
                dotdot_cln = MSDOS_EXTRACT_CLUSTER_NUM((name_dir_entry));
 8019778:	2d e1 00 14 	lhu r1,(r15+20)                                
 801977c:	2d ed 00 1a 	lhu r13,(r15+26)                               
 8019780:	34 02 00 10 	mvi r2,16                                      
 8019784:	00 23 00 01 	srui r3,r1,1                                   
 8019788:	b4 21 08 00 	add r1,r1,r1                                   
 801978c:	00 63 00 01 	srui r3,r3,1                                   
 8019790:	b4 21 08 00 	add r1,r1,r1                                   
 8019794:	00 63 00 01 	srui r3,r3,1                                   
 8019798:	b4 21 08 00 	add r1,r1,r1                                   
 801979c:	00 63 00 01 	srui r3,r3,1                                   
 80197a0:	b4 21 08 00 	add r1,r1,r1                                   
 80197a4:	00 63 00 01 	srui r3,r3,1                                   
 80197a8:	b4 21 08 00 	add r1,r1,r1                                   
 80197ac:	00 63 00 01 	srui r3,r3,1                                   
 80197b0:	b4 21 08 00 	add r1,r1,r1                                   
 80197b4:	00 63 00 01 	srui r3,r3,1                                   
 80197b8:	b4 21 08 00 	add r1,r1,r1                                   
 80197bc:	00 63 00 01 	srui r3,r3,1                                   
 80197c0:	b4 21 08 00 	add r1,r1,r1                                   
 80197c4:	b8 23 08 00 	or r1,r1,r3                                    
 80197c8:	20 21 ff ff 	andi r1,r1,0xffff                              
 80197cc:	fb ff 9e 66 	calli 8001164 <__ashlsi3>                      
 80197d0:	01 a3 00 01 	srui r3,r13,1                                  
 80197d4:	b5 ad 10 00 	add r2,r13,r13                                 
 80197d8:	00 63 00 01 	srui r3,r3,1                                   
 80197dc:	b4 42 10 00 	add r2,r2,r2                                   
 80197e0:	00 63 00 01 	srui r3,r3,1                                   
 80197e4:	b4 42 10 00 	add r2,r2,r2                                   
 80197e8:	00 63 00 01 	srui r3,r3,1                                   
 80197ec:	b4 42 10 00 	add r2,r2,r2                                   
 80197f0:	00 63 00 01 	srui r3,r3,1                                   
 80197f4:	b4 42 10 00 	add r2,r2,r2                                   
 80197f8:	00 63 00 01 	srui r3,r3,1                                   
 80197fc:	b4 42 10 00 	add r2,r2,r2                                   
 8019800:	00 63 00 01 	srui r3,r3,1                                   
 8019804:	b4 42 10 00 	add r2,r2,r2                                   
 8019808:	00 63 00 01 	srui r3,r3,1                                   
 801980c:	b4 42 10 00 	add r2,r2,r2                                   
 8019810:	b8 43 10 00 	or r2,r2,r3                                    
 8019814:	20 42 ff ff 	andi r2,r2,0xffff                              
 8019818:	b8 22 10 00 	or r2,r1,r2                                    
                                                                      
                /* are we right under root dir ? */                   
                if (dotdot_cln == 0)                                  
 801981c:	5c 4b 00 11 	bne r2,r11,8019860 <msdos_get_name_node+0x184> 
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 8019820:	34 01 ff ff 	mvi r1,-1                                      
 8019824:	59 c1 00 08 	sw (r14+8),r1                                  
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 8019828:	59 c1 00 0c 	sw (r14+12),r1                                 
                    /*                                                
                     * we can relax about first_char field - it never should be
                     * used for root dir                              
                     */                                               
                    fat_dir_pos_init(dir_pos);                        
                    dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;     
 801982c:	34 01 00 01 	mvi r1,1                                       
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
 8019830:	59 c0 00 04 	sw (r14+4),r0                                  
 8019834:	59 c1 00 00 	sw (r14+0),r1                                  
                }                                                     
            }                                                         
        }                                                             
    }                                                                 
    return rc;                                                        
}                                                                     
 8019838:	b9 60 08 00 	mv r1,r11                                      
 801983c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8019840:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8019844:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8019848:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801984c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8019850:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8019854:	2b 90 00 08 	lw r16,(sp+8)                                  
 8019858:	37 9c 00 1c 	addi sp,sp,28                                  
 801985c:	c3 a0 00 00 	ret                                            
                    fat_dir_pos_init(dir_pos);                        
                    dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;     
                }                                                     
                else                                                  
                {                                                     
                    rc =                                              
 8019860:	29 81 00 14 	lw r1,(r12+20)                                 
 8019864:	b9 c0 18 00 	mv r3,r14                                      
 8019868:	b9 e0 20 00 	mv r4,r15                                      
 801986c:	fb ff fe 8a 	calli 8019294 <msdos_get_dotdot_dir_info_cluster_num_and_offset>
 8019870:	b8 20 58 00 	mv r11,r1                                      
 8019874:	e3 ff ff f1 	bi 8019838 <msdos_get_name_node+0x15c>         
                                                                      

0800b850 <msdos_initialize_support>: rtems_filesystem_mount_table_entry_t *temp_mt_entry, const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *file_handlers, const rtems_filesystem_file_handlers_r *directory_handlers ) {
 800b850:	37 9c ff d0 	addi sp,sp,-48                                 
 800b854:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800b858:	5b 8c 00 18 	sw (sp+24),r12                                 
 800b85c:	5b 8d 00 14 	sw (sp+20),r13                                 
 800b860:	5b 8e 00 10 	sw (sp+16),r14                                 
 800b864:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800b868:	5b 90 00 08 	sw (sp+8),r16                                  
 800b86c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b870:	b8 20 68 00 	mv r13,r1                                      
 800b874:	b8 40 80 00 	mv r16,r2                                      
    msdos_fs_info_t   *fs_info = NULL;                                
    fat_file_fd_t     *fat_fd = NULL;                                 
    fat_dir_pos_t      root_pos;                                      
    uint32_t           cl_buf_size;                                   
                                                                      
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));  
 800b878:	34 01 00 01 	mvi r1,1                                       
 800b87c:	34 02 00 a4 	mvi r2,164                                     
    rtems_filesystem_mount_table_entry_t    *temp_mt_entry,           
    const rtems_filesystem_operations_table *op_table,                
    const rtems_filesystem_file_handlers_r  *file_handlers,           
    const rtems_filesystem_file_handlers_r  *directory_handlers       
    )                                                                 
{                                                                     
 800b880:	b8 60 78 00 	mv r15,r3                                      
 800b884:	b8 80 70 00 	mv r14,r4                                      
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = NULL;                                
    fat_file_fd_t     *fat_fd = NULL;                                 
 800b888:	5b 80 00 30 	sw (sp+48),r0                                  
    fat_dir_pos_t      root_pos;                                      
    uint32_t           cl_buf_size;                                   
                                                                      
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));  
 800b88c:	fb ff dd a1 	calli 8002f10 <calloc>                         
 800b890:	b8 20 58 00 	mv r11,r1                                      
    if (!fs_info)                                                     
 800b894:	44 20 00 5f 	be r1,r0,800ba10 <msdos_initialize_support+0x1c0><== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
                                                                      
    temp_mt_entry->fs_info = fs_info;                                 
                                                                      
    rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);     
 800b898:	29 a2 00 38 	lw r2,(r13+56)                                 
                                                                      
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));  
    if (!fs_info)                                                     
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
                                                                      
    temp_mt_entry->fs_info = fs_info;                                 
 800b89c:	59 a1 00 08 	sw (r13+8),r1                                  
                                                                      
    rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);     
 800b8a0:	f8 00 17 06 	calli 80114b8 <fat_init_volume_info>           
 800b8a4:	b8 20 60 00 	mv r12,r1                                      
    if (rc != RC_OK)                                                  
 800b8a8:	5c 20 00 30 	bne r1,r0,800b968 <msdos_initialize_support+0x118><== NEVER TAKEN
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
 800b8ac:	34 04 ff ff 	mvi r4,-1                                      
 800b8b0:	5b 84 00 28 	sw (sp+40),r4                                  
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
 800b8b4:	5b 84 00 2c 	sw (sp+44),r4                                  
     * open fat-file which correspondes to  root directory            
     * (so inode number 0x00000010 is always used for root directory) 
     */                                                               
    fat_dir_pos_init(&root_pos);                                      
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                     
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);            
 800b8b8:	b9 60 08 00 	mv r1,r11                                      
    /*                                                                
     * open fat-file which correspondes to  root directory            
     * (so inode number 0x00000010 is always used for root directory) 
     */                                                               
    fat_dir_pos_init(&root_pos);                                      
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                     
 800b8bc:	34 04 00 01 	mvi r4,1                                       
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);            
 800b8c0:	37 82 00 20 	addi r2,sp,32                                  
 800b8c4:	37 83 00 30 	addi r3,sp,48                                  
    {                                                                 
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    fs_info->file_handlers      = file_handlers;                      
 800b8c8:	59 6f 00 98 	sw (r11+152),r15                               
    fs_info->directory_handlers = directory_handlers;                 
 800b8cc:	59 6e 00 94 	sw (r11+148),r14                               
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
 800b8d0:	5b 80 00 24 	sw (sp+36),r0                                  
    /*                                                                
     * open fat-file which correspondes to  root directory            
     * (so inode number 0x00000010 is always used for root directory) 
     */                                                               
    fat_dir_pos_init(&root_pos);                                      
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                     
 800b8d4:	5b 84 00 20 	sw (sp+32),r4                                  
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);            
 800b8d8:	f8 00 11 0b 	calli 800fd04 <fat_file_open>                  
 800b8dc:	b8 20 60 00 	mv r12,r1                                      
    if (rc != RC_OK)                                                  
 800b8e0:	5c 20 00 20 	bne r1,r0,800b960 <msdos_initialize_support+0x110><== NEVER TAKEN
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
 800b8e4:	2b 83 00 30 	lw r3,(sp+48)                                  
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
    fat_fd->cln = fs_info->fat.vol.rdir_cl;                           
 800b8e8:	29 61 00 3c 	lw r1,(r11+60)                                 
        return rc;                                                    
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
 800b8ec:	78 02 00 20 	mvhi r2,0x20                                   
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
 800b8f0:	58 60 00 10 	sw (r3+16),r0                                  
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
 800b8f4:	58 62 00 14 	sw (r3+20),r2                                  
    fat_fd->cln = fs_info->fat.vol.rdir_cl;                           
 800b8f8:	58 61 00 1c 	sw (r3+28),r1                                  
                                                                      
    fat_fd->map.file_cln = 0;                                         
 800b8fc:	58 60 00 34 	sw (r3+52),r0                                  
    fat_fd->map.disk_cln = fat_fd->cln;                               
 800b900:	58 61 00 38 	sw (r3+56),r1                                  
                                                                      
    /* if we have FAT12/16 */                                         
    if ( fat_fd->cln == 0 )                                           
 800b904:	5c 2c 00 25 	bne r1,r12,800b998 <msdos_initialize_support+0x148>
    {                                                                 
        fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;           
 800b908:	29 64 00 2c 	lw r4,(r11+44)                                 
        cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
                      fs_info->fat.vol.bpc                                :
 800b90c:	2d 61 00 06 	lhu r1,(r11+6)                                 
    fat_fd->map.disk_cln = fat_fd->cln;                               
                                                                      
    /* if we have FAT12/16 */                                         
    if ( fat_fd->cln == 0 )                                           
    {                                                                 
        fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;           
 800b910:	58 64 00 18 	sw (r3+24),r4                                  
        cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
 800b914:	50 24 00 02 	bgeu r1,r4,800b91c <msdos_initialize_support+0xcc>
 800b918:	b8 80 08 00 	mv r1,r4                                       
            return rc;                                                
        }                                                             
        cl_buf_size = fs_info->fat.vol.bpc;                           
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
 800b91c:	34 02 00 01 	mvi r2,1                                       
 800b920:	fb ff dd 7c 	calli 8002f10 <calloc>                         
 800b924:	59 61 00 a0 	sw (r11+160),r1                                
    if (fs_info->cl_buf == NULL)                                      
 800b928:	44 20 00 3f 	be r1,r0,800ba24 <msdos_initialize_support+0x1d4><== NEVER TAKEN
        fat_shutdown_drive(&fs_info->fat);                            
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
    }                                                                 
                                                                      
    sc = rtems_semaphore_create(3,                                    
 800b92c:	34 01 00 03 	mvi r1,3                                       
 800b930:	34 02 00 01 	mvi r2,1                                       
 800b934:	34 03 00 10 	mvi r3,16                                      
 800b938:	34 04 00 00 	mvi r4,0                                       
 800b93c:	35 65 00 9c 	addi r5,r11,156                                
 800b940:	fb ff e8 3a 	calli 8005a28 <rtems_semaphore_create>         
                                1,                                    
                                RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,  
                                0,                                    
                                &fs_info->vol_sema);                  
    if (sc != RTEMS_SUCCESSFUL)                                       
 800b944:	5c 20 00 25 	bne r1,r0,800b9d8 <msdos_initialize_support+0x188><== NEVER TAKEN
        free(fs_info->cl_buf);                                        
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
 800b948:	29 a1 00 24 	lw r1,(r13+36)                                 
 800b94c:	2b 82 00 30 	lw r2,(sp+48)                                  
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
 800b950:	58 2e 00 10 	sw (r1+16),r14                                 
        free(fs_info->cl_buf);                                        
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
 800b954:	58 22 00 08 	sw (r1+8),r2                                   
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
    temp_mt_entry->ops = op_table;                                    
 800b958:	59 b0 00 0c 	sw (r13+12),r16                                
                                                                      
    return rc;                                                        
 800b95c:	e0 00 00 05 	bi 800b970 <msdos_initialize_support+0x120>    
    fat_dir_pos_init(&root_pos);                                      
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                     
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);            
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_shutdown_drive(&fs_info->fat);                            
 800b960:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b964:	f8 00 19 d3 	calli 80120b0 <fat_shutdown_drive>             <== NOT EXECUTED
        free(fs_info);                                                
 800b968:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b96c:	fb ff dd b7 	calli 8003048 <free>                           <== NOT EXECUTED
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
    temp_mt_entry->ops = op_table;                                    
                                                                      
    return rc;                                                        
}                                                                     
 800b970:	b9 80 08 00 	mv r1,r12                                      
 800b974:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b978:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800b97c:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800b980:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800b984:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800b988:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800b98c:	2b 90 00 08 	lw r16,(sp+8)                                  
 800b990:	37 9c 00 30 	addi sp,sp,48                                  
 800b994:	c3 a0 00 00 	ret                                            
                      fs_info->fat.vol.bpc                                :
                      fs_info->fat.vol.rdir_size;                     
    }                                                                 
    else                                                              
    {                                                                 
        rc = fat_file_size(&fs_info->fat, fat_fd);                    
 800b998:	b8 60 10 00 	mv r2,r3                                       
 800b99c:	b9 60 08 00 	mv r1,r11                                      
 800b9a0:	f8 00 14 66 	calli 8010b38 <fat_file_size>                  
 800b9a4:	b8 20 18 00 	mv r3,r1                                       
        if ( rc != RC_OK )                                            
 800b9a8:	5c 20 00 03 	bne r1,r0,800b9b4 <msdos_initialize_support+0x164><== NEVER TAKEN
            fat_file_close(&fs_info->fat, fat_fd);                    
            fat_shutdown_drive(&fs_info->fat);                        
            free(fs_info);                                            
            return rc;                                                
        }                                                             
        cl_buf_size = fs_info->fat.vol.bpc;                           
 800b9ac:	2d 61 00 06 	lhu r1,(r11+6)                                 
 800b9b0:	e3 ff ff db 	bi 800b91c <msdos_initialize_support+0xcc>     
    else                                                              
    {                                                                 
        rc = fat_file_size(&fs_info->fat, fat_fd);                    
        if ( rc != RC_OK )                                            
        {                                                             
            fat_file_close(&fs_info->fat, fat_fd);                    
 800b9b4:	2b 82 00 30 	lw r2,(sp+48)                                  <== NOT EXECUTED
 800b9b8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
            fat_shutdown_drive(&fs_info->fat);                        
            free(fs_info);                                            
            return rc;                                                
 800b9bc:	b8 60 60 00 	mv r12,r3                                      <== NOT EXECUTED
    else                                                              
    {                                                                 
        rc = fat_file_size(&fs_info->fat, fat_fd);                    
        if ( rc != RC_OK )                                            
        {                                                             
            fat_file_close(&fs_info->fat, fat_fd);                    
 800b9c0:	f8 00 12 86 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
            fat_shutdown_drive(&fs_info->fat);                        
 800b9c4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b9c8:	f8 00 19 ba 	calli 80120b0 <fat_shutdown_drive>             <== NOT EXECUTED
            free(fs_info);                                            
 800b9cc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b9d0:	fb ff dd 9e 	calli 8003048 <free>                           <== NOT EXECUTED
            return rc;                                                
 800b9d4:	e3 ff ff e7 	bi 800b970 <msdos_initialize_support+0x120>    <== NOT EXECUTED
                                RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,  
                                0,                                    
                                &fs_info->vol_sema);                  
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 800b9d8:	2b 82 00 30 	lw r2,(sp+48)                                  <== NOT EXECUTED
 800b9dc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
        free(fs_info->cl_buf);                                        
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one( EIO );                  
 800b9e0:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
                                RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,  
                                0,                                    
                                &fs_info->vol_sema);                  
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 800b9e4:	f8 00 12 7d 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
 800b9e8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b9ec:	f8 00 19 b1 	calli 80120b0 <fat_shutdown_drive>             <== NOT EXECUTED
        free(fs_info->cl_buf);                                        
 800b9f0:	29 61 00 a0 	lw r1,(r11+160)                                <== NOT EXECUTED
 800b9f4:	fb ff dd 95 	calli 8003048 <free>                           <== NOT EXECUTED
        free(fs_info);                                                
 800b9f8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b9fc:	fb ff dd 93 	calli 8003048 <free>                           <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( EIO );                  
 800ba00:	f8 00 43 7d 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800ba04:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 800ba08:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800ba0c:	e3 ff ff d9 	bi 800b970 <msdos_initialize_support+0x120>    <== NOT EXECUTED
    fat_dir_pos_t      root_pos;                                      
    uint32_t           cl_buf_size;                                   
                                                                      
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));  
    if (!fs_info)                                                     
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
 800ba10:	f8 00 43 79 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800ba14:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 800ba18:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800ba1c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 800ba20:	e3 ff ff d4 	bi 800b970 <msdos_initialize_support+0x120>    <== NOT EXECUTED
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
    if (fs_info->cl_buf == NULL)                                      
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 800ba24:	2b 82 00 30 	lw r2,(sp+48)                                  <== NOT EXECUTED
 800ba28:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
 800ba2c:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
    if (fs_info->cl_buf == NULL)                                      
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
 800ba30:	f8 00 12 6a 	calli 80103d8 <fat_file_close>                 <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
 800ba34:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800ba38:	f8 00 19 9e 	calli 80120b0 <fat_shutdown_drive>             <== NOT EXECUTED
        free(fs_info);                                                
 800ba3c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800ba40:	fb ff dd 82 	calli 8003048 <free>                           <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
 800ba44:	f8 00 43 6c 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800ba48:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 800ba4c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800ba50:	e3 ff ff c8 	bi 800b970 <msdos_initialize_support+0x120>    <== NOT EXECUTED
                                                                      

0800b814 <msdos_lock>: .rename_h = msdos_rename, .statvfs_h = rtems_filesystem_default_statvfs }; void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry) {
 800b814:	37 9c ff fc 	addi sp,sp,-4                                  
 800b818:	5b 9d 00 04 	sw (sp+4),ra                                   
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_obtain(                      
    fs_info->vol_sema,                                                
 800b81c:	28 21 00 08 	lw r1,(r1+8)                                   
};                                                                    
                                                                      
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry) 
{                                                                     
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_obtain(                      
 800b820:	34 02 00 00 	mvi r2,0                                       
 800b824:	34 03 00 00 	mvi r3,0                                       
 800b828:	28 21 00 9c 	lw r1,(r1+156)                                 
 800b82c:	fb ff e9 3a 	calli 8005d14 <rtems_semaphore_obtain>         
    fs_info->vol_sema,                                                
    RTEMS_WAIT,                                                       
    RTEMS_NO_TIMEOUT                                                  
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
 800b830:	5c 20 00 04 	bne r1,r0,800b840 <msdos_lock+0x2c>            <== NEVER TAKEN
    rtems_fatal_error_occurred(0xdeadbeef);                           
  }                                                                   
}                                                                     
 800b834:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b838:	37 9c 00 04 	addi sp,sp,4                                   
 800b83c:	c3 a0 00 00 	ret                                            
    fs_info->vol_sema,                                                
    RTEMS_WAIT,                                                       
    RTEMS_NO_TIMEOUT                                                  
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    rtems_fatal_error_occurred(0xdeadbeef);                           
 800b840:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 800b844:	38 42 fb d8 	ori r2,r2,0xfbd8                               <== NOT EXECUTED
 800b848:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800b84c:	fb ff ea bf 	calli 8006348 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08017808 <msdos_long_to_short>: * */ #define MSDOS_L2S_PRINT 0 msdos_name_type_t msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len) {
 8017808:	37 9c ff b8 	addi sp,sp,-72                                 
 801780c:	5b 8b 00 44 	sw (sp+68),r11                                 
 8017810:	5b 8c 00 40 	sw (sp+64),r12                                 
 8017814:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8017818:	5b 8e 00 38 	sw (sp+56),r14                                 
 801781c:	5b 8f 00 34 	sw (sp+52),r15                                 
 8017820:	5b 90 00 30 	sw (sp+48),r16                                 
 8017824:	5b 91 00 2c 	sw (sp+44),r17                                 
 8017828:	5b 92 00 28 	sw (sp+40),r18                                 
 801782c:	5b 93 00 24 	sw (sp+36),r19                                 
 8017830:	5b 94 00 20 	sw (sp+32),r20                                 
 8017834:	5b 95 00 1c 	sw (sp+28),r21                                 
 8017838:	5b 96 00 18 	sw (sp+24),r22                                 
 801783c:	5b 97 00 14 	sw (sp+20),r23                                 
 8017840:	5b 98 00 10 	sw (sp+16),r24                                 
 8017844:	5b 99 00 0c 	sw (sp+12),r25                                 
 8017848:	5b 9b 00 08 	sw (sp+8),fp                                   
 801784c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8017850:	b8 20 70 00 	mv r14,r1                                      
 8017854:	b8 40 68 00 	mv r13,r2                                      
    int               i;                                              
                                                                      
    /*                                                                
     * Fill with spaces. This is how a short directory entry is padded.
     */                                                               
    memset (sfn, ' ', sfn_len);                                       
 8017858:	b8 60 08 00 	mv r1,r3                                       
 801785c:	34 02 00 20 	mvi r2,32                                      
 *                                                                    
 */                                                                   
#define MSDOS_L2S_PRINT 0                                             
msdos_name_type_t                                                     
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
{                                                                     
 8017860:	b8 60 98 00 	mv r19,r3                                      
    int               i;                                              
                                                                      
    /*                                                                
     * Fill with spaces. This is how a short directory entry is padded.
     */                                                               
    memset (sfn, ' ', sfn_len);                                       
 8017864:	b8 80 18 00 	mv r3,r4                                       
 8017868:	f8 00 17 72 	calli 801d630 <memset>                         
                                                                      
    /*                                                                
     * Handle '.' and '..' specially.                                 
     */                                                               
    if ((lfn[0] == '.') && (lfn_len == 1))                            
 801786c:	41 cc 00 00 	lbu r12,(r14+0)                                
 8017870:	65 a1 00 01 	cmpei r1,r13,1                                 
 8017874:	65 82 00 2e 	cmpei r2,r12,46                                
 8017878:	a0 41 08 00 	and r1,r2,r1                                   
 801787c:	5c 20 00 6c 	bne r1,r0,8017a2c <msdos_long_to_short+0x224>  
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
    }                                                                 
                                                                      
    if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))         
 8017880:	5c 41 00 72 	bne r2,r1,8017a48 <msdos_long_to_short+0x240>  
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
 8017884:	4c 0d 00 7d 	bge r0,r13,8017a78 <msdos_long_to_short+0x270> <== NEVER TAKEN
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
 8017888:	7d 82 00 20 	cmpnei r2,r12,32                               
 801788c:	7d 81 00 2e 	cmpnei r1,r12,46                               
 8017890:	34 04 00 00 	mvi r4,0                                       
 8017894:	a0 41 08 00 	and r1,r2,r1                                   
 8017898:	5c 20 00 1f 	bne r1,r0,8017914 <msdos_long_to_short+0x10c>  
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
 801789c:	34 84 00 01 	addi r4,r4,1                                   
 *     true the name is long, else the name is short.                 
 *                                                                    
 */                                                                   
#define MSDOS_L2S_PRINT 0                                             
msdos_name_type_t                                                     
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
 80178a0:	b5 c4 10 00 	add r2,r14,r4                                  
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
 80178a4:	49 a4 00 17 	bg r13,r4,8017900 <msdos_long_to_short+0xf8>   <== ALWAYS TAKEN
    if (i == lfn_len)                                                 
    {                                                                 
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: INVALID[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
 80178a8:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
            break;                                                    
                                                                      
    if (i == lfn_len)                                                 
 80178ac:	5c 8d 00 1a 	bne r4,r13,8017914 <msdos_long_to_short+0x10c> <== NOT EXECUTED
                                                                      
#if MSDOS_L2S_PRINT                                                   
    printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif                                                                
    return type;                                                      
}                                                                     
 80178b0:	b9 60 08 00 	mv r1,r11                                      
 80178b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80178b8:	2b 8b 00 44 	lw r11,(sp+68)                                 
 80178bc:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80178c0:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80178c4:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80178c8:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80178cc:	2b 90 00 30 	lw r16,(sp+48)                                 
 80178d0:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80178d4:	2b 92 00 28 	lw r18,(sp+40)                                 
 80178d8:	2b 93 00 24 	lw r19,(sp+36)                                 
 80178dc:	2b 94 00 20 	lw r20,(sp+32)                                 
 80178e0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80178e4:	2b 96 00 18 	lw r22,(sp+24)                                 
 80178e8:	2b 97 00 14 	lw r23,(sp+20)                                 
 80178ec:	2b 98 00 10 	lw r24,(sp+16)                                 
 80178f0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80178f4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80178f8:	37 9c 00 48 	addi sp,sp,72                                  
 80178fc:	c3 a0 00 00 	ret                                            
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
 8017900:	40 42 00 00 	lbu r2,(r2+0)                                  
 8017904:	7c 45 00 2e 	cmpnei r5,r2,46                                
 8017908:	7c 42 00 20 	cmpnei r2,r2,32                                
 801790c:	a0 a2 10 00 	and r2,r5,r2                                   
 8017910:	44 40 ff e3 	be r2,r0,801789c <msdos_long_to_short+0x94>    <== NEVER TAKEN
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
 8017914:	7d 82 00 00 	cmpnei r2,r12,0                                
 8017918:	69 a1 00 00 	cmpgi r1,r13,0                                 
 801791c:	a0 41 08 00 	and r1,r2,r1                                   
 8017920:	44 20 00 58 	be r1,r0,8017a80 <msdos_long_to_short+0x278>   <== NEVER TAKEN
 8017924:	78 10 08 03 	mvhi r16,0x803                                 
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
 8017928:	78 15 08 03 	mvhi r21,0x803                                 
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL))                     
 801792c:	78 16 08 03 	mvhi r22,0x803                                 
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
 8017930:	34 17 00 00 	mvi r23,0                                      
 8017934:	5b 80 00 48 	sw (sp+72),r0                                  
 8017938:	34 0b 00 00 	mvi r11,0                                      
 801793c:	34 11 ff ff 	mvi r17,-1                                     
 8017940:	3a 10 06 f0 	ori r16,r16,0x6f0                              
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
 8017944:	3a b5 22 78 	ori r21,r21,0x2278                             
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL))                     
 8017948:	3a d6 06 f8 	ori r22,r22,0x6f8                              
#endif                                                                
                                                                      
        if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
            return type;                                              
                                                                      
        if (dot_at >= 0)                                              
 801794c:	34 1b ff ff 	mvi fp,-1                                      
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
 8017950:	34 14 00 19 	mvi r20,25                                     
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            if (count == 8 && !is_dot)                                
 8017954:	34 19 00 08 	mvi r25,8                                      
        if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
            return type;                                              
                                                                      
        if (dot_at >= 0)                                              
        {                                                             
            if (is_dot || ((count - dot_at) > 3))                     
 8017958:	34 12 00 03 	mvi r18,3                                      
 *                                                                    
 */                                                                   
static msdos_name_type_t                                              
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
 801795c:	ba 00 08 00 	mv r1,r16                                      
 8017960:	b9 80 10 00 	mv r2,r12                                      
 8017964:	f8 00 1a b5 	calli 801e438 <strchr>                         
 8017968:	44 20 00 07 	be r1,r0,8017984 <msdos_long_to_short+0x17c>   
        return MSDOS_NAME_LONG;                                       
 801796c:	34 0b 00 02 	mvi r11,2                                      
        printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
    }                                                                 
                                                                      
    msdos_filename_unix2dos (lfn, lfn_len, sfn);                      
 8017970:	b9 c0 08 00 	mv r1,r14                                      
 8017974:	b9 a0 10 00 	mv r2,r13                                      
 8017978:	ba 60 18 00 	mv r3,r19                                      
 801797c:	f8 00 0f ad 	calli 801b830 <msdos_filename_unix2dos>        
                                                                      
#if MSDOS_L2S_PRINT                                                   
    printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif                                                                
    return type;                                                      
 8017980:	e3 ff ff cc 	bi 80178b0 <msdos_long_to_short+0xa8>          
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
    {                                                                 
        bool is_dot = *name == '.';                                   
 8017984:	65 8f 00 2e 	cmpei r15,r12,46                               
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
 8017988:	5d e1 00 0a 	bne r15,r1,80179b0 <msdos_long_to_short+0x1a8> 
 801798c:	2a a1 00 00 	lw r1,(r21+0)                                  
 8017990:	b4 2c 08 00 	add r1,r1,r12                                  
 8017994:	40 38 00 01 	lbu r24,(r1+1)                                 
 8017998:	23 18 00 07 	andi r24,r24,0x7                               
 801799c:	5f 0f 00 05 	bne r24,r15,80179b0 <msdos_long_to_short+0x1a8>
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL))                     
 80179a0:	ba c0 08 00 	mv r1,r22                                      
 80179a4:	b9 80 10 00 	mv r2,r12                                      
 80179a8:	f8 00 1a a4 	calli 801e438 <strchr>                         
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
 80179ac:	44 38 00 31 	be r1,r24,8017a70 <msdos_long_to_short+0x268>  <== NEVER TAKEN
#endif                                                                
                                                                      
        if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
            return type;                                              
                                                                      
        if (dot_at >= 0)                                              
 80179b0:	46 3b 00 18 	be r17,fp,8017a10 <msdos_long_to_short+0x208>  
        {                                                             
            if (is_dot || ((count - dot_at) > 3))                     
 80179b4:	5d e0 ff ee 	bne r15,r0,801796c <msdos_long_to_short+0x164> 
 80179b8:	c9 71 10 00 	sub r2,r11,r17                                 
 80179bc:	48 52 ff ec 	bg r2,r18,801796c <msdos_long_to_short+0x164>  <== NEVER TAKEN
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
 80179c0:	35 82 ff bf 	addi r2,r12,-65                                
 80179c4:	20 42 00 ff 	andi r2,r2,0xff                                
 80179c8:	52 82 00 10 	bgeu r20,r2,8017a08 <msdos_long_to_short+0x200>
            uppercase = true;                                         
        else if ((*name >= 'a') && (*name <= 'z'))                    
 80179cc:	35 8c ff 9f 	addi r12,r12,-97                               
 80179d0:	21 8c 00 ff 	andi r12,r12,0xff                              
 80179d4:	52 8c 00 13 	bgeu r20,r12,8017a20 <msdos_long_to_short+0x218>
            lowercase = true;                                         
                                                                      
        count++;                                                      
 80179d8:	35 6b 00 01 	addi r11,r11,1                                 
 *     true the name is long, else the name is short.                 
 *                                                                    
 */                                                                   
#define MSDOS_L2S_PRINT 0                                             
msdos_name_type_t                                                     
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
 80179dc:	b5 cb 10 00 	add r2,r14,r11                                 
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
 80179e0:	40 4c 00 00 	lbu r12,(r2+0)                                 
 80179e4:	e9 ab 20 00 	cmpg r4,r13,r11                                
 80179e8:	7d 82 00 00 	cmpnei r2,r12,0                                
 80179ec:	a0 82 10 00 	and r2,r4,r2                                   
 80179f0:	5c 40 ff db 	bne r2,r0,801795c <msdos_long_to_short+0x154>  
                                                                      
        count++;                                                      
        name++;                                                       
    }                                                                 
                                                                      
    if (lowercase && uppercase)                                       
 80179f4:	2b 81 00 48 	lw r1,(sp+72)                                  
    }                                                                 
                                                                      
#if MSDOS_NAME_TYPE_PRINT                                             
    printf ("MSDOS_NAME_TYPE: SHORT[1]\n");                           
#endif                                                                
    return MSDOS_NAME_SHORT;                                          
 80179f8:	34 0b 00 01 	mvi r11,1                                      
                                                                      
        count++;                                                      
        name++;                                                       
    }                                                                 
                                                                      
    if (lowercase && uppercase)                                       
 80179fc:	44 22 ff dd 	be r1,r2,8017970 <msdos_long_to_short+0x168>   
    }                                                                 
                                                                      
#if MSDOS_NAME_TYPE_PRINT                                             
    printf ("MSDOS_NAME_TYPE: SHORT[1]\n");                           
#endif                                                                
    return MSDOS_NAME_SHORT;                                          
 8017a00:	36 eb 00 01 	addi r11,r23,1                                 
 8017a04:	e3 ff ff db 	bi 8017970 <msdos_long_to_short+0x168>         
        }                                                             
                                                                      
        if (is_dot)                                                   
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
            uppercase = true;                                         
 8017a08:	34 17 00 01 	mvi r23,1                                      
 8017a0c:	e3 ff ff f3 	bi 80179d8 <msdos_long_to_short+0x1d0>         
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            if (count == 8 && !is_dot)                                
 8017a10:	45 79 00 0b 	be r11,r25,8017a3c <msdos_long_to_short+0x234> 
#endif                                                                
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
 8017a14:	45 e0 ff eb 	be r15,r0,80179c0 <msdos_long_to_short+0x1b8>  
 8017a18:	b9 60 88 00 	mv r17,r11                                     
 8017a1c:	e3 ff ff ef 	bi 80179d8 <msdos_long_to_short+0x1d0>         
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
            uppercase = true;                                         
        else if ((*name >= 'a') && (*name <= 'z'))                    
            lowercase = true;                                         
 8017a20:	34 01 00 01 	mvi r1,1                                       
 8017a24:	5b 81 00 48 	sw (sp+72),r1                                  
 8017a28:	e3 ff ff ec 	bi 80179d8 <msdos_long_to_short+0x1d0>         
    /*                                                                
     * Handle '.' and '..' specially.                                 
     */                                                               
    if ((lfn[0] == '.') && (lfn_len == 1))                            
    {                                                                 
        sfn[0] = '.';                                                 
 8017a2c:	34 01 00 2e 	mvi r1,46                                      
 8017a30:	32 61 00 00 	sb (r19+0),r1                                  
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
 8017a34:	34 0b 00 01 	mvi r11,1                                      
 8017a38:	e3 ff ff 9e 	bi 80178b0 <msdos_long_to_short+0xa8>          
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            if (count == 8 && !is_dot)                                
 8017a3c:	45 e0 ff cc 	be r15,r0,801796c <msdos_long_to_short+0x164>  <== ALWAYS TAKEN
 8017a40:	34 11 00 08 	mvi r17,8                                      <== NOT EXECUTED
 8017a44:	e3 ff ff e5 	bi 80179d8 <msdos_long_to_short+0x1d0>         <== NOT EXECUTED
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
    }                                                                 
                                                                      
    if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))         
 8017a48:	41 c1 00 01 	lbu r1,(r14+1)                                 
 8017a4c:	65 a2 00 02 	cmpei r2,r13,2                                 
 8017a50:	64 21 00 2e 	cmpei r1,r1,46                                 
 8017a54:	a0 22 08 00 	and r1,r1,r2                                   
 8017a58:	44 20 ff 8b 	be r1,r0,8017884 <msdos_long_to_short+0x7c>    <== NEVER TAKEN
    {                                                                 
        sfn[0] = sfn[1] = '.';                                        
 8017a5c:	34 01 00 2e 	mvi r1,46                                      
 8017a60:	32 61 00 01 	sb (r19+1),r1                                  
 8017a64:	32 61 00 00 	sb (r19+0),r1                                  
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: SHORT[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
 8017a68:	34 0b 00 01 	mvi r11,1                                      
 8017a6c:	e3 ff ff 91 	bi 80178b0 <msdos_long_to_short+0xa8>          
    if (type == MSDOS_NAME_INVALID)                                   
    {                                                                 
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
 8017a70:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 8017a74:	e3 ff ff 8f 	bi 80178b0 <msdos_long_to_short+0xa8>          <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
 8017a78:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 8017a7c:	e3 ff ff 8b 	bi 80178a8 <msdos_long_to_short+0xa0>          <== NOT EXECUTED
    }                                                                 
                                                                      
#if MSDOS_NAME_TYPE_PRINT                                             
    printf ("MSDOS_NAME_TYPE: SHORT[1]\n");                           
#endif                                                                
    return MSDOS_NAME_SHORT;                                          
 8017a80:	34 0b 00 01 	mvi r11,1                                      <== NOT EXECUTED
 8017a84:	e3 ff ff bb 	bi 8017970 <msdos_long_to_short+0x168>         <== NOT EXECUTED
                                                                      

0800ba54 <msdos_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
 800ba54:	37 9c ff fc 	addi sp,sp,-4                                  
 800ba58:	5b 9d 00 04 	sw (sp+4),ra                                   
    msdos_node_type_t    type = 0;                                    
                                                                      
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
 800ba5c:	20 87 f0 00 	andi r7,r4,0xf000                              
    const char *name,                                                 
    size_t namelen,                                                   
    mode_t mode,                                                      
    dev_t dev                                                         
)                                                                     
{                                                                     
 800ba60:	b8 40 30 00 	mv r6,r2                                       
    msdos_node_type_t    type = 0;                                    
                                                                      
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
 800ba64:	34 02 40 00 	mvi r2,16384                                   
    const char *name,                                                 
    size_t namelen,                                                   
    mode_t mode,                                                      
    dev_t dev                                                         
)                                                                     
{                                                                     
 800ba68:	b8 80 28 00 	mv r5,r4                                       
 800ba6c:	b8 60 20 00 	mv r4,r3                                       
    msdos_node_type_t    type = 0;                                    
                                                                      
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
 800ba70:	44 e2 00 0a 	be r7,r2,800ba98 <msdos_mknod+0x44>            
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
    }                                                                 
    else if (S_ISREG(mode))                                           
 800ba74:	38 03 80 00 	mvu r3,0x8000                                  
    {                                                                 
        type = MSDOS_REGULAR_FILE;                                    
 800ba78:	34 02 00 04 	mvi r2,4                                       
     */                                                               
    if (S_ISDIR(mode))                                                
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
    }                                                                 
    else if (S_ISREG(mode))                                           
 800ba7c:	5c e3 00 09 	bne r7,r3,800baa0 <msdos_mknod+0x4c>           <== NEVER TAKEN
    }                                                                 
    else                                                              
        rtems_set_errno_and_return_minus_one(EINVAL);                 
                                                                      
    /* Create an MSDOS node */                                        
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
 800ba80:	b8 c0 18 00 	mv r3,r6                                       
 800ba84:	34 06 00 00 	mvi r6,0                                       
 800ba88:	f8 00 2d 08 	calli 8016ea8 <msdos_creat_node>               
                                                                      
    return rc;                                                        
}                                                                     
 800ba8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ba90:	37 9c 00 04 	addi sp,sp,4                                   
 800ba94:	c3 a0 00 00 	ret                                            
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
 800ba98:	34 02 00 00 	mvi r2,0                                       
 800ba9c:	e3 ff ff f9 	bi 800ba80 <msdos_mknod+0x2c>                  
    else if (S_ISREG(mode))                                           
    {                                                                 
        type = MSDOS_REGULAR_FILE;                                    
    }                                                                 
    else                                                              
        rtems_set_errno_and_return_minus_one(EINVAL);                 
 800baa0:	f8 00 43 55 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800baa4:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 800baa8:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800baac:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800bab0:	e3 ff ff f7 	bi 800ba8c <msdos_mknod+0x38>                  <== NOT EXECUTED
                                                                      

0800bac0 <msdos_rename>: const rtems_filesystem_location_info_t *old_loc, const rtems_filesystem_location_info_t *new_parent_loc, const char *new_name, size_t new_namelen ) {
 800bac0:	37 9c ff f4 	addi sp,sp,-12                                 <== NOT EXECUTED
 800bac4:	5b 8b 00 0c 	sw (sp+12),r11                                 <== NOT EXECUTED
 800bac8:	5b 8c 00 08 	sw (sp+8),r12                                  <== NOT EXECUTED
 800bacc:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
    int                rc = RC_OK;                                    
    fat_file_fd_t     *old_fat_fd  = old_loc->node_access;            
 800bad0:	28 4b 00 08 	lw r11,(r2+8)                                  <== NOT EXECUTED
    const rtems_filesystem_location_info_t *old_loc,                  
    const rtems_filesystem_location_info_t *new_parent_loc,           
    const char *new_name,                                             
    size_t new_namelen                                                
)                                                                     
{                                                                     
 800bad4:	b8 40 60 00 	mv r12,r2                                      <== NOT EXECUTED
                                                                      
    /*                                                                
     * create new directory entry as "hard link", copying relevant info from
     * existing file                                                  
     */                                                               
    rc = msdos_creat_node(new_parent_loc,                             
 800bad8:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
 800badc:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800bae0:	b8 80 18 00 	mv r3,r4                                       <== NOT EXECUTED
 800bae4:	b9 60 30 00 	mv r6,r11                                      <== NOT EXECUTED
 800bae8:	b8 a0 20 00 	mv r4,r5                                       <== NOT EXECUTED
 800baec:	38 05 80 00 	mvu r5,0x8000                                  <== NOT EXECUTED
 800baf0:	f8 00 2c ee 	calli 8016ea8 <msdos_creat_node>               <== NOT EXECUTED
                          MSDOS_HARD_LINK,new_name,new_namelen,S_IFREG,
                          old_fat_fd);                                
    if (rc != RC_OK)                                                  
 800baf4:	5c 20 00 05 	bne r1,r0,800bb08 <msdos_rename+0x48>          <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * mark file removed                                              
     */                                                               
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,            
 800baf8:	29 81 00 14 	lw r1,(r12+20)                                 <== NOT EXECUTED
 800bafc:	35 62 00 20 	addi r2,r11,32                                 <== NOT EXECUTED
 800bb00:	34 03 00 e5 	mvi r3,229                                     <== NOT EXECUTED
 800bb04:	f8 00 31 0e 	calli 8017f3c <msdos_set_first_char4file_name> <== NOT EXECUTED
                                        &old_fat_fd->dir_pos,         
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);  
                                                                      
    return rc;                                                        
}                                                                     
 800bb08:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800bb0c:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800bb10:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800bb14:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 800bb18:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800bb1c <msdos_rmnod>: #include "msdos.h" int msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc, const rtems_filesystem_location_info_t *pathloc) {
 800bb1c:	37 9c ff e4 	addi sp,sp,-28                                 
 800bb20:	5b 8b 00 18 	sw (sp+24),r11                                 
 800bb24:	5b 8c 00 14 	sw (sp+20),r12                                 
 800bb28:	5b 8d 00 10 	sw (sp+16),r13                                 
 800bb2c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800bb30:	5b 8f 00 08 	sw (sp+8),r15                                  
 800bb34:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
 800bb38:	28 4c 00 08 	lw r12,(r2+8)                                  
int                                                                   
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,   
            const rtems_filesystem_location_info_t *pathloc)          
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
 800bb3c:	28 41 00 14 	lw r1,(r2+20)                                  
#include "msdos.h"                                                    
                                                                      
int                                                                   
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,   
            const rtems_filesystem_location_info_t *pathloc)          
{                                                                     
 800bb40:	b8 40 68 00 	mv r13,r2                                      
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
 800bb44:	29 8e 00 10 	lw r14,(r12+16)                                
int                                                                   
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,   
            const rtems_filesystem_location_info_t *pathloc)          
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
 800bb48:	28 2f 00 08 	lw r15,(r1+8)                                  
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
 800bb4c:	5d c0 00 0d 	bne r14,r0,800bb80 <msdos_rmnod+0x64>          
        bool is_empty = false;                                        
                                                                      
        /*                                                            
         * You cannot remove a node that still has children           
         */                                                           
        rc = msdos_dir_is_empty(pathloc->mt_entry, fat_fd, &is_empty);
 800bb50:	b9 80 10 00 	mv r2,r12                                      
 800bb54:	37 83 00 1f 	addi r3,sp,31                                  
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
    {                                                                 
        bool is_empty = false;                                        
 800bb58:	33 80 00 1f 	sb (sp+31),r0                                  
                                                                      
        /*                                                            
         * You cannot remove a node that still has children           
         */                                                           
        rc = msdos_dir_is_empty(pathloc->mt_entry, fat_fd, &is_empty);
 800bb5c:	f8 00 31 64 	calli 80180ec <msdos_dir_is_empty>             
 800bb60:	b8 20 58 00 	mv r11,r1                                      
        if (rc != RC_OK)                                              
 800bb64:	5c 2e 00 0c 	bne r1,r14,800bb94 <msdos_rmnod+0x78>          <== NEVER TAKEN
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        if (!is_empty)                                                
 800bb68:	43 81 00 1f 	lbu r1,(sp+31)                                 
 800bb6c:	44 2b 00 1c 	be r1,r11,800bbdc <msdos_rmnod+0xc0>           
                                                                      
        /*                                                            
         * We deny attempts to delete open directory (if directory is current
         * directory we assume it is open one)                        
         */                                                           
        if (fat_fd->links_num > 1)                                    
 800bb70:	29 82 00 08 	lw r2,(r12+8)                                  
 800bb74:	34 01 00 01 	mvi r1,1                                       
 800bb78:	54 41 00 14 	bgu r2,r1,800bbc8 <msdos_rmnod+0xac>           <== NEVER TAKEN
 800bb7c:	29 a1 00 14 	lw r1,(r13+20)                                 
         * not used - mount() not implemenetd yet.                    
         */                                                           
    }                                                                 
                                                                      
    /* mark file removed */                                           
    rc = msdos_set_first_char4file_name(pathloc->mt_entry, &fat_fd->dir_pos,
 800bb80:	35 82 00 20 	addi r2,r12,32                                 
 800bb84:	34 03 00 e5 	mvi r3,229                                     
 800bb88:	f8 00 30 ed 	calli 8017f3c <msdos_set_first_char4file_name> 
 800bb8c:	b8 20 58 00 	mv r11,r1                                      
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);  
    if (rc != RC_OK)                                                  
 800bb90:	44 20 00 0a 	be r1,r0,800bbb8 <msdos_rmnod+0x9c>            <== ALWAYS TAKEN
    }                                                                 
                                                                      
    fat_file_mark_removed(&fs_info->fat, fat_fd);                     
                                                                      
    return rc;                                                        
}                                                                     
 800bb94:	b9 60 08 00 	mv r1,r11                                      
 800bb98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bb9c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800bba0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800bba4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800bba8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800bbac:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800bbb0:	37 9c 00 1c 	addi sp,sp,28                                  
 800bbb4:	c3 a0 00 00 	ret                                            
    if (rc != RC_OK)                                                  
    {                                                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_file_mark_removed(&fs_info->fat, fat_fd);                     
 800bbb8:	b9 e0 08 00 	mv r1,r15                                      
 800bbbc:	b9 80 10 00 	mv r2,r12                                      
 800bbc0:	f8 00 13 bb 	calli 8010aac <fat_file_mark_removed>          
                                                                      
    return rc;                                                        
 800bbc4:	e3 ff ff f4 	bi 800bb94 <msdos_rmnod+0x78>                  
         * We deny attempts to delete open directory (if directory is current
         * directory we assume it is open one)                        
         */                                                           
        if (fat_fd->links_num > 1)                                    
        {                                                             
            rtems_set_errno_and_return_minus_one(EBUSY);              
 800bbc8:	f8 00 43 0b 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800bbcc:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 800bbd0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 800bbd4:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 800bbd8:	e3 ff ff ef 	bi 800bb94 <msdos_rmnod+0x78>                  <== NOT EXECUTED
            return rc;                                                
        }                                                             
                                                                      
        if (!is_empty)                                                
        {                                                             
            rtems_set_errno_and_return_minus_one(ENOTEMPTY);          
 800bbdc:	f8 00 43 06 	calli 801c7f4 <__errno>                        
 800bbe0:	34 02 00 5a 	mvi r2,90                                      
 800bbe4:	58 22 00 00 	sw (r1+0),r2                                   
 800bbe8:	34 0b ff ff 	mvi r11,-1                                     
 800bbec:	e3 ff ff ea 	bi 800bb94 <msdos_rmnod+0x78>                  
                                                                      

08017a88 <msdos_set_dir_wrt_time_and_date>: int msdos_set_dir_wrt_time_and_date( rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd ) {
 8017a88:	37 9c ff e4 	addi sp,sp,-28                                 
 8017a8c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8017a90:	5b 8c 00 14 	sw (sp+20),r12                                 
 8017a94:	5b 8d 00 10 	sw (sp+16),r13                                 
 8017a98:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8017a9c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8017aa0:	5b 9d 00 04 	sw (sp+4),ra                                   
    ssize_t          ret1 = 0, ret2 = 0, ret3 = 0;                    
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 8017aa4:	28 2b 00 08 	lw r11,(r1+8)                                  
    uint16_t         time_val;                                        
    uint16_t         date;                                            
    uint32_t         sec = 0;                                         
    uint32_t         byte = 0;                                        
                                                                      
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);             
 8017aa8:	28 41 00 40 	lw r1,(r2+64)                                  
 8017aac:	37 8e 00 1e 	addi r14,sp,30                                 
int                                                                   
msdos_set_dir_wrt_time_and_date(                                      
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 8017ab0:	b8 40 60 00 	mv r12,r2                                      
    uint16_t         time_val;                                        
    uint16_t         date;                                            
    uint32_t         sec = 0;                                         
    uint32_t         byte = 0;                                        
                                                                      
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);             
 8017ab4:	b9 c0 18 00 	mv r3,r14                                      
 8017ab8:	37 82 00 1c 	addi r2,sp,28                                  
 8017abc:	f8 00 0e 6d 	calli 801b470 <msdos_date_unix2dos>            
                                                                      
    /*                                                                
     * calculate input for fat_sector_write: convert (cluster num, offset) to
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
 8017ac0:	29 81 00 20 	lw r1,(r12+32)                                 
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8017ac4:	5c 20 00 04 	bne r1,r0,8017ad4 <msdos_set_dir_wrt_time_and_date+0x4c>
 8017ac8:	41 62 00 0e 	lbu r2,(r11+14)                                
 8017acc:	20 42 00 03 	andi r2,r2,0x3                                 
 8017ad0:	5c 41 00 5d 	bne r2,r1,8017c44 <msdos_set_dir_wrt_time_and_date+0x1bc><== ALWAYS TAKEN
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8017ad4:	41 62 00 05 	lbu r2,(r11+5)                                 
 8017ad8:	34 21 ff fe 	addi r1,r1,-2                                  
 8017adc:	fb ff a5 a2 	calli 8001164 <__ashlsi3>                      
 8017ae0:	29 6d 00 34 	lw r13,(r11+52)                                
 8017ae4:	b4 2d 68 00 	add r13,r1,r13                                 
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017ae8:	29 8f 00 24 	lw r15,(r12+36)                                
 8017aec:	41 62 00 02 	lbu r2,(r11+2)                                 
 8017af0:	b9 e0 08 00 	mv r1,r15                                      
 8017af4:	f8 00 5d 41 	calli 802eff8 <__lshrsi3>                      
    /* byte points to start of 32bytes structure */                   
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    time_val = CT_LE_W(time_val);                                     
 8017af8:	2f 84 00 1e 	lhu r4,(sp+30)                                 
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    /* byte points to start of 32bytes structure */                   
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
 8017afc:	2d 6c 00 00 	lhu r12,(r11+0)                                
    /*                                                                
     * calculate input for fat_sector_write: convert (cluster num, offset) to
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017b00:	b5 a1 68 00 	add r13,r13,r1                                 
 8017b04:	00 86 00 01 	srui r6,r4,1                                   
 8017b08:	b4 84 20 00 	add r4,r4,r4                                   
 8017b0c:	00 c6 00 01 	srui r6,r6,1                                   
 8017b10:	b4 84 20 00 	add r4,r4,r4                                   
 8017b14:	00 c6 00 01 	srui r6,r6,1                                   
 8017b18:	b4 84 20 00 	add r4,r4,r4                                   
 8017b1c:	00 c6 00 01 	srui r6,r6,1                                   
 8017b20:	b4 84 20 00 	add r4,r4,r4                                   
 8017b24:	00 c6 00 01 	srui r6,r6,1                                   
 8017b28:	b4 84 20 00 	add r4,r4,r4                                   
 8017b2c:	00 c6 00 01 	srui r6,r6,1                                   
 8017b30:	b4 84 20 00 	add r4,r4,r4                                   
 8017b34:	00 c6 00 01 	srui r6,r6,1                                   
    /* byte points to start of 32bytes structure */                   
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
 8017b38:	35 8c ff ff 	addi r12,r12,-1                                
 8017b3c:	b4 84 20 00 	add r4,r4,r4                                   
 8017b40:	00 c6 00 01 	srui r6,r6,1                                   
 8017b44:	a1 8f 60 00 	and r12,r12,r15                                
 8017b48:	b4 84 20 00 	add r4,r4,r4                                   
 8017b4c:	b8 86 30 00 	or r6,r4,r6                                    
                                                                      
    time_val = CT_LE_W(time_val);                                     
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
 8017b50:	35 83 00 16 	addi r3,r12,22                                 
 8017b54:	b9 c0 28 00 	mv r5,r14                                      
 8017b58:	b9 a0 10 00 	mv r2,r13                                      
 8017b5c:	34 04 00 02 	mvi r4,2                                       
 8017b60:	b9 60 08 00 	mv r1,r11                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    /* byte points to start of 32bytes structure */                   
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    time_val = CT_LE_W(time_val);                                     
 8017b64:	0f 86 00 1e 	sh (sp+30),r6                                  
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
 8017b68:	fb ff e5 18 	calli 8010fc8 <fat_sector_write>               
                            2, (char *)(&time_val));                  
    date = CT_LE_W(date);                                             
 8017b6c:	2f 85 00 1c 	lhu r5,(sp+28)                                 
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
 8017b70:	35 83 00 18 	addi r3,r12,24                                 
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    /* byte points to start of 32bytes structure */                   
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    time_val = CT_LE_W(time_val);                                     
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
 8017b74:	b8 20 70 00 	mv r14,r1                                      
 8017b78:	00 a6 00 01 	srui r6,r5,1                                   
 8017b7c:	b4 a5 28 00 	add r5,r5,r5                                   
 8017b80:	00 c6 00 01 	srui r6,r6,1                                   
 8017b84:	b4 a5 28 00 	add r5,r5,r5                                   
 8017b88:	00 c6 00 01 	srui r6,r6,1                                   
 8017b8c:	b4 a5 28 00 	add r5,r5,r5                                   
 8017b90:	00 c6 00 01 	srui r6,r6,1                                   
 8017b94:	b4 a5 28 00 	add r5,r5,r5                                   
 8017b98:	00 c6 00 01 	srui r6,r6,1                                   
 8017b9c:	b4 a5 28 00 	add r5,r5,r5                                   
 8017ba0:	00 c6 00 01 	srui r6,r6,1                                   
 8017ba4:	b4 a5 28 00 	add r5,r5,r5                                   
 8017ba8:	00 c6 00 01 	srui r6,r6,1                                   
 8017bac:	b4 a5 28 00 	add r5,r5,r5                                   
 8017bb0:	00 c6 00 01 	srui r6,r6,1                                   
 8017bb4:	b4 a5 28 00 	add r5,r5,r5                                   
 8017bb8:	b8 a6 30 00 	or r6,r5,r6                                    
                            2, (char *)(&time_val));                  
    date = CT_LE_W(date);                                             
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
 8017bbc:	34 04 00 02 	mvi r4,2                                       
 8017bc0:	37 85 00 1c 	addi r5,sp,28                                  
 8017bc4:	b9 60 08 00 	mv r1,r11                                      
 8017bc8:	b9 a0 10 00 	mv r2,r13                                      
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    time_val = CT_LE_W(time_val);                                     
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
                            2, (char *)(&time_val));                  
    date = CT_LE_W(date);                                             
 8017bcc:	0f 86 00 1c 	sh (sp+28),r6                                  
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
 8017bd0:	fb ff e4 fe 	calli 8010fc8 <fat_sector_write>               
                            2, (char *)(&date));                      
    ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
 8017bd4:	35 83 00 12 	addi r3,r12,18                                 
 8017bd8:	34 04 00 02 	mvi r4,2                                       
 8017bdc:	37 85 00 1c 	addi r5,sp,28                                  
                                                                      
    time_val = CT_LE_W(time_val);                                     
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
                            2, (char *)(&time_val));                  
    date = CT_LE_W(date);                                             
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
 8017be0:	b8 20 78 00 	mv r15,r1                                      
                            2, (char *)(&date));                      
    ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
 8017be4:	b9 a0 10 00 	mv r2,r13                                      
 8017be8:	b9 60 08 00 	mv r1,r11                                      
 8017bec:	fb ff e4 f7 	calli 8010fc8 <fat_sector_write>               
                            2, (char *)(&date));                      
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )                     
 8017bf0:	34 02 00 1f 	mvi r2,31                                      
    ret1 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WTIME_OFFSET,
                            2, (char *)(&time_val));                  
    date = CT_LE_W(date);                                             
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
                            2, (char *)(&date));                      
    ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
 8017bf4:	b8 20 60 00 	mv r12,r1                                      
                            2, (char *)(&date));                      
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )                     
 8017bf8:	b9 e0 08 00 	mv r1,r15                                      
 8017bfc:	f8 00 5c ff 	calli 802eff8 <__lshrsi3>                      
 8017c00:	b8 20 58 00 	mv r11,r1                                      
 8017c04:	34 02 00 1f 	mvi r2,31                                      
 8017c08:	b9 c0 08 00 	mv r1,r14                                      
 8017c0c:	f8 00 5c fb 	calli 802eff8 <__lshrsi3>                      
 8017c10:	b9 61 10 00 	or r2,r11,r1                                   
 8017c14:	20 43 00 ff 	andi r3,r2,0xff                                
        return -1;                                                    
 8017c18:	34 02 ff ff 	mvi r2,-1                                      
    ret2 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_WDATE_OFFSET,
                            2, (char *)(&date));                      
    ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
                            2, (char *)(&date));                      
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )                     
 8017c1c:	44 60 00 0c 	be r3,r0,8017c4c <msdos_set_dir_wrt_time_and_date+0x1c4><== ALWAYS TAKEN
        return -1;                                                    
                                                                      
    return RC_OK;                                                     
}                                                                     
 8017c20:	b8 40 08 00 	mv r1,r2                                       
 8017c24:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8017c28:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8017c2c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8017c30:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8017c34:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8017c38:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8017c3c:	37 9c 00 1c 	addi sp,sp,28                                  
 8017c40:	c3 a0 00 00 	ret                                            
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
 8017c44:	29 6d 00 20 	lw r13,(r11+32)                                
 8017c48:	e3 ff ff a8 	bi 8017ae8 <msdos_set_dir_wrt_time_and_date+0x60>
                            2, (char *)(&date));                      
    ret3 = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_ADATE_OFFSET,
                            2, (char *)(&date));                      
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) || (ret3 < 0) )                     
        return -1;                                                    
 8017c4c:	ed 83 10 00 	cmpge r2,r12,r3                                
 8017c50:	34 42 ff ff 	addi r2,r2,-1                                  
 8017c54:	e3 ff ff f3 	bi 8017c20 <msdos_set_dir_wrt_time_and_date+0x198>
                                                                      

08017dfc <msdos_set_file_size>: int msdos_set_file_size( rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd ) {
 8017dfc:	37 9c ff e4 	addi sp,sp,-28                                 
 8017e00:	5b 8b 00 18 	sw (sp+24),r11                                 
 8017e04:	5b 8c 00 14 	sw (sp+20),r12                                 
 8017e08:	5b 8d 00 10 	sw (sp+16),r13                                 
 8017e0c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8017e10:	5b 8f 00 08 	sw (sp+8),r15                                  
 8017e14:	5b 9d 00 04 	sw (sp+4),ra                                   
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         le_new_length = 0;                               
    uint32_t         sec = 0;                                         
    uint32_t         byte = 0;                                        
                                                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
 8017e18:	28 43 00 20 	lw r3,(r2+32)                                  
int                                                                   
msdos_set_file_size(                                                  
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 8017e1c:	b8 40 60 00 	mv r12,r2                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 8017e20:	28 2b 00 08 	lw r11,(r1+8)                                  
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8017e24:	5c 60 00 04 	bne r3,r0,8017e34 <msdos_set_file_size+0x38>   
 8017e28:	41 61 00 0e 	lbu r1,(r11+14)                                
 8017e2c:	20 21 00 03 	andi r1,r1,0x3                                 
 8017e30:	5c 23 00 41 	bne r1,r3,8017f34 <msdos_set_file_size+0x138>  <== ALWAYS TAKEN
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8017e34:	41 62 00 05 	lbu r2,(r11+5)                                 
 8017e38:	34 61 ff fe 	addi r1,r3,-2                                  
 8017e3c:	fb ff a4 ca 	calli 8001164 <__ashlsi3>                      
 8017e40:	29 6e 00 34 	lw r14,(r11+52)                                
 8017e44:	b4 2e 70 00 	add r14,r1,r14                                 
    uint32_t         le_new_length = 0;                               
    uint32_t         sec = 0;                                         
    uint32_t         byte = 0;                                        
                                                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017e48:	29 8d 00 24 	lw r13,(r12+36)                                
 8017e4c:	41 62 00 02 	lbu r2,(r11+2)                                 
 8017e50:	b9 a0 08 00 	mv r1,r13                                      
 8017e54:	f8 00 5c 69 	calli 802eff8 <__lshrsi3>                      
    byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));  
 8017e58:	2d 63 00 00 	lhu r3,(r11+0)                                 
                                                                      
    le_new_length = CT_LE_L((fat_fd->fat_file_size));                 
 8017e5c:	29 8c 00 18 	lw r12,(r12+24)                                
    uint32_t         le_new_length = 0;                               
    uint32_t         sec = 0;                                         
    uint32_t         byte = 0;                                        
                                                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017e60:	b5 c1 70 00 	add r14,r14,r1                                 
    byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));  
 8017e64:	34 63 ff ff 	addi r3,r3,-1                                  
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8017e68:	34 02 00 18 	mvi r2,24                                      
 8017e6c:	21 81 00 ff 	andi r1,r12,0xff                               
 8017e70:	a0 6d 68 00 	and r13,r3,r13                                 
 8017e74:	fb ff a4 bc 	calli 8001164 <__ashlsi3>                      
 8017e78:	b8 20 78 00 	mv r15,r1                                      
  uint32_t value                                                      
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
 8017e7c:	34 02 00 18 	mvi r2,24                                      
 8017e80:	b9 80 08 00 	mv r1,r12                                      
 8017e84:	f8 00 5c 5d 	calli 802eff8 <__lshrsi3>                      
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8017e88:	01 85 00 01 	srui r5,r12,1                                  
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8017e8c:	b9 e1 78 00 	or r15,r15,r1                                  
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8017e90:	00 a5 00 01 	srui r5,r5,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8017e94:	34 02 00 10 	mvi r2,16                                      
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
  byte2 = (value >> 8)  & 0xff;                                       
 8017e98:	00 a5 00 01 	srui r5,r5,1                                   
 8017e9c:	00 a5 00 01 	srui r5,r5,1                                   
 8017ea0:	00 a5 00 01 	srui r5,r5,1                                   
 8017ea4:	00 a5 00 01 	srui r5,r5,1                                   
 8017ea8:	00 a5 00 01 	srui r5,r5,1                                   
 8017eac:	00 a5 00 01 	srui r5,r5,1                                   
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8017eb0:	20 a1 00 ff 	andi r1,r5,0xff                                
 8017eb4:	fb ff a4 ac 	calli 8001164 <__ashlsi3>                      
 8017eb8:	b9 e1 78 00 	or r15,r15,r1                                  
)                                                                     
{                                                                     
  uint32_t byte1, byte2, byte3, byte4, swapped;                       
                                                                      
  byte4 = (value >> 24) & 0xff;                                       
  byte3 = (value >> 16) & 0xff;                                       
 8017ebc:	34 02 00 10 	mvi r2,16                                      
 8017ec0:	b9 80 08 00 	mv r1,r12                                      
 8017ec4:	f8 00 5c 4d 	calli 802eff8 <__lshrsi3>                      
 8017ec8:	20 24 00 ff 	andi r4,r1,0xff                                
  byte2 = (value >> 8)  & 0xff;                                       
  byte1 =  value        & 0xff;                                       
                                                                      
  swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4;     
 8017ecc:	b4 84 20 00 	add r4,r4,r4                                   
 8017ed0:	b4 84 20 00 	add r4,r4,r4                                   
 8017ed4:	b4 84 20 00 	add r4,r4,r4                                   
 8017ed8:	b4 84 20 00 	add r4,r4,r4                                   
 8017edc:	b4 84 20 00 	add r4,r4,r4                                   
 8017ee0:	b4 84 20 00 	add r4,r4,r4                                   
 8017ee4:	b4 84 20 00 	add r4,r4,r4                                   
 8017ee8:	b4 84 20 00 	add r4,r4,r4                                   
 8017eec:	b9 e4 30 00 	or r6,r15,r4                                   
                                                                      
    le_new_length = CT_LE_L((fat_fd->fat_file_size));                 
    ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
 8017ef0:	b9 60 08 00 	mv r1,r11                                      
 8017ef4:	b9 c0 10 00 	mv r2,r14                                      
 8017ef8:	35 a3 00 1c 	addi r3,r13,28                                 
 8017efc:	34 04 00 04 	mvi r4,4                                       
 8017f00:	37 85 00 1c 	addi r5,sp,28                                  
                                                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    byte = (fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));  
                                                                      
    le_new_length = CT_LE_L((fat_fd->fat_file_size));                 
 8017f04:	5b 86 00 1c 	sw (sp+28),r6                                  
    ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,
 8017f08:	fb ff e4 30 	calli 8010fc8 <fat_sector_write>               
                           (char *)(&le_new_length));                 
    if ( ret < 0 )                                                    
        return -1;                                                    
 8017f0c:	6c 21 00 00 	cmpgei r1,r1,0                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
 8017f10:	34 21 ff ff 	addi r1,r1,-1                                  
 8017f14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8017f18:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8017f1c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8017f20:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8017f24:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8017f28:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8017f2c:	37 9c 00 1c 	addi sp,sp,28                                  
 8017f30:	c3 a0 00 00 	ret                                            
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
 8017f34:	29 6e 00 20 	lw r14,(r11+32)                                
 8017f38:	e3 ff ff c4 	bi 8017e48 <msdos_set_file_size+0x4c>          
                                                                      

08017f3c <msdos_set_first_char4file_name>: msdos_set_first_char4file_name( rtems_filesystem_mount_table_entry_t *mt_entry, fat_dir_pos_t *dir_pos, unsigned char fchar ) {
 8017f3c:	37 9c ff c8 	addi sp,sp,-56                                 
 8017f40:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8017f44:	5b 8c 00 28 	sw (sp+40),r12                                 
 8017f48:	5b 8d 00 24 	sw (sp+36),r13                                 
 8017f4c:	5b 8e 00 20 	sw (sp+32),r14                                 
 8017f50:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8017f54:	5b 90 00 18 	sw (sp+24),r16                                 
 8017f58:	5b 91 00 14 	sw (sp+20),r17                                 
 8017f5c:	5b 92 00 10 	sw (sp+16),r18                                 
 8017f60:	5b 93 00 0c 	sw (sp+12),r19                                 
 8017f64:	5b 94 00 08 	sw (sp+8),r20                                  
 8017f68:	5b 9d 00 04 	sw (sp+4),ra                                   
 8017f6c:	33 83 00 30 	sb (sp+48),r3                                  
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 8017f70:	28 2b 00 08 	lw r11,(r1+8)                                  
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
 8017f74:	28 44 00 08 	lw r4,(r2+8)                                   
 8017f78:	28 43 00 0c 	lw r3,(r2+12)                                  
 8017f7c:	28 50 00 00 	lw r16,(r2+0)                                  
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
 8017f80:	29 61 00 3c 	lw r1,(r11+60)                                 
    )                                                                 
{                                                                     
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
 8017f84:	5b 84 00 34 	sw (sp+52),r4                                  
 8017f88:	5b 83 00 38 	sw (sp+56),r3                                  
 8017f8c:	28 53 00 04 	lw r19,(r2+4)                                  
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
 8017f90:	44 30 00 4b 	be r1,r16,80180bc <msdos_set_first_char4file_name+0x180><== ALWAYS TAKEN
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
 8017f94:	28 43 00 08 	lw r3,(r2+8)                                   <== NOT EXECUTED
 8017f98:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
 8017f9c:	2d 72 00 06 	lhu r18,(r11+6)                                <== NOT EXECUTED
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
 8017fa0:	44 61 00 4e 	be r3,r1,80180d8 <msdos_set_first_char4file_name+0x19c><== NOT EXECUTED
      start = dir_pos->sname;                                         
 8017fa4:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8017fa8:	41 6e 00 02 	lbu r14,(r11+2)                                
 8017fac:	2d 6d 00 00 	lhu r13,(r11+0)                                
 8017fb0:	37 91 00 30 	addi r17,sp,48                                 
      {                                                               
        int rc;                                                       
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&                  
            (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))        
          break;                                                      
        rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
 8017fb4:	37 94 00 34 	addi r20,sp,52                                 
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
      start = dir_pos->sname;                                         
 8017fb8:	2b 84 00 34 	lw r4,(sp+52)                                  
 8017fbc:	e0 00 00 18 	bi 801801c <msdos_set_first_char4file_name+0xe0>
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8017fc0:	41 62 00 0e 	lbu r2,(r11+14)                                
 8017fc4:	20 42 00 03 	andi r2,r2,0x3                                 
 8017fc8:	44 44 00 17 	be r2,r4,8018024 <msdos_set_first_char4file_name+0xe8><== NEVER TAKEN
        return fs_info->vol.rdir_loc;                                 
 8017fcc:	29 6f 00 20 	lw r15,(r11+32)                                
     * interface.                                                     
     */                                                               
    while (true)                                                      
    {                                                                 
      uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
                      (start.ofs >> fs_info->fat.vol.sec_log2));      
 8017fd0:	b9 c0 10 00 	mv r2,r14                                      
 8017fd4:	b9 80 08 00 	mv r1,r12                                      
 8017fd8:	f8 00 5c 08 	calli 802eff8 <__lshrsi3>                      
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));       
 8017fdc:	35 ad ff ff 	addi r13,r13,-1                                
     * name code was written rather than use the fat_file_write       
     * interface.                                                     
     */                                                               
    while (true)                                                      
    {                                                                 
      uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
 8017fe0:	b5 e1 10 00 	add r2,r15,r1                                  
                      (start.ofs >> fs_info->fat.vol.sec_log2));      
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));       
                                                                      
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
 8017fe4:	a1 ac 18 00 	and r3,r13,r12                                 
 8017fe8:	b9 60 08 00 	mv r1,r11                                      
 8017fec:	34 04 00 01 	mvi r4,1                                       
 8017ff0:	ba 20 28 00 	mv r5,r17                                      
 8017ff4:	fb ff e3 f5 	calli 8010fc8 <fat_sector_write>               
                             1, &fchar);                              
      if (ret < 0)                                                    
 8017ff8:	48 01 00 2f 	bg r0,r1,80180b4 <msdos_set_first_char4file_name+0x178><== NEVER TAKEN
        return -1;                                                    
                                                                      
      if ((start.cln == end.cln) && (start.ofs == end.ofs))           
 8017ffc:	2b 84 00 34 	lw r4,(sp+52)                                  
 8018000:	46 04 00 0e 	be r16,r4,8018038 <msdos_set_first_char4file_name+0xfc><== ALWAYS TAKEN
 8018004:	2b 8c 00 38 	lw r12,(sp+56)                                 <== NOT EXECUTED
        break;                                                        
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
 8018008:	35 8c 00 20 	addi r12,r12,32                                
 801800c:	5b 8c 00 38 	sw (sp+56),r12                                 
      if (start.ofs >= dir_block_size)                                
 8018010:	51 92 00 1a 	bgeu r12,r18,8018078 <msdos_set_first_char4file_name+0x13c><== NEVER TAKEN
 8018014:	41 6e 00 02 	lbu r14,(r11+2)                                
 8018018:	2d 6d 00 00 	lhu r13,(r11+0)                                
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 801801c:	34 81 ff fe 	addi r1,r4,-2                                  
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8018020:	44 80 ff e8 	be r4,r0,8017fc0 <msdos_set_first_char4file_name+0x84><== ALWAYS TAKEN
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8018024:	41 62 00 05 	lbu r2,(r11+5)                                 <== NOT EXECUTED
 8018028:	fb ff a4 4f 	calli 8001164 <__ashlsi3>                      <== NOT EXECUTED
 801802c:	29 6f 00 34 	lw r15,(r11+52)                                <== NOT EXECUTED
 8018030:	b4 2f 78 00 	add r15,r1,r15                                 <== NOT EXECUTED
 8018034:	e3 ff ff e7 	bi 8017fd0 <msdos_set_first_char4file_name+0x94><== NOT EXECUTED
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
                             1, &fchar);                              
      if (ret < 0)                                                    
        return -1;                                                    
                                                                      
      if ((start.cln == end.cln) && (start.ofs == end.ofs))           
 8018038:	2b 8c 00 38 	lw r12,(sp+56)                                 
 801803c:	5d 93 ff f3 	bne r12,r19,8018008 <msdos_set_first_char4file_name+0xcc>
          return rc;                                                  
        start.ofs = 0;                                                
      }                                                               
    }                                                                 
                                                                      
    return  RC_OK;                                                    
 8018040:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8018044:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8018048:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 801804c:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8018050:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8018054:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8018058:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 801805c:	2b 90 00 18 	lw r16,(sp+24)                                 
 8018060:	2b 91 00 14 	lw r17,(sp+20)                                 
 8018064:	2b 92 00 10 	lw r18,(sp+16)                                 
 8018068:	2b 93 00 0c 	lw r19,(sp+12)                                 
 801806c:	2b 94 00 08 	lw r20,(sp+8)                                  
 8018070:	37 9c 00 38 	addi sp,sp,56                                  
 8018074:	c3 a0 00 00 	ret                                            
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
      if (start.ofs >= dir_block_size)                                
      {                                                               
        int rc;                                                       
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&                  
 8018078:	29 61 00 3c 	lw r1,(r11+60)                                 <== NOT EXECUTED
 801807c:	5e 01 00 04 	bne r16,r1,801808c <msdos_set_first_char4file_name+0x150><== NOT EXECUTED
            (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))        
 8018080:	41 61 00 0e 	lbu r1,(r11+14)                                <== NOT EXECUTED
 8018084:	20 21 00 03 	andi r1,r1,0x3                                 <== NOT EXECUTED
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
      if (start.ofs >= dir_block_size)                                
      {                                                               
        int rc;                                                       
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&                  
 8018088:	5c 20 ff ee 	bne r1,r0,8018040 <msdos_set_first_char4file_name+0x104><== NOT EXECUTED
            (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))        
          break;                                                      
        rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
 801808c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8018090:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 8018094:	ba 80 18 00 	mv r3,r20                                      <== NOT EXECUTED
 8018098:	f8 00 07 4b 	calli 8019dc4 <fat_get_fat_cluster>            <== NOT EXECUTED
        if ( rc != RC_OK )                                            
 801809c:	5c 20 ff ea 	bne r1,r0,8018044 <msdos_set_first_char4file_name+0x108><== NOT EXECUTED
          return rc;                                                  
        start.ofs = 0;                                                
 80180a0:	5b 80 00 38 	sw (sp+56),r0                                  <== NOT EXECUTED
 80180a4:	41 6e 00 02 	lbu r14,(r11+2)                                <== NOT EXECUTED
 80180a8:	2d 6d 00 00 	lhu r13,(r11+0)                                <== NOT EXECUTED
 80180ac:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 80180b0:	e3 ff ff c2 	bi 8017fb8 <msdos_set_first_char4file_name+0x7c><== NOT EXECUTED
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));       
                                                                      
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
                             1, &fchar);                              
      if (ret < 0)                                                    
        return -1;                                                    
 80180b4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80180b8:	e3 ff ff e3 	bi 8018044 <msdos_set_first_char4file_name+0x108><== NOT EXECUTED
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
 80180bc:	41 61 00 0e 	lbu r1,(r11+14)                                
 80180c0:	20 21 00 03 	andi r1,r1,0x3                                 
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
 80180c4:	44 20 ff b4 	be r1,r0,8017f94 <msdos_set_first_char4file_name+0x58><== NEVER TAKEN
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
 80180c8:	28 43 00 08 	lw r3,(r2+8)                                   
 80180cc:	34 01 ff ff 	mvi r1,-1                                      
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
 80180d0:	29 72 00 2c 	lw r18,(r11+44)                                
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
 80180d4:	5c 61 ff b4 	bne r3,r1,8017fa4 <msdos_set_first_char4file_name+0x68>
      start = dir_pos->sname;                                         
 80180d8:	28 43 00 00 	lw r3,(r2+0)                                   
 80180dc:	28 41 00 04 	lw r1,(r2+4)                                   
 80180e0:	5b 83 00 34 	sw (sp+52),r3                                  
 80180e4:	5b 81 00 38 	sw (sp+56),r1                                  
 80180e8:	e3 ff ff af 	bi 8017fa4 <msdos_set_first_char4file_name+0x68>
                                                                      

08017c58 <msdos_set_first_cluster_num>: int msdos_set_first_cluster_num( rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd ) {
 8017c58:	37 9c ff e0 	addi sp,sp,-32                                 
 8017c5c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8017c60:	5b 8c 00 18 	sw (sp+24),r12                                 
 8017c64:	5b 8d 00 14 	sw (sp+20),r13                                 
 8017c68:	5b 8e 00 10 	sw (sp+16),r14                                 
 8017c6c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8017c70:	5b 90 00 08 	sw (sp+8),r16                                  
 8017c74:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    /*                                                                
     * calculate input for fat_sector_write: convert (cluster num, offset) to
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
 8017c78:	28 43 00 20 	lw r3,(r2+32)                                  
{                                                                     
    ssize_t          ret1 = 0, ret2 = 0;                              
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         new_cln = fat_fd->cln;                           
    uint16_t         le_cl_low = 0;                                   
    uint16_t         le_cl_hi = 0;                                    
 8017c7c:	0f 80 00 20 	sh (sp+32),r0                                  
int                                                                   
msdos_set_first_cluster_num(                                          
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
 8017c80:	b8 40 60 00 	mv r12,r2                                      
    ssize_t          ret1 = 0, ret2 = 0;                              
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
 8017c84:	28 2b 00 08 	lw r11,(r1+8)                                  
    uint32_t         new_cln = fat_fd->cln;                           
 8017c88:	28 4e 00 1c 	lw r14,(r2+28)                                 
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
 8017c8c:	5c 60 00 04 	bne r3,r0,8017c9c <msdos_set_first_cluster_num+0x44>
 8017c90:	41 61 00 0e 	lbu r1,(r11+14)                                
 8017c94:	20 21 00 03 	andi r1,r1,0x3                                 
 8017c98:	5c 23 00 57 	bne r1,r3,8017df4 <msdos_set_first_cluster_num+0x19c><== ALWAYS TAKEN
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
 8017c9c:	41 62 00 05 	lbu r2,(r11+5)                                 
 8017ca0:	34 61 ff fe 	addi r1,r3,-2                                  
 8017ca4:	fb ff a5 30 	calli 8001164 <__ashlsi3>                      
 8017ca8:	29 70 00 34 	lw r16,(r11+52)                                
 8017cac:	b4 30 80 00 	add r16,r1,r16                                 
    /*                                                                
     * calculate input for fat_sector_write: convert (cluster num, offset) to
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017cb0:	29 8f 00 24 	lw r15,(r12+36)                                
 8017cb4:	41 62 00 02 	lbu r2,(r11+2)                                 
 8017cb8:	b9 e0 08 00 	mv r1,r15                                      
 8017cbc:	f8 00 5c cf 	calli 802eff8 <__lshrsi3>                      
    /* byte from points to start of 32bytes structure */              
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));          
 8017cc0:	21 c6 ff ff 	andi r6,r14,0xffff                             
 8017cc4:	00 c7 00 01 	srui r7,r6,1                                   
 8017cc8:	b4 c6 30 00 	add r6,r6,r6                                   
 8017ccc:	00 e7 00 01 	srui r7,r7,1                                   
 8017cd0:	b4 c6 30 00 	add r6,r6,r6                                   
 8017cd4:	00 e7 00 01 	srui r7,r7,1                                   
 8017cd8:	b4 c6 30 00 	add r6,r6,r6                                   
 8017cdc:	00 e7 00 01 	srui r7,r7,1                                   
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    /* byte from points to start of 32bytes structure */              
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
 8017ce0:	2d 6d 00 00 	lhu r13,(r11+0)                                
 8017ce4:	00 e7 00 01 	srui r7,r7,1                                   
 8017ce8:	b4 c6 30 00 	add r6,r6,r6                                   
 8017cec:	00 e7 00 01 	srui r7,r7,1                                   
 8017cf0:	b4 c6 30 00 	add r6,r6,r6                                   
 8017cf4:	00 e7 00 01 	srui r7,r7,1                                   
 8017cf8:	b4 c6 30 00 	add r6,r6,r6                                   
 8017cfc:	00 e7 00 01 	srui r7,r7,1                                   
 8017d00:	35 ad ff ff 	addi r13,r13,-1                                
 8017d04:	b4 c6 30 00 	add r6,r6,r6                                   
    /*                                                                
     * calculate input for fat_sector_write: convert (cluster num, offset) to
     * (sector num, new offset)                                       
     */                                                               
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
 8017d08:	b6 01 60 00 	add r12,r16,r1                                 
    /* byte from points to start of 32bytes structure */              
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
 8017d0c:	a1 af 68 00 	and r13,r13,r15                                
 8017d10:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d14:	b8 c7 30 00 	or r6,r6,r7                                    
                                                                      
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));          
    ret1 = fat_sector_write(&fs_info->fat, sec,                       
 8017d18:	35 a3 00 1a 	addi r3,r13,26                                 
 8017d1c:	37 85 00 22 	addi r5,sp,34                                  
 8017d20:	34 04 00 02 	mvi r4,2                                       
 8017d24:	b9 80 10 00 	mv r2,r12                                      
 8017d28:	b9 60 08 00 	mv r1,r11                                      
    sec = fat_cluster_num_to_sector_num(&fs_info->fat, fat_fd->dir_pos.sname.cln);
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);  
    /* byte from points to start of 32bytes structure */              
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1);    
                                                                      
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));          
 8017d2c:	0f 86 00 22 	sh (sp+34),r6                                  
    ret1 = fat_sector_write(&fs_info->fat, sec,                       
 8017d30:	fb ff e4 a6 	calli 8010fc8 <fat_sector_write>               
 8017d34:	b8 20 78 00 	mv r15,r1                                      
                            byte + MSDOS_FIRST_CLUSTER_LOW_OFFSET, 2, 
                            (char *)(&le_cl_low));                    
    le_cl_hi = CT_LE_W((uint16_t  )((new_cln & 0xFFFF0000) >> 16));   
 8017d38:	34 02 00 10 	mvi r2,16                                      
 8017d3c:	b9 c0 08 00 	mv r1,r14                                      
 8017d40:	f8 00 5c ae 	calli 802eff8 <__lshrsi3>                      
 8017d44:	20 26 ff ff 	andi r6,r1,0xffff                              
 8017d48:	00 c7 00 01 	srui r7,r6,1                                   
 8017d4c:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d50:	00 e7 00 01 	srui r7,r7,1                                   
 8017d54:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d58:	00 e7 00 01 	srui r7,r7,1                                   
 8017d5c:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d60:	00 e7 00 01 	srui r7,r7,1                                   
 8017d64:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d68:	00 e7 00 01 	srui r7,r7,1                                   
 8017d6c:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d70:	00 e7 00 01 	srui r7,r7,1                                   
 8017d74:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d78:	00 e7 00 01 	srui r7,r7,1                                   
 8017d7c:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d80:	00 e7 00 01 	srui r7,r7,1                                   
 8017d84:	b4 c6 30 00 	add r6,r6,r6                                   
 8017d88:	b8 c7 30 00 	or r6,r6,r7                                    
    ret2 = fat_sector_write(&fs_info->fat, sec,                       
 8017d8c:	35 a3 00 14 	addi r3,r13,20                                 
 8017d90:	34 04 00 02 	mvi r4,2                                       
 8017d94:	37 85 00 20 	addi r5,sp,32                                  
 8017d98:	b9 80 10 00 	mv r2,r12                                      
 8017d9c:	b9 60 08 00 	mv r1,r11                                      
                                                                      
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));          
    ret1 = fat_sector_write(&fs_info->fat, sec,                       
                            byte + MSDOS_FIRST_CLUSTER_LOW_OFFSET, 2, 
                            (char *)(&le_cl_low));                    
    le_cl_hi = CT_LE_W((uint16_t  )((new_cln & 0xFFFF0000) >> 16));   
 8017da0:	0f 86 00 20 	sh (sp+32),r6                                  
    ret2 = fat_sector_write(&fs_info->fat, sec,                       
 8017da4:	fb ff e4 89 	calli 8010fc8 <fat_sector_write>               
                            byte + MSDOS_FIRST_CLUSTER_HI_OFFSET, 2,  
                            (char *)(&le_cl_hi));                     
    if ( (ret1 < 0) || (ret2 < 0) )                                   
 8017da8:	34 02 00 1f 	mvi r2,31                                      
 8017dac:	f8 00 5c 93 	calli 802eff8 <__lshrsi3>                      
 8017db0:	b8 20 58 00 	mv r11,r1                                      
 8017db4:	34 02 00 1f 	mvi r2,31                                      
 8017db8:	b9 e0 08 00 	mv r1,r15                                      
 8017dbc:	f8 00 5c 8f 	calli 802eff8 <__lshrsi3>                      
 8017dc0:	b9 61 08 00 	or r1,r11,r1                                   
 8017dc4:	20 21 00 ff 	andi r1,r1,0xff                                
        return -1;                                                    
 8017dc8:	64 21 00 00 	cmpei r1,r1,0                                  
                                                                      
    return RC_OK;                                                     
}                                                                     
 8017dcc:	34 21 ff ff 	addi r1,r1,-1                                  
 8017dd0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8017dd4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8017dd8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8017ddc:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8017de0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8017de4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8017de8:	2b 90 00 08 	lw r16,(sp+8)                                  
 8017dec:	37 9c 00 20 	addi sp,sp,32                                  
 8017df0:	c3 a0 00 00 	ret                                            
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
 8017df4:	29 70 00 20 	lw r16,(r11+32)                                
 8017df8:	e3 ff ff ae 	bi 8017cb0 <msdos_set_first_cluster_num+0x58>  
                                                                      

08019c20 <msdos_sync>: return MSDOS_NAME_NOT_FOUND_ERR; } int msdos_sync(rtems_libio_t *iop) {
 8019c20:	37 9c ff f4 	addi sp,sp,-12                                 
 8019c24:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8019c28:	5b 8c 00 08 	sw (sp+8),r12                                  
 8019c2c:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 8019c30:	28 21 00 20 	lw r1,(r1+32)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 8019c34:	34 02 00 00 	mvi r2,0                                       
 8019c38:	34 03 00 00 	mvi r3,0                                       
int                                                                   
msdos_sync(rtems_libio_t *iop)                                        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
 8019c3c:	28 2b 00 08 	lw r11,(r1+8)                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
 8019c40:	29 61 00 9c 	lw r1,(r11+156)                                
 8019c44:	fb ff b0 34 	calli 8005d14 <rtems_semaphore_obtain>         
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 8019c48:	5c 20 00 0c 	bne r1,r0,8019c78 <msdos_sync+0x58>            <== NEVER TAKEN
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = fat_sync(&fs_info->fat);                                     
 8019c4c:	b9 60 08 00 	mv r1,r11                                      
 8019c50:	fb ff e0 9a 	calli 8011eb8 <fat_sync>                       
 8019c54:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
 8019c58:	29 61 00 9c 	lw r1,(r11+156)                                
 8019c5c:	fb ff b0 8a 	calli 8005e84 <rtems_semaphore_release>        
    return rc;                                                        
}                                                                     
 8019c60:	b9 80 08 00 	mv r1,r12                                      
 8019c64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8019c68:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8019c6c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8019c70:	37 9c 00 0c 	addi sp,sp,12                                  
 8019c74:	c3 a0 00 00 	ret                                            
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
 8019c78:	f8 00 0a df 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 8019c7c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8019c80:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8019c84:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8019c88:	e3 ff ff f6 	bi 8019c60 <msdos_sync+0x40>                   <== NOT EXECUTED
                                                                      

0800b7e0 <msdos_unlock>: rtems_fatal_error_occurred(0xdeadbeef); } } void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry) {
 800b7e0:	37 9c ff fc 	addi sp,sp,-4                                  
 800b7e4:	5b 9d 00 04 	sw (sp+4),ra                                   
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);  
 800b7e8:	28 21 00 08 	lw r1,(r1+8)                                   
 800b7ec:	28 21 00 9c 	lw r1,(r1+156)                                 
 800b7f0:	fb ff e9 a5 	calli 8005e84 <rtems_semaphore_release>        
  if (sc != RTEMS_SUCCESSFUL) {                                       
 800b7f4:	5c 20 00 04 	bne r1,r0,800b804 <msdos_unlock+0x24>          <== NEVER TAKEN
    rtems_fatal_error_occurred(0xdeadbeef);                           
  }                                                                   
}                                                                     
 800b7f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b7fc:	37 9c 00 04 	addi sp,sp,4                                   
 800b800:	c3 a0 00 00 	ret                                            
void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{                                                                     
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    rtems_fatal_error_occurred(0xdeadbeef);                           
 800b804:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 800b808:	38 42 fb d8 	ori r2,r2,0xfbd8                               <== NOT EXECUTED
 800b80c:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800b810:	fb ff ea ce 	calli 8006348 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

0800211c <newlib_create_hook>: */ bool newlib_create_hook( rtems_tcb *current_task __attribute__((unused)), rtems_tcb *creating_task ) {
 800211c:	37 9c ff f4 	addi sp,sp,-12                                 
 8002120:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8002124:	5b 8c 00 08 	sw (sp+8),r12                                  
 8002128:	5b 9d 00 04 	sw (sp+4),ra                                   
  struct _reent *ptr;                                                 
                                                                      
  if (_Thread_libc_reent == 0)                                        
 800212c:	78 01 08 02 	mvhi r1,0x802                                  
 8002130:	38 21 09 c4 	ori r1,r1,0x9c4                                
 8002134:	28 23 00 00 	lw r3,(r1+0)                                   
 */                                                                   
bool newlib_create_hook(                                              
  rtems_tcb *current_task __attribute__((unused)),                    
  rtems_tcb *creating_task                                            
)                                                                     
{                                                                     
 8002138:	b8 40 60 00 	mv r12,r2                                      
  struct _reent *ptr;                                                 
                                                                      
  if (_Thread_libc_reent == 0)                                        
 800213c:	44 60 00 68 	be r3,r0,80022dc <newlib_create_hook+0x1c0>    
    ptr = (struct _reent *) calloc(1, sizeof(struct _reent));         
  #else                                                               
    /* It is OK to allocate from the workspace because these          
     * hooks run with thread dispatching disabled.                    
     */                                                               
    ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
 8002140:	34 01 04 28 	mvi r1,1064                                    
 8002144:	f8 00 17 b0 	calli 8008004 <_Workspace_Allocate>            
 8002148:	b8 20 58 00 	mv r11,r1                                      
    _REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */  
    creating_task->libc_reent = ptr;                                  
    return TRUE;                                                      
  }                                                                   
                                                                      
  return FALSE;                                                       
 800214c:	34 01 00 00 	mvi r1,0                                       
     * hooks run with thread dispatching disabled.                    
     */                                                               
    ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
  #endif                                                              
                                                                      
  if (ptr) {                                                          
 8002150:	45 60 00 5e 	be r11,r0,80022c8 <newlib_create_hook+0x1ac>   <== NEVER TAKEN
    _REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */  
 8002154:	78 05 08 01 	mvhi r5,0x801                                  
 8002158:	35 63 00 7c 	addi r3,r11,124                                
 800215c:	59 60 00 7c 	sw (r11+124),r0                                
 8002160:	59 60 00 14 	sw (r11+20),r0                                 
 8002164:	35 64 00 14 	addi r4,r11,20                                 
 8002168:	35 61 02 ec 	addi r1,r11,748                                
 800216c:	38 a5 d9 d0 	ori r5,r5,0xd9d0                               
 8002170:	35 66 03 54 	addi r6,r11,852                                
 8002174:	35 62 03 bc 	addi r2,r11,956                                
 8002178:	59 61 00 04 	sw (r11+4),r1                                  
 800217c:	59 66 00 08 	sw (r11+8),r6                                  
 8002180:	59 62 00 0c 	sw (r11+12),r2                                 
 8002184:	58 80 00 04 	sw (r4+4),r0                                   
 8002188:	58 80 00 08 	sw (r4+8),r0                                   
 800218c:	58 80 00 0c 	sw (r4+12),r0                                  
 8002190:	58 80 00 10 	sw (r4+16),r0                                  
 8002194:	58 80 00 14 	sw (r4+20),r0                                  
 8002198:	30 80 00 18 	sb (r4+24),r0                                  
 800219c:	59 65 00 34 	sw (r11+52),r5                                 
 80021a0:	58 60 00 04 	sw (r3+4),r0                                   
 80021a4:	58 60 00 08 	sw (r3+8),r0                                   
 80021a8:	58 60 00 0c 	sw (r3+12),r0                                  
 80021ac:	58 60 00 10 	sw (r3+16),r0                                  
 80021b0:	58 60 00 14 	sw (r3+20),r0                                  
 80021b4:	58 60 00 18 	sw (r3+24),r0                                  
 80021b8:	58 60 00 1c 	sw (r3+28),r0                                  
 80021bc:	34 02 00 01 	mvi r2,1                                       
 80021c0:	59 60 00 00 	sw (r11+0),r0                                  
 80021c4:	59 60 00 10 	sw (r11+16),r0                                 
 80021c8:	59 60 00 30 	sw (r11+48),r0                                 
 80021cc:	59 60 00 38 	sw (r11+56),r0                                 
 80021d0:	59 60 00 3c 	sw (r11+60),r0                                 
 80021d4:	59 60 00 40 	sw (r11+64),r0                                 
 80021d8:	59 60 00 44 	sw (r11+68),r0                                 
 80021dc:	59 60 00 48 	sw (r11+72),r0                                 
 80021e0:	59 60 00 4c 	sw (r11+76),r0                                 
 80021e4:	59 60 00 50 	sw (r11+80),r0                                 
 80021e8:	59 60 00 54 	sw (r11+84),r0                                 
 80021ec:	59 60 00 58 	sw (r11+88),r0                                 
 80021f0:	59 60 00 5c 	sw (r11+92),r0                                 
 80021f4:	31 60 00 60 	sb (r11+96),r0                                 
 80021f8:	58 60 00 20 	sw (r3+32),r0                                  
 80021fc:	59 62 00 ac 	sw (r11+172),r2                                
 8002200:	34 02 33 0e 	mvi r2,13070                                   
 8002204:	0d 62 00 b0 	sh (r11+176),r2                                
 8002208:	34 02 ab cd 	mvi r2,-21555                                  
 800220c:	0d 62 00 b2 	sh (r11+178),r2                                
 8002210:	34 02 12 34 	mvi r2,4660                                    
 8002214:	0d 62 00 b4 	sh (r11+180),r2                                
 8002218:	34 02 e6 6d 	mvi r2,-6547                                   
 800221c:	0d 62 00 b6 	sh (r11+182),r2                                
 8002220:	34 02 de ec 	mvi r2,-8468                                   
 8002224:	0d 62 00 b8 	sh (r11+184),r2                                
 8002228:	34 02 00 05 	mvi r2,5                                       
 800222c:	0d 62 00 ba 	sh (r11+186),r2                                
 8002230:	34 02 00 0b 	mvi r2,11                                      
 8002234:	0d 62 00 bc 	sh (r11+188),r2                                
 8002238:	59 60 00 a0 	sw (r11+160),r0                                
 800223c:	59 60 00 a8 	sw (r11+168),r0                                
 8002240:	59 60 00 c0 	sw (r11+192),r0                                
 8002244:	59 60 00 c4 	sw (r11+196),r0                                
 8002248:	59 60 00 c8 	sw (r11+200),r0                                
 800224c:	59 60 00 cc 	sw (r11+204),r0                                
 8002250:	59 60 00 d0 	sw (r11+208),r0                                
 8002254:	59 60 00 d4 	sw (r11+212),r0                                
 8002258:	59 60 00 fc 	sw (r11+252),r0                                
 800225c:	59 60 01 00 	sw (r11+256),r0                                
 8002260:	59 60 01 04 	sw (r11+260),r0                                
 8002264:	59 60 01 08 	sw (r11+264),r0                                
 8002268:	59 60 01 0c 	sw (r11+268),r0                                
 800226c:	59 60 01 10 	sw (r11+272),r0                                
 8002270:	59 60 01 14 	sw (r11+276),r0                                
 8002274:	59 60 01 18 	sw (r11+280),r0                                
 8002278:	59 60 01 1c 	sw (r11+284),r0                                
 800227c:	59 60 01 20 	sw (r11+288),r0                                
 8002280:	31 60 00 d8 	sb (r11+216),r0                                
 8002284:	31 60 00 e0 	sb (r11+224),r0                                
 8002288:	59 60 00 f8 	sw (r11+248),r0                                
 800228c:	59 60 01 48 	sw (r11+328),r0                                
 8002290:	59 60 01 4c 	sw (r11+332),r0                                
 8002294:	59 60 01 50 	sw (r11+336),r0                                
 8002298:	59 60 01 54 	sw (r11+340),r0                                
 800229c:	59 60 02 d4 	sw (r11+724),r0                                
 80022a0:	34 02 00 00 	mvi r2,0                                       
 80022a4:	59 60 01 d4 	sw (r11+468),r0                                
 80022a8:	59 60 02 dc 	sw (r11+732),r0                                
 80022ac:	59 60 02 e0 	sw (r11+736),r0                                
 80022b0:	59 60 02 e4 	sw (r11+740),r0                                
 80022b4:	59 60 02 e8 	sw (r11+744),r0                                
 80022b8:	34 03 01 38 	mvi r3,312                                     
 80022bc:	f8 00 2f 29 	calli 800df60 <memset>                         
    creating_task->libc_reent = ptr;                                  
    return TRUE;                                                      
 80022c0:	34 01 00 01 	mvi r1,1                                       
    ptr = (struct _reent *) _Workspace_Allocate(sizeof(struct _reent));
  #endif                                                              
                                                                      
  if (ptr) {                                                          
    _REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */  
    creating_task->libc_reent = ptr;                                  
 80022c4:	59 8b 01 14 	sw (r12+276),r11                               
    return TRUE;                                                      
  }                                                                   
                                                                      
  return FALSE;                                                       
}                                                                     
 80022c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80022cc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80022d0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80022d4:	37 9c 00 0c 	addi sp,sp,12                                  
 80022d8:	c3 a0 00 00 	ret                                            
{                                                                     
  struct _reent *ptr;                                                 
                                                                      
  if (_Thread_libc_reent == 0)                                        
  {                                                                   
    _REENT = _global_impure_ptr;                                      
 80022dc:	78 02 08 01 	mvhi r2,0x801                                  
 80022e0:	38 42 e0 a0 	ori r2,r2,0xe0a0                               
 80022e4:	28 43 00 00 	lw r3,(r2+0)                                   
 80022e8:	78 02 08 02 	mvhi r2,0x802                                  
 80022ec:	38 42 02 70 	ori r2,r2,0x270                                
 80022f0:	58 43 00 00 	sw (r2+0),r3                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (                    
  struct _reent **libc_reent                                          
)                                                                     
{                                                                     
  _Thread_libc_reent = libc_reent;                                    
 80022f4:	58 22 00 00 	sw (r1+0),r2                                   
 80022f8:	e3 ff ff 92 	bi 8002140 <newlib_create_hook+0x24>           
                                                                      

080022fc <newlib_delete_hook>: void newlib_delete_hook( rtems_tcb *current_task, rtems_tcb *deleted_task ) {
 80022fc:	37 9c ff f0 	addi sp,sp,-16                                 
 8002300:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002304:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002308:	5b 8d 00 08 	sw (sp+8),r13                                  
 800230c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002310:	b8 20 68 00 	mv r13,r1                                      
 8002314:	b8 40 58 00 	mv r11,r2                                      
                                                                      
  /*                                                                  
   * The reentrancy structure was allocated by newlib using malloc()  
   */                                                                 
                                                                      
  if (current_task == deleted_task) {                                 
 8002318:	44 22 00 1e 	be r1,r2,8002390 <newlib_delete_hook+0x94>     
    ptr = _REENT;                                                     
  } else {                                                            
    ptr = deleted_task->libc_reent;                                   
 800231c:	28 4c 01 14 	lw r12,(r2+276)                                
  }                                                                   
                                                                      
  if (ptr && ptr != _global_impure_ptr) {                             
 8002320:	45 80 00 0b 	be r12,r0,800234c <newlib_delete_hook+0x50>    <== NEVER TAKEN
 8002324:	78 02 08 01 	mvhi r2,0x801                                  
 8002328:	38 42 e0 a0 	ori r2,r2,0xe0a0                               
 800232c:	28 41 00 00 	lw r1,(r2+0)                                   
 8002330:	45 81 00 07 	be r12,r1,800234c <newlib_delete_hook+0x50>    
    _reclaim_reent(ptr);                                              
*/                                                                    
    /*                                                                
     *  Just in case there are some buffers lying around.             
     */                                                               
    _fwalk(ptr, newlib_free_buffers);                                 
 8002334:	78 02 08 00 	mvhi r2,0x800                                  
 8002338:	b9 80 08 00 	mv r1,r12                                      
 800233c:	38 42 20 94 	ori r2,r2,0x2094                               
 8002340:	f8 00 2e 59 	calli 800dca4 <_fwalk>                         
#if REENT_MALLOCED                                                    
    free(ptr);                                                        
#else                                                                 
    _Workspace_Free(ptr);                                             
 8002344:	b9 80 08 00 	mv r1,r12                                      
 8002348:	f8 00 17 3a 	calli 8008030 <_Workspace_Free>                
#endif                                                                
  }                                                                   
                                                                      
  deleted_task->libc_reent = NULL;                                    
 800234c:	59 60 01 14 	sw (r11+276),r0                                
                                                                      
  /*                                                                  
   * Require the switch back to another task to install its own       
   */                                                                 
                                                                      
  if ( current_task == deleted_task ) {                               
 8002350:	45 ab 00 07 	be r13,r11,800236c <newlib_delete_hook+0x70>   
    _REENT = 0;                                                       
  }                                                                   
}                                                                     
 8002354:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002358:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800235c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8002360:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8002364:	37 9c 00 10 	addi sp,sp,16                                  
 8002368:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * Require the switch back to another task to install its own       
   */                                                                 
                                                                      
  if ( current_task == deleted_task ) {                               
    _REENT = 0;                                                       
 800236c:	78 01 08 02 	mvhi r1,0x802                                  
 8002370:	38 21 02 70 	ori r1,r1,0x270                                
 8002374:	58 20 00 00 	sw (r1+0),r0                                   
  }                                                                   
}                                                                     
 8002378:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800237c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8002380:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8002384:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8002388:	37 9c 00 10 	addi sp,sp,16                                  
 800238c:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * The reentrancy structure was allocated by newlib using malloc()  
   */                                                                 
                                                                      
  if (current_task == deleted_task) {                                 
    ptr = _REENT;                                                     
 8002390:	78 01 08 02 	mvhi r1,0x802                                  
 8002394:	38 21 02 70 	ori r1,r1,0x270                                
 8002398:	28 2c 00 00 	lw r12,(r1+0)                                  
 800239c:	e3 ff ff e1 	bi 8002320 <newlib_delete_hook+0x24>           
                                                                      

08002094 <newlib_free_buffers>: * task. */ int newlib_free_buffers( FILE *fp ) {
 8002094:	37 9c ff f8 	addi sp,sp,-8                                  
 8002098:	5b 8b 00 08 	sw (sp+8),r11                                  
 800209c:	5b 9d 00 04 	sw (sp+4),ra                                   
 80020a0:	b8 20 58 00 	mv r11,r1                                      
  switch ( fileno(fp) ) {                                             
 80020a4:	f8 00 2d 98 	calli 800d704 <fileno>                         
 80020a8:	34 02 00 02 	mvi r2,2                                       
 80020ac:	54 22 00 09 	bgu r1,r2,80020d0 <newlib_free_buffers+0x3c>   <== NEVER TAKEN
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
 80020b0:	2d 61 00 0c 	lhu r1,(r11+12)                                
 80020b4:	20 21 00 80 	andi r1,r1,0x80                                
 80020b8:	5c 20 00 0d 	bne r1,r0,80020ec <newlib_free_buffers+0x58>   <== NEVER TAKEN
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 80020bc:	34 01 00 00 	mvi r1,0                                       
 80020c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80020c4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80020c8:	37 9c 00 08 	addi sp,sp,8                                   
 80020cc:	c3 a0 00 00 	ret                                            
        fp->_flags &= ~__SMBF;                                        
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
      }                                                               
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
 80020d0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80020d4:	f8 00 2c c0 	calli 800d3d4 <fclose>                         <== NOT EXECUTED
  }                                                                   
  return 0;                                                           
}                                                                     
 80020d8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80020dc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80020e0:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80020e4:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80020e8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  switch ( fileno(fp) ) {                                             
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
        free( fp->_bf._base );                                        
 80020ec:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80020f0:	fb ff fd 4e 	calli 8001628 <free>                           <== NOT EXECUTED
        fp->_flags &= ~__SMBF;                                        
 80020f4:	2d 61 00 0c 	lhu r1,(r11+12)                                <== NOT EXECUTED
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
 80020f8:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
 80020fc:	59 60 00 10 	sw (r11+16),r0                                 <== NOT EXECUTED
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
        free( fp->_bf._base );                                        
        fp->_flags &= ~__SMBF;                                        
 8002100:	20 21 ff 7f 	andi r1,r1,0xff7f                              <== NOT EXECUTED
 8002104:	0d 61 00 0c 	sh (r11+12),r1                                 <== NOT EXECUTED
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8002108:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800210c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8002110:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8002114:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8002118:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08001324 <notify>: } void notify (s) char *s; {
 8001324:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8001328:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800132c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
    printf ("%s test appears to be inconsistent...\n", s);            
 8001330:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8001334:	38 21 a7 24 	ori r1,r1,0xa724                               <== NOT EXECUTED
 8001338:	f8 00 76 9e 	calli 801edb0 <printf>                         <== NOT EXECUTED
    printf ("   PLEASE NOTIFY KARPINKSI!\n");                         
 800133c:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 8001340:	38 21 a7 4c 	ori r1,r1,0xa74c                               <== NOT EXECUTED
 8001344:	f8 00 76 f9 	calli 801ef28 <puts>                           <== NOT EXECUTED
}                                                                     
 8001348:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800134c:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8001350:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035d4 <null_op_fsmount_me>: rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) { return -1; }
 80035d4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80035d8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035e4 <null_op_fsunmount_me>: static void null_op_fsunmount_me( rtems_filesystem_mount_table_entry_t *mt_entry ) { /* Do nothing */ }
 80035e4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035ac <null_op_link>: const char *name, size_t namelen ) { return -1; }
 80035ac:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80035b0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035cc <null_op_mount>: static int null_op_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { return -1; }
 80035cc:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80035d0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035f8 <null_op_readlink>: char *buf, size_t bufsize ) { return -1; }
 80035f8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80035fc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003600 <null_op_rename>: const char *name, size_t namelen ) { return -1; }
 8003600:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8003604:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080035a4 <null_op_rmnod>: const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc ) { return -1; }
 80035a4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80035a8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08005130 <oproc>: /* * Handle output processing */ static void oproc (unsigned char c, struct rtems_termios_tty *tty) {
 8005130:	37 9c ff f4 	addi sp,sp,-12                                 
 8005134:	5b 8b 00 08 	sw (sp+8),r11                                  
 8005138:	5b 9d 00 04 	sw (sp+4),ra                                   
 800513c:	b8 40 58 00 	mv r11,r2                                      
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
 8005140:	28 42 00 34 	lw r2,(r2+52)                                  
/*                                                                    
 * Handle output processing                                           
 */                                                                   
static void                                                           
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
 8005144:	33 81 00 0c 	sb (sp+12),r1                                  
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
 8005148:	20 41 00 01 	andi r1,r2,0x1                                 
 800514c:	44 20 00 0b 	be r1,r0,8005178 <oproc+0x48>                  <== NEVER TAKEN
    switch (c) {                                                      
 8005150:	43 81 00 0c 	lbu r1,(sp+12)                                 
 8005154:	34 03 00 09 	mvi r3,9                                       
 8005158:	44 23 00 39 	be r1,r3,800523c <oproc+0x10c>                 
 800515c:	54 23 00 0f 	bgu r1,r3,8005198 <oproc+0x68>                 <== ALWAYS TAKEN
 8005160:	34 03 00 08 	mvi r3,8                                       <== NOT EXECUTED
 8005164:	5c 23 00 11 	bne r1,r3,80051a8 <oproc+0x78>                 <== NOT EXECUTED
      }                                                               
      tty->column += i;                                               
      break;                                                          
                                                                      
    case '\b':                                                        
      if (tty->column > 0)                                            
 8005168:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 800516c:	4c 01 00 03 	bge r0,r1,8005178 <oproc+0x48>                 <== NOT EXECUTED
        tty->column--;                                                
 8005170:	34 21 ff ff 	addi r1,r1,-1                                  <== NOT EXECUTED
 8005174:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
      if (!iscntrl(c))                                                
        tty->column++;                                                
      break;                                                          
    }                                                                 
  }                                                                   
  rtems_termios_puts (&c, 1, tty);                                    
 8005178:	37 81 00 0c 	addi r1,sp,12                                  
 800517c:	34 02 00 01 	mvi r2,1                                       
 8005180:	b9 60 18 00 	mv r3,r11                                      
 8005184:	fb ff ff 92 	calli 8004fcc <rtems_termios_puts>             
}                                                                     
 8005188:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800518c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005190:	37 9c 00 0c 	addi sp,sp,12                                  
 8005194:	c3 a0 00 00 	ret                                            
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    switch (c) {                                                      
 8005198:	34 03 00 0a 	mvi r3,10                                      
 800519c:	44 23 00 10 	be r1,r3,80051dc <oproc+0xac>                  
 80051a0:	34 03 00 0d 	mvi r3,13                                      
 80051a4:	44 23 00 1a 	be r1,r3,800520c <oproc+0xdc>                  <== NEVER TAKEN
      if (tty->column > 0)                                            
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
 80051a8:	20 42 00 02 	andi r2,r2,0x2                                 
 80051ac:	5c 40 00 2e 	bne r2,r0,8005264 <oproc+0x134>                <== NEVER TAKEN
 80051b0:	78 02 08 02 	mvhi r2,0x802                                  
 80051b4:	38 42 82 e0 	ori r2,r2,0x82e0                               
 80051b8:	28 42 00 00 	lw r2,(r2+0)                                   
        c = toupper(c);                                               
      if (!iscntrl(c))                                                
 80051bc:	b4 41 08 00 	add r1,r2,r1                                   
 80051c0:	40 21 00 01 	lbu r1,(r1+1)                                  
 80051c4:	20 21 00 20 	andi r1,r1,0x20                                
 80051c8:	5c 20 ff ec 	bne r1,r0,8005178 <oproc+0x48>                 <== NEVER TAKEN
        tty->column++;                                                
 80051cc:	29 61 00 28 	lw r1,(r11+40)                                 
 80051d0:	34 21 00 01 	addi r1,r1,1                                   
 80051d4:	59 61 00 28 	sw (r11+40),r1                                 
 80051d8:	e3 ff ff e8 	bi 8005178 <oproc+0x48>                        
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    switch (c) {                                                      
    case '\n':                                                        
      if (tty->termios.c_oflag & ONLRET)                              
 80051dc:	20 41 00 20 	andi r1,r2,0x20                                
 80051e0:	44 20 00 02 	be r1,r0,80051e8 <oproc+0xb8>                  <== ALWAYS TAKEN
        tty->column = 0;                                              
 80051e4:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
      if (tty->termios.c_oflag & ONLCR) {                             
 80051e8:	20 42 00 04 	andi r2,r2,0x4                                 
 80051ec:	44 40 ff e3 	be r2,r0,8005178 <oproc+0x48>                  <== NEVER TAKEN
        rtems_termios_puts ("\r", 1, tty);                            
 80051f0:	78 01 08 02 	mvhi r1,0x802                                  
 80051f4:	38 21 61 70 	ori r1,r1,0x6170                               
 80051f8:	34 02 00 01 	mvi r2,1                                       
 80051fc:	b9 60 18 00 	mv r3,r11                                      
 8005200:	fb ff ff 73 	calli 8004fcc <rtems_termios_puts>             
        tty->column = 0;                                              
 8005204:	59 60 00 28 	sw (r11+40),r0                                 
 8005208:	e3 ff ff dc 	bi 8005178 <oproc+0x48>                        
      }                                                               
      break;                                                          
                                                                      
    case '\r':                                                        
      if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))       
 800520c:	20 41 00 10 	andi r1,r2,0x10                                <== NOT EXECUTED
 8005210:	44 20 00 03 	be r1,r0,800521c <oproc+0xec>                  <== NOT EXECUTED
 8005214:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 8005218:	44 20 ff dc 	be r1,r0,8005188 <oproc+0x58>                  <== NOT EXECUTED
        return;                                                       
      if (tty->termios.c_oflag & OCRNL) {                             
 800521c:	20 41 00 08 	andi r1,r2,0x8                                 <== NOT EXECUTED
 8005220:	44 20 00 05 	be r1,r0,8005234 <oproc+0x104>                 <== NOT EXECUTED
        c = '\n';                                                     
 8005224:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8005228:	33 81 00 0c 	sb (sp+12),r1                                  <== NOT EXECUTED
        if (tty->termios.c_oflag & ONLRET)                            
 800522c:	20 42 00 20 	andi r2,r2,0x20                                <== NOT EXECUTED
 8005230:	44 40 ff d2 	be r2,r0,8005178 <oproc+0x48>                  <== NOT EXECUTED
          tty->column = 0;                                            
        break;                                                        
      }                                                               
      tty->column = 0;                                                
 8005234:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
      break;                                                          
 8005238:	e3 ff ff d0 	bi 8005178 <oproc+0x48>                        <== NOT EXECUTED
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
 800523c:	29 61 00 28 	lw r1,(r11+40)                                 
 8005240:	34 03 00 08 	mvi r3,8                                       
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
 8005244:	20 44 18 00 	andi r4,r2,0x1800                              
      }                                                               
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
 8005248:	20 22 00 07 	andi r2,r1,0x7                                 
 800524c:	c8 62 10 00 	sub r2,r3,r2                                   
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
 8005250:	34 03 18 00 	mvi r3,6144                                    
 8005254:	44 83 00 12 	be r4,r3,800529c <oproc+0x16c>                 <== ALWAYS TAKEN
        tty->column += i;                                             
        rtems_termios_puts ( "        ",  i, tty);                    
        return;                                                       
      }                                                               
      tty->column += i;                                               
 8005258:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 800525c:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
      break;                                                          
 8005260:	e3 ff ff c6 	bi 8005178 <oproc+0x48>                        <== NOT EXECUTED
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
        c = toupper(c);                                               
 8005264:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 8005268:	38 42 82 e0 	ori r2,r2,0x82e0                               <== NOT EXECUTED
 800526c:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
 8005270:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8005274:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 8005278:	40 24 00 01 	lbu r4,(r1+1)                                  <== NOT EXECUTED
 800527c:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 8005280:	20 84 00 03 	andi r4,r4,0x3                                 <== NOT EXECUTED
 8005284:	44 81 00 04 	be r4,r1,8005294 <oproc+0x164>                 <== NOT EXECUTED
 8005288:	20 61 00 ff 	andi r1,r3,0xff                                <== NOT EXECUTED
 800528c:	33 81 00 0c 	sb (sp+12),r1                                  <== NOT EXECUTED
 8005290:	e3 ff ff cb 	bi 80051bc <oproc+0x8c>                        <== NOT EXECUTED
 8005294:	34 63 ff e0 	addi r3,r3,-32                                 <== NOT EXECUTED
 8005298:	e3 ff ff fc 	bi 8005288 <oproc+0x158>                       <== NOT EXECUTED
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
        tty->column += i;                                             
 800529c:	b4 41 08 00 	add r1,r2,r1                                   
 80052a0:	59 61 00 28 	sw (r11+40),r1                                 
        rtems_termios_puts ( "        ",  i, tty);                    
 80052a4:	78 01 08 02 	mvhi r1,0x802                                  
 80052a8:	38 21 61 74 	ori r1,r1,0x6174                               
 80052ac:	b9 60 18 00 	mv r3,r11                                      
 80052b0:	fb ff ff 47 	calli 8004fcc <rtems_termios_puts>             
        return;                                                       
 80052b4:	e3 ff ff b5 	bi 8005188 <oproc+0x58>                        
                                                                      

08003080 <partition_free>: * RETURNS: * N/A */ static void partition_free(rtems_part_desc_t *part_desc) {
 8003080:	37 9c ff f0 	addi sp,sp,-16                                 
 8003084:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003088:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800308c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003090:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003094:	b8 20 68 00 	mv r13,r1                                      
    int part_num;                                                     
                                                                      
    if (part_desc == NULL)                                            
 8003098:	44 20 00 0f 	be r1,r0,80030d4 <partition_free+0x54>         
        return;                                                       
                                                                      
    if (is_extended(part_desc->sys_type))                             
 800309c:	40 21 00 01 	lbu r1,(r1+1)                                  
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 80030a0:	64 22 00 85 	cmpei r2,r1,133                                
 80030a4:	64 21 00 05 	cmpei r1,r1,5                                  
 80030a8:	b8 41 08 00 	or r1,r2,r1                                    
    int part_num;                                                     
                                                                      
    if (part_desc == NULL)                                            
        return;                                                       
                                                                      
    if (is_extended(part_desc->sys_type))                             
 80030ac:	44 20 00 08 	be r1,r0,80030cc <partition_free+0x4c>         <== ALWAYS TAKEN
 80030b0:	b9 a0 60 00 	mv r12,r13                                     <== NOT EXECUTED
 80030b4:	34 0b 00 04 	mvi r11,4                                      <== NOT EXECUTED
    {                                                                 
        for (part_num = 0;                                            
             part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; 
             part_num++)                                              
        {                                                             
            partition_free(part_desc->sub_part[part_num]);            
 80030b8:	29 81 00 18 	lw r1,(r12+24)                                 <== NOT EXECUTED
 80030bc:	35 6b ff ff 	addi r11,r11,-1                                <== NOT EXECUTED
 80030c0:	35 8c 00 04 	addi r12,r12,4                                 <== NOT EXECUTED
 80030c4:	fb ff ff ef 	calli 8003080 <partition_free>                 <== NOT EXECUTED
    if (part_desc == NULL)                                            
        return;                                                       
                                                                      
    if (is_extended(part_desc->sys_type))                             
    {                                                                 
        for (part_num = 0;                                            
 80030c8:	5d 60 ff fc 	bne r11,r0,80030b8 <partition_free+0x38>       <== NOT EXECUTED
        {                                                             
            partition_free(part_desc->sub_part[part_num]);            
        }                                                             
    }                                                                 
                                                                      
    free(part_desc);                                                  
 80030cc:	b9 a0 08 00 	mv r1,r13                                      
 80030d0:	f8 00 04 76 	calli 80042a8 <free>                           
}                                                                     
 80030d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80030d8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80030dc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80030e0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80030e4:	37 9c 00 10 	addi sp,sp,16                                  
 80030e8:	c3 a0 00 00 	ret                                            
                                                                      

080035dc <partition_table_get>: * RTEMS_SUCCESSFUL if success, * RTEMS_INTERNAL_ERROR otherwise */ static rtems_status_code partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc) {
 80035dc:	37 9c ff 88 	addi sp,sp,-120                                
 80035e0:	5b 8b 00 28 	sw (sp+40),r11                                 
 80035e4:	5b 8c 00 24 	sw (sp+36),r12                                 
 80035e8:	5b 8d 00 20 	sw (sp+32),r13                                 
 80035ec:	5b 8e 00 1c 	sw (sp+28),r14                                 
 80035f0:	5b 8f 00 18 	sw (sp+24),r15                                 
 80035f4:	5b 90 00 14 	sw (sp+20),r16                                 
 80035f8:	5b 91 00 10 	sw (sp+16),r17                                 
 80035fc:	5b 92 00 0c 	sw (sp+12),r18                                 
 8003600:	5b 93 00 08 	sw (sp+8),r19                                  
 8003604:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003608:	b8 40 68 00 	mv r13,r2                                      
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
 800360c:	34 02 00 00 	mvi r2,0                                       
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_INTERNAL_ERROR otherwise                                
 */                                                                   
static rtems_status_code                                              
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
{                                                                     
 8003610:	b8 20 78 00 	mv r15,r1                                      
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
 8003614:	f8 00 07 6c 	calli 80053c4 <open>                           
 8003618:	b8 20 60 00 	mv r12,r1                                      
    if (fd < 0)                                                       
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
 800361c:	34 0b 00 19 	mvi r11,25                                     
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
    if (fd < 0)                                                       
 8003620:	48 01 00 07 	bg r0,r1,800363c <partition_table_get+0x60>    <== NEVER TAKEN
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    rc = fstat(fd, &dev_stat);                                        
 8003624:	37 82 00 2c 	addi r2,sp,44                                  
 8003628:	f8 00 03 4e 	calli 8004360 <fstat>                          
 800362c:	b8 20 70 00 	mv r14,r1                                      
    if (rc != RTEMS_SUCCESSFUL)                                       
 8003630:	44 20 00 10 	be r1,r0,8003670 <partition_table_get+0x94>    <== ALWAYS TAKEN
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
                                              RTEMS_IDE_SECTOR_SIZE;  
                                                                      
    rc = read_mbr(fd, disk_desc);                                     
                                                                      
    close(fd);                                                        
 8003634:	b9 80 08 00 	mv r1,r12                                      
 8003638:	f8 00 02 ed 	calli 80041ec <close>                          
                                                                      
    return rc;                                                        
}                                                                     
 800363c:	b9 60 08 00 	mv r1,r11                                      
 8003640:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003644:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8003648:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800364c:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8003650:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8003654:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8003658:	2b 90 00 14 	lw r16,(sp+20)                                 
 800365c:	2b 91 00 10 	lw r17,(sp+16)                                 
 8003660:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8003664:	2b 93 00 08 	lw r19,(sp+8)                                  
 8003668:	37 9c 00 78 	addi sp,sp,120                                 
 800366c:	c3 a0 00 00 	ret                                            
    {                                                                 
        close(fd);                                                    
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
 8003670:	b9 e0 10 00 	mv r2,r15                                      
 8003674:	34 03 00 0f 	mvi r3,15                                      
 8003678:	35 a1 00 08 	addi r1,r13,8                                  
 800367c:	f8 00 49 d2 	calli 8015dc4 <strncpy>                        
    disk_desc->dev = dev_stat.st_rdev;                                
 8003680:	2b 81 00 44 	lw r1,(sp+68)                                  
 8003684:	2b 83 00 48 	lw r3,(sp+72)                                  
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
 8003688:	2b 82 00 68 	lw r2,(sp+104)                                 
        close(fd);                                                    
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
    disk_desc->dev = dev_stat.st_rdev;                                
 800368c:	59 a1 00 00 	sw (r13+0),r1                                  
 8003690:	59 a3 00 04 	sw (r13+4),r3                                  
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
 8003694:	34 01 02 00 	mvi r1,512                                     
 8003698:	44 4e 00 02 	be r2,r14,80036a0 <partition_table_get+0xc4>   <== ALWAYS TAKEN
 800369c:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 80036a0:	59 a1 00 18 	sw (r13+24),r1                                 
    rtems_part_desc_t   *part_desc;                                   
    uint8_t             *data;                                        
    rtems_status_code    rc;                                          
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
 80036a4:	34 02 00 00 	mvi r2,0                                       
 80036a8:	b9 80 08 00 	mv r1,r12                                      
 80036ac:	37 83 00 78 	addi r3,sp,120                                 
 */                                                                   
static rtems_status_code                                              
read_mbr(int fd, rtems_disk_desc_t *disk_desc)                        
{                                                                     
    int                  part_num;                                    
    rtems_sector_data_t *sector = NULL;                               
 80036b0:	5b 80 00 78 	sw (sp+120),r0                                 
    rtems_part_desc_t   *part_desc;                                   
    uint8_t             *data;                                        
    rtems_status_code    rc;                                          
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
 80036b4:	fb ff fe a3 	calli 8003140 <get_sector>                     
 80036b8:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RTEMS_SUCCESSFUL)                                       
 80036bc:	5c 20 00 08 	bne r1,r0,80036dc <partition_table_get+0x100>  <== NEVER TAKEN
            free(sector);                                             
        return rc;                                                    
    }                                                                 
                                                                      
    /* check if the partition table structure is MS-DOS style */      
    if (!msdos_signature_check(sector))                               
 80036c0:	2b 81 00 78 	lw r1,(sp+120)                                 
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
 80036c4:	34 02 00 55 	mvi r2,85                                      
 80036c8:	40 23 02 02 	lbu r3,(r1+514)                                
 80036cc:	44 62 00 08 	be r3,r2,80036ec <partition_table_get+0x110>   <== ALWAYS TAKEN
    }                                                                 
                                                                      
    /* check if the partition table structure is MS-DOS style */      
    if (!msdos_signature_check(sector))                               
    {                                                                 
        free(sector);                                                 
 80036d0:	f8 00 02 f6 	calli 80042a8 <free>                           <== NOT EXECUTED
        return RTEMS_INTERNAL_ERROR;                                  
 80036d4:	34 0b 00 19 	mvi r11,25                                     <== NOT EXECUTED
 80036d8:	e3 ff ff d7 	bi 8003634 <partition_table_get+0x58>          <== NOT EXECUTED
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
    if (rc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        if (sector)                                                   
 80036dc:	2b 81 00 78 	lw r1,(sp+120)                                 <== NOT EXECUTED
 80036e0:	44 20 ff d5 	be r1,r0,8003634 <partition_table_get+0x58>    <== NOT EXECUTED
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            free(sector);                                             
 80036e4:	f8 00 02 f1 	calli 80042a8 <free>                           <== NOT EXECUTED
 80036e8:	e3 ff ff d3 	bi 8003634 <partition_table_get+0x58>          <== NOT EXECUTED
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
 80036ec:	40 23 02 03 	lbu r3,(r1+515)                                
 80036f0:	34 02 00 aa 	mvi r2,170                                     
 80036f4:	5c 62 ff f7 	bne r3,r2,80036d0 <partition_table_get+0xf4>   <== NEVER TAKEN
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
 80036f8:	34 31 01 c2 	addi r17,r1,450                                
 80036fc:	37 92 00 74 	addi r18,sp,116                                
                                                                      
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
 8003700:	ba 20 08 00 	mv r1,r17                                      
 8003704:	ba 40 10 00 	mv r2,r18                                      
 8003708:	fb ff fe c5 	calli 800321c <data_to_part_desc>              
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
 800370c:	b9 a0 78 00 	mv r15,r13                                     
 8003710:	b9 a0 80 00 	mv r16,r13                                     
 8003714:	34 0e 00 01 	mvi r14,1                                      
                                                                      
    for (part_num = 0;                                                
 8003718:	34 13 00 05 	mvi r19,5                                      
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
 800371c:	b8 20 58 00 	mv r11,r1                                      
        if (rc != RTEMS_SUCCESSFUL)                                   
 8003720:	5c 20 00 14 	bne r1,r0,8003770 <partition_table_get+0x194>  <== NEVER TAKEN
        {                                                             
            free(sector);                                             
            return rc;                                                
        }                                                             
                                                                      
        if (part_desc != NULL)                                        
 8003724:	2b 83 00 74 	lw r3,(sp+116)                                 
 8003728:	44 61 00 2e 	be r3,r1,80037e0 <partition_table_get+0x204>   <== NEVER TAKEN
        {                                                             
            part_desc->log_id = part_num + 1;                         
            part_desc->disk_desc = disk_desc;                         
            part_desc->end = part_desc->start + part_desc->size - 1;  
 800372c:	28 62 00 04 	lw r2,(r3+4)                                   
 8003730:	28 61 00 08 	lw r1,(r3+8)                                   
            return rc;                                                
        }                                                             
                                                                      
        if (part_desc != NULL)                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
 8003734:	30 6e 00 02 	sb (r3+2),r14                                  
            part_desc->disk_desc = disk_desc;                         
 8003738:	58 6d 00 10 	sw (r3+16),r13                                 
            part_desc->end = part_desc->start + part_desc->size - 1;  
 800373c:	b4 41 08 00 	add r1,r2,r1                                   
 8003740:	34 21 ff ff 	addi r1,r1,-1                                  
 8003744:	58 61 00 0c 	sw (r3+12),r1                                  
            disk_desc->partitions[part_num] = part_desc;              
 8003748:	5a 03 00 28 	sw (r16+40),r3                                 
        }                                                             
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
 800374c:	35 ce 00 01 	addi r14,r14,1                                 
 8003750:	36 10 00 04 	addi r16,r16,4                                 
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (part_num = 0;                                                
 8003754:	45 d3 00 0a 	be r14,r19,800377c <partition_table_get+0x1a0> 
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
 8003758:	36 31 00 10 	addi r17,r17,16                                
                                                                      
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
 800375c:	ba 20 08 00 	mv r1,r17                                      
 8003760:	ba 40 10 00 	mv r2,r18                                      
 8003764:	fb ff fe ae 	calli 800321c <data_to_part_desc>              
 8003768:	b8 20 58 00 	mv r11,r1                                      
        if (rc != RTEMS_SUCCESSFUL)                                   
 800376c:	44 20 ff ee 	be r1,r0,8003724 <partition_table_get+0x148>   <== ALWAYS TAKEN
        {                                                             
            free(sector);                                             
 8003770:	2b 81 00 78 	lw r1,(sp+120)                                 <== NOT EXECUTED
 8003774:	f8 00 02 cd 	calli 80042a8 <free>                           <== NOT EXECUTED
 8003778:	e3 ff ff af 	bi 8003634 <partition_table_get+0x58>          <== NOT EXECUTED
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
 800377c:	2b 81 00 78 	lw r1,(sp+120)                                 
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
 8003780:	34 0e 00 00 	mvi r14,0                                      
 8003784:	34 10 00 04 	mvi r16,4                                      
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
 8003788:	f8 00 02 c8 	calli 80042a8 <free>                           
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
 800378c:	34 01 00 04 	mvi r1,4                                       
 8003790:	59 a1 00 24 	sw (r13+36),r1                                 
       but we are to process each primary partition */                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
 8003794:	29 e3 00 28 	lw r3,(r15+40)                                 
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
 8003798:	35 ce 00 01 	addi r14,r14,1                                 
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
 800379c:	5b 83 00 74 	sw (sp+116),r3                                 
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
 80037a0:	44 60 00 06 	be r3,r0,80037b8 <partition_table_get+0x1dc>   <== NEVER TAKEN
 80037a4:	40 61 00 01 	lbu r1,(r3+1)                                  
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 80037a8:	64 22 00 85 	cmpei r2,r1,133                                
 80037ac:	64 21 00 05 	cmpei r1,r1,5                                  
 80037b0:	b8 41 08 00 	or r1,r2,r1                                    
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
 80037b4:	5c 20 00 04 	bne r1,r0,80037c4 <partition_table_get+0x1e8>  
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
 80037b8:	35 ef 00 04 	addi r15,r15,4                                 
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
 80037bc:	5d d0 ff f6 	bne r14,r16,8003794 <partition_table_get+0x1b8>
 80037c0:	e3 ff ff 9d 	bi 8003634 <partition_table_get+0x58>          
         part_num++)                                                  
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
        {                                                             
            read_extended_partition(fd, part_desc->start, part_desc); 
 80037c4:	28 62 00 04 	lw r2,(r3+4)                                   
 80037c8:	b9 80 08 00 	mv r1,r12                                      
 80037cc:	fb ff ff 1d 	calli 8003440 <read_extended_partition>        
            free(part_desc);                                          
 80037d0:	2b 81 00 74 	lw r1,(sp+116)                                 
 80037d4:	f8 00 02 b5 	calli 80042a8 <free>                           
            disk_desc->partitions[part_num] = NULL;                   
 80037d8:	59 e0 00 28 	sw (r15+40),r0                                 
 80037dc:	e3 ff ff f7 	bi 80037b8 <partition_table_get+0x1dc>         
            part_desc->end = part_desc->start + part_desc->size - 1;  
            disk_desc->partitions[part_num] = part_desc;              
        }                                                             
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
 80037e0:	5a 00 00 28 	sw (r16+40),r0                                 <== NOT EXECUTED
 80037e4:	e3 ff ff da 	bi 800374c <partition_table_get+0x170>         <== NOT EXECUTED
                                                                      

08002d78 <pathconf>: */ long pathconf( const char *path, int name ) {
 8002d78:	37 9c ff f0 	addi sp,sp,-16                                 
 8002d7c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002d80:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002d84:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002d88:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002d8c:	b8 40 68 00 	mv r13,r2                                      
  int status;                                                         
  int fd;                                                             
                                                                      
  fd = open( path, O_RDONLY );                                        
 8002d90:	34 02 00 00 	mvi r2,0                                       
 8002d94:	fb ff ff 43 	calli 8002aa0 <open>                           
  if ( fd == -1 )                                                     
    return -1;                                                        
 8002d98:	34 0b ff ff 	mvi r11,-1                                     
)                                                                     
{                                                                     
  int status;                                                         
  int fd;                                                             
                                                                      
  fd = open( path, O_RDONLY );                                        
 8002d9c:	b8 20 60 00 	mv r12,r1                                      
  if ( fd == -1 )                                                     
 8002da0:	44 2b 00 06 	be r1,r11,8002db8 <pathconf+0x40>              <== ALWAYS TAKEN
    return -1;                                                        
                                                                      
  status = fpathconf( fd, name );                                     
 8002da4:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8002da8:	f8 00 18 ac 	calli 8009058 <fpathconf>                      <== NOT EXECUTED
 8002dac:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                                                      
  (void) close( fd );                                                 
 8002db0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8002db4:	f8 00 18 7a 	calli 8008f9c <close>                          <== NOT EXECUTED
                                                                      
  return status;                                                      
}                                                                     
 8002db8:	b9 60 08 00 	mv r1,r11                                      
 8002dbc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002dc0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8002dc4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8002dc8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8002dcc:	37 9c 00 10 	addi sp,sp,16                                  
 8002dd0:	c3 a0 00 00 	ret                                            
                                                                      

08009b64 <pipe_create>: static uint16_t rtems_pipe_no = 0; int pipe_create( int filsdes[2] ) {
 8009b64:	37 9c ff d8 	addi sp,sp,-40                                 
 8009b68:	5b 8b 00 18 	sw (sp+24),r11                                 
 8009b6c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8009b70:	5b 8d 00 10 	sw (sp+16),r13                                 
 8009b74:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8009b78:	5b 8f 00 08 	sw (sp+8),r15                                  
 8009b7c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009b80:	b8 20 68 00 	mv r13,r1                                      
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
 8009b84:	78 01 08 01 	mvhi r1,0x801                                  
 8009b88:	34 02 01 ff 	mvi r2,511                                     
 8009b8c:	38 21 fa b8 	ori r1,r1,0xfab8                               
 8009b90:	f8 00 06 3f 	calli 800b48c <rtems_mkdir>                    
 8009b94:	b8 20 70 00 	mv r14,r1                                      
    return -1;                                                        
 8009b98:	34 0c ff ff 	mvi r12,-1                                     
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
 8009b9c:	44 20 00 0a 	be r1,r0,8009bc4 <pipe_create+0x60>            
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
}                                                                     
 8009ba0:	b9 80 08 00 	mv r1,r12                                      
 8009ba4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009ba8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8009bac:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8009bb0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8009bb4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8009bb8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8009bbc:	37 9c 00 28 	addi sp,sp,40                                  
 8009bc0:	c3 a0 00 00 	ret                                            
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009bc4:	78 07 08 01 	mvhi r7,0x801                                  
 8009bc8:	38 e7 fa c8 	ori r7,r7,0xfac8                               
 8009bcc:	28 e6 00 00 	lw r6,(r7+0)                                   
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009bd0:	78 04 08 02 	mvhi r4,0x802                                  
 8009bd4:	38 84 17 a8 	ori r4,r4,0x17a8                               
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009bd8:	78 07 08 01 	mvhi r7,0x801                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009bdc:	2c 83 00 00 	lhu r3,(r4+0)                                  
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009be0:	38 e7 fa cc 	ori r7,r7,0xfacc                               
 8009be4:	5b 86 00 1c 	sw (sp+28),r6                                  
 8009be8:	28 e6 00 00 	lw r6,(r7+0)                                   
 8009bec:	37 8b 00 1c 	addi r11,sp,28                                 
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009bf0:	34 65 00 01 	addi r5,r3,1                                   
 8009bf4:	78 02 08 01 	mvhi r2,0x801                                  
 8009bf8:	38 42 fa c0 	ori r2,r2,0xfac0                               
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009bfc:	59 66 00 04 	sw (r11+4),r6                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009c00:	0c 85 00 00 	sh (r4+0),r5                                   
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009c04:	34 06 66 6f 	mvi r6,26223                                   
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009c08:	37 81 00 26 	addi r1,sp,38                                  
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
 8009c0c:	0d 66 00 08 	sh (r11+8),r6                                  
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
 8009c10:	f8 00 17 db 	calli 800fb7c <sprintf>                        
                                                                      
  /* Try creating FIFO file until find an available file name */      
  while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {                    
 8009c14:	b9 60 08 00 	mv r1,r11                                      
 8009c18:	34 02 01 80 	mvi r2,384                                     
 8009c1c:	f8 00 05 38 	calli 800b0fc <mkfifo>                         
 8009c20:	b8 20 78 00 	mv r15,r1                                      
 8009c24:	5c 2e 00 32 	bne r1,r14,8009cec <pipe_create+0x188>         <== NEVER TAKEN
    return -1;                                                        
    /* sprintf(fifopath + 10, "%04x", rtems_pipe_no ++); */           
  }                                                                   
                                                                      
  /* Non-blocking open to avoid waiting for writers */                
  filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);                 
 8009c28:	34 02 40 00 	mvi r2,16384                                   
 8009c2c:	b9 60 08 00 	mv r1,r11                                      
 8009c30:	fb ff e4 72 	calli 8002df8 <open>                           
 8009c34:	59 a1 00 00 	sw (r13+0),r1                                  
 8009c38:	b8 20 10 00 	mv r2,r1                                       
  if (filsdes[0] < 0) {                                               
 8009c3c:	4c 2f 00 06 	bge r1,r15,8009c54 <pipe_create+0xf0>          
    err = errno;                                                      
 8009c40:	f8 00 14 37 	calli 800ed1c <__errno>                        
 8009c44:	28 2e 00 00 	lw r14,(r1+0)                                  
    /* Delete file at errors, or else if pipe is successfully created 
     the file node will be deleted after it is closed by all. */      
    unlink(fifopath);                                                 
 8009c48:	b9 60 08 00 	mv r1,r11                                      
 8009c4c:	fb ff e9 fe 	calli 8004444 <unlink>                         
 8009c50:	e0 00 00 21 	bi 8009cd4 <pipe_create+0x170>                 
  }                                                                   
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
 8009c54:	78 01 08 02 	mvhi r1,0x802                                  
 8009c58:	38 21 10 10 	ori r1,r1,0x1010                               
 8009c5c:	28 21 00 00 	lw r1,(r1+0)                                   
 8009c60:	34 03 00 00 	mvi r3,0                                       
 8009c64:	50 41 00 0c 	bgeu r2,r1,8009c94 <pipe_create+0x130>         <== NEVER TAKEN
 8009c68:	b4 42 18 00 	add r3,r2,r2                                   
 8009c6c:	b4 62 18 00 	add r3,r3,r2                                   
 8009c70:	78 01 08 02 	mvhi r1,0x802                                  
 8009c74:	b4 63 18 00 	add r3,r3,r3                                   
 8009c78:	b4 63 18 00 	add r3,r3,r3                                   
 8009c7c:	38 21 18 20 	ori r1,r1,0x1820                               
 8009c80:	c8 62 10 00 	sub r2,r3,r2                                   
 8009c84:	28 23 00 00 	lw r3,(r1+0)                                   
 8009c88:	b4 42 10 00 	add r2,r2,r2                                   
 8009c8c:	b4 42 10 00 	add r2,r2,r2                                   
 8009c90:	b4 62 18 00 	add r3,r3,r2                                   
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
 8009c94:	28 64 00 08 	lw r4,(r3+8)                                   
 8009c98:	34 02 ff fe 	mvi r2,-2                                      
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
 8009c9c:	b9 60 08 00 	mv r1,r11                                      
    unlink(fifopath);                                                 
  }                                                                   
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
 8009ca0:	a0 82 10 00 	and r2,r4,r2                                   
 8009ca4:	58 62 00 08 	sw (r3+8),r2                                   
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
 8009ca8:	34 02 00 01 	mvi r2,1                                       
 8009cac:	fb ff e4 53 	calli 8002df8 <open>                           
 8009cb0:	59 a1 00 04 	sw (r13+4),r1                                  
int pipe_create(                                                      
  int filsdes[2]                                                      
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
 8009cb4:	34 0e 00 00 	mvi r14,0                                      
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
                                                                      
    if (filsdes[1] < 0) {                                             
 8009cb8:	4c 20 00 05 	bge r1,r0,8009ccc <pipe_create+0x168>          
    err = errno;                                                      
 8009cbc:	f8 00 14 18 	calli 800ed1c <__errno>                        
 8009cc0:	28 2e 00 00 	lw r14,(r1+0)                                  
    close(filsdes[0]);                                                
 8009cc4:	29 a1 00 00 	lw r1,(r13+0)                                  
 8009cc8:	fb ff e0 57 	calli 8001e24 <close>                          
    }                                                                 
  unlink(fifopath);                                                   
 8009ccc:	b9 60 08 00 	mv r1,r11                                      
 8009cd0:	fb ff e9 dd 	calli 8004444 <unlink>                         
  }                                                                   
  if(err != 0)                                                        
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
 8009cd4:	34 0c 00 00 	mvi r12,0                                      
    err = errno;                                                      
    close(filsdes[0]);                                                
    }                                                                 
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
 8009cd8:	45 c0 ff b2 	be r14,r0,8009ba0 <pipe_create+0x3c>           
    rtems_set_errno_and_return_minus_one(err);                        
 8009cdc:	f8 00 14 10 	calli 800ed1c <__errno>                        
 8009ce0:	58 2e 00 00 	sw (r1+0),r14                                  
 8009ce4:	34 0c ff ff 	mvi r12,-1                                     
 8009ce8:	e3 ff ff ae 	bi 8009ba0 <pipe_create+0x3c>                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
                                                                      
  /* Try creating FIFO file until find an available file name */      
  while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {                    
    if (errno != EEXIST){                                             
 8009cec:	f8 00 14 0c 	calli 800ed1c <__errno>                        <== NOT EXECUTED
 8009cf0:	e3 ff ff ac 	bi 8009ba0 <pipe_create+0x3c>                  <== NOT EXECUTED
                                                                      

0800b3dc <pipe_ioctl>: pipe_control_t *pipe, ioctl_command_t cmd, void *buffer, rtems_libio_t *iop ) {
 800b3dc:	37 9c ff f4 	addi sp,sp,-12                                 
 800b3e0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800b3e4:	5b 8c 00 08 	sw (sp+8),r12                                  
 800b3e8:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b3ec:	b8 60 60 00 	mv r12,r3                                      
  if (cmd == FIONREAD) {                                              
 800b3f0:	78 03 08 02 	mvhi r3,0x802                                  
 800b3f4:	38 63 34 10 	ori r3,r3,0x3410                               
  pipe_control_t  *pipe,                                              
  ioctl_command_t  cmd,                                               
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
 800b3f8:	b8 20 58 00 	mv r11,r1                                      
  if (cmd == FIONREAD) {                                              
 800b3fc:	28 61 00 00 	lw r1,(r3+0)                                   
    *(unsigned int *)buffer = pipe->Length;                           
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
 800b400:	34 04 ff ea 	mvi r4,-22                                     
  ioctl_command_t  cmd,                                               
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
 800b404:	44 41 00 07 	be r2,r1,800b420 <pipe_ioctl+0x44>             
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
}                                                                     
 800b408:	b8 80 08 00 	mv r1,r4                                       
 800b40c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b410:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800b414:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800b418:	37 9c 00 0c 	addi sp,sp,12                                  
 800b41c:	c3 a0 00 00 	ret                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
      return -EFAULT;                                                 
 800b420:	34 04 ff f2 	mvi r4,-14                                     
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
 800b424:	45 80 ff f9 	be r12,r0,800b408 <pipe_ioctl+0x2c>            
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
 800b428:	29 61 00 28 	lw r1,(r11+40)                                 
 800b42c:	34 02 00 00 	mvi r2,0                                       
 800b430:	34 03 00 00 	mvi r3,0                                       
 800b434:	fb ff e8 91 	calli 8005678 <rtems_semaphore_obtain>         
      return -EINTR;                                                  
 800b438:	34 04 ff fc 	mvi r4,-4                                      
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
 800b43c:	5c 20 ff f3 	bne r1,r0,800b408 <pipe_ioctl+0x2c>            <== NEVER TAKEN
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
 800b440:	29 62 00 0c 	lw r2,(r11+12)                                 
    PIPE_UNLOCK(pipe);                                                
 800b444:	29 61 00 28 	lw r1,(r11+40)                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
 800b448:	59 82 00 00 	sw (r12+0),r2                                  
    PIPE_UNLOCK(pipe);                                                
 800b44c:	fb ff e8 e7 	calli 80057e8 <rtems_semaphore_release>        
    return 0;                                                         
 800b450:	34 04 00 00 	mvi r4,0                                       
 800b454:	e3 ff ff ed 	bi 800b408 <pipe_ioctl+0x2c>                   
                                                                      

0800afac <pipe_read>: pipe_control_t *pipe, void *buffer, size_t count, rtems_libio_t *iop ) {
 800afac:	37 9c ff d4 	addi sp,sp,-44                                 
 800afb0:	5b 8b 00 28 	sw (sp+40),r11                                 
 800afb4:	5b 8c 00 24 	sw (sp+36),r12                                 
 800afb8:	5b 8d 00 20 	sw (sp+32),r13                                 
 800afbc:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800afc0:	5b 8f 00 18 	sw (sp+24),r15                                 
 800afc4:	5b 90 00 14 	sw (sp+20),r16                                 
 800afc8:	5b 91 00 10 	sw (sp+16),r17                                 
 800afcc:	5b 92 00 0c 	sw (sp+12),r18                                 
 800afd0:	5b 93 00 08 	sw (sp+8),r19                                  
 800afd4:	5b 9d 00 04 	sw (sp+4),ra                                   
 800afd8:	b8 20 58 00 	mv r11,r1                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800afdc:	28 21 00 28 	lw r1,(r1+40)                                  
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800afe0:	b8 40 88 00 	mv r17,r2                                      
 800afe4:	b8 60 80 00 	mv r16,r3                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800afe8:	34 02 00 00 	mvi r2,0                                       
 800afec:	34 03 00 00 	mvi r3,0                                       
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800aff0:	b8 80 70 00 	mv r14,r4                                      
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800aff4:	fb ff e9 a1 	calli 8005678 <rtems_semaphore_obtain>         
    return -EINTR;                                                    
 800aff8:	34 0d ff fc 	mvi r13,-4                                     
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800affc:	5c 20 00 23 	bne r1,r0,800b088 <pipe_read+0xdc>             <== NEVER TAKEN
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800b000:	34 0d 00 00 	mvi r13,0                                      
 800b004:	34 12 00 00 	mvi r18,0                                      
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800b008:	34 0f ff fc 	mvi r15,-4                                     
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800b00c:	46 0d 00 42 	be r16,r13,800b114 <pipe_read+0x168>           <== NEVER TAKEN
    while (PIPE_EMPTY(pipe)) {                                        
 800b010:	29 65 00 0c 	lw r5,(r11+12)                                 
 800b014:	5c a0 00 42 	bne r5,r0,800b11c <pipe_read+0x170>            
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
 800b018:	29 64 00 14 	lw r4,(r11+20)                                 
 800b01c:	44 85 00 3e 	be r4,r5,800b114 <pipe_read+0x168>             
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
 800b020:	29 cc 00 08 	lw r12,(r14+8)                                 
 800b024:	21 8c 00 01 	andi r12,r12,0x1                               
 800b028:	5d 80 00 50 	bne r12,r0,800b168 <pipe_read+0x1bc>           
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
 800b02c:	29 64 00 18 	lw r4,(r11+24)                                 
      PIPE_UNLOCK(pipe);                                              
 800b030:	29 61 00 28 	lw r1,(r11+40)                                 
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
 800b034:	34 84 00 01 	addi r4,r4,1                                   
 800b038:	59 64 00 18 	sw (r11+24),r4                                 
      PIPE_UNLOCK(pipe);                                              
 800b03c:	fb ff e9 eb 	calli 80057e8 <rtems_semaphore_release>        
      if (! PIPE_READWAIT(pipe))                                      
 800b040:	29 61 00 2c 	lw r1,(r11+44)                                 
 800b044:	34 02 00 00 	mvi r2,0                                       
 800b048:	f8 00 06 f4 	calli 800cc18 <rtems_barrier_wait>             
 800b04c:	fc 2c 60 00 	cmpne r12,r1,r12                               
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b050:	29 61 00 28 	lw r1,(r11+40)                                 
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800b054:	c8 0c 60 00 	sub r12,r0,r12                                 
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b058:	34 02 00 00 	mvi r2,0                                       
 800b05c:	34 03 00 00 	mvi r3,0                                       
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
 800b060:	a1 8f 60 00 	and r12,r12,r15                                
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b064:	fb ff e9 85 	calli 8005678 <rtems_semaphore_obtain>         
 800b068:	5c 20 00 42 	bne r1,r0,800b170 <pipe_read+0x1c4>            <== NEVER TAKEN
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingReaders --;                                        
 800b06c:	29 64 00 18 	lw r4,(r11+24)                                 
 800b070:	34 84 ff ff 	addi r4,r4,-1                                  
 800b074:	59 64 00 18 	sw (r11+24),r4                                 
      if (ret != 0)                                                   
 800b078:	45 81 ff e6 	be r12,r1,800b010 <pipe_read+0x64>             <== ALWAYS TAKEN
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
 800b07c:	29 61 00 28 	lw r1,(r11+40)                                 
 800b080:	fb ff e9 da 	calli 80057e8 <rtems_semaphore_release>        
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
 800b084:	4c 0d 00 0e 	bge r0,r13,800b0bc <pipe_read+0x110>           
    return read;                                                      
  return ret;                                                         
}                                                                     
 800b088:	b9 a0 08 00 	mv r1,r13                                      
 800b08c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b090:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800b094:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800b098:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800b09c:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800b0a0:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800b0a4:	2b 90 00 14 	lw r16,(sp+20)                                 
 800b0a8:	2b 91 00 10 	lw r17,(sp+16)                                 
 800b0ac:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800b0b0:	2b 93 00 08 	lw r19,(sp+8)                                  
 800b0b4:	37 9c 00 2c 	addi sp,sp,44                                  
 800b0b8:	c3 a0 00 00 	ret                                            
  PIPE_UNLOCK(pipe);                                                  
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
    return read;                                                      
  return ret;                                                         
 800b0bc:	b9 80 68 00 	mv r13,r12                                     
 800b0c0:	e3 ff ff f2 	bi 800b088 <pipe_read+0xdc>                    
    if (chunk > chunk1) {                                             
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
      memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);   
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
 800b0c4:	29 64 00 00 	lw r4,(r11+0)                                  
 800b0c8:	b6 32 08 00 	add r1,r17,r18                                 
 800b0cc:	b9 80 18 00 	mv r3,r12                                      
 800b0d0:	b4 82 10 00 	add r2,r4,r2                                   
 800b0d4:	f8 00 16 6e 	calli 8010a8c <memcpy>                         
                                                                      
    pipe->Start += chunk;                                             
 800b0d8:	29 61 00 08 	lw r1,(r11+8)                                  
    pipe->Start %= pipe->Size;                                        
 800b0dc:	29 62 00 04 	lw r2,(r11+4)                                  
 800b0e0:	b5 81 08 00 	add r1,r12,r1                                  
 800b0e4:	f8 00 5a 50 	calli 8021a24 <__umodsi3>                      
    pipe->Length -= chunk;                                            
 800b0e8:	29 62 00 0c 	lw r2,(r11+12)                                 
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
                                                                      
    pipe->Start += chunk;                                             
    pipe->Start %= pipe->Size;                                        
 800b0ec:	59 61 00 08 	sw (r11+8),r1                                  
    pipe->Length -= chunk;                                            
 800b0f0:	c8 4c 08 00 	sub r1,r2,r12                                  
 800b0f4:	59 61 00 0c 	sw (r11+12),r1                                 
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
 800b0f8:	5c 20 00 02 	bne r1,r0,800b100 <pipe_read+0x154>            
      pipe->Start = 0;                                                
 800b0fc:	59 60 00 08 	sw (r11+8),r0                                  
                                                                      
    if (pipe->waitingWriters > 0)                                     
 800b100:	29 61 00 1c 	lw r1,(r11+28)                                 
 800b104:	5c 20 00 1e 	bne r1,r0,800b17c <pipe_read+0x1d0>            
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
 800b108:	b5 ac 68 00 	add r13,r13,r12                                
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
 800b10c:	b9 a0 90 00 	mv r18,r13                                     
 800b110:	56 0d ff c0 	bgu r16,r13,800b010 <pipe_read+0x64>           <== NEVER TAKEN
    while (PIPE_EMPTY(pipe)) {                                        
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
 800b114:	34 0c 00 00 	mvi r12,0                                      
 800b118:	e3 ff ff d9 	bi 800b07c <pipe_read+0xd0>                    
      if (ret != 0)                                                   
        goto out_locked;                                              
    }                                                                 
                                                                      
    /* Read chunk bytes */                                            
    chunk = MIN(count - read,  pipe->Length);                         
 800b11c:	ca 12 08 00 	sub r1,r16,r18                                 
 800b120:	b8 a0 60 00 	mv r12,r5                                      
 800b124:	50 25 00 02 	bgeu r1,r5,800b12c <pipe_read+0x180>           
 800b128:	b8 20 60 00 	mv r12,r1                                      
    chunk1 = pipe->Size - pipe->Start;                                
 800b12c:	29 62 00 08 	lw r2,(r11+8)                                  
 800b130:	29 73 00 04 	lw r19,(r11+4)                                 
 800b134:	ca 62 98 00 	sub r19,r19,r2                                 
    if (chunk > chunk1) {                                             
 800b138:	4e 6c ff e3 	bge r19,r12,800b0c4 <pipe_read+0x118>          
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
 800b13c:	29 64 00 00 	lw r4,(r11+0)                                  
 800b140:	ba 60 18 00 	mv r3,r19                                      
 800b144:	b6 32 08 00 	add r1,r17,r18                                 
 800b148:	b4 82 10 00 	add r2,r4,r2                                   
 800b14c:	f8 00 16 50 	calli 8010a8c <memcpy>                         
      memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);   
 800b150:	29 62 00 00 	lw r2,(r11+0)                                  
 800b154:	b6 53 08 00 	add r1,r18,r19                                 
 800b158:	b6 21 08 00 	add r1,r17,r1                                  
 800b15c:	c9 93 18 00 	sub r3,r12,r19                                 
 800b160:	f8 00 16 4b 	calli 8010a8c <memcpy>                         
 800b164:	e3 ff ff dd 	bi 800b0d8 <pipe_read+0x12c>                   
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
 800b168:	34 0c ff f5 	mvi r12,-11                                    
 800b16c:	e3 ff ff c4 	bi 800b07c <pipe_read+0xd0>                    
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
 800b170:	34 0c ff fc 	mvi r12,-4                                     <== NOT EXECUTED
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
 800b174:	4c 0d ff d2 	bge r0,r13,800b0bc <pipe_read+0x110>           <== NOT EXECUTED
 800b178:	e3 ff ff c4 	bi 800b088 <pipe_read+0xdc>                    <== NOT EXECUTED
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
      pipe->Start = 0;                                                
                                                                      
    if (pipe->waitingWriters > 0)                                     
      PIPE_WAKEUPWRITERS(pipe);                                       
 800b17c:	29 61 00 30 	lw r1,(r11+48)                                 
 800b180:	37 82 00 2c 	addi r2,sp,44                                  
 800b184:	f8 00 06 84 	calli 800cb94 <rtems_barrier_release>          
 800b188:	e3 ff ff e0 	bi 800b108 <pipe_read+0x15c>                   
                                                                      

0800a9e4 <pipe_release>: void pipe_release( pipe_control_t **pipep, rtems_libio_t *iop ) {
 800a9e4:	37 9c ff ec 	addi sp,sp,-20                                 
 800a9e8:	5b 8b 00 10 	sw (sp+16),r11                                 
 800a9ec:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800a9f0:	5b 8d 00 08 	sw (sp+8),r13                                  
 800a9f4:	5b 9d 00 04 	sw (sp+4),ra                                   
    /* WARN pipe not released! */                                     
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
 800a9f8:	28 4c 00 08 	lw r12,(r2+8)                                  
                                                                      
void pipe_release(                                                    
  pipe_control_t **pipep,                                             
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
 800a9fc:	b8 20 68 00 	mv r13,r1                                      
  pipe_control_t *pipe = *pipep;                                      
 800aa00:	28 2b 00 00 	lw r11,(r1+0)                                  
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
  if (mode & LIBIO_FLAGS_READ)                                        
 800aa04:	21 81 00 02 	andi r1,r12,0x2                                
    /* WARN pipe not released! */                                     
    if (!PIPE_LOCK(pipe))                                             
      rtems_fatal_error_occurred(0xdeadbeef);                         
  #endif                                                              
                                                                      
  mode = LIBIO_ACCMODE(iop);                                          
 800aa08:	21 8c 00 06 	andi r12,r12,0x6                               
  if (mode & LIBIO_FLAGS_READ)                                        
 800aa0c:	44 20 00 04 	be r1,r0,800aa1c <pipe_release+0x38>           
     pipe->Readers --;                                                
 800aa10:	29 61 00 10 	lw r1,(r11+16)                                 
 800aa14:	34 21 ff ff 	addi r1,r1,-1                                  
 800aa18:	59 61 00 10 	sw (r11+16),r1                                 
  if (mode & LIBIO_FLAGS_WRITE)                                       
 800aa1c:	21 81 00 04 	andi r1,r12,0x4                                
 800aa20:	44 20 00 04 	be r1,r0,800aa30 <pipe_release+0x4c>           
     pipe->Writers --;                                                
 800aa24:	29 61 00 14 	lw r1,(r11+20)                                 
 800aa28:	34 21 ff ff 	addi r1,r1,-1                                  
 800aa2c:	59 61 00 14 	sw (r11+20),r1                                 
                                                                      
  PIPE_UNLOCK(pipe);                                                  
 800aa30:	29 61 00 28 	lw r1,(r11+40)                                 
 800aa34:	fb ff eb 6d 	calli 80057e8 <rtems_semaphore_release>        
                                                                      
  if (pipe->Readers == 0 && pipe->Writers == 0) {                     
 800aa38:	29 62 00 10 	lw r2,(r11+16)                                 
 800aa3c:	5c 40 00 0c 	bne r2,r0,800aa6c <pipe_release+0x88>          
 800aa40:	29 61 00 14 	lw r1,(r11+20)                                 
 800aa44:	44 22 00 23 	be r1,r2,800aad0 <pipe_release+0xec>           
      delfile = TRUE;                                                 
#endif                                                                
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
 800aa48:	7d 8c 00 04 	cmpnei r12,r12,4                               
 800aa4c:	5d 80 00 17 	bne r12,r0,800aaa8 <pipe_release+0xc4>         <== ALWAYS TAKEN
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800aa50:	fb ff ff dc 	calli 800a9c0 <pipe_unlock>                    <== NOT EXECUTED
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aa54:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800aa58:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800aa5c:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 800aa60:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 800aa64:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 800aa68:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
 800aa6c:	29 61 00 14 	lw r1,(r11+20)                                 
 800aa70:	7d 8c 00 02 	cmpnei r12,r12,2                               
 800aa74:	64 21 00 00 	cmpei r1,r1,0                                  
 800aa78:	a0 2c 60 00 	and r12,r1,r12                                 
 800aa7c:	45 80 ff f5 	be r12,r0,800aa50 <pipe_release+0x6c>          <== NEVER TAKEN
    PIPE_WAKEUPREADERS(pipe);                                         
 800aa80:	29 61 00 2c 	lw r1,(r11+44)                                 
 800aa84:	37 82 00 14 	addi r2,sp,20                                  
 800aa88:	f8 00 08 43 	calli 800cb94 <rtems_barrier_release>          
                                                                      
  pipe_unlock();                                                      
 800aa8c:	fb ff ff cd 	calli 800a9c0 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aa90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aa94:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800aa98:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800aa9c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800aaa0:	37 9c 00 14 	addi sp,sp,20                                  
 800aaa4:	c3 a0 00 00 	ret                                            
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
  }                                                                   
  else if (pipe->Readers == 0 && mode != LIBIO_FLAGS_WRITE)           
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
 800aaa8:	29 61 00 30 	lw r1,(r11+48)                                 
 800aaac:	37 82 00 14 	addi r2,sp,20                                  
 800aab0:	f8 00 08 39 	calli 800cb94 <rtems_barrier_release>          
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800aab4:	fb ff ff c3 	calli 800a9c0 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800aab8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800aabc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800aac0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800aac4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800aac8:	37 9c 00 14 	addi sp,sp,20                                  
 800aacc:	c3 a0 00 00 	ret                                            
/* Called with pipe_semaphore held. */                                
static inline void pipe_free(                                         
  pipe_control_t *pipe                                                
)                                                                     
{                                                                     
  rtems_barrier_delete(pipe->readBarrier);                            
 800aad0:	29 61 00 2c 	lw r1,(r11+44)                                 
 800aad4:	f8 00 07 fc 	calli 800cac4 <rtems_barrier_delete>           
  rtems_barrier_delete(pipe->writeBarrier);                           
 800aad8:	29 61 00 30 	lw r1,(r11+48)                                 
 800aadc:	f8 00 07 fa 	calli 800cac4 <rtems_barrier_delete>           
  rtems_semaphore_delete(pipe->Semaphore);                            
 800aae0:	29 61 00 28 	lw r1,(r11+40)                                 
 800aae4:	f8 00 09 2e 	calli 800cf9c <rtems_semaphore_delete>         
  free(pipe->Buffer);                                                 
 800aae8:	29 61 00 00 	lw r1,(r11+0)                                  
 800aaec:	fb ff df 97 	calli 8002948 <free>                           
  free(pipe);                                                         
 800aaf0:	b9 60 08 00 	mv r1,r11                                      
 800aaf4:	fb ff df 95 	calli 8002948 <free>                           
    /* To delete an anonymous pipe file when all users closed it */   
    if (pipe->Anonymous)                                              
      delfile = TRUE;                                                 
#endif                                                                
    pipe_free(pipe);                                                  
    *pipep = NULL;                                                    
 800aaf8:	59 a0 00 00 	sw (r13+0),r0                                  
    /* Notify waiting Writers that all their partners left */         
    PIPE_WAKEUPWRITERS(pipe);                                         
  else if (pipe->Writers == 0 && mode != LIBIO_FLAGS_READ)            
    PIPE_WAKEUPREADERS(pipe);                                         
                                                                      
  pipe_unlock();                                                      
 800aafc:	fb ff ff b1 	calli 800a9c0 <pipe_unlock>                    
  iop->flags &= ~LIBIO_FLAGS_OPEN;                                    
  if(iop->pathinfo.ops->unlink_h(&iop->pathinfo))                     
    return;                                                           
#endif                                                                
                                                                      
}                                                                     
 800ab00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ab04:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800ab08:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800ab0c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800ab10:	37 9c 00 14 	addi sp,sp,20                                  
 800ab14:	c3 a0 00 00 	ret                                            
                                                                      

0800b18c <pipe_write>: pipe_control_t *pipe, const void *buffer, size_t count, rtems_libio_t *iop ) {
 800b18c:	37 9c ff d4 	addi sp,sp,-44                                 
 800b190:	5b 8b 00 24 	sw (sp+36),r11                                 
 800b194:	5b 8c 00 20 	sw (sp+32),r12                                 
 800b198:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800b19c:	5b 8e 00 18 	sw (sp+24),r14                                 
 800b1a0:	5b 8f 00 14 	sw (sp+20),r15                                 
 800b1a4:	5b 90 00 10 	sw (sp+16),r16                                 
 800b1a8:	5b 91 00 0c 	sw (sp+12),r17                                 
 800b1ac:	5b 92 00 08 	sw (sp+8),r18                                  
 800b1b0:	5b 9d 00 04 	sw (sp+4),ra                                   
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
 800b1b4:	34 0b 00 00 	mvi r11,0                                      
  pipe_control_t *pipe,                                               
  const void     *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
 800b1b8:	b8 60 68 00 	mv r13,r3                                      
 800b1bc:	b8 20 60 00 	mv r12,r1                                      
 800b1c0:	b8 40 70 00 	mv r14,r2                                      
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
 800b1c4:	5c 60 00 0d 	bne r3,r0,800b1f8 <pipe_write+0x6c>            <== ALWAYS TAKEN
#endif                                                                
                                                                      
  if (written > 0)                                                    
    return written;                                                   
  return ret;                                                         
}                                                                     
 800b1c8:	b9 60 08 00 	mv r1,r11                                      
 800b1cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b1d0:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800b1d4:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800b1d8:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800b1dc:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800b1e0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800b1e4:	2b 90 00 10 	lw r16,(sp+16)                                 
 800b1e8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800b1ec:	2b 92 00 08 	lw r18,(sp+8)                                  
 800b1f0:	37 9c 00 2c 	addi sp,sp,44                                  
 800b1f4:	c3 a0 00 00 	ret                                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800b1f8:	28 21 00 28 	lw r1,(r1+40)                                  
 800b1fc:	34 02 00 00 	mvi r2,0                                       
 800b200:	34 03 00 00 	mvi r3,0                                       
 800b204:	5b 84 00 28 	sw (sp+40),r4                                  
 800b208:	fb ff e9 1c 	calli 8005678 <rtems_semaphore_obtain>         
    return -EINTR;                                                    
 800b20c:	34 0b ff fc 	mvi r11,-4                                     
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
 800b210:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b214:	5c 20 ff ed 	bne r1,r0,800b1c8 <pipe_write+0x3c>            <== NEVER TAKEN
    return -EINTR;                                                    
                                                                      
  if (pipe->Readers == 0) {                                           
 800b218:	29 82 00 10 	lw r2,(r12+16)                                 
 800b21c:	44 41 00 5a 	be r2,r1,800b384 <pipe_write+0x1f8>            
    ret = -EPIPE;                                                     
    goto out_locked;                                                  
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
 800b220:	29 8f 00 04 	lw r15,(r12+4)                                 
 800b224:	34 10 00 01 	mvi r16,1                                      
 800b228:	55 af 00 02 	bgu r13,r15,800b230 <pipe_write+0xa4>          <== NEVER TAKEN
 800b22c:	b9 a0 80 00 	mv r16,r13                                     
 800b230:	34 12 00 00 	mvi r18,0                                      
 800b234:	34 0b 00 00 	mvi r11,0                                      
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b238:	34 11 ff fc 	mvi r17,-4                                     
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
 800b23c:	29 81 00 0c 	lw r1,(r12+12)                                 
 800b240:	c9 e1 18 00 	sub r3,r15,r1                                  
 800b244:	56 03 00 23 	bgu r16,r3,800b2d0 <pipe_write+0x144>          
        ret = -EPIPE;                                                 
        goto out_locked;                                              
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
 800b248:	c9 b2 10 00 	sub r2,r13,r18                                 
 800b24c:	b8 60 80 00 	mv r16,r3                                      
 800b250:	50 43 00 02 	bgeu r2,r3,800b258 <pipe_write+0xcc>           
 800b254:	b8 40 80 00 	mv r16,r2                                      
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
 800b258:	29 83 00 08 	lw r3,(r12+8)                                  
 800b25c:	b9 e0 10 00 	mv r2,r15                                      
 800b260:	5b 84 00 28 	sw (sp+40),r4                                  
 800b264:	b4 23 08 00 	add r1,r1,r3                                   
 800b268:	f8 00 59 ef 	calli 8021a24 <__umodsi3>                      
 800b26c:	c9 e1 78 00 	sub r15,r15,r1                                 
    if (chunk > chunk1) {                                             
 800b270:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b274:	4d f0 00 4c 	bge r15,r16,800b3a4 <pipe_write+0x218>         
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
 800b278:	29 85 00 00 	lw r5,(r12+0)                                  
 800b27c:	b5 d2 10 00 	add r2,r14,r18                                 
 800b280:	b9 e0 18 00 	mv r3,r15                                      
 800b284:	b4 a1 08 00 	add r1,r5,r1                                   
 800b288:	f8 00 16 01 	calli 8010a8c <memcpy>                         
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
 800b28c:	29 81 00 00 	lw r1,(r12+0)                                  
 800b290:	b5 f2 10 00 	add r2,r15,r18                                 
 800b294:	b5 c2 10 00 	add r2,r14,r2                                  
 800b298:	ca 0f 18 00 	sub r3,r16,r15                                 
 800b29c:	f8 00 15 fc 	calli 8010a8c <memcpy>                         
 800b2a0:	2b 84 00 28 	lw r4,(sp+40)                                  
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
 800b2a4:	29 81 00 0c 	lw r1,(r12+12)                                 
    if (pipe->waitingReaders > 0)                                     
 800b2a8:	29 82 00 18 	lw r2,(r12+24)                                 
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
 800b2ac:	b4 30 08 00 	add r1,r1,r16                                  
 800b2b0:	59 81 00 0c 	sw (r12+12),r1                                 
    if (pipe->waitingReaders > 0)                                     
 800b2b4:	5c 40 00 44 	bne r2,r0,800b3c4 <pipe_write+0x238>           
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
 800b2b8:	b5 70 58 00 	add r11,r11,r16                                
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
 800b2bc:	b9 60 90 00 	mv r18,r11                                     
 800b2c0:	51 6d 00 21 	bgeu r11,r13,800b344 <pipe_write+0x1b8>        <== ALWAYS TAKEN
 800b2c4:	29 8f 00 04 	lw r15,(r12+4)                                 <== NOT EXECUTED
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
 800b2c8:	34 10 00 01 	mvi r16,1                                      <== NOT EXECUTED
 800b2cc:	e3 ff ff dc 	bi 800b23c <pipe_write+0xb0>                   <== NOT EXECUTED
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
      if (LIBIO_NODELAY(iop)) {                                       
 800b2d0:	28 8f 00 08 	lw r15,(r4+8)                                  
 800b2d4:	21 ef 00 01 	andi r15,r15,0x1                               
 800b2d8:	5d e0 00 31 	bne r15,r0,800b39c <pipe_write+0x210>          
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
 800b2dc:	29 83 00 1c 	lw r3,(r12+28)                                 
      PIPE_UNLOCK(pipe);                                              
 800b2e0:	29 81 00 28 	lw r1,(r12+40)                                 
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
 800b2e4:	34 63 00 01 	addi r3,r3,1                                   
 800b2e8:	59 83 00 1c 	sw (r12+28),r3                                 
      PIPE_UNLOCK(pipe);                                              
 800b2ec:	5b 84 00 28 	sw (sp+40),r4                                  
 800b2f0:	fb ff e9 3e 	calli 80057e8 <rtems_semaphore_release>        
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b2f4:	29 81 00 30 	lw r1,(r12+48)                                 
 800b2f8:	34 02 00 00 	mvi r2,0                                       
 800b2fc:	f8 00 06 47 	calli 800cc18 <rtems_barrier_wait>             
 800b300:	fc 2f 78 00 	cmpne r15,r1,r15                               
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b304:	29 81 00 28 	lw r1,(r12+40)                                 
 800b308:	34 02 00 00 	mvi r2,0                                       
 800b30c:	34 03 00 00 	mvi r3,0                                       
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b310:	c8 0f 78 00 	sub r15,r0,r15                                 
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b314:	fb ff e8 d9 	calli 8005678 <rtems_semaphore_obtain>         
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
 800b318:	a1 f1 78 00 	and r15,r15,r17                                
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
 800b31c:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b320:	5c 20 00 1c 	bne r1,r0,800b390 <pipe_write+0x204>           <== NEVER TAKEN
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingWriters --;                                        
 800b324:	29 83 00 1c 	lw r3,(r12+28)                                 
 800b328:	34 63 ff ff 	addi r3,r3,-1                                  
 800b32c:	59 83 00 1c 	sw (r12+28),r3                                 
      if (ret != 0)                                                   
 800b330:	5d e1 00 06 	bne r15,r1,800b348 <pipe_write+0x1bc>          <== NEVER TAKEN
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
 800b334:	29 81 00 10 	lw r1,(r12+16)                                 
 800b338:	44 2f 00 11 	be r1,r15,800b37c <pipe_write+0x1f0>           <== NEVER TAKEN
 800b33c:	29 8f 00 04 	lw r15,(r12+4)                                 
 800b340:	e3 ff ff bf 	bi 800b23c <pipe_write+0xb0>                   
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
 800b344:	34 0f 00 00 	mvi r15,0                                      
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
 800b348:	29 81 00 28 	lw r1,(r12+40)                                 
 800b34c:	fb ff e9 27 	calli 80057e8 <rtems_semaphore_release>        
                                                                      
out_nolock:                                                           
#ifdef RTEMS_POSIX_API                                                
  /* Signal SIGPIPE */                                                
  if (ret == -EPIPE)                                                  
 800b350:	34 01 ff e0 	mvi r1,-32                                     
 800b354:	45 e1 00 05 	be r15,r1,800b368 <pipe_write+0x1dc>           
    kill(getpid(), SIGPIPE);                                          
#endif                                                                
                                                                      
  if (written > 0)                                                    
 800b358:	4c 0b 00 02 	bge r0,r11,800b360 <pipe_write+0x1d4>          
 800b35c:	e3 ff ff 9b 	bi 800b1c8 <pipe_write+0x3c>                   
 800b360:	b9 e0 58 00 	mv r11,r15                                     
 800b364:	e3 ff ff 99 	bi 800b1c8 <pipe_write+0x3c>                   
                                                                      
out_nolock:                                                           
#ifdef RTEMS_POSIX_API                                                
  /* Signal SIGPIPE */                                                
  if (ret == -EPIPE)                                                  
    kill(getpid(), SIGPIPE);                                          
 800b368:	f8 00 01 4c 	calli 800b898 <getpid>                         
 800b36c:	34 02 00 0d 	mvi r2,13                                      
 800b370:	f8 00 03 2b 	calli 800c01c <kill>                           
#endif                                                                
                                                                      
  if (written > 0)                                                    
 800b374:	4c 0b ff fb 	bge r0,r11,800b360 <pipe_write+0x1d4>          <== ALWAYS TAKEN
 800b378:	e3 ff ff 94 	bi 800b1c8 <pipe_write+0x3c>                   <== NOT EXECUTED
      pipe->waitingWriters --;                                        
      if (ret != 0)                                                   
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
        ret = -EPIPE;                                                 
 800b37c:	34 0f ff e0 	mvi r15,-32                                    <== NOT EXECUTED
 800b380:	e3 ff ff f2 	bi 800b348 <pipe_write+0x1bc>                  <== NOT EXECUTED
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  if (pipe->Readers == 0) {                                           
    ret = -EPIPE;                                                     
 800b384:	34 0f ff e0 	mvi r15,-32                                    
  const void     *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  int chunk, chunk1, written = 0, ret = 0;                            
 800b388:	34 0b 00 00 	mvi r11,0                                      
 800b38c:	e3 ff ff ef 	bi 800b348 <pipe_write+0x1bc>                  
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
 800b390:	34 0f ff fc 	mvi r15,-4                                     <== NOT EXECUTED
  /* Signal SIGPIPE */                                                
  if (ret == -EPIPE)                                                  
    kill(getpid(), SIGPIPE);                                          
#endif                                                                
                                                                      
  if (written > 0)                                                    
 800b394:	4c 0b ff f3 	bge r0,r11,800b360 <pipe_write+0x1d4>          <== NOT EXECUTED
 800b398:	e3 ff ff 8c 	bi 800b1c8 <pipe_write+0x3c>                   <== NOT EXECUTED
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
 800b39c:	34 0f ff f5 	mvi r15,-11                                    
 800b3a0:	e3 ff ff ea 	bi 800b348 <pipe_write+0x1bc>                  
    if (chunk > chunk1) {                                             
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
 800b3a4:	29 85 00 00 	lw r5,(r12+0)                                  
 800b3a8:	b5 d2 10 00 	add r2,r14,r18                                 
 800b3ac:	ba 00 18 00 	mv r3,r16                                      
 800b3b0:	b4 a1 08 00 	add r1,r5,r1                                   
 800b3b4:	5b 84 00 28 	sw (sp+40),r4                                  
 800b3b8:	f8 00 15 b5 	calli 8010a8c <memcpy>                         
 800b3bc:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b3c0:	e3 ff ff b9 	bi 800b2a4 <pipe_write+0x118>                  
                                                                      
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
 800b3c4:	29 81 00 2c 	lw r1,(r12+44)                                 
 800b3c8:	37 82 00 2c 	addi r2,sp,44                                  
 800b3cc:	5b 84 00 28 	sw (sp+40),r4                                  
 800b3d0:	f8 00 05 f1 	calli 800cb94 <rtems_barrier_release>          
 800b3d4:	2b 84 00 28 	lw r4,(sp+40)                                  
 800b3d8:	e3 ff ff b8 	bi 800b2b8 <pipe_write+0x12c>                  
                                                                      

08008b64 <pthread_attr_setschedpolicy>: pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8008b64:	34 03 00 16 	mvi r3,22                                      
int pthread_attr_setschedpolicy(                                      
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8008b68:	44 20 00 09 	be r1,r0,8008b8c <pthread_attr_setschedpolicy+0x28>
 8008b6c:	28 24 00 00 	lw r4,(r1+0)                                   
 8008b70:	44 80 00 07 	be r4,r0,8008b8c <pthread_attr_setschedpolicy+0x28>
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
 8008b74:	48 02 00 05 	bg r0,r2,8008b88 <pthread_attr_setschedpolicy+0x24>
 8008b78:	34 03 00 02 	mvi r3,2                                       
 8008b7c:	4c 62 00 06 	bge r3,r2,8008b94 <pthread_attr_setschedpolicy+0x30>
 8008b80:	34 03 00 04 	mvi r3,4                                       
 8008b84:	44 43 00 04 	be r2,r3,8008b94 <pthread_attr_setschedpolicy+0x30><== ALWAYS TAKEN
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
 8008b88:	34 03 00 86 	mvi r3,134                                     
  }                                                                   
}                                                                     
 8008b8c:	b8 60 08 00 	mv r1,r3                                       
 8008b90:	c3 a0 00 00 	ret                                            
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
 8008b94:	34 03 00 00 	mvi r3,0                                       
  switch ( policy ) {                                                 
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
 8008b98:	58 22 00 14 	sw (r1+20),r2                                  
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
  }                                                                   
}                                                                     
 8008b9c:	b8 60 08 00 	mv r1,r3                                       
 8008ba0:	c3 a0 00 00 	ret                                            
                                                                      

080040fc <pthread_barrier_init>: int pthread_barrier_init( pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count ) {
 80040fc:	37 9c ff d8 	addi sp,sp,-40                                 
 8004100:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004104:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004108:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800410c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004110:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
    return EINVAL;                                                    
 8004114:	34 04 00 16 	mvi r4,22                                      
int pthread_barrier_init(                                             
  pthread_barrier_t           *barrier,                               
  const pthread_barrierattr_t *attr,                                  
  unsigned int                 count                                  
)                                                                     
{                                                                     
 8004118:	b8 20 58 00 	mv r11,r1                                      
  const pthread_barrierattr_t   *the_attr;                            
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !barrier )                                                     
 800411c:	44 20 00 08 	be r1,r0,800413c <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  if ( count == 0 )                                                   
 8004120:	44 60 00 07 	be r3,r0,800413c <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 8004124:	44 40 00 34 	be r2,r0,80041f4 <pthread_barrier_init+0xf8>   
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004128:	28 41 00 00 	lw r1,(r2+0)                                   
    return EINVAL;                                                    
 800412c:	34 04 00 16 	mvi r4,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004130:	44 20 00 03 	be r1,r0,800413c <pthread_barrier_init+0x40>   
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 8004134:	28 4e 00 04 	lw r14,(r2+4)                                  
 8004138:	45 c0 00 09 	be r14,r0,800415c <pthread_barrier_init+0x60>  <== ALWAYS TAKEN
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 800413c:	b8 80 08 00 	mv r1,r4                                       
 8004140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004144:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004148:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800414c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004150:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004154:	37 9c 00 28 	addi sp,sp,40                                  
 8004158:	c3 a0 00 00 	ret                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800415c:	78 01 08 01 	mvhi r1,0x801                                  
 8004160:	38 21 79 08 	ori r1,r1,0x7908                               
 8004164:	28 22 00 00 	lw r2,(r1+0)                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Convert from POSIX attributes to Core Barrier attributes         
   */                                                                 
  the_attributes.discipline    = CORE_BARRIER_AUTOMATIC_RELEASE;      
 8004168:	5b 80 00 24 	sw (sp+36),r0                                  
  the_attributes.maximum_count = count;                               
 800416c:	5b 83 00 28 	sw (sp+40),r3                                  
                                                                      
    ++level;                                                          
 8004170:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8004174:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free barrier control blocks.                
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void )
{                                                                     
  return (POSIX_Barrier_Control *)                                    
    _Objects_Allocate( &_POSIX_Barrier_Information );                 
 8004178:	78 0d 08 01 	mvhi r13,0x801                                 
 800417c:	39 ad 7c 04 	ori r13,r13,0x7c04                             
 8004180:	b9 a0 08 00 	mv r1,r13                                      
 8004184:	f8 00 08 81 	calli 8006388 <_Objects_Allocate>              
 8004188:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
 800418c:	44 2e 00 17 	be r1,r14,80041e8 <pthread_barrier_init+0xec>  
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes ); 
 8004190:	37 82 00 24 	addi r2,sp,36                                  
 8004194:	34 21 00 10 	addi r1,r1,16                                  
 8004198:	f8 00 05 64 	calli 8005728 <_CORE_barrier_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 800419c:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80041a0:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80041a4:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80041a8:	b4 21 08 00 	add r1,r1,r1                                   
 80041ac:	b4 21 08 00 	add r1,r1,r1                                   
 80041b0:	b4 61 08 00 	add r1,r3,r1                                   
 80041b4:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 80041b8:	59 80 00 0c 	sw (r12+12),r0                                 
  );                                                                  
                                                                      
  /*                                                                  
   * Exit the critical section and return the user an operational barrier
   */                                                                 
  *barrier = the_barrier->Object.id;                                  
 80041bc:	59 62 00 00 	sw (r11+0),r2                                  
  _Thread_Enable_dispatch();                                          
 80041c0:	f8 00 0d a5 	calli 8007854 <_Thread_Enable_dispatch>        
  return 0;                                                           
 80041c4:	34 04 00 00 	mvi r4,0                                       
}                                                                     
 80041c8:	b8 80 08 00 	mv r1,r4                                       
 80041cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041d0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80041d4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80041d8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80041dc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80041e0:	37 9c 00 28 	addi sp,sp,40                                  
 80041e4:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_barrier = _POSIX_Barrier_Allocate();                            
                                                                      
  if ( !the_barrier ) {                                               
    _Thread_Enable_dispatch();                                        
 80041e8:	f8 00 0d 9b 	calli 8007854 <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 80041ec:	34 04 00 0b 	mvi r4,11                                      
 80041f0:	e3 ff ff d3 	bi 800413c <pthread_barrier_init+0x40>         
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_barrierattr_init( &my_attr );                      
 80041f4:	37 8c 00 1c 	addi r12,sp,28                                 
 80041f8:	b9 80 08 00 	mv r1,r12                                      
 80041fc:	5b 83 00 18 	sw (sp+24),r3                                  
 8004200:	fb ff ff 7c 	calli 8003ff0 <pthread_barrierattr_init>       
    the_attr = &my_attr;                                              
 8004204:	b9 80 10 00 	mv r2,r12                                      
 8004208:	2b 83 00 18 	lw r3,(sp+24)                                  
 800420c:	e3 ff ff c7 	bi 8004128 <pthread_barrier_init+0x2c>         
                                                                      

08003ff0 <pthread_barrierattr_init>: int pthread_barrierattr_init( pthread_barrierattr_t *attr ) { if ( !attr ) return EINVAL;
 8003ff0:	34 02 00 16 	mvi r2,22                                      
                                                                      
int pthread_barrierattr_init(                                         
  pthread_barrierattr_t *attr                                         
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8003ff4:	44 20 00 05 	be r1,r0,8004008 <pthread_barrierattr_init+0x18><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  attr->is_initialized = true;                                        
 8003ff8:	34 02 00 01 	mvi r2,1                                       
 8003ffc:	58 22 00 00 	sw (r1+0),r2                                   
  attr->process_shared = PTHREAD_PROCESS_PRIVATE;                     
 8004000:	58 20 00 04 	sw (r1+4),r0                                   
  return 0;                                                           
 8004004:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 8004008:	b8 40 08 00 	mv r1,r2                                       
 800400c:	c3 a0 00 00 	ret                                            
                                                                      

0800391c <pthread_cleanup_push>: void pthread_cleanup_push( void (*routine)( void * ), void *arg ) {
 800391c:	37 9c ff f4 	addi sp,sp,-12                                 
 8003920:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003924:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003928:	5b 9d 00 04 	sw (sp+4),ra                                   
 800392c:	b8 20 58 00 	mv r11,r1                                      
 8003930:	b8 40 60 00 	mv r12,r2                                      
  /*                                                                  
   *  The POSIX standard does not address what to do when the routine 
   *  is NULL.  It also does not address what happens when we cannot  
   *  allocate memory or anything else bad happens.                   
   */                                                                 
  if ( !routine )                                                     
 8003934:	44 20 00 14 	be r1,r0,8003984 <pthread_cleanup_push+0x68>   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8003938:	78 03 08 01 	mvhi r3,0x801                                  
 800393c:	38 63 78 e0 	ori r3,r3,0x78e0                               
 8003940:	28 61 00 00 	lw r1,(r3+0)                                   
                                                                      
    ++level;                                                          
 8003944:	34 21 00 01 	addi r1,r1,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8003948:	58 61 00 00 	sw (r3+0),r1                                   
    return;                                                           
                                                                      
  _Thread_Disable_dispatch();                                         
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
 800394c:	34 01 00 10 	mvi r1,16                                      
 8003950:	f8 00 12 e0 	calli 80084d0 <_Workspace_Allocate>            
 8003954:	b8 20 18 00 	mv r3,r1                                       
                                                                      
  if ( handler ) {                                                    
 8003958:	44 20 00 0a 	be r1,r0,8003980 <pthread_cleanup_push+0x64>   <== NEVER TAKEN
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 800395c:	78 04 08 01 	mvhi r4,0x801                                  
 8003960:	38 84 7d 80 	ori r4,r4,0x7d80                               
 8003964:	28 81 00 10 	lw r1,(r4+16)                                  
    handler_stack = &thread_support->Cancellation_Handlers;           
                                                                      
    handler->routine = routine;                                       
    handler->arg = arg;                                               
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8003968:	b8 60 10 00 	mv r2,r3                                       
  handler = _Workspace_Allocate( sizeof( POSIX_Cancel_Handler_control ) );
                                                                      
  if ( handler ) {                                                    
    thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
                                                                      
    handler_stack = &thread_support->Cancellation_Handlers;           
 800396c:	28 21 01 1c 	lw r1,(r1+284)                                 
                                                                      
    handler->routine = routine;                                       
 8003970:	58 6b 00 08 	sw (r3+8),r11                                  
    handler->arg = arg;                                               
 8003974:	58 6c 00 0c 	sw (r3+12),r12                                 
                                                                      
    _Chain_Append( handler_stack, &handler->Node );                   
 8003978:	34 21 00 e4 	addi r1,r1,228                                 
 800397c:	f8 00 05 60 	calli 8004efc <_Chain_Append>                  
  }                                                                   
  _Thread_Enable_dispatch();                                          
 8003980:	f8 00 0d ba 	calli 8007068 <_Thread_Enable_dispatch>        
}                                                                     
 8003984:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003988:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800398c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003990:	37 9c 00 0c 	addi sp,sp,12                                  
 8003994:	c3 a0 00 00 	ret                                            
                                                                      

08004a98 <pthread_cond_init>: */ int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) {
 8004a98:	37 9c ff ec 	addi sp,sp,-20                                 
 8004a9c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004aa0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004aa4:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004aa8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004aac:	b8 20 68 00 	mv r13,r1                                      
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
 8004ab0:	44 40 00 35 	be r2,r0,8004b84 <pthread_cond_init+0xec>      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 8004ab4:	28 44 00 04 	lw r4,(r2+4)                                   
 8004ab8:	34 03 00 01 	mvi r3,1                                       
    return EINVAL;                                                    
 8004abc:	34 01 00 16 	mvi r1,22                                      
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
 8004ac0:	44 83 00 03 	be r4,r3,8004acc <pthread_cond_init+0x34>      <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  if ( !the_attr->is_initialized )                                    
 8004ac4:	28 43 00 00 	lw r3,(r2+0)                                   
 8004ac8:	5c 60 00 07 	bne r3,r0,8004ae4 <pthread_cond_init+0x4c>     
  *cond = the_cond->Object.id;                                        
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return 0;                                                           
}                                                                     
 8004acc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004ad0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004ad4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004ad8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004adc:	37 9c 00 14 	addi sp,sp,20                                  
 8004ae0:	c3 a0 00 00 	ret                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8004ae4:	78 03 08 01 	mvhi r3,0x801                                  
 8004ae8:	38 63 88 f8 	ori r3,r3,0x88f8                               
 8004aec:	28 61 00 00 	lw r1,(r3+0)                                   
                                                                      
    ++level;                                                          
 8004af0:	34 21 00 01 	addi r1,r1,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8004af4:	58 61 00 00 	sw (r3+0),r1                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control                
  *_POSIX_Condition_variables_Allocate( void )                        
{                                                                     
  return (POSIX_Condition_variables_Control *)                        
    _Objects_Allocate( &_POSIX_Condition_variables_Information );     
 8004af8:	78 0c 08 01 	mvhi r12,0x801                                 
 8004afc:	39 8c 8c 8c 	ori r12,r12,0x8c8c                             
 8004b00:	b9 80 08 00 	mv r1,r12                                      
 8004b04:	5b 82 00 14 	sw (sp+20),r2                                  
 8004b08:	f8 00 0a 6d 	calli 80074bc <_Objects_Allocate>              
 8004b0c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
 8004b10:	2b 82 00 14 	lw r2,(sp+20)                                  
 8004b14:	44 20 00 1f 	be r1,r0,8004b90 <pthread_cond_init+0xf8>      
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004b18:	78 01 08 01 	mvhi r1,0x801                                  
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 8004b1c:	28 45 00 04 	lw r5,(r2+4)                                   
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004b20:	38 21 6c 08 	ori r1,r1,0x6c08                               
 8004b24:	28 23 00 00 	lw r3,(r1+0)                                   
 8004b28:	34 04 00 74 	mvi r4,116                                     
 8004b2c:	35 61 00 18 	addi r1,r11,24                                 
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
 8004b30:	59 65 00 10 	sw (r11+16),r5                                 
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
  _Thread_queue_Initialize(                                           
 8004b34:	34 02 00 00 	mvi r2,0                                       
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
 8004b38:	59 60 00 14 	sw (r11+20),r0                                 
                                                                      
  _Thread_queue_Initialize(                                           
 8004b3c:	f8 00 12 7d 	calli 8009530 <_Thread_queue_Initialize>       
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8004b40:	29 61 00 08 	lw r1,(r11+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004b44:	29 83 00 1c 	lw r3,(r12+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8004b48:	20 22 ff ff 	andi r2,r1,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8004b4c:	b4 42 10 00 	add r2,r2,r2                                   
 8004b50:	b4 42 10 00 	add r2,r2,r2                                   
 8004b54:	b4 62 10 00 	add r2,r3,r2                                   
 8004b58:	58 4b 00 00 	sw (r2+0),r11                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8004b5c:	59 60 00 0c 	sw (r11+12),r0                                 
    &_POSIX_Condition_variables_Information,                          
    &the_cond->Object,                                                
    0                                                                 
  );                                                                  
                                                                      
  *cond = the_cond->Object.id;                                        
 8004b60:	59 a1 00 00 	sw (r13+0),r1                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8004b64:	f8 00 0f f9 	calli 8008b48 <_Thread_Enable_dispatch>        
                                                                      
  return 0;                                                           
 8004b68:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004b6c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b70:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004b74:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004b78:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004b7c:	37 9c 00 14 	addi sp,sp,20                                  
 8004b80:	c3 a0 00 00 	ret                                            
{                                                                     
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
 8004b84:	78 02 08 01 	mvhi r2,0x801                                  
 8004b88:	38 42 6c 00 	ori r2,r2,0x6c00                               
 8004b8c:	e3 ff ff ca 	bi 8004ab4 <pthread_cond_init+0x1c>            
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
 8004b90:	f8 00 0f ee 	calli 8008b48 <_Thread_Enable_dispatch>        
    return ENOMEM;                                                    
 8004b94:	34 01 00 0c 	mvi r1,12                                      
 8004b98:	e3 ff ff cd 	bi 8004acc <pthread_cond_init+0x34>            
                                                                      

080048f4 <pthread_condattr_destroy>: int pthread_condattr_destroy( pthread_condattr_t *attr ) { if ( !attr || attr->is_initialized == false ) return EINVAL;
 80048f4:	34 02 00 16 	mvi r2,22                                      
                                                                      
int pthread_condattr_destroy(                                         
  pthread_condattr_t *attr                                            
)                                                                     
{                                                                     
  if ( !attr || attr->is_initialized == false )                       
 80048f8:	44 20 00 05 	be r1,r0,800490c <pthread_condattr_destroy+0x18>
 80048fc:	28 23 00 00 	lw r3,(r1+0)                                   
 8004900:	44 60 00 03 	be r3,r0,800490c <pthread_condattr_destroy+0x18><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  attr->is_initialized = false;                                       
 8004904:	58 20 00 00 	sw (r1+0),r0                                   
  return 0;                                                           
 8004908:	34 02 00 00 	mvi r2,0                                       
}                                                                     
 800490c:	b8 40 08 00 	mv r1,r2                                       
 8004910:	c3 a0 00 00 	ret                                            
                                                                      

08003d90 <pthread_create>: pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)( void * ), void *arg ) {
 8003d90:	37 9c ff a0 	addi sp,sp,-96                                 
 8003d94:	5b 8b 00 3c 	sw (sp+60),r11                                 
 8003d98:	5b 8c 00 38 	sw (sp+56),r12                                 
 8003d9c:	5b 8d 00 34 	sw (sp+52),r13                                 
 8003da0:	5b 8e 00 30 	sw (sp+48),r14                                 
 8003da4:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8003da8:	5b 90 00 28 	sw (sp+40),r16                                 
 8003dac:	5b 91 00 24 	sw (sp+36),r17                                 
 8003db0:	5b 92 00 20 	sw (sp+32),r18                                 
 8003db4:	5b 93 00 1c 	sw (sp+28),r19                                 
 8003db8:	5b 94 00 18 	sw (sp+24),r20                                 
 8003dbc:	5b 95 00 14 	sw (sp+20),r21                                 
 8003dc0:	5b 9d 00 10 	sw (sp+16),ra                                  
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
 8003dc4:	34 0c 00 0e 	mvi r12,14                                     
  pthread_t              *thread,                                     
  const pthread_attr_t   *attr,                                       
  void                 *(*start_routine)( void * ),                   
  void                   *arg                                         
)                                                                     
{                                                                     
 8003dc8:	b8 60 68 00 	mv r13,r3                                      
 8003dcc:	b8 20 78 00 	mv r15,r1                                      
 8003dd0:	b8 80 70 00 	mv r14,r4                                      
  int                                 schedpolicy = SCHED_RR;         
  struct sched_param                  schedparam;                     
  Objects_Name                        name;                           
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
 8003dd4:	44 60 00 13 	be r3,r0,8003e20 <pthread_create+0x90>         
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 8003dd8:	b8 40 58 00 	mv r11,r2                                      
 8003ddc:	44 40 00 66 	be r2,r0,8003f74 <pthread_create+0x1e4>        
                                                                      
  if ( !the_attr->is_initialized )                                    
 8003de0:	29 61 00 00 	lw r1,(r11+0)                                  
    return EINVAL;                                                    
 8003de4:	34 0c 00 16 	mvi r12,22                                     
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
                                                                      
  if ( !the_attr->is_initialized )                                    
 8003de8:	44 20 00 0e 	be r1,r0,8003e20 <pthread_create+0x90>         
   *  stack space if it is allowed to allocate it itself.             
   *                                                                  
   *  NOTE: If the user provides the stack we will let it drop below  
   *        twice the minimum.                                        
   */                                                                 
  if ( the_attr->stackaddr && !_Stack_Is_enough(the_attr->stacksize) )
 8003dec:	29 61 00 04 	lw r1,(r11+4)                                  
 8003df0:	44 20 00 06 	be r1,r0,8003e08 <pthread_create+0x78>         
 8003df4:	78 02 08 02 	mvhi r2,0x802                                  
 8003df8:	38 42 00 f8 	ori r2,r2,0xf8                                 
 8003dfc:	29 63 00 08 	lw r3,(r11+8)                                  
 8003e00:	28 41 00 00 	lw r1,(r2+0)                                   
 8003e04:	54 23 00 07 	bgu r1,r3,8003e20 <pthread_create+0x90>        
   *  If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
   *  inherits scheduling attributes from the creating thread.   If it is
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
 8003e08:	29 61 00 10 	lw r1,(r11+16)                                 
 8003e0c:	34 02 00 01 	mvi r2,1                                       
 8003e10:	44 22 00 5c 	be r1,r2,8003f80 <pthread_create+0x1f0>        
 8003e14:	34 02 00 02 	mvi r2,2                                       
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
      break;                                                          
                                                                      
    default:                                                          
      return EINVAL;                                                  
 8003e18:	34 0c 00 16 	mvi r12,22                                     
   *  If inheritsched is set to PTHREAD_INHERIT_SCHED, then this thread
   *  inherits scheduling attributes from the creating thread.   If it is
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
 8003e1c:	44 22 00 10 	be r1,r2,8003e5c <pthread_create+0xcc>         
   */                                                                 
  *thread = the_thread->Object.id;                                    
                                                                      
  _RTEMS_Unlock_allocator();                                          
  return 0;                                                           
}                                                                     
 8003e20:	b9 80 08 00 	mv r1,r12                                      
 8003e24:	2b 9d 00 10 	lw ra,(sp+16)                                  
 8003e28:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8003e2c:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8003e30:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8003e34:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8003e38:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8003e3c:	2b 90 00 28 	lw r16,(sp+40)                                 
 8003e40:	2b 91 00 24 	lw r17,(sp+36)                                 
 8003e44:	2b 92 00 20 	lw r18,(sp+32)                                 
 8003e48:	2b 93 00 1c 	lw r19,(sp+28)                                 
 8003e4c:	2b 94 00 18 	lw r20,(sp+24)                                 
 8003e50:	2b 95 00 14 	lw r21,(sp+20)                                 
 8003e54:	37 9c 00 60 	addi sp,sp,96                                  
 8003e58:	c3 a0 00 00 	ret                                            
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
      schedparam  = the_attr->schedparam;                             
 8003e5c:	29 67 00 18 	lw r7,(r11+24)                                 
 8003e60:	29 66 00 1c 	lw r6,(r11+28)                                 
 8003e64:	29 65 00 20 	lw r5,(r11+32)                                 
 8003e68:	29 64 00 24 	lw r4,(r11+36)                                 
 8003e6c:	29 63 00 28 	lw r3,(r11+40)                                 
 8003e70:	29 62 00 2c 	lw r2,(r11+44)                                 
 8003e74:	29 61 00 30 	lw r1,(r11+48)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
      break;                                                          
                                                                      
    case PTHREAD_EXPLICIT_SCHED:                                      
      schedpolicy = the_attr->schedpolicy;                            
 8003e78:	29 71 00 14 	lw r17,(r11+20)                                
      schedparam  = the_attr->schedparam;                             
 8003e7c:	5b 87 00 40 	sw (sp+64),r7                                  
 8003e80:	5b 86 00 44 	sw (sp+68),r6                                  
 8003e84:	5b 85 00 48 	sw (sp+72),r5                                  
 8003e88:	5b 84 00 4c 	sw (sp+76),r4                                  
 8003e8c:	5b 83 00 50 	sw (sp+80),r3                                  
 8003e90:	5b 82 00 54 	sw (sp+84),r2                                  
 8003e94:	5b 81 00 58 	sw (sp+88),r1                                  
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 8003e98:	29 70 00 0c 	lw r16,(r11+12)                                
    return ENOTSUP;                                                   
 8003e9c:	34 0c 00 86 	mvi r12,134                                    
                                                                      
  /*                                                                  
   *  Check the contentionscope since rtems only supports PROCESS wide
   *  contention (i.e. no system wide contention).                    
   */                                                                 
  if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )           
 8003ea0:	5e 00 ff e0 	bne r16,r0,8003e20 <pthread_create+0x90>       
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 8003ea4:	2b 81 00 40 	lw r1,(sp+64)                                  
    return EINVAL;                                                    
 8003ea8:	34 0c 00 16 	mvi r12,22                                     
    return ENOTSUP;                                                   
                                                                      
  /*                                                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
 8003eac:	f8 00 1b 91 	calli 800acf0 <_POSIX_Priority_Is_valid>       
 8003eb0:	44 30 ff dc 	be r1,r16,8003e20 <pthread_create+0x90>        <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core(        
  int priority                                                        
)                                                                     
{                                                                     
  return (Priority_Control) (POSIX_SCHEDULER_MAXIMUM_PRIORITY - priority + 1);
 8003eb4:	78 05 08 02 	mvhi r5,0x802                                  
 8003eb8:	38 a5 00 fc 	ori r5,r5,0xfc                                 
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 8003ebc:	ba 20 08 00 	mv r1,r17                                      
 8003ec0:	37 82 00 40 	addi r2,sp,64                                  
 8003ec4:	37 83 00 60 	addi r3,sp,96                                  
 8003ec8:	37 84 00 5c 	addi r4,sp,92                                  
   *  Interpret the scheduling parameters.                            
   */                                                                 
  if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )       
    return EINVAL;                                                    
                                                                      
  core_priority = _POSIX_Priority_To_core( schedparam.sched_priority );
 8003ecc:	2b 94 00 40 	lw r20,(sp+64)                                 
 8003ed0:	40 b5 00 00 	lbu r21,(r5+0)                                 
                                                                      
  /*                                                                  
   *  Set the core scheduling policy information.                     
   */                                                                 
  rc = _POSIX_Thread_Translate_sched_param(                           
 8003ed4:	f8 00 1b 8f 	calli 800ad10 <_POSIX_Thread_Translate_sched_param>
 8003ed8:	b8 20 60 00 	mv r12,r1                                      
    schedpolicy,                                                      
    &schedparam,                                                      
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8003edc:	5c 20 ff d1 	bne r1,r0,8003e20 <pthread_create+0x90>        
  #endif                                                              
                                                                      
  /*                                                                  
   *  Lock the allocator mutex for protection                         
   */                                                                 
  _RTEMS_Lock_allocator();                                            
 8003ee0:	78 12 08 02 	mvhi r18,0x802                                 
 8003ee4:	3a 52 09 68 	ori r18,r18,0x968                              
 8003ee8:	2a 41 00 00 	lw r1,(r18+0)                                  
 *  _POSIX_Threads_Allocate                                           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void )  
{                                                                     
  return (Thread_Control *) _Objects_Allocate( &_POSIX_Threads_Information );
 8003eec:	78 10 08 02 	mvhi r16,0x802                                 
 8003ef0:	3a 10 0a 64 	ori r16,r16,0xa64                              
 8003ef4:	f8 00 05 7b 	calli 80054e0 <_API_Mutex_Lock>                
 8003ef8:	ba 00 08 00 	mv r1,r16                                      
 8003efc:	f8 00 08 c8 	calli 800621c <_Objects_Allocate>              
 8003f00:	b8 20 98 00 	mv r19,r1                                      
   *  Allocate the thread control block.                              
   *                                                                  
   *  NOTE:  Global threads are not currently supported.              
   */                                                                 
  the_thread = _POSIX_Threads_Allocate();                             
  if ( !the_thread ) {                                                
 8003f04:	44 2c 00 18 	be r1,r12,8003f64 <pthread_create+0x1d4>       
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 8003f08:	78 01 08 02 	mvhi r1,0x802                                  
 8003f0c:	38 21 00 f8 	ori r1,r1,0xf8                                 
 8003f10:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 8003f14:	29 61 00 08 	lw r1,(r11+8)                                  
 8003f18:	29 63 00 04 	lw r3,(r11+4)                                  
                                                                      
static inline size_t _POSIX_Threads_Ensure_minimum_stack (            
  size_t size                                                         
)                                                                     
{                                                                     
  if ( size >= PTHREAD_MINIMUM_STACK_SIZE )                           
 8003f1c:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
  /*                                                                  
   *  Initialize the core thread for this task.                       
   */                                                                 
  name.name_p = NULL;   /* posix threads don't have a name by default */
  status = _Thread_Initialize(                                        
 8003f20:	50 81 00 02 	bgeu r4,r1,8003f28 <pthread_create+0x198>      
 8003f24:	b8 20 20 00 	mv r4,r1                                       
 8003f28:	2b 89 00 5c 	lw r9,(sp+92)                                  
 8003f2c:	2b 88 00 60 	lw r8,(sp+96)                                  
 8003f30:	ba 00 08 00 	mv r1,r16                                      
 8003f34:	ba 60 10 00 	mv r2,r19                                      
 8003f38:	34 05 00 00 	mvi r5,0                                       
 8003f3c:	ca b4 30 00 	sub r6,r21,r20                                 
 8003f40:	34 07 00 01 	mvi r7,1                                       
 8003f44:	5b 89 00 04 	sw (sp+4),r9                                   
 8003f48:	5b 80 00 08 	sw (sp+8),r0                                   
 8003f4c:	5b 80 00 0c 	sw (sp+12),r0                                  
 8003f50:	f8 00 0e 92 	calli 8007998 <_Thread_Initialize>             
    budget_callout,                                                   
    0,                    /* isr level */                             
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
 8003f54:	5c 20 00 1f 	bne r1,r0,8003fd0 <pthread_create+0x240>       
                                                                      
RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (                       
  Thread_Control *the_pthread                                         
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Threads_Information, &the_pthread->Object ); 
 8003f58:	ba 00 08 00 	mv r1,r16                                      
 8003f5c:	ba 60 10 00 	mv r2,r19                                      
 8003f60:	f8 00 09 ba 	calli 8006648 <_Objects_Free>                  
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 8003f64:	2a 41 00 00 	lw r1,(r18+0)                                  
    return EAGAIN;                                                    
 8003f68:	34 0c 00 0b 	mvi r12,11                                     
    name                  /* posix threads don't have a name */       
  );                                                                  
                                                                      
  if ( !status ) {                                                    
    _POSIX_Threads_Free( the_thread );                                
    _RTEMS_Unlock_allocator();                                        
 8003f6c:	f8 00 05 79 	calli 8005550 <_API_Mutex_Unlock>              
    return EAGAIN;                                                    
 8003f70:	e3 ff ff ac 	bi 8003e20 <pthread_create+0x90>               
  int                                 rc;                             
                                                                      
  if ( !start_routine )                                               
    return EFAULT;                                                    
                                                                      
  the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;      
 8003f74:	78 0b 08 01 	mvhi r11,0x801                                 
 8003f78:	39 6b eb 38 	ori r11,r11,0xeb38                             
 8003f7c:	e3 ff ff 99 	bi 8003de0 <pthread_create+0x50>               
   *  PTHREAD_EXPLICIT_SCHED, then scheduling parameters come from the
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
 8003f80:	78 01 08 02 	mvhi r1,0x802                                  
 8003f84:	38 21 0d 80 	ori r1,r1,0xd80                                
 8003f88:	28 21 00 10 	lw r1,(r1+16)                                  
 8003f8c:	28 22 01 1c 	lw r2,(r1+284)                                 
      schedpolicy = api->schedpolicy;                                 
      schedparam  = api->schedparam;                                  
 8003f90:	28 48 00 88 	lw r8,(r2+136)                                 
 8003f94:	28 47 00 8c 	lw r7,(r2+140)                                 
 8003f98:	28 46 00 90 	lw r6,(r2+144)                                 
 8003f9c:	28 45 00 94 	lw r5,(r2+148)                                 
 8003fa0:	28 44 00 98 	lw r4,(r2+152)                                 
 8003fa4:	28 43 00 9c 	lw r3,(r2+156)                                 
 8003fa8:	28 41 00 a0 	lw r1,(r2+160)                                 
   *  attributes structure.                                           
   */                                                                 
  switch ( the_attr->inheritsched ) {                                 
    case PTHREAD_INHERIT_SCHED:                                       
      api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];    
      schedpolicy = api->schedpolicy;                                 
 8003fac:	28 51 00 84 	lw r17,(r2+132)                                
      schedparam  = api->schedparam;                                  
 8003fb0:	5b 88 00 40 	sw (sp+64),r8                                  
 8003fb4:	5b 87 00 44 	sw (sp+68),r7                                  
 8003fb8:	5b 86 00 48 	sw (sp+72),r6                                  
 8003fbc:	5b 85 00 4c 	sw (sp+76),r5                                  
 8003fc0:	5b 84 00 50 	sw (sp+80),r4                                  
 8003fc4:	5b 83 00 54 	sw (sp+84),r3                                  
 8003fc8:	5b 81 00 58 	sw (sp+88),r1                                  
      break;                                                          
 8003fcc:	e3 ff ff b3 	bi 8003e98 <pthread_create+0x108>              
  }                                                                   
                                                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8003fd0:	2a 70 01 1c 	lw r16,(r19+284)                               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003fd4:	29 63 00 00 	lw r3,(r11+0)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003fd8:	ba 60 08 00 	mv r1,r19                                      
 8003fdc:	34 02 00 01 	mvi r2,1                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003fe0:	5a 03 00 00 	sw (r16+0),r3                                  
 8003fe4:	29 65 00 04 	lw r5,(r11+4)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003fe8:	b9 a0 18 00 	mv r3,r13                                      
 8003fec:	b9 c0 20 00 	mv r4,r14                                      
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003ff0:	5a 05 00 04 	sw (r16+4),r5                                  
 8003ff4:	29 66 00 08 	lw r6,(r11+8)                                  
  api->schedparam  = schedparam;                                      
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 8003ff8:	34 05 00 00 	mvi r5,0                                       
  /*                                                                  
   *  finish initializing the per API structure                       
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
 8003ffc:	5a 06 00 08 	sw (r16+8),r6                                  
 8004000:	29 66 00 0c 	lw r6,(r11+12)                                 
 8004004:	5a 06 00 0c 	sw (r16+12),r6                                 
 8004008:	29 66 00 10 	lw r6,(r11+16)                                 
 800400c:	5a 06 00 10 	sw (r16+16),r6                                 
 8004010:	29 66 00 14 	lw r6,(r11+20)                                 
 8004014:	5a 06 00 14 	sw (r16+20),r6                                 
 8004018:	29 66 00 18 	lw r6,(r11+24)                                 
 800401c:	5a 06 00 18 	sw (r16+24),r6                                 
 8004020:	29 66 00 1c 	lw r6,(r11+28)                                 
 8004024:	5a 06 00 1c 	sw (r16+28),r6                                 
 8004028:	29 66 00 20 	lw r6,(r11+32)                                 
 800402c:	5a 06 00 20 	sw (r16+32),r6                                 
 8004030:	29 66 00 24 	lw r6,(r11+36)                                 
 8004034:	5a 06 00 24 	sw (r16+36),r6                                 
 8004038:	29 66 00 28 	lw r6,(r11+40)                                 
 800403c:	5a 06 00 28 	sw (r16+40),r6                                 
 8004040:	29 66 00 2c 	lw r6,(r11+44)                                 
 8004044:	5a 06 00 2c 	sw (r16+44),r6                                 
 8004048:	29 66 00 30 	lw r6,(r11+48)                                 
 800404c:	5a 06 00 30 	sw (r16+48),r6                                 
 8004050:	29 66 00 34 	lw r6,(r11+52)                                 
 8004054:	5a 06 00 34 	sw (r16+52),r6                                 
 8004058:	29 66 00 38 	lw r6,(r11+56)                                 
 800405c:	5a 06 00 38 	sw (r16+56),r6                                 
 8004060:	29 66 00 3c 	lw r6,(r11+60)                                 
 8004064:	5a 06 00 3c 	sw (r16+60),r6                                 
  api->detachstate = the_attr->detachstate;                           
 8004068:	29 66 00 3c 	lw r6,(r11+60)                                 
 800406c:	5a 06 00 40 	sw (r16+64),r6                                 
  api->schedpolicy = schedpolicy;                                     
  api->schedparam  = schedparam;                                      
 8004070:	2b 86 00 40 	lw r6,(sp+64)                                  
   */                                                                 
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
                                                                      
  api->Attributes  = *the_attr;                                       
  api->detachstate = the_attr->detachstate;                           
  api->schedpolicy = schedpolicy;                                     
 8004074:	5a 11 00 84 	sw (r16+132),r17                               
  api->schedparam  = schedparam;                                      
 8004078:	5a 06 00 88 	sw (r16+136),r6                                
 800407c:	2b 86 00 44 	lw r6,(sp+68)                                  
 8004080:	5a 06 00 8c 	sw (r16+140),r6                                
 8004084:	2b 86 00 48 	lw r6,(sp+72)                                  
 8004088:	5a 06 00 90 	sw (r16+144),r6                                
 800408c:	2b 86 00 4c 	lw r6,(sp+76)                                  
 8004090:	5a 06 00 94 	sw (r16+148),r6                                
 8004094:	2b 86 00 50 	lw r6,(sp+80)                                  
 8004098:	5a 06 00 98 	sw (r16+152),r6                                
 800409c:	2b 86 00 54 	lw r6,(sp+84)                                  
 80040a0:	5a 06 00 9c 	sw (r16+156),r6                                
 80040a4:	2b 86 00 58 	lw r6,(sp+88)                                  
 80040a8:	5a 06 00 a0 	sw (r16+160),r6                                
                                                                      
  /*                                                                  
   *  POSIX threads are allocated and started in one operation.       
   */                                                                 
  status = _Thread_Start(                                             
 80040ac:	f8 00 10 f5 	calli 8008480 <_Thread_Start>                  
      _RTEMS_Unlock_allocator();                                      
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
 80040b0:	34 01 00 04 	mvi r1,4                                       
 80040b4:	46 21 00 06 	be r17,r1,80040cc <pthread_create+0x33c>       
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 80040b8:	2a 62 00 08 	lw r2,(r19+8)                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 80040bc:	2a 41 00 00 	lw r1,(r18+0)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Return the id and indicate we successfully created the thread   
   */                                                                 
  *thread = the_thread->Object.id;                                    
 80040c0:	59 e2 00 00 	sw (r15+0),r2                                  
                                                                      
  _RTEMS_Unlock_allocator();                                          
 80040c4:	f8 00 05 23 	calli 8005550 <_API_Mutex_Unlock>              
  return 0;                                                           
 80040c8:	e3 ff ff 56 	bi 8003e20 <pthread_create+0x90>               
      return EINVAL;                                                  
    }                                                                 
  #endif                                                              
                                                                      
  if ( schedpolicy == SCHED_SPORADIC ) {                              
    _Watchdog_Insert_ticks(                                           
 80040cc:	36 01 00 90 	addi r1,r16,144                                
 80040d0:	f8 00 11 2b 	calli 800857c <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 80040d4:	5a 01 00 b4 	sw (r16+180),r1                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 80040d8:	78 01 08 02 	mvhi r1,0x802                                  
 80040dc:	36 02 00 a8 	addi r2,r16,168                                
 80040e0:	38 21 09 80 	ori r1,r1,0x980                                
 80040e4:	f8 00 11 f6 	calli 80088bc <_Watchdog_Insert>               
 80040e8:	e3 ff ff f4 	bi 80040b8 <pthread_create+0x328>              
                                                                      

0800cd68 <pthread_exit>: } void pthread_exit( void *value_ptr ) {
 800cd68:	37 9c ff fc 	addi sp,sp,-4                                  
 800cd6c:	5b 9d 00 04 	sw (sp+4),ra                                   
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800cd70:	78 03 08 02 	mvhi r3,0x802                                  
 800cd74:	38 63 0d e0 	ori r3,r3,0xde0                                
}                                                                     
                                                                      
void pthread_exit(                                                    
  void  *value_ptr                                                    
)                                                                     
{                                                                     
 800cd78:	b8 20 10 00 	mv r2,r1                                       
  _POSIX_Thread_Exit( _Thread_Executing, value_ptr );                 
 800cd7c:	28 61 00 10 	lw r1,(r3+16)                                  
 800cd80:	fb ff ff b4 	calli 800cc50 <_POSIX_Thread_Exit>             
}                                                                     
 800cd84:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800cd88:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 800cd8c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801cc18 <pthread_kill>: int pthread_kill( pthread_t thread, int sig ) {
 801cc18:	37 9c ff e4 	addi sp,sp,-28                                 
 801cc1c:	5b 8b 00 18 	sw (sp+24),r11                                 
 801cc20:	5b 8c 00 14 	sw (sp+20),r12                                 
 801cc24:	5b 8d 00 10 	sw (sp+16),r13                                 
 801cc28:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801cc2c:	5b 8f 00 08 	sw (sp+8),r15                                  
 801cc30:	5b 9d 00 04 	sw (sp+4),ra                                   
 801cc34:	b8 40 58 00 	mv r11,r2                                      
  POSIX_API_Control  *api;                                            
  Thread_Control     *the_thread;                                     
  Objects_Locations  location;                                        
                                                                      
  if ( !sig )                                                         
 801cc38:	44 40 00 04 	be r2,r0,801cc48 <pthread_kill+0x30>           
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 801cc3c:	34 4e ff ff 	addi r14,r2,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 801cc40:	34 02 00 1f 	mvi r2,31                                      
 801cc44:	50 4e 00 0d 	bgeu r2,r14,801cc78 <pthread_kill+0x60>        
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 801cc48:	fb ff c1 8b 	calli 800d274 <__errno>                        
 801cc4c:	34 02 00 16 	mvi r2,22                                      
 801cc50:	58 22 00 00 	sw (r1+0),r2                                   
 801cc54:	34 01 ff ff 	mvi r1,-1                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
}                                                                     
 801cc58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cc5c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801cc60:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801cc64:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801cc68:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801cc6c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801cc70:	37 9c 00 1c 	addi sp,sp,28                                  
 801cc74:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  the_thread = _Thread_Get( thread, &location );                      
 801cc78:	37 82 00 1c 	addi r2,sp,28                                  
 801cc7c:	fb ff a7 fa 	calli 8006c64 <_Thread_Get>                    
 801cc80:	b8 20 60 00 	mv r12,r1                                      
  switch ( location ) {                                               
 801cc84:	2b 81 00 1c 	lw r1,(sp+28)                                  
 801cc88:	44 20 00 06 	be r1,r0,801cca0 <pthread_kill+0x88>           <== ALWAYS TAKEN
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
 801cc8c:	fb ff c1 7a 	calli 800d274 <__errno>                        <== NOT EXECUTED
 801cc90:	34 02 00 03 	mvi r2,3                                       <== NOT EXECUTED
 801cc94:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801cc98:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801cc9c:	e3 ff ff ef 	bi 801cc58 <pthread_kill+0x40>                 <== NOT EXECUTED
 801cca0:	78 01 08 02 	mvhi r1,0x802                                  
 801cca4:	38 21 01 bc 	ori r1,r1,0x1bc                                
 801cca8:	fb ff 9e a5 	calli 800473c <_API_extensions_Add_post_switch>
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
 801ccac:	b5 6b 18 00 	add r3,r11,r11                                 
 801ccb0:	b4 6b 18 00 	add r3,r3,r11                                  
 801ccb4:	78 04 08 02 	mvhi r4,0x802                                  
 801ccb8:	b4 63 18 00 	add r3,r3,r3                                   
 801ccbc:	38 84 0e 68 	ori r4,r4,0xe68                                
 801ccc0:	b4 63 18 00 	add r3,r3,r3                                   
 801ccc4:	b4 83 18 00 	add r3,r4,r3                                   
 801ccc8:	28 61 00 08 	lw r1,(r3+8)                                   
 801cccc:	34 0f 00 01 	mvi r15,1                                      
       *  If sig == 0 then just validate arguments                    
       */                                                             
                                                                      
      _POSIX_signals_Add_post_switch_extension();                     
                                                                      
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
 801ccd0:	29 8d 01 1c 	lw r13,(r12+284)                               
                                                                      
      if ( sig ) {                                                    
                                                                      
        if ( _POSIX_signals_Vectors[ sig ].sa_handler == SIG_IGN ) {  
 801ccd4:	44 2f 00 11 	be r1,r15,801cd18 <pthread_kill+0x100>         
                                                                      
static inline sigset_t signo_to_mask(                                 
  uint32_t sig                                                        
)                                                                     
{                                                                     
  return 1u << (sig - 1);                                             
 801ccd8:	b9 c0 10 00 	mv r2,r14                                      
 801ccdc:	34 01 00 01 	mvi r1,1                                       
 801cce0:	fb ff fb f0 	calli 801bca0 <__ashlsi3>                      
          return 0;                                                   
        }                                                             
                                                                      
        /* XXX critical section */                                    
                                                                      
        api->signals_pending |= signo_to_mask( sig );                 
 801cce4:	29 a4 00 d4 	lw r4,(r13+212)                                
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
 801cce8:	b9 60 10 00 	mv r2,r11                                      
 801ccec:	34 03 00 00 	mvi r3,0                                       
          return 0;                                                   
        }                                                             
                                                                      
        /* XXX critical section */                                    
                                                                      
        api->signals_pending |= signo_to_mask( sig );                 
 801ccf0:	b8 81 08 00 	or r1,r4,r1                                    
 801ccf4:	59 a1 00 d4 	sw (r13+212),r1                                
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
 801ccf8:	b9 80 08 00 	mv r1,r12                                      
 801ccfc:	fb ff ff 64 	calli 801ca8c <_POSIX_signals_Unblock_thread>  
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 801cd00:	78 02 08 02 	mvhi r2,0x802                                  
 801cd04:	38 42 0d e0 	ori r2,r2,0xde0                                
 801cd08:	28 41 00 08 	lw r1,(r2+8)                                   
 801cd0c:	44 20 00 03 	be r1,r0,801cd18 <pthread_kill+0x100>          
 801cd10:	28 41 00 10 	lw r1,(r2+16)                                  
 801cd14:	45 81 00 0b 	be r12,r1,801cd40 <pthread_kill+0x128>         
	  _Thread_Dispatch_necessary = true;                                 
      }                                                               
      _Thread_Enable_dispatch();                                      
 801cd18:	fb ff a7 c7 	calli 8006c34 <_Thread_Enable_dispatch>        
      return 0;                                                       
 801cd1c:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( ESRCH );                      
}                                                                     
 801cd20:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cd24:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801cd28:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801cd2c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801cd30:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801cd34:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801cd38:	37 9c 00 1c 	addi sp,sp,28                                  
 801cd3c:	c3 a0 00 00 	ret                                            
        api->signals_pending |= signo_to_mask( sig );                 
                                                                      
        (void) _POSIX_signals_Unblock_thread( the_thread, sig, NULL );
                                                                      
        if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
	  _Thread_Dispatch_necessary = true;                                 
 801cd40:	30 4f 00 0c 	sb (r2+12),r15                                 
 801cd44:	e3 ff ff f5 	bi 801cd18 <pthread_kill+0x100>                
                                                                      

080065c8 <pthread_mutex_timedlock>: */ int pthread_mutex_timedlock( pthread_mutex_t *mutex, const struct timespec *abstime ) {
 80065c8:	37 9c ff f0 	addi sp,sp,-16                                 
 80065cc:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80065d0:	5b 8c 00 08 	sw (sp+8),r12                                  
 80065d4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80065d8:	b8 20 60 00 	mv r12,r1                                      
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 80065dc:	b8 40 08 00 	mv r1,r2                                       
 80065e0:	37 82 00 10 	addi r2,sp,16                                  
 80065e4:	f8 00 00 49 	calli 8006708 <_POSIX_Absolute_timeout_to_ticks>
 80065e8:	b8 20 58 00 	mv r11,r1                                      
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 80065ec:	34 01 00 03 	mvi r1,3                                       
 80065f0:	45 61 00 15 	be r11,r1,8006644 <pthread_mutex_timedlock+0x7c>
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
 80065f4:	2b 83 00 10 	lw r3,(sp+16)                                  
 80065f8:	34 02 00 00 	mvi r2,0                                       
 80065fc:	b9 80 08 00 	mv r1,r12                                      
 8006600:	fb ff ff 9f 	calli 800647c <_POSIX_Mutex_Lock_support>      
   *  This service only gives us the option to block.  We used a polling
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
 8006604:	34 02 00 10 	mvi r2,16                                      
 8006608:	44 22 00 06 	be r1,r2,8006620 <pthread_mutex_timedlock+0x58>
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 800660c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006610:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8006614:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006618:	37 9c 00 10 	addi sp,sp,16                                  
 800661c:	c3 a0 00 00 	ret                                            
   *  attempt to lock if the abstime was not in the future.  If we did
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
    if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                   
 8006620:	45 60 00 12 	be r11,r0,8006668 <pthread_mutex_timedlock+0xa0><== NEVER TAKEN
      return EINVAL;                                                  
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
 8006624:	35 6b ff ff 	addi r11,r11,-1                                
 8006628:	34 02 00 01 	mvi r2,1                                       
 800662c:	50 4b 00 11 	bgeu r2,r11,8006670 <pthread_mutex_timedlock+0xa8><== ALWAYS TAKEN
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8006630:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8006634:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8006638:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 800663c:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8006640:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Mutex_Lock_support( mutex, do_wait, ticks );   
 8006644:	2b 83 00 10 	lw r3,(sp+16)                                  
 8006648:	b9 80 08 00 	mv r1,r12                                      
 800664c:	34 02 00 01 	mvi r2,1                                       
 8006650:	fb ff ff 8b 	calli 800647c <_POSIX_Mutex_Lock_support>      
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8006654:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006658:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800665c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8006660:	37 9c 00 10 	addi sp,sp,16                                  
 8006664:	c3 a0 00 00 	ret                                            
   *  not obtain the mutex, then not look at the status immediately,  
   *  make sure the right reason is returned.                         
   */                                                                 
  if ( !do_wait && (lock_status == EBUSY) ) {                         
    if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                   
      return EINVAL;                                                  
 8006668:	34 01 00 16 	mvi r1,22                                      <== NOT EXECUTED
 800666c:	e3 ff ff e8 	bi 800660c <pthread_mutex_timedlock+0x44>      <== NOT EXECUTED
    if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||               
         status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                    
      return ETIMEDOUT;                                               
 8006670:	34 01 00 74 	mvi r1,116                                     
 8006674:	e3 ff ff e6 	bi 800660c <pthread_mutex_timedlock+0x44>      
                                                                      

08005fcc <pthread_mutexattr_init>: int pthread_mutexattr_init( pthread_mutexattr_t *attr ) { if ( !attr ) return EINVAL;
 8005fcc:	34 03 00 16 	mvi r3,22                                      
 */                                                                   
int pthread_mutexattr_init(                                           
  pthread_mutexattr_t *attr                                           
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8005fd0:	44 20 00 10 	be r1,r0,8006010 <pthread_mutexattr_init+0x44> <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  *attr = _POSIX_Mutex_Default_attributes;                            
 8005fd4:	78 02 08 01 	mvhi r2,0x801                                  
 8005fd8:	38 42 bc 84 	ori r2,r2,0xbc84                               
 8005fdc:	28 44 00 00 	lw r4,(r2+0)                                   
  return 0;                                                           
 8005fe0:	34 03 00 00 	mvi r3,0                                       
)                                                                     
{                                                                     
  if ( !attr )                                                        
    return EINVAL;                                                    
                                                                      
  *attr = _POSIX_Mutex_Default_attributes;                            
 8005fe4:	58 24 00 00 	sw (r1+0),r4                                   
 8005fe8:	28 44 00 04 	lw r4,(r2+4)                                   
 8005fec:	58 24 00 04 	sw (r1+4),r4                                   
 8005ff0:	28 44 00 08 	lw r4,(r2+8)                                   
 8005ff4:	58 24 00 08 	sw (r1+8),r4                                   
 8005ff8:	28 44 00 0c 	lw r4,(r2+12)                                  
 8005ffc:	58 24 00 0c 	sw (r1+12),r4                                  
 8006000:	28 44 00 10 	lw r4,(r2+16)                                  
 8006004:	58 24 00 10 	sw (r1+16),r4                                  
 8006008:	28 42 00 14 	lw r2,(r2+20)                                  
 800600c:	58 22 00 14 	sw (r1+20),r2                                  
  return 0;                                                           
}                                                                     
 8006010:	b8 60 08 00 	mv r1,r3                                       
 8006014:	c3 a0 00 00 	ret                                            
                                                                      

080060b0 <pthread_mutexattr_setpshared>: pthread_mutexattr_t *attr, int pshared ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 80060b0:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_setpshared(                                     
  pthread_mutexattr_t *attr,                                          
  int                  pshared                                        
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 80060b4:	44 20 00 07 	be r1,r0,80060d0 <pthread_mutexattr_setpshared+0x20>
 80060b8:	28 24 00 00 	lw r4,(r1+0)                                   
 80060bc:	44 80 00 05 	be r4,r0,80060d0 <pthread_mutexattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 80060c0:	34 04 00 01 	mvi r4,1                                       
 80060c4:	54 44 00 03 	bgu r2,r4,80060d0 <pthread_mutexattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 80060c8:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 80060cc:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 80060d0:	b8 60 08 00 	mv r1,r3                                       
 80060d4:	c3 a0 00 00 	ret                                            
                                                                      

08003580 <pthread_mutexattr_settype>: pthread_mutexattr_t *attr, int type ) { if ( !attr || !attr->is_initialized ) return EINVAL;
 8003580:	34 03 00 16 	mvi r3,22                                      
int pthread_mutexattr_settype(                                        
  pthread_mutexattr_t *attr,                                          
  int                  type                                           
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
 8003584:	44 20 00 07 	be r1,r0,80035a0 <pthread_mutexattr_settype+0x20>
 8003588:	28 24 00 00 	lw r4,(r1+0)                                   
 800358c:	44 80 00 05 	be r4,r0,80035a0 <pthread_mutexattr_settype+0x20><== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( type ) {                                                   
 8003590:	34 04 00 03 	mvi r4,3                                       
 8003594:	54 44 00 03 	bgu r2,r4,80035a0 <pthread_mutexattr_settype+0x20>
    case PTHREAD_MUTEX_NORMAL:                                        
    case PTHREAD_MUTEX_RECURSIVE:                                     
    case PTHREAD_MUTEX_ERRORCHECK:                                    
    case PTHREAD_MUTEX_DEFAULT:                                       
      attr->type = type;                                              
 8003598:	58 22 00 10 	sw (r1+16),r2                                  
      return 0;                                                       
 800359c:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 80035a0:	b8 60 08 00 	mv r1,r3                                       
 80035a4:	c3 a0 00 00 	ret                                            
                                                                      

08004698 <pthread_once>: int pthread_once( pthread_once_t *once_control, void (*init_routine)(void) ) {
 8004698:	37 9c ff ec 	addi sp,sp,-20                                 
 800469c:	5b 8b 00 10 	sw (sp+16),r11                                 
 80046a0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80046a4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80046a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  if ( !once_control || !init_routine )                               
 80046ac:	64 43 00 00 	cmpei r3,r2,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 80046b0:	b8 40 60 00 	mv r12,r2                                      
  if ( !once_control || !init_routine )                               
 80046b4:	64 22 00 00 	cmpei r2,r1,0                                  
                                                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
 80046b8:	b8 20 58 00 	mv r11,r1                                      
  if ( !once_control || !init_routine )                               
 80046bc:	b8 62 18 00 	or r3,r3,r2                                    
    return EINVAL;                                                    
 80046c0:	34 01 00 16 	mvi r1,22                                      
int pthread_once(                                                     
  pthread_once_t  *once_control,                                      
  void           (*init_routine)(void)                                
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
 80046c4:	5c 60 00 04 	bne r3,r0,80046d4 <pthread_once+0x3c>          
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 80046c8:	29 6d 00 04 	lw r13,(r11+4)                                 
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
 80046cc:	34 01 00 00 	mvi r1,0                                       
)                                                                     
{                                                                     
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
 80046d0:	45 a3 00 07 	be r13,r3,80046ec <pthread_once+0x54>          
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
  }                                                                   
  return 0;                                                           
}                                                                     
 80046d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80046d8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80046dc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80046e0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80046e4:	37 9c 00 14 	addi sp,sp,20                                  
 80046e8:	c3 a0 00 00 	ret                                            
  if ( !once_control || !init_routine )                               
    return EINVAL;                                                    
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
 80046ec:	34 01 01 00 	mvi r1,256                                     
 80046f0:	34 02 01 00 	mvi r2,256                                     
 80046f4:	37 83 00 14 	addi r3,sp,20                                  
 80046f8:	f8 00 01 c4 	calli 8004e08 <rtems_task_mode>                
    if ( !once_control->init_executed ) {                             
 80046fc:	29 61 00 04 	lw r1,(r11+4)                                  
 8004700:	44 2d 00 0c 	be r1,r13,8004730 <pthread_once+0x98>          <== ALWAYS TAKEN
      once_control->is_initialized = true;                            
      once_control->init_executed = true;                             
      (*init_routine)();                                              
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8004704:	2b 81 00 14 	lw r1,(sp+20)                                  
 8004708:	34 02 01 00 	mvi r2,256                                     
 800470c:	37 83 00 14 	addi r3,sp,20                                  
 8004710:	f8 00 01 be 	calli 8004e08 <rtems_task_mode>                
  }                                                                   
  return 0;                                                           
 8004714:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004718:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800471c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004720:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004724:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004728:	37 9c 00 14 	addi sp,sp,20                                  
 800472c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( !once_control->init_executed ) {                               
    rtems_mode saveMode;                                              
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( !once_control->init_executed ) {                             
      once_control->is_initialized = true;                            
 8004730:	34 01 00 01 	mvi r1,1                                       
 8004734:	59 61 00 00 	sw (r11+0),r1                                  
      once_control->init_executed = true;                             
 8004738:	59 61 00 04 	sw (r11+4),r1                                  
      (*init_routine)();                                              
 800473c:	d9 80 00 00 	call r12                                       
 8004740:	e3 ff ff f1 	bi 8004704 <pthread_once+0x6c>                 
                                                                      

08004828 <pthread_rwlock_init>: int pthread_rwlock_init( pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr ) {
 8004828:	37 9c ff e0 	addi sp,sp,-32                                 
 800482c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004830:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004834:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004838:	5b 8e 00 08 	sw (sp+8),r14                                  
 800483c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004840:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 8004844:	34 01 00 16 	mvi r1,22                                      
  const pthread_rwlockattr_t  *the_attr;                              
                                                                      
  /*                                                                  
   *  Error check parameters                                          
   */                                                                 
  if ( !rwlock )                                                      
 8004848:	45 60 00 07 	be r11,r0,8004864 <pthread_rwlock_init+0x3c>   
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
 800484c:	44 40 00 31 	be r2,r0,8004910 <pthread_rwlock_init+0xe8>    
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004850:	28 43 00 00 	lw r3,(r2+0)                                   
    return EINVAL;                                                    
 8004854:	34 01 00 16 	mvi r1,22                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Now start error checking the attributes that we are going to use 
   */                                                                 
  if ( !the_attr->is_initialized )                                    
 8004858:	44 60 00 03 	be r3,r0,8004864 <pthread_rwlock_init+0x3c>    <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  switch ( the_attr->process_shared ) {                               
 800485c:	28 4e 00 04 	lw r14,(r2+4)                                  
 8004860:	45 c0 00 08 	be r14,r0,8004880 <pthread_rwlock_init+0x58>   <== ALWAYS TAKEN
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
                                                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8004864:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004868:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800486c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004870:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004874:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004878:	37 9c 00 20 	addi sp,sp,32                                  
 800487c:	c3 a0 00 00 	ret                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8004880:	78 01 08 02 	mvhi r1,0x802                                  
 8004884:	38 21 53 28 	ori r1,r1,0x5328                               
 8004888:	28 22 00 00 	lw r2,(r1+0)                                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes(         
  CORE_RWLock_Attributes *the_attributes                              
)                                                                     
{                                                                     
  the_attributes->XXX = 0;                                            
 800488c:	5b 80 00 20 	sw (sp+32),r0                                  
                                                                      
    ++level;                                                          
 8004890:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8004894:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free RWLock control blocks.                 
 */                                                                   
RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void )
{                                                                     
  return (POSIX_RWLock_Control *)                                     
    _Objects_Allocate( &_POSIX_RWLock_Information );                  
 8004898:	78 0d 08 02 	mvhi r13,0x802                                 
 800489c:	39 ad 54 a4 	ori r13,r13,0x54a4                             
 80048a0:	b9 a0 08 00 	mv r1,r13                                      
 80048a4:	f8 00 0b b1 	calli 8007768 <_Objects_Allocate>              
 80048a8:	b8 20 60 00 	mv r12,r1                                      
   */                                                                 
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
 80048ac:	44 2e 00 16 	be r1,r14,8004904 <pthread_rwlock_init+0xdc>   <== NEVER TAKEN
    _Thread_Enable_dispatch();                                        
    return EAGAIN;                                                    
  }                                                                   
                                                                      
  _CORE_RWLock_Initialize( &the_rwlock->RWLock, &the_attributes );    
 80048b0:	37 82 00 20 	addi r2,sp,32                                  
 80048b4:	34 21 00 10 	addi r1,r1,16                                  
 80048b8:	f8 00 09 9b 	calli 8006f24 <_CORE_RWLock_Initialize>        
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 80048bc:	29 82 00 08 	lw r2,(r12+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80048c0:	29 a3 00 1c 	lw r3,(r13+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 80048c4:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 80048c8:	b4 21 08 00 	add r1,r1,r1                                   
 80048cc:	b4 21 08 00 	add r1,r1,r1                                   
 80048d0:	b4 61 08 00 	add r1,r3,r1                                   
 80048d4:	58 2c 00 00 	sw (r1+0),r12                                  
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 80048d8:	59 80 00 0c 	sw (r12+12),r0                                 
    &_POSIX_RWLock_Information,                                       
    &the_rwlock->Object,                                              
    0                                                                 
  );                                                                  
                                                                      
  *rwlock = the_rwlock->Object.id;                                    
 80048dc:	59 62 00 00 	sw (r11+0),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 80048e0:	f8 00 11 3b 	calli 8008dcc <_Thread_Enable_dispatch>        
  return 0;                                                           
 80048e4:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 80048e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80048ec:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80048f0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80048f4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80048f8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80048fc:	37 9c 00 20 	addi sp,sp,32                                  
 8004900:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();             /* prevents deletion */     
                                                                      
  the_rwlock = _POSIX_RWLock_Allocate();                              
                                                                      
  if ( !the_rwlock ) {                                                
    _Thread_Enable_dispatch();                                        
 8004904:	f8 00 11 32 	calli 8008dcc <_Thread_Enable_dispatch>        
    return EAGAIN;                                                    
 8004908:	34 01 00 0b 	mvi r1,11                                      
 800490c:	e3 ff ff d6 	bi 8004864 <pthread_rwlock_init+0x3c>          
   * If the user passed in NULL, use the default attributes           
   */                                                                 
  if ( attr ) {                                                       
    the_attr = attr;                                                  
  } else {                                                            
    (void) pthread_rwlockattr_init( &default_attr );                  
 8004910:	37 8c 00 18 	addi r12,sp,24                                 
 8004914:	b9 80 08 00 	mv r1,r12                                      
 8004918:	f8 00 02 29 	calli 80051bc <pthread_rwlockattr_init>        
    the_attr = &default_attr;                                         
 800491c:	b9 80 10 00 	mv r2,r12                                      
 8004920:	e3 ff ff cc 	bi 8004850 <pthread_rwlock_init+0x28>          
                                                                      

080050e8 <pthread_rwlock_timedrdlock>: int pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 80050e8:	37 9c ff e0 	addi sp,sp,-32                                 
 80050ec:	5b 8b 00 18 	sw (sp+24),r11                                 
 80050f0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80050f4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80050f8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80050fc:	5b 8f 00 08 	sw (sp+8),r15                                  
 8005100:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005104:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 8005108:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedrdlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 800510c:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 8005110:	45 60 00 0c 	be r11,r0,8005140 <pthread_rwlock_timedrdlock+0x58>
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8005114:	37 82 00 1c 	addi r2,sp,28                                  
 8005118:	f8 00 1b df 	calli 800c094 <_POSIX_Absolute_timeout_to_ticks>
 800511c:	78 03 08 01 	mvhi r3,0x801                                  
 8005120:	29 62 00 00 	lw r2,(r11+0)                                  
 8005124:	b8 20 70 00 	mv r14,r1                                      
 8005128:	b8 60 08 00 	mv r1,r3                                       
 800512c:	38 21 9a 44 	ori r1,r1,0x9a44                               
 8005130:	37 83 00 20 	addi r3,sp,32                                  
 8005134:	f8 00 0b 7d 	calli 8007f28 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 8005138:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800513c:	45 a0 00 0a 	be r13,r0,8005164 <pthread_rwlock_timedrdlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8005140:	b9 80 08 00 	mv r1,r12                                      
 8005144:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005148:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800514c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8005150:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8005154:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8005158:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800515c:	37 9c 00 20 	addi sp,sp,32                                  
 8005160:	c3 a0 00 00 	ret                                            
int	_EXFUN(pthread_rwlock_init,                                       
	(pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));  
int	_EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));     
int	_EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedrdlock,                                
 8005164:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_reading(                                
 8005168:	29 62 00 00 	lw r2,(r11+0)                                  
 800516c:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8005170:	34 21 00 10 	addi r1,r1,16                                  
 8005174:	b9 e0 18 00 	mv r3,r15                                      
 8005178:	34 05 00 00 	mvi r5,0                                       
 800517c:	f8 00 07 2b 	calli 8006e28 <_CORE_RWLock_Obtain_for_reading>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8005180:	f8 00 0f 44 	calli 8008e90 <_Thread_Enable_dispatch>        
      if ( !do_wait ) {                                               
 8005184:	5d ed 00 10 	bne r15,r13,80051c4 <pthread_rwlock_timedrdlock+0xdc>
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
 8005188:	78 01 08 01 	mvhi r1,0x801                                  
 800518c:	38 21 9d a0 	ori r1,r1,0x9da0                               
 8005190:	28 21 00 10 	lw r1,(r1+16)                                  
 8005194:	34 02 00 02 	mvi r2,2                                       
 8005198:	28 21 00 34 	lw r1,(r1+52)                                  
 800519c:	44 22 00 04 	be r1,r2,80051ac <pthread_rwlock_timedrdlock+0xc4>
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
        }                                                             
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 80051a0:	f8 00 00 4a 	calli 80052c8 <_POSIX_RWLock_Translate_core_RWLock_return_code>
 80051a4:	b8 20 60 00 	mv r12,r1                                      
 80051a8:	e3 ff ff e6 	bi 8005140 <pthread_rwlock_timedrdlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
 80051ac:	45 cf ff e5 	be r14,r15,8005140 <pthread_rwlock_timedrdlock+0x58><== NEVER TAKEN
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
 80051b0:	35 ce ff ff 	addi r14,r14,-1                                
 80051b4:	34 02 00 01 	mvi r2,1                                       
	       status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                     
	    return ETIMEDOUT;                                                
 80051b8:	34 0c 00 74 	mvi r12,116                                    
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
        if ( _Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE ) {
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                    
	    return EINVAL;                                                   
	  if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                
 80051bc:	50 4e ff e1 	bgeu r2,r14,8005140 <pthread_rwlock_timedrdlock+0x58><== ALWAYS TAKEN
 80051c0:	e3 ff ff f8 	bi 80051a0 <pthread_rwlock_timedrdlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait ) {                                               
 80051c4:	78 01 08 01 	mvhi r1,0x801                                  
 80051c8:	38 21 9d a0 	ori r1,r1,0x9da0                               
 80051cc:	28 21 00 10 	lw r1,(r1+16)                                  
 80051d0:	28 21 00 34 	lw r1,(r1+52)                                  
 80051d4:	e3 ff ff f3 	bi 80051a0 <pthread_rwlock_timedrdlock+0xb8>   
                                                                      

080051d8 <pthread_rwlock_timedwrlock>: int pthread_rwlock_timedwrlock( pthread_rwlock_t *rwlock, const struct timespec *abstime ) {
 80051d8:	37 9c ff e0 	addi sp,sp,-32                                 
 80051dc:	5b 8b 00 18 	sw (sp+24),r11                                 
 80051e0:	5b 8c 00 14 	sw (sp+20),r12                                 
 80051e4:	5b 8d 00 10 	sw (sp+16),r13                                 
 80051e8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80051ec:	5b 8f 00 08 	sw (sp+8),r15                                  
 80051f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80051f4:	b8 20 58 00 	mv r11,r1                                      
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
    return EINVAL;                                                    
 80051f8:	34 0c 00 16 	mvi r12,22                                     
                                                                      
int pthread_rwlock_timedwrlock(                                       
  pthread_rwlock_t      *rwlock,                                      
  const struct timespec *abstime                                      
)                                                                     
{                                                                     
 80051fc:	b8 40 08 00 	mv r1,r2                                       
  Objects_Locations                            location;              
  Watchdog_Interval                            ticks;                 
  bool                                         do_wait = true;        
  POSIX_Absolute_timeout_conversion_results_t  status;                
                                                                      
  if ( !rwlock )                                                      
 8005200:	45 60 00 0c 	be r11,r0,8005230 <pthread_rwlock_timedwrlock+0x58>
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8005204:	37 82 00 1c 	addi r2,sp,28                                  
 8005208:	f8 00 1b a3 	calli 800c094 <_POSIX_Absolute_timeout_to_ticks>
 800520c:	78 03 08 01 	mvhi r3,0x801                                  
 8005210:	29 62 00 00 	lw r2,(r11+0)                                  
 8005214:	b8 20 70 00 	mv r14,r1                                      
 8005218:	b8 60 08 00 	mv r1,r3                                       
 800521c:	38 21 9a 44 	ori r1,r1,0x9a44                               
 8005220:	37 83 00 20 	addi r3,sp,32                                  
 8005224:	f8 00 0b 41 	calli 8007f28 <_Objects_Get>                   
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
 8005228:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800522c:	45 a0 00 0a 	be r13,r0,8005254 <pthread_rwlock_timedwrlock+0x7c>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8005230:	b9 80 08 00 	mv r1,r12                                      
 8005234:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005238:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800523c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8005240:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8005244:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8005248:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800524c:	37 9c 00 20 	addi sp,sp,32                                  
 8005250:	c3 a0 00 00 	ret                                            
        (pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
int	_EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));       
int	_EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));    
int	_EXFUN(pthread_rwlock_timedwrlock,                                
 8005254:	65 cf 00 03 	cmpei r15,r14,3                                
  the_rwlock = _POSIX_RWLock_Get( rwlock, &location );                
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      _CORE_RWLock_Obtain_for_writing(                                
 8005258:	29 62 00 00 	lw r2,(r11+0)                                  
 800525c:	2b 84 00 1c 	lw r4,(sp+28)                                  
 8005260:	34 21 00 10 	addi r1,r1,16                                  
 8005264:	b9 e0 18 00 	mv r3,r15                                      
 8005268:	34 05 00 00 	mvi r5,0                                       
 800526c:	f8 00 07 37 	calli 8006f48 <_CORE_RWLock_Obtain_for_writing>
	do_wait,                                                             
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
 8005270:	f8 00 0f 08 	calli 8008e90 <_Thread_Enable_dispatch>        
      if ( !do_wait &&                                                
 8005274:	5d ed 00 10 	bne r15,r13,80052b4 <pthread_rwlock_timedwrlock+0xdc>
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 8005278:	78 01 08 01 	mvhi r1,0x801                                  
 800527c:	38 21 9d a0 	ori r1,r1,0x9da0                               
 8005280:	28 21 00 10 	lw r1,(r1+16)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 8005284:	34 02 00 02 	mvi r2,2                                       
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
 8005288:	28 21 00 34 	lw r1,(r1+52)                                  
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 800528c:	44 22 00 04 	be r1,r2,800529c <pthread_rwlock_timedwrlock+0xc4>
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
      }                                                               
                                                                      
      return _POSIX_RWLock_Translate_core_RWLock_return_code(         
 8005290:	f8 00 00 0e 	calli 80052c8 <_POSIX_RWLock_Translate_core_RWLock_return_code>
 8005294:	b8 20 60 00 	mv r12,r1                                      
 8005298:	e3 ff ff e6 	bi 8005230 <pthread_rwlock_timedwrlock+0x58>   
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
 800529c:	45 cf ff e5 	be r14,r15,8005230 <pthread_rwlock_timedwrlock+0x58><== NEVER TAKEN
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
 80052a0:	35 ce ff ff 	addi r14,r14,-1                                
 80052a4:	34 02 00 01 	mvi r2,1                                       
	     status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )                       
	  return ETIMEDOUT;                                                  
 80052a8:	34 0c 00 74 	mvi r12,116                                    
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
           (_Thread_Executing->Wait.return_code == CORE_RWLOCK_UNAVAILABLE) ) {
	if ( status == POSIX_ABSOLUTE_TIMEOUT_INVALID )                      
	  return EINVAL;                                                     
	if ( status == POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST ||                  
 80052ac:	50 4e ff e1 	bgeu r2,r14,8005230 <pthread_rwlock_timedwrlock+0x58><== ALWAYS TAKEN
 80052b0:	e3 ff ff f8 	bi 8005290 <pthread_rwlock_timedwrlock+0xb8>   <== NOT EXECUTED
	ticks,                                                               
	NULL                                                                 
      );                                                              
                                                                      
      _Thread_Enable_dispatch();                                      
      if ( !do_wait &&                                                
 80052b4:	78 01 08 01 	mvhi r1,0x801                                  
 80052b8:	38 21 9d a0 	ori r1,r1,0x9da0                               
 80052bc:	28 21 00 10 	lw r1,(r1+16)                                  
 80052c0:	28 21 00 34 	lw r1,(r1+52)                                  
 80052c4:	e3 ff ff f3 	bi 8005290 <pthread_rwlock_timedwrlock+0xb8>   
                                                                      

08005c9c <pthread_rwlockattr_setpshared>: pthread_rwlockattr_t *attr, int pshared ) { if ( !attr ) return EINVAL;
 8005c9c:	34 03 00 16 	mvi r3,22                                      
int pthread_rwlockattr_setpshared(                                    
  pthread_rwlockattr_t *attr,                                         
  int                    pshared                                      
)                                                                     
{                                                                     
  if ( !attr )                                                        
 8005ca0:	44 20 00 07 	be r1,r0,8005cbc <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
 8005ca4:	28 24 00 00 	lw r4,(r1+0)                                   
 8005ca8:	44 80 00 05 	be r4,r0,8005cbc <pthread_rwlockattr_setpshared+0x20>
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
 8005cac:	34 04 00 01 	mvi r4,1                                       
 8005cb0:	54 44 00 03 	bgu r2,r4,8005cbc <pthread_rwlockattr_setpshared+0x20><== NEVER TAKEN
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
 8005cb4:	58 22 00 04 	sw (r1+4),r2                                   
      return 0;                                                       
 8005cb8:	34 03 00 00 	mvi r3,0                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
}                                                                     
 8005cbc:	b8 60 08 00 	mv r1,r3                                       
 8005cc0:	c3 a0 00 00 	ret                                            
                                                                      

0800720c <pthread_setschedparam>: int pthread_setschedparam( pthread_t thread, int policy, struct sched_param *param ) {
 800720c:	37 9c ff dc 	addi sp,sp,-36                                 
 8007210:	5b 8b 00 18 	sw (sp+24),r11                                 
 8007214:	5b 8c 00 14 	sw (sp+20),r12                                 
 8007218:	5b 8d 00 10 	sw (sp+16),r13                                 
 800721c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8007220:	5b 8f 00 08 	sw (sp+8),r15                                  
 8007224:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
    return EINVAL;                                                    
 8007228:	34 0c 00 16 	mvi r12,22                                     
int pthread_setschedparam(                                            
  pthread_t           thread,                                         
  int                 policy,                                         
  struct sched_param *param                                           
)                                                                     
{                                                                     
 800722c:	b8 60 58 00 	mv r11,r3                                      
 8007230:	b8 20 68 00 	mv r13,r1                                      
 8007234:	b8 40 70 00 	mv r14,r2                                      
  int                                  rc;                            
                                                                      
  /*                                                                  
   *  Check all the parameters                                        
   */                                                                 
  if ( !param )                                                       
 8007238:	44 60 00 08 	be r3,r0,8007258 <pthread_setschedparam+0x4c>  
    return EINVAL;                                                    
                                                                      
  rc = _POSIX_Thread_Translate_sched_param(                           
 800723c:	b8 40 08 00 	mv r1,r2                                       
 8007240:	37 84 00 20 	addi r4,sp,32                                  
 8007244:	b8 60 10 00 	mv r2,r3                                       
 8007248:	37 83 00 24 	addi r3,sp,36                                  
 800724c:	f8 00 19 b9 	calli 800d930 <_POSIX_Thread_Translate_sched_param>
 8007250:	b8 20 60 00 	mv r12,r1                                      
    policy,                                                           
    param,                                                            
    &budget_algorithm,                                                
    &budget_callout                                                   
  );                                                                  
  if ( rc )                                                           
 8007254:	44 20 00 0a 	be r1,r0,800727c <pthread_setschedparam+0x70>  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
}                                                                     
 8007258:	b9 80 08 00 	mv r1,r12                                      
 800725c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007260:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8007264:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8007268:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800726c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8007270:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8007274:	37 9c 00 24 	addi sp,sp,36                                  
 8007278:	c3 a0 00 00 	ret                                            
    return rc;                                                        
                                                                      
  /*                                                                  
   *  Actually change the scheduling policy and parameters            
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
 800727c:	b9 a0 08 00 	mv r1,r13                                      
 8007280:	37 82 00 1c 	addi r2,sp,28                                  
 8007284:	f8 00 0c 38 	calli 800a364 <_Thread_Get>                    
 8007288:	b8 20 78 00 	mv r15,r1                                      
  switch ( location ) {                                               
 800728c:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8007290:	44 2c 00 03 	be r1,r12,800729c <pthread_setschedparam+0x90> 
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return ESRCH;                                                       
 8007294:	34 0c 00 03 	mvi r12,3                                      
 8007298:	e3 ff ff f0 	bi 8007258 <pthread_setschedparam+0x4c>        
   */                                                                 
  the_thread = _Thread_Get( thread, &location );                      
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
 800729c:	29 ed 01 1c 	lw r13,(r15+284)                               
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
 80072a0:	34 01 00 04 	mvi r1,4                                       
 80072a4:	29 a2 00 84 	lw r2,(r13+132)                                
 80072a8:	44 41 00 31 	be r2,r1,800736c <pthread_setschedparam+0x160> 
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
                                                                      
      api->schedpolicy = policy;                                      
 80072ac:	59 ae 00 84 	sw (r13+132),r14                               
      api->schedparam  = *param;                                      
 80072b0:	29 62 00 00 	lw r2,(r11+0)                                  
 80072b4:	59 a2 00 88 	sw (r13+136),r2                                
 80072b8:	29 61 00 04 	lw r1,(r11+4)                                  
 80072bc:	59 a1 00 8c 	sw (r13+140),r1                                
 80072c0:	29 61 00 08 	lw r1,(r11+8)                                  
 80072c4:	59 a1 00 90 	sw (r13+144),r1                                
 80072c8:	29 61 00 0c 	lw r1,(r11+12)                                 
 80072cc:	59 a1 00 94 	sw (r13+148),r1                                
 80072d0:	29 61 00 10 	lw r1,(r11+16)                                 
 80072d4:	59 a1 00 98 	sw (r13+152),r1                                
 80072d8:	29 61 00 14 	lw r1,(r11+20)                                 
 80072dc:	59 a1 00 9c 	sw (r13+156),r1                                
 80072e0:	29 61 00 18 	lw r1,(r11+24)                                 
 80072e4:	59 a1 00 a0 	sw (r13+160),r1                                
      the_thread->budget_algorithm = budget_algorithm;                
 80072e8:	2b 81 00 24 	lw r1,(sp+36)                                  
 80072ec:	59 e1 00 78 	sw (r15+120),r1                                
      the_thread->budget_callout   = budget_callout;                  
 80072f0:	2b 81 00 20 	lw r1,(sp+32)                                  
 80072f4:	59 e1 00 7c 	sw (r15+124),r1                                
                                                                      
      switch ( api->schedpolicy ) {                                   
 80072f8:	48 0e 00 05 	bg r0,r14,800730c <pthread_setschedparam+0x100><== NEVER TAKEN
 80072fc:	34 01 00 02 	mvi r1,2                                       
 8007300:	4c 2e 00 0d 	bge r1,r14,8007334 <pthread_setschedparam+0x128>
 8007304:	34 01 00 04 	mvi r1,4                                       
 8007308:	45 c1 00 03 	be r14,r1,8007314 <pthread_setschedparam+0x108><== ALWAYS TAKEN
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 800730c:	f8 00 0c 0a 	calli 800a334 <_Thread_Enable_dispatch>        <== NOT EXECUTED
      return 0;                                                       
 8007310:	e3 ff ff d2 	bi 8007258 <pthread_setschedparam+0x4c>        <== NOT EXECUTED
             true                                                     
          );                                                          
          break;                                                      
                                                                      
        case SCHED_SPORADIC:                                          
          api->ss_high_priority = api->schedparam.sched_priority;     
 8007314:	59 a2 00 a4 	sw (r13+164),r2                                
          _Watchdog_Remove( &api->Sporadic_timer );                   
 8007318:	35 a1 00 a8 	addi r1,r13,168                                
 800731c:	f8 00 10 de 	calli 800b694 <_Watchdog_Remove>               
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
 8007320:	34 01 00 00 	mvi r1,0                                       
 8007324:	b9 e0 10 00 	mv r2,r15                                      
 8007328:	fb ff ff 68 	calli 80070c8 <_POSIX_Threads_Sporadic_budget_TSR>
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 800732c:	f8 00 0c 02 	calli 800a334 <_Thread_Enable_dispatch>        
 8007330:	e3 ff ff ca 	bi 8007258 <pthread_setschedparam+0x4c>        
 8007334:	78 03 08 01 	mvhi r3,0x801                                  
 8007338:	38 63 b0 fc 	ori r3,r3,0xb0fc                               
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 800733c:	78 01 08 01 	mvhi r1,0x801                                  
 8007340:	38 21 b8 e0 	ori r1,r1,0xb8e0                               
 8007344:	40 63 00 00 	lbu r3,(r3+0)                                  
 8007348:	28 24 00 00 	lw r4,(r1+0)                                   
                                                                      
          the_thread->real_priority =                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 800734c:	b9 e0 08 00 	mv r1,r15                                      
 8007350:	c8 62 10 00 	sub r2,r3,r2                                   
                                                                      
      switch ( api->schedpolicy ) {                                   
        case SCHED_OTHER:                                             
        case SCHED_FIFO:                                              
        case SCHED_RR:                                                
          the_thread->cpu_time_budget = _Thread_Ticks_per_timeslice;  
 8007354:	59 e4 00 74 	sw (r15+116),r4                                
                                                                      
          the_thread->real_priority =                                 
 8007358:	59 e2 00 18 	sw (r15+24),r2                                 
            _POSIX_Priority_To_core( api->schedparam.sched_priority );
                                                                      
          _Thread_Change_priority(                                    
 800735c:	34 03 00 01 	mvi r3,1                                       
 8007360:	f8 00 0a a0 	calli 8009de0 <_Thread_Change_priority>        
          _Watchdog_Remove( &api->Sporadic_timer );                   
          _POSIX_Threads_Sporadic_budget_TSR( 0, the_thread );        
          break;                                                      
      }                                                               
                                                                      
      _Thread_Enable_dispatch();                                      
 8007364:	f8 00 0b f4 	calli 800a334 <_Thread_Enable_dispatch>        
 8007368:	e3 ff ff bc 	bi 8007258 <pthread_setschedparam+0x4c>        
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_POSIX ];           
                                                                      
      if ( api->schedpolicy == SCHED_SPORADIC )                       
        (void) _Watchdog_Remove( &api->Sporadic_timer );              
 800736c:	35 a1 00 a8 	addi r1,r13,168                                
 8007370:	f8 00 10 c9 	calli 800b694 <_Watchdog_Remove>               
 8007374:	e3 ff ff ce 	bi 80072ac <pthread_setschedparam+0xa0>        
                                                                      

08003fd8 <pthread_spin_unlock>: */ int pthread_spin_unlock( pthread_spinlock_t *spinlock ) {
 8003fd8:	37 9c ff f0 	addi sp,sp,-16                                 
 8003fdc:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003fe0:	5b 9d 00 04 	sw (sp+4),ra                                   
  POSIX_Spinlock_Control  *the_spinlock = NULL;                       
  Objects_Locations        location;                                  
  CORE_spinlock_Status     status;                                    
                                                                      
  if ( !spinlock )                                                    
    return EINVAL;                                                    
 8003fe4:	34 0b 00 16 	mvi r11,22                                     
{                                                                     
  POSIX_Spinlock_Control  *the_spinlock = NULL;                       
  Objects_Locations        location;                                  
  CORE_spinlock_Status     status;                                    
                                                                      
  if ( !spinlock )                                                    
 8003fe8:	44 20 00 0f 	be r1,r0,8004024 <pthread_spin_unlock+0x4c>    <== NEVER TAKEN
 8003fec:	28 22 00 00 	lw r2,(r1+0)                                   
 8003ff0:	78 01 08 01 	mvhi r1,0x801                                  
 8003ff4:	38 21 6b 04 	ori r1,r1,0x6b04                               
 8003ff8:	37 83 00 10 	addi r3,sp,16                                  
 8003ffc:	f8 00 08 cd 	calli 8006330 <_Objects_Get>                   
    return EINVAL;                                                    
                                                                      
  the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );          
  switch ( location ) {                                               
 8004000:	2b 82 00 10 	lw r2,(sp+16)                                  
 8004004:	5c 40 00 08 	bne r2,r0,8004024 <pthread_spin_unlock+0x4c>   
                                                                      
    case OBJECTS_LOCAL:                                               
      status = _CORE_spinlock_Release( &the_spinlock->Spinlock );     
 8004008:	34 21 00 10 	addi r1,r1,16                                  
 800400c:	f8 00 05 06 	calli 8005424 <_CORE_spinlock_Release>         
      _Thread_Enable_dispatch();                                      
 8004010:	5b 81 00 0c 	sw (sp+12),r1                                  
 8004014:	f8 00 0c da 	calli 800737c <_Thread_Enable_dispatch>        
      return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
 8004018:	2b 81 00 0c 	lw r1,(sp+12)                                  
 800401c:	fb ff ff cf 	calli 8003f58 <_POSIX_Spinlock_Translate_core_spinlock_return_code>
 8004020:	b8 20 58 00 	mv r11,r1                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
}                                                                     
 8004024:	b9 60 08 00 	mv r1,r11                                      
 8004028:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800402c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004030:	37 9c 00 10 	addi sp,sp,16                                  
 8004034:	c3 a0 00 00 	ret                                            
                                                                      

08004350 <pthread_testcancel>: /* * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 */ void pthread_testcancel( void ) {
 8004350:	37 9c ff f8 	addi sp,sp,-8                                  
 8004354:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004358:	5b 9d 00 04 	sw (sp+4),ra                                   
   *  Don't even think about deleting a resource from an ISR.         
   *  Besides this request is supposed to be for _Thread_Executing    
   *  and the ISR context is not a thread.                            
   */                                                                 
                                                                      
  if ( _ISR_Is_in_progress() )                                        
 800435c:	78 0b 08 01 	mvhi r11,0x801                                 
 8004360:	39 6b 7d 80 	ori r11,r11,0x7d80                             
 8004364:	29 62 00 08 	lw r2,(r11+8)                                  
 8004368:	5c 40 00 10 	bne r2,r0,80043a8 <pthread_testcancel+0x58>    <== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800436c:	78 01 08 01 	mvhi r1,0x801                                  
 8004370:	38 21 78 e0 	ori r1,r1,0x78e0                               
 8004374:	28 24 00 00 	lw r4,(r1+0)                                   
    return;                                                           
                                                                      
  thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
 8004378:	29 63 00 10 	lw r3,(r11+16)                                 
                                                                      
    ++level;                                                          
 800437c:	34 84 00 01 	addi r4,r4,1                                   
 8004380:	28 63 01 1c 	lw r3,(r3+284)                                 
    _Thread_Dispatch_disable_level = level;                           
 8004384:	58 24 00 00 	sw (r1+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
 8004388:	28 61 00 d8 	lw r1,(r3+216)                                 
 800438c:	5c 22 00 0b 	bne r1,r2,80043b8 <pthread_testcancel+0x68>    <== NEVER TAKEN
 8004390:	28 62 00 e0 	lw r2,(r3+224)                                 
 8004394:	44 41 00 09 	be r2,r1,80043b8 <pthread_testcancel+0x68>     
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 8004398:	f8 00 0b 34 	calli 8007068 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
 800439c:	29 61 00 10 	lw r1,(r11+16)                                 
 80043a0:	34 02 ff ff 	mvi r2,-1                                      
 80043a4:	f8 00 18 da 	calli 800a70c <_POSIX_Thread_Exit>             
}                                                                     
 80043a8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80043ac:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80043b0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80043b4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  _Thread_Disable_dispatch();                                         
    if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE &&
         thread_support->cancelation_requested )                      
      cancel = true;                                                  
  _Thread_Enable_dispatch();                                          
 80043b8:	f8 00 0b 2c 	calli 8007068 <_Thread_Enable_dispatch>        
                                                                      
  if ( cancel )                                                       
    _POSIX_Thread_Exit( _Thread_Executing, PTHREAD_CANCELED );        
}                                                                     
 80043bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80043c0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80043c4:	37 9c 00 08 	addi sp,sp,8                                   
 80043c8:	c3 a0 00 00 	ret                                            
                                                                      

08009568 <ramdisk_allocate>: void *area_begin, uint32_t media_block_size, rtems_blkdev_bnum media_block_count, bool trace ) {
 8009568:	37 9c ff e4 	addi sp,sp,-28                                 
 800956c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009570:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009574:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009578:	5b 8e 00 10 	sw (sp+16),r14                                 
 800957c:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009580:	5b 90 00 08 	sw (sp+8),r16                                  
 8009584:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009588:	b8 20 68 00 	mv r13,r1                                      
  struct ramdisk *rd = malloc(sizeof(struct ramdisk));                
 800958c:	34 01 00 10 	mvi r1,16                                      
  void *area_begin,                                                   
  uint32_t media_block_size,                                          
  rtems_blkdev_bnum media_block_count,                                
  bool trace                                                          
)                                                                     
{                                                                     
 8009590:	b8 40 78 00 	mv r15,r2                                      
 8009594:	b8 60 70 00 	mv r14,r3                                      
 8009598:	20 90 00 ff 	andi r16,r4,0xff                               
  struct ramdisk *rd = malloc(sizeof(struct ramdisk));                
 800959c:	fb ff e6 5c 	calli 8002f0c <malloc>                         
 80095a0:	b8 20 60 00 	mv r12,r1                                      
 80095a4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if (rd == NULL) {                                                   
 80095a8:	44 20 00 09 	be r1,r0,80095cc <ramdisk_allocate+0x64>       <== NEVER TAKEN
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
 80095ac:	45 a0 00 12 	be r13,r0,80095f4 <ramdisk_allocate+0x8c>      
                                                                      
      return NULL;                                                    
    }                                                                 
    rd->malloced = true;                                              
  } else {                                                            
    rd->malloced = false;                                             
 80095b0:	30 20 00 0d 	sb (r1+13),r0                                  
  }                                                                   
  rd->block_size = media_block_size;                                  
  rd->block_num = media_block_count;                                  
  rd->area = area_begin;                                              
  rd->trace = trace;                                                  
  rd->initialized = true;                                             
 80095b4:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
    rd->malloced = true;                                              
  } else {                                                            
    rd->malloced = false;                                             
  }                                                                   
  rd->block_size = media_block_size;                                  
 80095b8:	59 6f 00 00 	sw (r11+0),r15                                 
  rd->block_num = media_block_count;                                  
 80095bc:	59 6e 00 04 	sw (r11+4),r14                                 
  rd->area = area_begin;                                              
 80095c0:	59 6d 00 08 	sw (r11+8),r13                                 
  rd->trace = trace;                                                  
 80095c4:	31 70 00 0e 	sb (r11+14),r16                                
  rd->initialized = true;                                             
 80095c8:	31 61 00 0c 	sb (r11+12),r1                                 
                                                                      
  return rd;                                                          
}                                                                     
 80095cc:	b9 80 08 00 	mv r1,r12                                      
 80095d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80095d4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80095d8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80095dc:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80095e0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80095e4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80095e8:	2b 90 00 08 	lw r16,(sp+8)                                  
 80095ec:	37 9c 00 1c 	addi sp,sp,28                                  
 80095f0:	c3 a0 00 00 	ret                                            
  if (rd == NULL) {                                                   
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    area_begin = calloc(media_block_count, media_block_size);         
 80095f4:	b9 c0 08 00 	mv r1,r14                                      
 80095f8:	b9 e0 10 00 	mv r2,r15                                      
 80095fc:	fb ff e4 62 	calli 8002784 <calloc>                         
 8009600:	b8 20 68 00 	mv r13,r1                                      
    if (area_begin == NULL) {                                         
 8009604:	44 20 00 04 	be r1,r0,8009614 <ramdisk_allocate+0xac>       <== NEVER TAKEN
      free(rd);                                                       
                                                                      
      return NULL;                                                    
    }                                                                 
    rd->malloced = true;                                              
 8009608:	34 01 00 01 	mvi r1,1                                       
 800960c:	31 81 00 0d 	sb (r12+13),r1                                 
 8009610:	e3 ff ff e9 	bi 80095b4 <ramdisk_allocate+0x4c>             
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    area_begin = calloc(media_block_count, media_block_size);         
    if (area_begin == NULL) {                                         
      free(rd);                                                       
 8009614:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8009618:	fb ff e4 a9 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
      return NULL;                                                    
 800961c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 8009620:	e3 ff ff eb 	bi 80095cc <ramdisk_allocate+0x64>             <== NOT EXECUTED
                                                                      

08009624 <ramdisk_free>: return rd; } void ramdisk_free(ramdisk *rd) {
 8009624:	37 9c ff f8 	addi sp,sp,-8                                  
 8009628:	5b 8b 00 08 	sw (sp+8),r11                                  
 800962c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009630:	b8 20 58 00 	mv r11,r1                                      
  if (rd != NULL) {                                                   
 8009634:	44 20 00 05 	be r1,r0,8009648 <ramdisk_free+0x24>           <== NEVER TAKEN
    if (rd->malloced) {                                               
 8009638:	40 21 00 0d 	lbu r1,(r1+13)                                 
 800963c:	5c 20 00 07 	bne r1,r0,8009658 <ramdisk_free+0x34>          
      free(rd->area);                                                 
    }                                                                 
    free(rd);                                                         
 8009640:	b9 60 08 00 	mv r1,r11                                      
 8009644:	fb ff e4 9e 	calli 80028bc <free>                           
  }                                                                   
}                                                                     
 8009648:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800964c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009650:	37 9c 00 08 	addi sp,sp,8                                   
 8009654:	c3 a0 00 00 	ret                                            
                                                                      
void ramdisk_free(ramdisk *rd)                                        
{                                                                     
  if (rd != NULL) {                                                   
    if (rd->malloced) {                                               
      free(rd->area);                                                 
 8009658:	29 61 00 08 	lw r1,(r11+8)                                  
 800965c:	fb ff e4 98 	calli 80028bc <free>                           
 8009660:	e3 ff ff f8 	bi 8009640 <ramdisk_free+0x1c>                 
                                                                      

0800b2b0 <ramdisk_initialize>: rtems_device_driver ramdisk_initialize( rtems_device_major_number major, rtems_device_minor_number minor __attribute__((unused)), void *arg __attribute__((unused))) {
 800b2b0:	37 9c ff bc 	addi sp,sp,-68                                 
 800b2b4:	5b 8b 00 30 	sw (sp+48),r11                                 
 800b2b8:	5b 8c 00 2c 	sw (sp+44),r12                                 
 800b2bc:	5b 8d 00 28 	sw (sp+40),r13                                 
 800b2c0:	5b 8e 00 24 	sw (sp+36),r14                                 
 800b2c4:	5b 8f 00 20 	sw (sp+32),r15                                 
 800b2c8:	5b 90 00 1c 	sw (sp+28),r16                                 
 800b2cc:	5b 91 00 18 	sw (sp+24),r17                                 
 800b2d0:	5b 92 00 14 	sw (sp+20),r18                                 
 800b2d4:	5b 93 00 10 	sw (sp+16),r19                                 
 800b2d8:	5b 94 00 0c 	sw (sp+12),r20                                 
 800b2dc:	5b 95 00 08 	sw (sp+8),r21                                  
 800b2e0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800b2e4:	b8 20 90 00 	mv r18,r1                                      
    rtems_device_minor_number i;                                      
    rtems_ramdisk_config *c = rtems_ramdisk_configuration;            
    struct ramdisk *r;                                                
    rtems_status_code rc;                                             
                                                                      
    rc = rtems_disk_io_initialize();                                  
 800b2e8:	fb ff de ea 	calli 8002e90 <rtems_disk_io_initialize>       
 800b2ec:	b8 20 60 00 	mv r12,r1                                      
    if (rc != RTEMS_SUCCESSFUL)                                       
 800b2f0:	b8 20 10 00 	mv r2,r1                                       
 800b2f4:	44 20 00 10 	be r1,r0,800b334 <ramdisk_initialize+0x84>     <== ALWAYS TAKEN
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 800b2f8:	b8 40 08 00 	mv r1,r2                                       
 800b2fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b300:	2b 8b 00 30 	lw r11,(sp+48)                                 
 800b304:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 800b308:	2b 8d 00 28 	lw r13,(sp+40)                                 
 800b30c:	2b 8e 00 24 	lw r14,(sp+36)                                 
 800b310:	2b 8f 00 20 	lw r15,(sp+32)                                 
 800b314:	2b 90 00 1c 	lw r16,(sp+28)                                 
 800b318:	2b 91 00 18 	lw r17,(sp+24)                                 
 800b31c:	2b 92 00 14 	lw r18,(sp+20)                                 
 800b320:	2b 93 00 10 	lw r19,(sp+16)                                 
 800b324:	2b 94 00 0c 	lw r20,(sp+12)                                 
 800b328:	2b 95 00 08 	lw r21,(sp+8)                                  
 800b32c:	37 9c 00 44 	addi sp,sp,68                                  
 800b330:	c3 a0 00 00 	ret                                            
     * This is allocating memory for a RAM disk which will persist for
     * the life of the system. RTEMS has no "de-initialize" driver call
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
 800b334:	78 0f 08 02 	mvhi r15,0x802                                 
 800b338:	39 ef 90 10 	ori r15,r15,0x9010                             
 800b33c:	29 ed 00 00 	lw r13,(r15+0)                                 
 800b340:	34 02 00 10 	mvi r2,16                                      
 800b344:	b9 a0 08 00 	mv r1,r13                                      
 800b348:	fb ff e3 8a 	calli 8004170 <calloc>                         
    r->trace = false;                                                 
 800b34c:	30 20 00 0e 	sb (r1+14),r0                                  
     * This is allocating memory for a RAM disk which will persist for
     * the life of the system. RTEMS has no "de-initialize" driver call
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
 800b350:	b8 20 58 00 	mv r11,r1                                      
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
 800b354:	b9 80 10 00 	mv r2,r12                                      
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
 800b358:	45 ac ff e8 	be r13,r12,800b2f8 <ramdisk_initialize+0x48>   <== NEVER TAKEN
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
 800b35c:	78 01 08 02 	mvhi r1,0x802                                  
 800b360:	38 21 77 b8 	ori r1,r1,0x77b8                               
 800b364:	28 34 00 00 	lw r20,(r1+0)                                  
 800b368:	78 01 08 02 	mvhi r1,0x802                                  
 800b36c:	38 21 77 bc 	ori r1,r1,0x77bc                               
 800b370:	28 33 00 00 	lw r19,(r1+0)                                  
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
 800b374:	78 0c 08 02 	mvhi r12,0x802                                 
        {                                                             
            r->malloced = false;                                      
            r->initialized = true;                                    
            r->area = c->location;                                    
        }                                                             
        rc = rtems_disk_create_phys(dev, c->block_size, c->block_num, 
 800b378:	78 10 08 00 	mvhi r16,0x800                                 
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
 800b37c:	39 8c 90 04 	ori r12,r12,0x9004                             
 800b380:	34 0d 00 00 	mvi r13,0                                      
        {                                                             
            r->malloced = false;                                      
            r->initialized = true;                                    
            r->area = c->location;                                    
        }                                                             
        rc = rtems_disk_create_phys(dev, c->block_size, c->block_num, 
 800b384:	3a 10 b4 48 	ori r16,r16,0xb448                             
 800b388:	37 95 00 3c 	addi r21,sp,60                                 
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            r->malloced = false;                                      
            r->initialized = true;                                    
 800b38c:	34 11 00 01 	mvi r17,1                                      
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
 800b390:	29 83 00 00 	lw r3,(r12+0)                                  
        r->block_num = c->block_num;                                  
 800b394:	29 84 00 04 	lw r4,(r12+4)                                  
        if (c->location == NULL)                                      
 800b398:	29 8e 00 08 	lw r14,(r12+8)                                 
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
 800b39c:	5b 94 00 3c 	sw (sp+60),r20                                 
 800b3a0:	5b 93 00 40 	sw (sp+64),r19                                 
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
 800b3a4:	33 8d 00 44 	sb (sp+68),r13                                 
        r->block_size = c->block_size;                                
 800b3a8:	59 63 00 00 	sw (r11+0),r3                                  
        r->block_num = c->block_num;                                  
 800b3ac:	59 64 00 04 	sw (r11+4),r4                                  
        if (c->location == NULL)                                      
 800b3b0:	45 c0 00 19 	be r14,r0,800b414 <ramdisk_initialize+0x164>   <== ALWAYS TAKEN
                r->initialized = true;                                
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            r->malloced = false;                                      
 800b3b4:	31 60 00 0d 	sb (r11+13),r0                                 <== NOT EXECUTED
            r->initialized = true;                                    
 800b3b8:	31 71 00 0c 	sb (r11+12),r17                                <== NOT EXECUTED
            r->area = c->location;                                    
 800b3bc:	59 6e 00 08 	sw (r11+8),r14                                 <== NOT EXECUTED
        }                                                             
        rc = rtems_disk_create_phys(dev, c->block_size, c->block_num, 
 800b3c0:	ba 40 08 00 	mv r1,r18                                      
 800b3c4:	b9 a0 10 00 	mv r2,r13                                      
 800b3c8:	ba 00 28 00 	mv r5,r16                                      
 800b3cc:	b9 60 30 00 	mv r6,r11                                      
 800b3d0:	ba a0 38 00 	mv r7,r21                                      
 800b3d4:	fb ff dd d5 	calli 8002b28 <rtems_disk_create_phys>         
                                    ramdisk_ioctl, r, name);          
        if (rc != RTEMS_SUCCESSFUL)                                   
 800b3d8:	44 20 00 04 	be r1,r0,800b3e8 <ramdisk_initialize+0x138>    <== ALWAYS TAKEN
        {                                                             
            if (r->malloced)                                          
 800b3dc:	41 61 00 0d 	lbu r1,(r11+13)                                <== NOT EXECUTED
 800b3e0:	5c 20 00 08 	bne r1,r0,800b400 <ramdisk_initialize+0x150>   <== NOT EXECUTED
            {                                                         
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
 800b3e4:	31 60 00 0c 	sb (r11+12),r0                                 <== NOT EXECUTED
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
 800b3e8:	29 e1 00 00 	lw r1,(r15+0)                                  
 800b3ec:	35 ad 00 01 	addi r13,r13,1                                 
 800b3f0:	51 a1 00 07 	bgeu r13,r1,800b40c <ramdisk_initialize+0x15c> <== ALWAYS TAKEN
 800b3f4:	35 8c 00 0c 	addi r12,r12,12                                <== NOT EXECUTED
 800b3f8:	35 6b 00 10 	addi r11,r11,16                                <== NOT EXECUTED
 800b3fc:	e3 ff ff e5 	bi 800b390 <ramdisk_initialize+0xe0>           <== NOT EXECUTED
                                    ramdisk_ioctl, r, name);          
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            if (r->malloced)                                          
            {                                                         
                free(r->area);                                        
 800b400:	29 61 00 08 	lw r1,(r11+8)                                  <== NOT EXECUTED
 800b404:	fb ff e3 a9 	calli 80042a8 <free>                           <== NOT EXECUTED
 800b408:	e3 ff ff f7 	bi 800b3e4 <ramdisk_initialize+0x134>          <== NOT EXECUTED
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
 800b40c:	34 02 00 00 	mvi r2,0                                       
 800b410:	e3 ff ff ba 	bi 800b2f8 <ramdisk_initialize+0x48>           
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
            r->area = malloc(r->block_size * r->block_num);           
 800b414:	b8 60 10 00 	mv r2,r3                                       
 800b418:	b8 80 08 00 	mv r1,r4                                       
 800b41c:	5b 83 00 38 	sw (sp+56),r3                                  
 800b420:	5b 84 00 34 	sw (sp+52),r4                                  
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
 800b424:	31 71 00 0d 	sb (r11+13),r17                                
            r->area = malloc(r->block_size * r->block_num);           
 800b428:	f8 00 6c 5d 	calli 802659c <__mulsi3>                       
 800b42c:	fb ff e5 93 	calli 8004a78 <malloc>                         
 800b430:	59 61 00 08 	sw (r11+8),r1                                  
            if (r->area == NULL) /* No enough memory for this disk */ 
 800b434:	2b 83 00 38 	lw r3,(sp+56)                                  
 800b438:	2b 84 00 34 	lw r4,(sp+52)                                  
 800b43c:	44 2e ff ea 	be r1,r14,800b3e4 <ramdisk_initialize+0x134>   <== NEVER TAKEN
                r->initialized = false;                               
                continue;                                             
            }                                                         
            else                                                      
            {                                                         
                r->initialized = true;                                
 800b440:	31 71 00 0c 	sb (r11+12),r17                                
 800b444:	e3 ff ff df 	bi 800b3c0 <ramdisk_initialize+0x110>          
                                                                      

0800940c <ramdisk_ioctl>: return 0; } int ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) {
 800940c:	37 9c ff e4 	addi sp,sp,-28                                 
 8009410:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009414:	5b 8c 00 18 	sw (sp+24),r12                                 
 8009418:	5b 8d 00 14 	sw (sp+20),r13                                 
 800941c:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009420:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009424:	5b 90 00 08 	sw (sp+8),r16                                  
 8009428:	5b 9d 00 04 	sw (sp+4),ra                                   
    struct ramdisk *rd = rtems_disk_get_driver_data(dd);              
                                                                      
    switch (req)                                                      
 800942c:	78 06 08 01 	mvhi r6,0x801                                  
 8009430:	38 c6 92 b8 	ori r6,r6,0x92b8                               
 8009434:	28 c5 00 00 	lw r5,(r6+0)                                   
    return 0;                                                         
}                                                                     
                                                                      
int                                                                   
ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)        
{                                                                     
 8009438:	b8 60 58 00 	mv r11,r3                                      
    struct ramdisk *rd = rtems_disk_get_driver_data(dd);              
 800943c:	28 2d 00 3c 	lw r13,(r1+60)                                 
                                                                      
    switch (req)                                                      
 8009440:	44 45 00 0f 	be r2,r5,800947c <ramdisk_ioctl+0x70>          
 8009444:	78 06 08 01 	mvhi r6,0x801                                  
 8009448:	38 c6 96 94 	ori r6,r6,0x9694                               
 800944c:	28 c5 00 00 	lw r5,(r6+0)                                   
 8009450:	44 45 00 12 	be r2,r5,8009498 <ramdisk_ioctl+0x8c>          
              ramdisk_free(rd);                                       
            }                                                         
            break;                                                    
                                                                      
        default:                                                      
            return rtems_blkdev_ioctl (dd, req, argp);                
 8009454:	f8 00 0c 65 	calli 800c5e8 <rtems_blkdev_ioctl>             
            break;                                                    
    }                                                                 
                                                                      
    errno = EINVAL;                                                   
    return -1;                                                        
}                                                                     
 8009458:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800945c:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8009460:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8009464:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8009468:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800946c:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8009470:	2b 90 00 08 	lw r16,(sp+8)                                  
 8009474:	37 9c 00 1c 	addi sp,sp,28                                  
 8009478:	c3 a0 00 00 	ret                                            
            }                                                         
            break;                                                    
        }                                                             
                                                                      
        case RTEMS_BLKIO_DELETED:                                     
            if (rd->free_at_delete_request) {                         
 800947c:	41 a1 00 0f 	lbu r1,(r13+15)                                
 8009480:	5c 20 00 37 	bne r1,r0,800955c <ramdisk_ioctl+0x150>        
        default:                                                      
            return rtems_blkdev_ioctl (dd, req, argp);                
            break;                                                    
    }                                                                 
                                                                      
    errno = EINVAL;                                                   
 8009484:	f8 00 24 90 	calli 80126c4 <__errno>                        
 8009488:	34 02 00 16 	mvi r2,22                                      
 800948c:	58 22 00 00 	sw (r1+0),r2                                   
    return -1;                                                        
 8009490:	34 01 ff ff 	mvi r1,-1                                      
 8009494:	e3 ff ff f1 	bi 8009458 <ramdisk_ioctl+0x4c>                
    {                                                                 
        case RTEMS_BLKIO_REQUEST:                                     
        {                                                             
            rtems_blkdev_request *r = argp;                           
                                                                      
            switch (r->req)                                           
 8009498:	28 61 00 00 	lw r1,(r3+0)                                   
 800949c:	44 20 00 19 	be r1,r0,8009500 <ramdisk_ioctl+0xf4>          
 80094a0:	34 02 00 01 	mvi r2,1                                       
 80094a4:	5c 22 ff f8 	bne r1,r2,8009484 <ramdisk_ioctl+0x78>         <== NEVER TAKEN
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 80094a8:	28 61 00 10 	lw r1,(r3+16)                                  
}                                                                     
                                                                      
static int                                                            
ramdisk_write(struct ramdisk *rd, rtems_blkdev_request *req)          
{                                                                     
    uint8_t *to = rd->area;                                           
 80094ac:	29 af 00 08 	lw r15,(r13+8)                                 
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 80094b0:	44 20 00 0e 	be r1,r0,80094e8 <ramdisk_ioctl+0xdc>          <== NEVER TAKEN
 80094b4:	34 6c 00 18 	addi r12,r3,24                                 
 80094b8:	34 0e 00 00 	mvi r14,0                                      
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              to + (sg->block * rd->block_size));     
#endif                                                                
        memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
 80094bc:	29 82 00 00 	lw r2,(r12+0)                                  
 80094c0:	29 a1 00 00 	lw r1,(r13+0)                                  
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 80094c4:	35 ce 00 01 	addi r14,r14,1                                 
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              to + (sg->block * rd->block_size));     
#endif                                                                
        memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
 80094c8:	f8 00 3c 11 	calli 801850c <__mulsi3>                       
 80094cc:	29 82 00 08 	lw r2,(r12+8)                                  
 80094d0:	29 83 00 04 	lw r3,(r12+4)                                  
 80094d4:	b5 e1 08 00 	add r1,r15,r1                                  
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 80094d8:	35 8c 00 10 	addi r12,r12,16                                
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              to + (sg->block * rd->block_size));     
#endif                                                                
        memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
 80094dc:	f8 00 27 52 	calli 8013224 <memcpy>                         
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 80094e0:	29 61 00 10 	lw r1,(r11+16)                                 
 80094e4:	54 2e ff f6 	bgu r1,r14,80094bc <ramdisk_ioctl+0xb0>        
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
 80094e8:	29 63 00 04 	lw r3,(r11+4)                                  
 80094ec:	b9 60 08 00 	mv r1,r11                                      
 80094f0:	34 02 00 00 	mvi r2,0                                       
 80094f4:	d8 60 00 00 	call r3                                        
            {                                                         
                case RTEMS_BLKDEV_REQ_READ:                           
                    return ramdisk_read(rd, r);                       
                                                                      
                case RTEMS_BLKDEV_REQ_WRITE:                          
                    return ramdisk_write(rd, r);                      
 80094f8:	34 01 00 00 	mvi r1,0                                       
 80094fc:	e3 ff ff d7 	bi 8009458 <ramdisk_ioctl+0x4c>                
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 8009500:	28 62 00 10 	lw r2,(r3+16)                                  
#endif                                                                
                                                                      
static int                                                            
ramdisk_read(struct ramdisk *rd, rtems_blkdev_request *req)           
{                                                                     
    uint8_t *from = rd->area;                                         
 8009504:	29 af 00 08 	lw r15,(r13+8)                                 
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 8009508:	44 41 ff f8 	be r2,r1,80094e8 <ramdisk_ioctl+0xdc>          <== NEVER TAKEN
 800950c:	34 6c 00 18 	addi r12,r3,24                                 
 8009510:	34 0e 00 00 	mvi r14,0                                      
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              from + (sg->block * rd->block_size));   
#endif                                                                
        memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
 8009514:	29 82 00 00 	lw r2,(r12+0)                                  
 8009518:	29 a1 00 00 	lw r1,(r13+0)                                  
 800951c:	29 90 00 08 	lw r16,(r12+8)                                 
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 8009520:	35 ce 00 01 	addi r14,r14,1                                 
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              from + (sg->block * rd->block_size));   
#endif                                                                
        memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
 8009524:	f8 00 3b fa 	calli 801850c <__mulsi3>                       
 8009528:	29 83 00 04 	lw r3,(r12+4)                                  
 800952c:	b5 e1 10 00 	add r2,r15,r1                                  
 8009530:	ba 00 08 00 	mv r1,r16                                      
 8009534:	f8 00 27 3c 	calli 8013224 <memcpy>                         
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
 8009538:	29 61 00 10 	lw r1,(r11+16)                                 
 800953c:	35 8c 00 10 	addi r12,r12,16                                
 8009540:	54 2e ff f5 	bgu r1,r14,8009514 <ramdisk_ioctl+0x108>       <== NEVER TAKEN
 8009544:	29 63 00 04 	lw r3,(r11+4)                                  
 8009548:	b9 60 08 00 	mv r1,r11                                      
 800954c:	34 02 00 00 	mvi r2,0                                       
 8009550:	d8 60 00 00 	call r3                                        
            {                                                         
                case RTEMS_BLKDEV_REQ_READ:                           
                    return ramdisk_read(rd, r);                       
                                                                      
                case RTEMS_BLKDEV_REQ_WRITE:                          
                    return ramdisk_write(rd, r);                      
 8009554:	34 01 00 00 	mvi r1,0                                       
 8009558:	e3 ff ff c0 	bi 8009458 <ramdisk_ioctl+0x4c>                
            break;                                                    
        }                                                             
                                                                      
        case RTEMS_BLKIO_DELETED:                                     
            if (rd->free_at_delete_request) {                         
              ramdisk_free(rd);                                       
 800955c:	b9 a0 08 00 	mv r1,r13                                      
 8009560:	f8 00 00 31 	calli 8009624 <ramdisk_free>                   
 8009564:	e3 ff ff c8 	bi 8009484 <ramdisk_ioctl+0x78>                
                                                                      

08009664 <ramdisk_register>: rtems_blkdev_bnum media_block_count, bool trace, const char *disk, dev_t *dev_ptr ) {
 8009664:	37 9c ff dc 	addi sp,sp,-36                                 
 8009668:	5b 8b 00 20 	sw (sp+32),r11                                 
 800966c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8009670:	5b 8d 00 18 	sw (sp+24),r13                                 
 8009674:	5b 8e 00 14 	sw (sp+20),r14                                 
 8009678:	5b 8f 00 10 	sw (sp+16),r15                                 
 800967c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8009680:	5b 91 00 08 	sw (sp+8),r17                                  
 8009684:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
 8009688:	78 06 08 01 	mvhi r6,0x801                                  
  rtems_blkdev_bnum media_block_count,                                
  bool trace,                                                         
  const char *disk,                                                   
  dev_t *dev_ptr                                                      
)                                                                     
{                                                                     
 800968c:	b8 40 70 00 	mv r14,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
 8009690:	b8 c0 10 00 	mv r2,r6                                       
  rtems_blkdev_bnum media_block_count,                                
  bool trace,                                                         
  const char *disk,                                                   
  dev_t *dev_ptr                                                      
)                                                                     
{                                                                     
 8009694:	b8 20 78 00 	mv r15,r1                                      
 8009698:	20 6d 00 ff 	andi r13,r3,0xff                               
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
 800969c:	34 01 00 00 	mvi r1,0                                       
 80096a0:	38 42 96 98 	ori r2,r2,0x9698                               
 80096a4:	37 83 00 24 	addi r3,sp,36                                  
  rtems_blkdev_bnum media_block_count,                                
  bool trace,                                                         
  const char *disk,                                                   
  dev_t *dev_ptr                                                      
)                                                                     
{                                                                     
 80096a8:	b8 80 88 00 	mv r17,r4                                      
 80096ac:	b8 a0 80 00 	mv r16,r5                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
 80096b0:	5b 80 00 24 	sw (sp+36),r0                                  
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
 80096b4:	fb ff f0 cf 	calli 80059f0 <rtems_io_register_driver>       
 80096b8:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return RTEMS_UNSATISFIED;                                         
 80096bc:	34 0c 00 0d 	mvi r12,13                                     
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
  if (sc != RTEMS_SUCCESSFUL) {                                       
 80096c0:	44 20 00 0c 	be r1,r0,80096f0 <ramdisk_register+0x8c>       <== ALWAYS TAKEN
  }                                                                   
                                                                      
  *dev_ptr = dev;                                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80096c4:	b9 80 08 00 	mv r1,r12                                      
 80096c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80096cc:	2b 8b 00 20 	lw r11,(sp+32)                                 
 80096d0:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 80096d4:	2b 8d 00 18 	lw r13,(sp+24)                                 
 80096d8:	2b 8e 00 14 	lw r14,(sp+20)                                 
 80096dc:	2b 8f 00 10 	lw r15,(sp+16)                                 
 80096e0:	2b 90 00 0c 	lw r16,(sp+12)                                 
 80096e4:	2b 91 00 08 	lw r17,(sp+8)                                  
 80096e8:	37 9c 00 24 	addi sp,sp,36                                  
 80096ec:	c3 a0 00 00 	ret                                            
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
 80096f0:	b9 a0 20 00 	mv r4,r13                                      
 80096f4:	b9 e0 10 00 	mv r2,r15                                      
 80096f8:	b9 c0 18 00 	mv r3,r14                                      
 80096fc:	fb ff ff 9b 	calli 8009568 <ramdisk_allocate>               
 8009700:	b8 20 68 00 	mv r13,r1                                      
  if (rd == NULL) {                                                   
 8009704:	44 2b 00 12 	be r1,r11,800974c <ramdisk_register+0xe8>      <== NEVER TAKEN
  rtems_device_minor_number _minor                                    
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.__overlay.major = _major;                                      
 8009708:	2b 8b 00 24 	lw r11,(sp+36)                                 
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  dev = rtems_filesystem_make_dev_t(major, 0);                        
                                                                      
  sc = rtems_disk_create_phys(                                        
 800970c:	78 05 08 00 	mvhi r5,0x800                                  
 8009710:	34 02 00 00 	mvi r2,0                                       
 8009714:	b9 60 08 00 	mv r1,r11                                      
 8009718:	b9 e0 18 00 	mv r3,r15                                      
 800971c:	b9 c0 20 00 	mv r4,r14                                      
 8009720:	38 a5 94 0c 	ori r5,r5,0x940c                               
 8009724:	b9 a0 30 00 	mv r6,r13                                      
 8009728:	ba 20 38 00 	mv r7,r17                                      
 800972c:	fb ff e0 bf 	calli 8001a28 <rtems_disk_create_phys>         
    media_block_count,                                                
    ramdisk_ioctl,                                                    
    rd,                                                               
    disk                                                              
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8009730:	5c 20 00 05 	bne r1,r0,8009744 <ramdisk_register+0xe0>      <== NEVER TAKEN
    rtems_io_unregister_driver(major);                                
                                                                      
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  *dev_ptr = dev;                                                     
 8009734:	5a 0b 00 00 	sw (r16+0),r11                                 
 8009738:	5a 00 00 04 	sw (r16+4),r0                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800973c:	34 0c 00 00 	mvi r12,0                                      
 8009740:	e3 ff ff e1 	bi 80096c4 <ramdisk_register+0x60>             
    ramdisk_ioctl,                                                    
    rd,                                                               
    disk                                                              
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    ramdisk_free(rd);                                                 
 8009744:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8009748:	fb ff ff b7 	calli 8009624 <ramdisk_free>                   <== NOT EXECUTED
    rtems_io_unregister_driver(major);                                
 800974c:	2b 81 00 24 	lw r1,(sp+36)                                  <== NOT EXECUTED
 8009750:	fb ff f1 09 	calli 8005b74 <rtems_io_unregister_driver>     <== NOT EXECUTED
                                                                      
    return RTEMS_UNSATISFIED;                                         
 8009754:	e3 ff ff dc 	bi 80096c4 <ramdisk_register+0x60>             <== NOT EXECUTED
                                                                      

0801c438 <read>: ssize_t read( int fd, void *buffer, size_t count ) {
 801c438:	37 9c ff fc 	addi sp,sp,-4                                  
 801c43c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
 801c440:	78 04 08 02 	mvhi r4,0x802                                  
 801c444:	38 84 00 10 	ori r4,r4,0x10                                 
 801c448:	28 84 00 00 	lw r4,(r4+0)                                   
 801c44c:	54 81 00 06 	bgu r4,r1,801c464 <read+0x2c>                  
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
 801c450:	fb ff c3 89 	calli 800d274 <__errno>                        
 801c454:	34 02 00 09 	mvi r2,9                                       
 801c458:	58 22 00 00 	sw (r1+0),r2                                   
 801c45c:	34 01 ff ff 	mvi r1,-1                                      
 801c460:	e0 00 00 18 	bi 801c4c0 <read+0x88>                         
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 801c464:	b4 21 20 00 	add r4,r1,r1                                   
 801c468:	b4 81 20 00 	add r4,r4,r1                                   
 801c46c:	78 05 08 02 	mvhi r5,0x802                                  
 801c470:	b4 84 20 00 	add r4,r4,r4                                   
 801c474:	38 a5 08 1c 	ori r5,r5,0x81c                                
 801c478:	b4 84 20 00 	add r4,r4,r4                                   
 801c47c:	c8 81 08 00 	sub r1,r4,r1                                   
 801c480:	28 a4 00 00 	lw r4,(r5+0)                                   
 801c484:	b4 21 08 00 	add r1,r1,r1                                   
 801c488:	b4 21 08 00 	add r1,r1,r1                                   
 801c48c:	b4 81 20 00 	add r4,r4,r1                                   
  rtems_libio_check_is_open( iop );                                   
 801c490:	28 85 00 08 	lw r5,(r4+8)                                   
 801c494:	20 a1 01 00 	andi r1,r5,0x100                               
 801c498:	44 20 ff ee 	be r1,r0,801c450 <read+0x18>                   
  rtems_libio_check_buffer( buffer );                                 
 801c49c:	44 40 00 0c 	be r2,r0,801c4cc <read+0x94>                   <== NEVER TAKEN
  rtems_libio_check_count( count );                                   
 801c4a0:	34 01 00 00 	mvi r1,0                                       
 801c4a4:	44 60 00 07 	be r3,r0,801c4c0 <read+0x88>                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
 801c4a8:	20 a5 00 02 	andi r5,r5,0x2                                 
 801c4ac:	44 a0 ff e9 	be r5,r0,801c450 <read+0x18>                   
                                                                      
  /*                                                                  
   *  Now process the read().                                         
   */                                                                 
  return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );     
 801c4b0:	28 85 00 1c 	lw r5,(r4+28)                                  
 801c4b4:	b8 80 08 00 	mv r1,r4                                       
 801c4b8:	28 a4 00 08 	lw r4,(r5+8)                                   
 801c4bc:	d8 80 00 00 	call r4                                        
}                                                                     
 801c4c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c4c4:	37 9c 00 04 	addi sp,sp,4                                   
 801c4c8:	c3 a0 00 00 	ret                                            
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
 801c4cc:	fb ff c3 6a 	calli 800d274 <__errno>                        <== NOT EXECUTED
 801c4d0:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 801c4d4:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c4d8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801c4dc:	e3 ff ff f9 	bi 801c4c0 <read+0x88>                         <== NOT EXECUTED
                                                                      

08003440 <read_extended_partition>: * RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure, * RTEMS_INTERNAL_ERROR if other error occurs. */ static rtems_status_code read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part) {
 8003440:	37 9c ff d0 	addi sp,sp,-48                                 
 8003444:	5b 8b 00 28 	sw (sp+40),r11                                 
 8003448:	5b 8c 00 24 	sw (sp+36),r12                                 
 800344c:	5b 8d 00 20 	sw (sp+32),r13                                 
 8003450:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8003454:	5b 8f 00 18 	sw (sp+24),r15                                 
 8003458:	5b 90 00 14 	sw (sp+20),r16                                 
 800345c:	5b 91 00 10 	sw (sp+16),r17                                 
 8003460:	5b 92 00 0c 	sw (sp+12),r18                                 
 8003464:	5b 93 00 08 	sw (sp+8),r19                                  
 8003468:	5b 9d 00 04 	sw (sp+4),ra                                   
    int                  i;                                           
    rtems_sector_data_t *sector = NULL;                               
 800346c:	5b 80 00 30 	sw (sp+48),r0                                  
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
{                                                                     
 8003470:	b8 60 60 00 	mv r12,r3                                      
 8003474:	b8 20 88 00 	mv r17,r1                                      
 8003478:	b8 40 80 00 	mv r16,r2                                      
    rtems_part_desc_t   *new_part_desc;                               
    rtems_status_code    rc;                                          
                                                                      
    if ((ext_part == NULL) || (ext_part->disk_desc == NULL))          
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
 800347c:	34 0b 00 19 	mvi r11,25                                     
    uint32_t             here;                                        
    uint8_t             *data;                                        
    rtems_part_desc_t   *new_part_desc;                               
    rtems_status_code    rc;                                          
                                                                      
    if ((ext_part == NULL) || (ext_part->disk_desc == NULL))          
 8003480:	44 60 00 10 	be r3,r0,80034c0 <read_extended_partition+0x80><== NEVER TAKEN
 8003484:	28 62 00 10 	lw r2,(r3+16)                                  
 8003488:	44 40 00 0e 	be r2,r0,80034c0 <read_extended_partition+0x80><== NEVER TAKEN
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    /* get start sector of current extended partition */              
    here = ext_part->start;                                           
 800348c:	28 6f 00 04 	lw r15,(r3+4)                                  
                                                                      
    /* get first extended partition sector */                         
                                                                      
    rc = get_sector(fd, here, §or);                               
 8003490:	37 83 00 30 	addi r3,sp,48                                  
 8003494:	b9 e0 10 00 	mv r2,r15                                      
 8003498:	fb ff ff 2a 	calli 8003140 <get_sector>                     
 800349c:	b8 20 58 00 	mv r11,r1                                      
    if (rc != RTEMS_SUCCESSFUL)                                       
 80034a0:	5c 20 00 15 	bne r1,r0,80034f4 <read_extended_partition+0xb4><== NEVER TAKEN
        if (sector)                                                   
            free(sector);                                             
        return rc;                                                    
    }                                                                 
                                                                      
    if (!msdos_signature_check(sector))                               
 80034a4:	2b 8e 00 30 	lw r14,(sp+48)                                 
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
 80034a8:	34 01 00 55 	mvi r1,85                                      
 80034ac:	41 c2 02 02 	lbu r2,(r14+514)                               
 80034b0:	44 41 00 15 	be r2,r1,8003504 <read_extended_partition+0xc4><== ALWAYS TAKEN
        return rc;                                                    
    }                                                                 
                                                                      
    if (!msdos_signature_check(sector))                               
    {                                                                 
        free(sector);                                                 
 80034b4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80034b8:	f8 00 03 7c 	calli 80042a8 <free>                           <== NOT EXECUTED
        return RTEMS_INTERNAL_ERROR;                                  
 80034bc:	34 0b 00 19 	mvi r11,25                                     <== NOT EXECUTED
    }                                                                 
                                                                      
    free(sector);                                                     
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 80034c0:	b9 60 08 00 	mv r1,r11                                      
 80034c4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80034c8:	2b 8b 00 28 	lw r11,(sp+40)                                 
 80034cc:	2b 8c 00 24 	lw r12,(sp+36)                                 
 80034d0:	2b 8d 00 20 	lw r13,(sp+32)                                 
 80034d4:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 80034d8:	2b 8f 00 18 	lw r15,(sp+24)                                 
 80034dc:	2b 90 00 14 	lw r16,(sp+20)                                 
 80034e0:	2b 91 00 10 	lw r17,(sp+16)                                 
 80034e4:	2b 92 00 0c 	lw r18,(sp+12)                                 
 80034e8:	2b 93 00 08 	lw r19,(sp+8)                                  
 80034ec:	37 9c 00 30 	addi sp,sp,48                                  
 80034f0:	c3 a0 00 00 	ret                                            
    /* get first extended partition sector */                         
                                                                      
    rc = get_sector(fd, here, §or);                               
    if (rc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        if (sector)                                                   
 80034f4:	2b 81 00 30 	lw r1,(sp+48)                                  <== NOT EXECUTED
 80034f8:	44 20 ff f2 	be r1,r0,80034c0 <read_extended_partition+0x80><== NOT EXECUTED
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
        }                                                             
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
 80034fc:	f8 00 03 6b 	calli 80042a8 <free>                           <== NOT EXECUTED
                                                                      
    return RTEMS_SUCCESSFUL;                                          
 8003500:	e3 ff ff f0 	bi 80034c0 <read_extended_partition+0x80>      <== NOT EXECUTED
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
 8003504:	41 c2 02 03 	lbu r2,(r14+515)                               
 8003508:	34 01 00 aa 	mvi r1,170                                     
 800350c:	5c 41 ff ea 	bne r2,r1,80034b4 <read_extended_partition+0x74><== NEVER TAKEN
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
 8003510:	35 ce 01 d2 	addi r14,r14,466                               
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
 8003514:	b9 80 68 00 	mv r13,r12                                     
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
 8003518:	35 93 00 10 	addi r19,r12,16                                
 800351c:	37 92 00 2c 	addi r18,sp,44                                 
    for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
    {                                                                 
        /* if data_to_part_desc fails skip this partition             
         * and parse the next one                                     
         */                                                           
        rc = data_to_part_desc(data, &new_part_desc);                 
 8003520:	35 c1 ff f0 	addi r1,r14,-16                                
 8003524:	ba 40 10 00 	mv r2,r18                                      
 8003528:	fb ff ff 3d 	calli 800321c <data_to_part_desc>              
 800352c:	b8 20 58 00 	mv r11,r1                                      
        if (rc != RTEMS_SUCCESSFUL)                                   
 8003530:	5c 20 00 1f 	bne r1,r0,80035ac <read_extended_partition+0x16c><== NEVER TAKEN
        {                                                             
            free(sector);                                             
            return rc;                                                
        }                                                             
                                                                      
        if (new_part_desc == NULL)                                    
 8003534:	2b 84 00 2c 	lw r4,(sp+44)                                  
 8003538:	44 81 00 1a 	be r4,r1,80035a0 <read_extended_partition+0x160>
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
 800353c:	40 85 00 01 	lbu r5,(r4+1)                                  
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
 8003540:	29 83 00 10 	lw r3,(r12+16)                                 
        {                                                             
            data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;              
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
 8003544:	59 a4 00 18 	sw (r13+24),r4                                 
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 8003548:	64 a1 00 85 	cmpei r1,r5,133                                
 800354c:	64 a5 00 05 	cmpei r5,r5,5                                  
            data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;              
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
 8003550:	58 8c 00 14 	sw (r4+20),r12                                 
        new_part_desc->disk_desc = ext_part->disk_desc;               
 8003554:	58 83 00 10 	sw (r4+16),r3                                  
 *      true if partition type is extended, false otherwise           
 */                                                                   
static bool                                                           
is_extended(uint8_t type)                                             
{                                                                     
    return ((type == EXTENDED_PARTITION) || (type == LINUX_EXTENDED));
 8003558:	b8 25 28 00 	or r5,r1,r5                                    
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
 800355c:	5c a0 00 17 	bne r5,r0,80035b8 <read_extended_partition+0x178>
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
 8003560:	28 66 00 24 	lw r6,(r3+36)                                  
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
 8003564:	28 81 00 04 	lw r1,(r4+4)                                   
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
 8003568:	28 87 00 08 	lw r7,(r4+8)                                   
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
 800356c:	34 c5 00 0a 	addi r5,r6,10                                  
 8003570:	b4 a5 28 00 	add r5,r5,r5                                   
 8003574:	b4 a5 28 00 	add r5,r5,r5                                   
            new_part_desc->log_id = ++disk_desc->last_log_id;         
 8003578:	34 c6 00 01 	addi r6,r6,1                                   
            new_part_desc->start += here;                             
 800357c:	b5 e1 08 00 	add r1,r15,r1                                  
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
 8003580:	b4 65 28 00 	add r5,r3,r5                                   
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
 8003584:	34 e7 ff ff 	addi r7,r7,-1                                  
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
            new_part_desc->log_id = ++disk_desc->last_log_id;         
 8003588:	58 66 00 24 	sw (r3+36),r6                                  
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
 800358c:	58 a4 00 00 	sw (r5+0),r4                                   
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
 8003590:	b4 e1 18 00 	add r3,r7,r1                                   
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
            new_part_desc->log_id = ++disk_desc->last_log_id;         
 8003594:	30 86 00 02 	sb (r4+2),r6                                   
            new_part_desc->start += here;                             
 8003598:	58 81 00 04 	sw (r4+4),r1                                   
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
 800359c:	58 83 00 0c 	sw (r4+12),r3                                  
 80035a0:	35 ad 00 04 	addi r13,r13,4                                 
 80035a4:	35 ce 00 10 	addi r14,r14,16                                
                                                                      
    /* read and process up to 4 logical partition descriptors */      
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
 80035a8:	5d b3 ff de 	bne r13,r19,8003520 <read_extended_partition+0xe0>
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
        }                                                             
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
 80035ac:	2b 81 00 30 	lw r1,(sp+48)                                  
 80035b0:	f8 00 03 3e 	calli 80042a8 <free>                           
 80035b4:	e3 ff ff c3 	bi 80034c0 <read_extended_partition+0x80>      
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
        {                                                             
            new_part_desc->log_id = EMPTY_PARTITION;                  
            new_part_desc->start += start;                            
 80035b8:	28 82 00 04 	lw r2,(r4+4)                                   
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
        {                                                             
            new_part_desc->log_id = EMPTY_PARTITION;                  
 80035bc:	30 80 00 02 	sb (r4+2),r0                                   
            new_part_desc->start += start;                            
            read_extended_partition(fd, start, new_part_desc);        
 80035c0:	ba 20 08 00 	mv r1,r17                                      
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
        {                                                             
            new_part_desc->log_id = EMPTY_PARTITION;                  
            new_part_desc->start += start;                            
 80035c4:	b4 50 10 00 	add r2,r2,r16                                  
 80035c8:	58 82 00 04 	sw (r4+4),r2                                   
            read_extended_partition(fd, start, new_part_desc);        
 80035cc:	b8 80 18 00 	mv r3,r4                                       
 80035d0:	ba 00 10 00 	mv r2,r16                                      
 80035d4:	fb ff ff 9b 	calli 8003440 <read_extended_partition>        
 80035d8:	e3 ff ff f2 	bi 80035a0 <read_extended_partition+0x160>     
                                                                      

080032f4 <readv>: ssize_t readv( int fd, const struct iovec *iov, int iovcnt ) {
 80032f4:	37 9c ff e8 	addi sp,sp,-24                                 
 80032f8:	5b 8b 00 18 	sw (sp+24),r11                                 
 80032fc:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003300:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003304:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003308:	5b 8f 00 08 	sw (sp+8),r15                                  
 800330c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            v;                                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8003310:	78 04 08 01 	mvhi r4,0x801                                  
 8003314:	38 84 70 10 	ori r4,r4,0x7010                               
 8003318:	28 84 00 00 	lw r4,(r4+0)                                   
ssize_t readv(                                                        
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
 800331c:	b8 60 58 00 	mv r11,r3                                      
  int            v;                                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8003320:	54 81 00 06 	bgu r4,r1,8003338 <readv+0x44>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
 8003324:	f8 00 2a 5a 	calli 800dc8c <__errno>                        
 8003328:	34 02 00 09 	mvi r2,9                                       
 800332c:	58 22 00 00 	sw (r1+0),r2                                   
 8003330:	34 0e ff ff 	mvi r14,-1                                     
 8003334:	e0 00 00 17 	bi 8003390 <readv+0x9c>                        
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 8003338:	b4 21 18 00 	add r3,r1,r1                                   
 800333c:	b4 61 18 00 	add r3,r3,r1                                   
 8003340:	78 04 08 01 	mvhi r4,0x801                                  
 8003344:	b4 63 18 00 	add r3,r3,r3                                   
 8003348:	b4 63 18 00 	add r3,r3,r3                                   
 800334c:	38 84 77 f8 	ori r4,r4,0x77f8                               
 8003350:	c8 61 08 00 	sub r1,r3,r1                                   
 8003354:	28 8d 00 00 	lw r13,(r4+0)                                  
 8003358:	b4 21 08 00 	add r1,r1,r1                                   
 800335c:	b4 21 08 00 	add r1,r1,r1                                   
 8003360:	b5 a1 68 00 	add r13,r13,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8003364:	29 a1 00 08 	lw r1,(r13+8)                                  
 8003368:	20 23 01 00 	andi r3,r1,0x100                               
 800336c:	44 60 ff ee 	be r3,r0,8003324 <readv+0x30>                  
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
 8003370:	20 21 00 02 	andi r1,r1,0x2                                 
 8003374:	44 20 ff ec 	be r1,r0,8003324 <readv+0x30>                  <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
 8003378:	44 40 00 02 	be r2,r0,8003380 <readv+0x8c>                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
 800337c:	49 60 00 0e 	bg r11,r0,80033b4 <readv+0xc0>                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8003380:	f8 00 2a 43 	calli 800dc8c <__errno>                        
 8003384:	34 02 00 16 	mvi r2,22                                      
 8003388:	58 22 00 00 	sw (r1+0),r2                                   
 800338c:	34 0e ff ff 	mvi r14,-1                                     
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
 8003390:	b9 c0 08 00 	mv r1,r14                                      
 8003394:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003398:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800339c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80033a0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80033a4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80033a8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80033ac:	37 9c 00 18 	addi sp,sp,24                                  
 80033b0:	c3 a0 00 00 	ret                                            
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 80033b4:	34 01 04 00 	mvi r1,1024                                    
 80033b8:	4c 2b 00 02 	bge r1,r11,80033c0 <readv+0xcc>                <== ALWAYS TAKEN
 80033bc:	e3 ff ff f1 	bi 8003380 <readv+0x8c>                        <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 80033c0:	b8 40 60 00 	mv r12,r2                                      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 80033c4:	b8 40 20 00 	mv r4,r2                                       
 80033c8:	34 07 00 01 	mvi r7,1                                       
 80033cc:	34 05 00 00 	mvi r5,0                                       
 80033d0:	34 06 00 00 	mvi r6,0                                       
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
 80033d4:	28 81 00 00 	lw r1,(r4+0)                                   
   *  are obvious errors in the iovec.  So this extra loop ensures    
   *  that we do not do anything if there is an argument error.       
   */                                                                 
                                                                      
  all_zeros = true;                                                   
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 80033d8:	34 a5 00 01 	addi r5,r5,1                                   
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
 80033dc:	44 20 ff e9 	be r1,r0,8003380 <readv+0x8c>                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 80033e0:	28 88 00 04 	lw r8,(r4+4)                                   
   *  are obvious errors in the iovec.  So this extra loop ensures    
   *  that we do not do anything if there is an argument error.       
   */                                                                 
                                                                      
  all_zeros = true;                                                   
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 80033e4:	34 84 00 08 	addi r4,r4,8                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 80033e8:	65 03 00 00 	cmpei r3,r8,0                                  
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 80033ec:	b4 c8 40 00 	add r8,r6,r8                                   
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 80033f0:	c8 03 18 00 	sub r3,r0,r3                                   
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
 80033f4:	4d 06 00 02 	bge r8,r6,80033fc <readv+0x108>                
 80033f8:	e3 ff ff e2 	bi 8003380 <readv+0x8c>                        
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 80033fc:	a0 e3 38 00 	and r7,r7,r3                                   
   *  are obvious errors in the iovec.  So this extra loop ensures    
   *  that we do not do anything if there is an argument error.       
   */                                                                 
                                                                      
  all_zeros = true;                                                   
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003400:	49 65 00 13 	bg r11,r5,800344c <readv+0x158>                
   *  A readv with all zeros logically has no effect.  Even though    
   *  OpenGroup didn't address this case as they did with writev(),   
   *  we will handle it the same way for symmetry.                    
   */                                                                 
  if ( all_zeros == true ) {                                          
    return 0;                                                         
 8003404:	34 0e 00 00 	mvi r14,0                                      
  /*                                                                  
   *  A readv with all zeros logically has no effect.  Even though    
   *  OpenGroup didn't address this case as they did with writev(),   
   *  we will handle it the same way for symmetry.                    
   */                                                                 
  if ( all_zeros == true ) {                                          
 8003408:	5c e0 ff e2 	bne r7,r0,8003390 <readv+0x9c>                 
 800340c:	34 0f 00 00 	mvi r15,0                                      
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    bytes = (*iop->pathinfo.handlers->read_h)(                        
 8003410:	29 a1 00 1c 	lw r1,(r13+28)                                 
 8003414:	29 82 00 00 	lw r2,(r12+0)                                  
 8003418:	29 83 00 04 	lw r3,(r12+4)                                  
 800341c:	28 24 00 08 	lw r4,(r1+8)                                   
 8003420:	b9 a0 08 00 	mv r1,r13                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003424:	35 ef 00 01 	addi r15,r15,1                                 
    bytes = (*iop->pathinfo.handlers->read_h)(                        
 8003428:	d8 80 00 00 	call r4                                        
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
 800342c:	48 01 00 0a 	bg r0,r1,8003454 <readv+0x160>                 <== NEVER TAKEN
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
 8003430:	44 20 00 02 	be r1,r0,8003438 <readv+0x144>                 <== NEVER TAKEN
      total       += bytes;                                           
 8003434:	b5 c1 70 00 	add r14,r14,r1                                 
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 8003438:	29 82 00 04 	lw r2,(r12+4)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 800343c:	35 8c 00 08 	addi r12,r12,8                                 
                                                                      
    if ( bytes > 0 ) {                                                
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 8003440:	5c 22 ff d4 	bne r1,r2,8003390 <readv+0x9c>                 <== NEVER TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 8003444:	49 6f ff f3 	bg r11,r15,8003410 <readv+0x11c>               
 8003448:	e3 ff ff d2 	bi 8003390 <readv+0x9c>                        
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 800344c:	b9 00 30 00 	mv r6,r8                                       
 8003450:	e3 ff ff e1 	bi 80033d4 <readv+0xe0>                        
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
 8003454:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
 8003458:	e3 ff ff ce 	bi 8003390 <readv+0x9c>                        <== NOT EXECUTED
                                                                      

0801c56c <realloc>: void *realloc( void *ptr, size_t size ) {
 801c56c:	37 9c ff e4 	addi sp,sp,-28                                 
 801c570:	5b 8b 00 18 	sw (sp+24),r11                                 
 801c574:	5b 8c 00 14 	sw (sp+20),r12                                 
 801c578:	5b 8d 00 10 	sw (sp+16),r13                                 
 801c57c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801c580:	5b 8f 00 08 	sw (sp+8),r15                                  
 801c584:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 801c588:	78 0c 08 02 	mvhi r12,0x802                                 
 801c58c:	39 8c 08 28 	ori r12,r12,0x828                              
 801c590:	29 84 00 10 	lw r4,(r12+16)                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 801c594:	78 03 08 02 	mvhi r3,0x802                                  
 801c598:	38 63 0d d8 	ori r3,r3,0xdd8                                
 801c59c:	28 63 00 00 	lw r3,(r3+0)                                   
)                                                                     
{                                                                     
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 801c5a0:	34 84 00 01 	addi r4,r4,1                                   
                                                                      
void *realloc(                                                        
  void *ptr,                                                          
  size_t size                                                         
)                                                                     
{                                                                     
 801c5a4:	b8 20 58 00 	mv r11,r1                                      
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
 801c5a8:	59 84 00 10 	sw (r12+16),r4                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 801c5ac:	34 01 00 03 	mvi r1,3                                       
                                                                      
void *realloc(                                                        
  void *ptr,                                                          
  size_t size                                                         
)                                                                     
{                                                                     
 801c5b0:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
 801c5b4:	44 61 00 22 	be r3,r1,801c63c <realloc+0xd0>                
  }                                                                   
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
 801c5b8:	45 60 00 2b 	be r11,r0,801c664 <realloc+0xf8>               
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
 801c5bc:	45 c0 00 17 	be r14,r0,801c618 <realloc+0xac>               <== NEVER TAKEN
    free( ptr );                                                      
    return (void *) 0;                                                
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
 801c5c0:	78 0d 08 02 	mvhi r13,0x802                                 
 801c5c4:	39 ad 00 54 	ori r13,r13,0x54                               
 801c5c8:	29 a1 00 00 	lw r1,(r13+0)                                  
 801c5cc:	b9 60 10 00 	mv r2,r11                                      
 801c5d0:	37 83 00 1c 	addi r3,sp,28                                  
 801c5d4:	f8 00 01 e2 	calli 801cd5c <_Protected_heap_Get_block_size> 
 801c5d8:	44 20 00 14 	be r1,r0,801c628 <realloc+0xbc>                
  }                                                                   
                                                                      
  /*                                                                  
   *  Now resize it.                                                  
   */                                                                 
  if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
 801c5dc:	29 a1 00 00 	lw r1,(r13+0)                                  
 801c5e0:	b9 60 10 00 	mv r2,r11                                      
 801c5e4:	b9 c0 18 00 	mv r3,r14                                      
 801c5e8:	f8 00 01 f5 	calli 801cdbc <_Protected_heap_Resize_block>   
 801c5ec:	b8 20 68 00 	mv r13,r1                                      
 801c5f0:	44 20 00 21 	be r1,r0,801c674 <realloc+0x108>               
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
  free( ptr );                                                        
                                                                      
  return new_area;                                                    
                                                                      
}                                                                     
 801c5f4:	b9 60 08 00 	mv r1,r11                                      
 801c5f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c5fc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801c600:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801c604:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801c608:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801c60c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801c610:	37 9c 00 1c 	addi sp,sp,28                                  
 801c614:	c3 a0 00 00 	ret                                            
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
    free( ptr );                                                      
 801c618:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801c61c:	fb ff 94 03 	calli 8001628 <free>                           <== NOT EXECUTED
    return (void *) 0;                                                
 801c620:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 801c624:	e3 ff ff f4 	bi 801c5f4 <realloc+0x88>                      <== NOT EXECUTED
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
    errno = EINVAL;                                                   
 801c628:	fb ff c3 13 	calli 800d274 <__errno>                        
 801c62c:	34 02 00 16 	mvi r2,22                                      
 801c630:	58 22 00 00 	sw (r1+0),r2                                   
    return (void *) 0;                                                
 801c634:	34 0b 00 00 	mvi r11,0                                      
 801c638:	e3 ff ff ef 	bi 801c5f4 <realloc+0x88>                      
   * This routine returns true if thread dispatch indicates           
   * that we are in a critical section.                               
   */                                                                 
  RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
  {                                                                   
     if (  _Thread_Dispatch_disable_level == 0 )                      
 801c63c:	78 01 08 02 	mvhi r1,0x802                                  
 801c640:	38 21 09 58 	ori r1,r1,0x958                                
 801c644:	28 22 00 00 	lw r2,(r1+0)                                   
 801c648:	5c 40 00 05 	bne r2,r0,801c65c <realloc+0xf0>               <== NEVER TAKEN
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    if (_Thread_Dispatch_in_critical_section())                       
      return (void *) 0;                                              
                                                                      
    if (_ISR_Nest_level > 0)                                          
 801c64c:	78 01 08 02 	mvhi r1,0x802                                  
 801c650:	38 21 0d e0 	ori r1,r1,0xde0                                
 801c654:	28 21 00 08 	lw r1,(r1+8)                                   
 801c658:	44 22 ff d8 	be r1,r2,801c5b8 <realloc+0x4c>                <== ALWAYS TAKEN
  new_area = malloc( size );                                          
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
                                                                      
  if ( !new_area ) {                                                  
    return (void *) 0;                                                
 801c65c:	34 0b 00 00 	mvi r11,0                                      
 801c660:	e3 ff ff e5 	bi 801c5f4 <realloc+0x88>                      
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
 801c664:	b9 c0 08 00 	mv r1,r14                                      
 801c668:	fb ff 94 f2 	calli 8001a30 <malloc>                         
 801c66c:	b8 20 58 00 	mv r11,r1                                      
 801c670:	e3 ff ff e1 	bi 801c5f4 <realloc+0x88>                      
   *  There used to be a free on this error case but it is wrong to   
   *  free the memory per OpenGroup Single UNIX Specification V2      
   *  and the C Standard.                                             
   */                                                                 
                                                                      
  new_area = malloc( size );                                          
 801c674:	b9 c0 08 00 	mv r1,r14                                      
 801c678:	fb ff 94 ee 	calli 8001a30 <malloc>                         
 801c67c:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
 801c680:	29 81 00 04 	lw r1,(r12+4)                                  
 801c684:	34 21 ff ff 	addi r1,r1,-1                                  
 801c688:	59 81 00 04 	sw (r12+4),r1                                  
                                                                      
  if ( !new_area ) {                                                  
 801c68c:	45 ed ff f4 	be r15,r13,801c65c <realloc+0xf0>              
    return (void *) 0;                                                
  }                                                                   
                                                                      
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
 801c690:	2b 81 00 1c 	lw r1,(sp+28)                                  
 801c694:	b9 c0 18 00 	mv r3,r14                                      
 801c698:	50 2e 00 02 	bgeu r1,r14,801c6a0 <realloc+0x134>            <== NEVER TAKEN
 801c69c:	b8 20 18 00 	mv r3,r1                                       
 801c6a0:	b9 60 10 00 	mv r2,r11                                      
 801c6a4:	b9 e0 08 00 	mv r1,r15                                      
 801c6a8:	fb ff c5 ed 	calli 800de5c <memcpy>                         
  free( ptr );                                                        
 801c6ac:	b9 60 08 00 	mv r1,r11                                      
 801c6b0:	fb ff 93 de 	calli 8001628 <free>                           
                                                                      
  return new_area;                                                    
 801c6b4:	b9 e0 58 00 	mv r11,r15                                     
 801c6b8:	e3 ff ff cf 	bi 801c5f4 <realloc+0x88>                      
                                                                      

08004880 <rtems_aio_enqueue>: * errno - otherwise */ int rtems_aio_enqueue (rtems_aio_request *req) {
 8004880:	37 9c ff c4 	addi sp,sp,-60                                 
 8004884:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004888:	5b 8c 00 14 	sw (sp+20),r12                                 
 800488c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004890:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8004894:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004898:	5b 9d 00 04 	sw (sp+4),ra                                   
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
 800489c:	78 0b 08 01 	mvhi r11,0x801                                 
 80048a0:	39 6b 88 40 	ori r11,r11,0x8840                             
 *         errno     - otherwise                                      
 */                                                                   
                                                                      
int                                                                   
rtems_aio_enqueue (rtems_aio_request *req)                            
{                                                                     
 80048a4:	b8 20 60 00 	mv r12,r1                                      
  struct sched_param param;                                           
                                                                      
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
 80048a8:	b9 60 08 00 	mv r1,r11                                      
 80048ac:	f8 00 02 e7 	calli 8005448 <pthread_mutex_lock>             
 80048b0:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 80048b4:	5c 20 00 52 	bne r1,r0,80049fc <rtems_aio_enqueue+0x17c>    <== NEVER TAKEN
    return result;                                                    
  }                                                                   
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
 80048b8:	f8 00 05 de 	calli 8006030 <pthread_self>                   
 80048bc:	37 82 00 38 	addi r2,sp,56                                  
 80048c0:	37 83 00 1c 	addi r3,sp,28                                  
 80048c4:	f8 00 04 8c 	calli 8005af4 <pthread_getschedparam>          
                                                                      
  req->caller_thread = pthread_self ();                               
 80048c8:	f8 00 05 da 	calli 8006030 <pthread_self>                   
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 80048cc:	29 82 00 14 	lw r2,(r12+20)                                 
  req->policy = policy;                                               
  req->aiocbp->error_code = EINPROGRESS;                              
  req->aiocbp->return_value = 0;                                      
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 80048d0:	29 63 00 68 	lw r3,(r11+104)                                
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 80048d4:	28 44 00 10 	lw r4,(r2+16)                                  
                                                                      
  /* _POSIX_PRIORITIZED_IO and _POSIX_PRIORITY_SCHEDULING are defined,
     we can use aio_reqprio to lower the priority of the request */   
  pthread_getschedparam (pthread_self(), &policy, ¶m);            
                                                                      
  req->caller_thread = pthread_self ();                               
 80048d8:	59 81 00 10 	sw (r12+16),r1                                 
  req->priority = param.sched_priority - req->aiocbp->aio_reqprio;    
 80048dc:	2b 81 00 1c 	lw r1,(sp+28)                                  
 80048e0:	c8 24 08 00 	sub r1,r1,r4                                   
 80048e4:	59 81 00 0c 	sw (r12+12),r1                                 
  req->policy = policy;                                               
 80048e8:	2b 81 00 38 	lw r1,(sp+56)                                  
 80048ec:	59 81 00 08 	sw (r12+8),r1                                  
  req->aiocbp->error_code = EINPROGRESS;                              
 80048f0:	34 01 00 77 	mvi r1,119                                     
 80048f4:	58 41 00 2c 	sw (r2+44),r1                                  
  req->aiocbp->return_value = 0;                                      
 80048f8:	58 40 00 30 	sw (r2+48),r0                                  
                                                                      
  if ((aio_request_queue.idle_threads == 0) &&                        
 80048fc:	5c 6d 00 24 	bne r3,r13,800498c <rtems_aio_enqueue+0x10c>   <== NEVER TAKEN
 8004900:	29 63 00 64 	lw r3,(r11+100)                                
 8004904:	34 01 00 04 	mvi r1,4                                       
 8004908:	48 61 00 21 	bg r3,r1,800498c <rtems_aio_enqueue+0x10c>     
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
 800490c:	28 42 00 00 	lw r2,(r2+0)                                   
 8004910:	78 01 08 01 	mvhi r1,0x801                                  
 8004914:	38 21 88 88 	ori r1,r1,0x8888                               
 8004918:	34 03 00 01 	mvi r3,1                                       
 800491c:	fb ff ff 67 	calli 80046b8 <rtems_aio_search_fd>            
                                                                      
      if (r_chain->new_fd == 1) {                                     
 8004920:	28 22 00 18 	lw r2,(r1+24)                                  
  if ((aio_request_queue.idle_threads == 0) &&                        
      aio_request_queue.active_threads < AIO_MAX_THREADS)             
    /* we still have empty places on the active_threads chain */      
    {                                                                 
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
 8004924:	b8 20 70 00 	mv r14,r1                                      
                                                                      
      if (r_chain->new_fd == 1) {                                     
 8004928:	34 01 00 01 	mvi r1,1                                       
 800492c:	5c 41 00 1f 	bne r2,r1,80049a8 <rtems_aio_enqueue+0x128>    
RTEMS_INLINE_ROUTINE void _Chain_Prepend(                             
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert(_Chain_Head(the_chain), the_node);                    
 8004930:	b9 80 10 00 	mv r2,r12                                      
 8004934:	35 c1 00 08 	addi r1,r14,8                                  
 8004938:	f8 00 09 11 	calli 8006d7c <_Chain_Insert>                  
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 800493c:	34 02 00 00 	mvi r2,0                                       
      chain = &aio_request_queue.work_req;                            
      r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);
                                                                      
      if (r_chain->new_fd == 1) {                                     
	rtems_chain_prepend (&r_chain->perfd, &req->next_prio);              
	r_chain->new_fd = 0;                                                 
 8004940:	59 c0 00 18 	sw (r14+24),r0                                 
	pthread_mutex_init (&r_chain->mutex, NULL);                          
 8004944:	35 c1 00 1c 	addi r1,r14,28                                 
 8004948:	f8 00 02 5f 	calli 80052c4 <pthread_mutex_init>             
	pthread_cond_init (&r_chain->cond, NULL);                            
 800494c:	34 02 00 00 	mvi r2,0                                       
 8004950:	35 c1 00 20 	addi r1,r14,32                                 
 8004954:	f8 00 01 24 	calli 8004de4 <pthread_cond_init>              
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
 8004958:	78 02 08 01 	mvhi r2,0x801                                  
 800495c:	78 03 08 00 	mvhi r3,0x800                                  
 8004960:	37 81 00 3c 	addi r1,sp,60                                  
 8004964:	38 42 88 48 	ori r2,r2,0x8848                               
 8004968:	38 63 42 7c 	ori r3,r3,0x427c                               
 800496c:	b9 c0 20 00 	mv r4,r14                                      
 8004970:	f8 00 03 8a 	calli 8005798 <pthread_create>                 
 8004974:	b8 20 60 00 	mv r12,r1                                      
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
 8004978:	5c 20 00 42 	bne r1,r0,8004a80 <rtems_aio_enqueue+0x200>    <== NEVER TAKEN
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
	  return result;                                                     
	}                                                                    
	++aio_request_queue.active_threads;                                  
 800497c:	29 61 00 64 	lw r1,(r11+100)                                
 8004980:	34 21 00 01 	addi r1,r1,1                                   
 8004984:	59 61 00 64 	sw (r11+100),r1                                
 8004988:	e0 00 00 12 	bi 80049d0 <rtems_aio_enqueue+0x150>           
  else                                                                
    {                                                                 
      /* the maximum number of threads has been already created       
	 even though some of them might be idle.                             
	 The request belongs to one of the active fd chain */                
      r_chain = rtems_aio_search_fd (&aio_request_queue.work_req,     
 800498c:	28 42 00 00 	lw r2,(r2+0)                                   
 8004990:	78 01 08 01 	mvhi r1,0x801                                  
 8004994:	38 21 88 88 	ori r1,r1,0x8888                               
 8004998:	34 03 00 00 	mvi r3,0                                       
 800499c:	fb ff ff 47 	calli 80046b8 <rtems_aio_search_fd>            
 80049a0:	b8 20 70 00 	mv r14,r1                                      
				     req->aiocbp->aio_fildes, 0);                                 
      if (r_chain != NULL)                                            
 80049a4:	44 20 00 19 	be r1,r0,8004a08 <rtems_aio_enqueue+0x188>     
	{                                                                    
	  pthread_mutex_lock (&r_chain->mutex);                              
 80049a8:	35 cf 00 1c 	addi r15,r14,28                                
 80049ac:	b9 e0 08 00 	mv r1,r15                                      
 80049b0:	f8 00 02 a6 	calli 8005448 <pthread_mutex_lock>             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 80049b4:	35 c1 00 08 	addi r1,r14,8                                  
 80049b8:	b9 80 10 00 	mv r2,r12                                      
 80049bc:	fb ff fe 1a 	calli 8004224 <rtems_aio_insert_prio>          
	  pthread_cond_signal (&r_chain->cond);                              
 80049c0:	35 c1 00 20 	addi r1,r14,32                                 
 80049c4:	f8 00 01 49 	calli 8004ee8 <pthread_cond_signal>            
	  pthread_mutex_unlock (&r_chain->mutex);                            
 80049c8:	b9 e0 08 00 	mv r1,r15                                      
 80049cc:	f8 00 02 cf 	calli 8005508 <pthread_mutex_unlock>           
	if (aio_request_queue.idle_threads > 0)                              
	  pthread_cond_signal (&aio_request_queue.new_req);                  
      }                                                               
    }                                                                 
                                                                      
  pthread_mutex_unlock (&aio_request_queue.mutex);                    
 80049d0:	b9 60 08 00 	mv r1,r11                                      
 80049d4:	f8 00 02 cd 	calli 8005508 <pthread_mutex_unlock>           
  return 0;                                                           
}                                                                     
 80049d8:	b9 a0 08 00 	mv r1,r13                                      
 80049dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80049e0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80049e4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80049e8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80049ec:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80049f0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80049f4:	37 9c 00 3c 	addi sp,sp,60                                  
 80049f8:	c3 a0 00 00 	ret                                            
  /* The queue should be initialized */                               
  AIO_assert (aio_request_queue.initialized == AIO_QUEUE_INITIALIZED);
                                                                      
  result = pthread_mutex_lock (&aio_request_queue.mutex);             
  if (result != 0) {                                                  
    free (req);                                                       
 80049fc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8004a00:	fb ff f3 fa 	calli 80019e8 <free>                           <== NOT EXECUTED
    return result;                                                    
 8004a04:	e3 ff ff f5 	bi 80049d8 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 8004a08:	29 82 00 14 	lw r2,(r12+20)                                 
 8004a0c:	78 01 08 01 	mvhi r1,0x801                                  
 8004a10:	38 21 88 94 	ori r1,r1,0x8894                               
 8004a14:	28 42 00 00 	lw r2,(r2+0)                                   
 8004a18:	34 03 00 01 	mvi r3,1                                       
 8004a1c:	fb ff ff 27 	calli 80046b8 <rtems_aio_search_fd>            
                                                                      
	if (r_chain->new_fd == 1) {                                          
 8004a20:	28 22 00 18 	lw r2,(r1+24)                                  
	                                                                     
	} else {                                                             
                                                                      
	/* or to the idle chain */                                           
	chain = &aio_request_queue.idle_req;                                 
	r_chain = rtems_aio_search_fd (chain, req->aiocbp->aio_fildes, 1);   
 8004a24:	b8 20 70 00 	mv r14,r1                                      
                                                                      
	if (r_chain->new_fd == 1) {                                          
 8004a28:	34 01 00 01 	mvi r1,1                                       
 8004a2c:	44 41 00 0a 	be r2,r1,8004a54 <rtems_aio_enqueue+0x1d4>     
	  r_chain->new_fd = 0;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
	  pthread_cond_init (&r_chain->cond, NULL);                          
	} else                                                               
	  /* just insert the request in the existing fd chain */             
	  rtems_aio_insert_prio (&r_chain->perfd, req);                      
 8004a30:	35 c1 00 08 	addi r1,r14,8                                  
 8004a34:	b9 80 10 00 	mv r2,r12                                      
 8004a38:	fb ff fd fb 	calli 8004224 <rtems_aio_insert_prio>          
	if (aio_request_queue.idle_threads > 0)                              
 8004a3c:	29 61 00 68 	lw r1,(r11+104)                                
 8004a40:	4c 01 ff e4 	bge r0,r1,80049d0 <rtems_aio_enqueue+0x150>    <== ALWAYS TAKEN
	  pthread_cond_signal (&aio_request_queue.new_req);                  
 8004a44:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8004a48:	38 21 88 44 	ori r1,r1,0x8844                               <== NOT EXECUTED
 8004a4c:	f8 00 01 27 	calli 8004ee8 <pthread_cond_signal>            <== NOT EXECUTED
 8004a50:	e3 ff ff e0 	bi 80049d0 <rtems_aio_enqueue+0x150>           <== NOT EXECUTED
 8004a54:	35 c1 00 08 	addi r1,r14,8                                  
 8004a58:	b9 80 10 00 	mv r2,r12                                      
 8004a5c:	f8 00 08 c8 	calli 8006d7c <_Chain_Insert>                  
	  /* If this is a new fd chain we signal the idle threads that       
	     might be waiting for requests */                                
	  AIO_printf (" New chain on waiting queue \n ");                    
	  rtems_chain_prepend (&r_chain->perfd, &req->next_prio);            
	  r_chain->new_fd = 0;                                               
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 8004a60:	35 c1 00 1c 	addi r1,r14,28                                 
	if (r_chain->new_fd == 1) {                                          
	  /* If this is a new fd chain we signal the idle threads that       
	     might be waiting for requests */                                
	  AIO_printf (" New chain on waiting queue \n ");                    
	  rtems_chain_prepend (&r_chain->perfd, &req->next_prio);            
	  r_chain->new_fd = 0;                                               
 8004a64:	59 c0 00 18 	sw (r14+24),r0                                 
	  pthread_mutex_init (&r_chain->mutex, NULL);                        
 8004a68:	34 02 00 00 	mvi r2,0                                       
 8004a6c:	f8 00 02 16 	calli 80052c4 <pthread_mutex_init>             
	  pthread_cond_init (&r_chain->cond, NULL);                          
 8004a70:	35 c1 00 20 	addi r1,r14,32                                 
 8004a74:	34 02 00 00 	mvi r2,0                                       
 8004a78:	f8 00 00 db 	calli 8004de4 <pthread_cond_init>              
 8004a7c:	e3 ff ff f0 	bi 8004a3c <rtems_aio_enqueue+0x1bc>           
	                                                                     
	AIO_printf ("New thread \n");                                        
	result = pthread_create (&thid, &aio_request_queue.attr,             
				 rtems_aio_handle, (void *) r_chain);                             
	if (result != 0) {                                                   
	  pthread_mutex_unlock (&aio_request_queue.mutex);                   
 8004a80:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004a84:	f8 00 02 a1 	calli 8005508 <pthread_mutex_unlock>           <== NOT EXECUTED
	  return result;                                                     
 8004a88:	b9 80 68 00 	mv r13,r12                                     <== NOT EXECUTED
 8004a8c:	e3 ff ff d3 	bi 80049d8 <rtems_aio_enqueue+0x158>           <== NOT EXECUTED
                                                                      

0800427c <rtems_aio_handle>: * NULL - if error */ static void * rtems_aio_handle (void *arg) {
 800427c:	37 9c ff 98 	addi sp,sp,-104                                
 8004280:	5b 8b 00 40 	sw (sp+64),r11                                 
 8004284:	5b 8c 00 3c 	sw (sp+60),r12                                 
 8004288:	5b 8d 00 38 	sw (sp+56),r13                                 
 800428c:	5b 8e 00 34 	sw (sp+52),r14                                 
 8004290:	5b 8f 00 30 	sw (sp+48),r15                                 
 8004294:	5b 90 00 2c 	sw (sp+44),r16                                 
 8004298:	5b 91 00 28 	sw (sp+40),r17                                 
 800429c:	5b 92 00 24 	sw (sp+36),r18                                 
 80042a0:	5b 93 00 20 	sw (sp+32),r19                                 
 80042a4:	5b 94 00 1c 	sw (sp+28),r20                                 
 80042a8:	5b 95 00 18 	sw (sp+24),r21                                 
 80042ac:	5b 96 00 14 	sw (sp+20),r22                                 
 80042b0:	5b 97 00 10 	sw (sp+16),r23                                 
 80042b4:	5b 98 00 0c 	sw (sp+12),r24                                 
 80042b8:	5b 99 00 08 	sw (sp+8),r25                                  
 80042bc:	5b 9d 00 04 	sw (sp+4),ra                                   
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 80042c0:	78 14 08 01 	mvhi r20,0x801                                 
 80042c4:	3a 94 88 40 	ori r20,r20,0x8840                             
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 80042c8:	78 16 08 01 	mvhi r22,0x801                                 
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 80042cc:	78 15 08 01 	mvhi r21,0x801                                 
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 80042d0:	78 17 08 01 	mvhi r23,0x801                                 
 *        NULL       - if error                                       
 */                                                                   
                                                                      
static void *                                                         
rtems_aio_handle (void *arg)                                          
{                                                                     
 80042d4:	b8 20 68 00 	mv r13,r1                                      
 80042d8:	34 2e 00 1c 	addi r14,r1,28                                 
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 80042dc:	ba 80 90 00 	mv r18,r20                                     
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 80042e0:	37 98 00 60 	addi r24,sp,96                                 
					   &aio_request_queue.mutex,                                     
					   &timeout);                                                    
                                                                      
	  /* If no requests were added to the chain we delete the fd chain from
	     the queue and start working with idle fd chains */              
	  if (result == ETIMEDOUT) {                                         
 80042e4:	34 19 00 74 	mvi r25,116                                    
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 80042e8:	3a d6 88 98 	ori r22,r22,0x8898                             
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 80042ec:	3a b5 88 8c 	ori r21,r21,0x888c                             
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 80042f0:	3a f7 88 44 	ori r23,r23,0x8844                             
      node = rtems_chain_first (chain);                               
      req = (rtems_aio_request *) node;                               
                                                                      
      /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING      
	 discussion in rtems_aio_enqueue () */                               
      pthread_getschedparam (pthread_self(), &policy, ¶m);        
 80042f4:	37 8f 00 44 	addi r15,sp,68                                 
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 80042f8:	34 10 00 02 	mvi r16,2                                      
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 80042fc:	34 11 ff ff 	mvi r17,-1                                     
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004300:	34 13 00 03 	mvi r19,3                                      
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
 8004304:	b9 c0 08 00 	mv r1,r14                                      
 8004308:	f8 00 04 50 	calli 8005448 <pthread_mutex_lock>             
    if (result != 0)                                                  
 800430c:	5c 20 00 1f 	bne r1,r0,8004388 <rtems_aio_handle+0x10c>     <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004310:	29 ab 00 08 	lw r11,(r13+8)                                 
 8004314:	35 a4 00 0c 	addi r4,r13,12                                 
                                                                      
    /* If the locked chain is not empty, take the first               
       request extract it, unlock the chain and process               
       the request, in this way the user can supply more              
       requests to this fd chain */                                   
    if (!rtems_chain_is_empty (chain)) {                              
 8004318:	45 64 00 45 	be r11,r4,800442c <rtems_aio_handle+0x1b0>     
      node = rtems_chain_first (chain);                               
      req = (rtems_aio_request *) node;                               
                                                                      
      /* See _POSIX_PRIORITIZE_IO and _POSIX_PRIORITY_SCHEDULING      
	 discussion in rtems_aio_enqueue () */                               
      pthread_getschedparam (pthread_self(), &policy, ¶m);        
 800431c:	f8 00 07 45 	calli 8006030 <pthread_self>                   
 8004320:	37 82 00 68 	addi r2,sp,104                                 
 8004324:	b9 e0 18 00 	mv r3,r15                                      
 8004328:	f8 00 05 f3 	calli 8005af4 <pthread_getschedparam>          
      param.sched_priority = req->priority;                           
 800432c:	29 64 00 0c 	lw r4,(r11+12)                                 
 8004330:	5b 84 00 44 	sw (sp+68),r4                                  
      pthread_setschedparam (pthread_self(), req->policy, ¶m);    
 8004334:	f8 00 07 3f 	calli 8006030 <pthread_self>                   
 8004338:	29 62 00 08 	lw r2,(r11+8)                                  
 800433c:	b9 e0 18 00 	mv r3,r15                                      
 8004340:	f8 00 07 41 	calli 8006044 <pthread_setschedparam>          
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 8004344:	b9 60 08 00 	mv r1,r11                                      
 8004348:	f8 00 0a 72 	calli 8006d10 <_Chain_Extract>                 
                                                                      
      rtems_chain_extract (node);                                     
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 800434c:	b9 c0 08 00 	mv r1,r14                                      
 8004350:	f8 00 04 6e 	calli 8005508 <pthread_mutex_unlock>           
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
 8004354:	29 6c 00 14 	lw r12,(r11+20)                                
 8004358:	29 84 00 28 	lw r4,(r12+40)                                 
 800435c:	44 90 00 2d 	be r4,r16,8004410 <rtems_aio_handle+0x194>     
 8004360:	44 93 00 28 	be r4,r19,8004400 <rtems_aio_handle+0x184>     <== NEVER TAKEN
 8004364:	34 05 00 01 	mvi r5,1                                       
 8004368:	44 85 00 1b 	be r4,r5,80043d4 <rtems_aio_handle+0x158>      <== ALWAYS TAKEN
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
        req->aiocbp->return_value = -1;                               
 800436c:	59 91 00 30 	sw (r12+48),r17                                <== NOT EXECUTED
	req->aiocbp->error_code = errno;                                     
 8004370:	f8 00 2d 03 	calli 800f77c <__errno>                        <== NOT EXECUTED
 8004374:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8004378:	59 81 00 2c 	sw (r12+44),r1                                 <== NOT EXECUTED
    /* acquire the mutex of the current fd chain.                     
       we don't need to lock the queue mutex since we can             
       add requests to idle fd chains or even active ones             
       if the working request has been extracted from the             
       chain */                                                       
    result = pthread_mutex_lock (&r_chain->mutex);                    
 800437c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8004380:	f8 00 04 32 	calli 8005448 <pthread_mutex_lock>             <== NOT EXECUTED
    if (result != 0)                                                  
 8004384:	44 20 ff e3 	be r1,r0,8004310 <rtems_aio_handle+0x94>       <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004388:	34 01 00 00 	mvi r1,0                                       
 800438c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004390:	2b 8b 00 40 	lw r11,(sp+64)                                 
 8004394:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 8004398:	2b 8d 00 38 	lw r13,(sp+56)                                 
 800439c:	2b 8e 00 34 	lw r14,(sp+52)                                 
 80043a0:	2b 8f 00 30 	lw r15,(sp+48)                                 
 80043a4:	2b 90 00 2c 	lw r16,(sp+44)                                 
 80043a8:	2b 91 00 28 	lw r17,(sp+40)                                 
 80043ac:	2b 92 00 24 	lw r18,(sp+36)                                 
 80043b0:	2b 93 00 20 	lw r19,(sp+32)                                 
 80043b4:	2b 94 00 1c 	lw r20,(sp+28)                                 
 80043b8:	2b 95 00 18 	lw r21,(sp+24)                                 
 80043bc:	2b 96 00 14 	lw r22,(sp+20)                                 
 80043c0:	2b 97 00 10 	lw r23,(sp+16)                                 
 80043c4:	2b 98 00 0c 	lw r24,(sp+12)                                 
 80043c8:	2b 99 00 08 	lw r25,(sp+8)                                  
 80043cc:	37 9c 00 68 	addi sp,sp,104                                 
 80043d0:	c3 a0 00 00 	ret                                            
      pthread_mutex_unlock (&r_chain->mutex);                         
                                                                      
      switch (req->aiocbp->aio_lio_opcode) {                          
      case LIO_READ:                                                  
	AIO_printf ("read\n");                                               
        result = pread (req->aiocbp->aio_fildes,                      
 80043d4:	29 84 00 04 	lw r4,(r12+4)                                  
 80043d8:	29 81 00 00 	lw r1,(r12+0)                                  
 80043dc:	29 82 00 08 	lw r2,(r12+8)                                  
 80043e0:	29 83 00 0c 	lw r3,(r12+12)                                 
 80043e4:	f8 00 30 96 	calli 801063c <pread>                          
 80043e8:	b8 20 20 00 	mv r4,r1                                       
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 80043ec:	44 91 00 5b 	be r4,r17,8004558 <rtems_aio_handle+0x2dc>     <== NEVER TAKEN
        req->aiocbp->return_value = -1;                               
	req->aiocbp->error_code = errno;                                     
      } else {                                                        
        req->aiocbp->return_value = result;                           
 80043f0:	29 65 00 14 	lw r5,(r11+20)                                 
 80043f4:	58 a4 00 30 	sw (r5+48),r4                                  
        req->aiocbp->error_code = 0;                                  
 80043f8:	58 a0 00 2c 	sw (r5+44),r0                                  
 80043fc:	e3 ff ff c2 	bi 8004304 <rtems_aio_handle+0x88>             
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_SYNC:                                                  
	AIO_printf ("sync\n");                                               
      	result = fsync (req->aiocbp->aio_fildes);                      
 8004400:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8004404:	f8 00 1c fe 	calli 800b7fc <fsync>                          <== NOT EXECUTED
 8004408:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
      	break;                                                         
 800440c:	e3 ff ff f8 	bi 80043ec <rtems_aio_handle+0x170>            <== NOT EXECUTED
                        req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
                                                                      
      case LIO_WRITE:                                                 
	AIO_printf ("write\n");                                              
        result = pwrite (req->aiocbp->aio_fildes,                     
 8004410:	29 84 00 04 	lw r4,(r12+4)                                  
 8004414:	29 81 00 00 	lw r1,(r12+0)                                  
 8004418:	29 82 00 08 	lw r2,(r12+8)                                  
 800441c:	29 83 00 0c 	lw r3,(r12+12)                                 
 8004420:	f8 00 30 cb 	calli 801074c <pwrite>                         
 8004424:	b8 20 20 00 	mv r4,r1                                       
                         (void *) req->aiocbp->aio_buf,               
                         req->aiocbp->aio_nbytes, req->aiocbp->aio_offset);
        break;                                                        
 8004428:	e3 ff ff f1 	bi 80043ec <rtems_aio_handle+0x170>            
                                                                      
      struct timespec timeout;                                        
                                                                      
      AIO_printf ("Chain is empty [WQ], wait for work\n");            
                                                                      
      pthread_mutex_unlock (&r_chain->mutex);                         
 800442c:	b9 c0 08 00 	mv r1,r14                                      
 8004430:	f8 00 04 36 	calli 8005508 <pthread_mutex_unlock>           
      pthread_mutex_lock (&aio_request_queue.mutex);                  
 8004434:	ba 40 08 00 	mv r1,r18                                      
 8004438:	f8 00 04 04 	calli 8005448 <pthread_mutex_lock>             
                                                                      
      if (rtems_chain_is_empty (chain))                               
 800443c:	29 a1 00 08 	lw r1,(r13+8)                                  
 8004440:	45 61 00 04 	be r11,r1,8004450 <rtems_aio_handle+0x1d4>     <== ALWAYS TAKEN
	                                                                     
	  }                                                                  
	}                                                                    
      /* If there was a request added in the initial fd chain then release
	 the mutex and process it */                                         
      pthread_mutex_unlock (&aio_request_queue.mutex);                
 8004444:	ba 40 08 00 	mv r1,r18                                      
 8004448:	f8 00 04 30 	calli 8005508 <pthread_mutex_unlock>           
 800444c:	e3 ff ff ae 	bi 8004304 <rtems_aio_handle+0x88>             
      pthread_mutex_unlock (&r_chain->mutex);                         
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
 8004450:	bb 00 10 00 	mv r2,r24                                      
 8004454:	34 01 00 01 	mvi r1,1                                       
 8004458:	f8 00 01 df 	calli 8004bd4 <clock_gettime>                  
	  timeout.tv_sec += 3;                                               
 800445c:	2b 84 00 60 	lw r4,(sp+96)                                  
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 8004460:	35 ab 00 20 	addi r11,r13,32                                
 8004464:	b9 60 08 00 	mv r1,r11                                      
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 8004468:	34 84 00 03 	addi r4,r4,3                                   
	  timeout.tv_nsec = 0;                                               
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 800446c:	ba 40 10 00 	mv r2,r18                                      
 8004470:	bb 00 18 00 	mv r3,r24                                      
      pthread_mutex_lock (&aio_request_queue.mutex);                  
                                                                      
      if (rtems_chain_is_empty (chain))                               
	{                                                                    
	  clock_gettime (CLOCK_REALTIME, &timeout);                          
	  timeout.tv_sec += 3;                                               
 8004474:	5b 84 00 60 	sw (sp+96),r4                                  
	  timeout.tv_nsec = 0;                                               
 8004478:	5b 80 00 64 	sw (sp+100),r0                                 
	  result = pthread_cond_timedwait (&r_chain->cond,                   
 800447c:	f8 00 02 c4 	calli 8004f8c <pthread_cond_timedwait>         
					   &aio_request_queue.mutex,                                     
					   &timeout);                                                    
                                                                      
	  /* If no requests were added to the chain we delete the fd chain from
	     the queue and start working with idle fd chains */              
	  if (result == ETIMEDOUT) {                                         
 8004480:	5c 39 ff f1 	bne r1,r25,8004444 <rtems_aio_handle+0x1c8>    <== NEVER TAKEN
 8004484:	b9 a0 08 00 	mv r1,r13                                      
 8004488:	f8 00 0a 22 	calli 8006d10 <_Chain_Extract>                 
	    rtems_chain_extract (&r_chain->next_fd);                         
	    pthread_mutex_destroy (&r_chain->mutex);                         
 800448c:	b9 c0 08 00 	mv r1,r14                                      
 8004490:	f8 00 03 26 	calli 8005128 <pthread_mutex_destroy>          
	    pthread_cond_destroy (&r_chain->cond);                           
 8004494:	b9 60 08 00 	mv r1,r11                                      
 8004498:	f8 00 02 13 	calli 8004ce4 <pthread_cond_destroy>           
	    free (r_chain);                                                  
 800449c:	b9 a0 08 00 	mv r1,r13                                      
 80044a0:	fb ff f5 52 	calli 80019e8 <free>                           
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80044a4:	2a 4e 00 54 	lw r14,(r18+84)                                
	    pthread_cond_destroy (&r_chain->cond);                           
	    free (r_chain);                                                  
	                                                                     
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
 80044a8:	45 d6 00 18 	be r14,r22,8004508 <rtems_aio_handle+0x28c>    
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044ac:	2a 83 00 68 	lw r3,(r20+104)                                
	    ++aio_request_queue.active_threads;                              
 80044b0:	2a 82 00 64 	lw r2,(r20+100)                                
 80044b4:	b9 c0 08 00 	mv r1,r14                                      
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044b8:	34 63 ff ff 	addi r3,r3,-1                                  
	    ++aio_request_queue.active_threads;                              
 80044bc:	34 42 00 01 	addi r2,r2,1                                   
	      }                                                              
	    }                                                                
	    /* Otherwise move this chain to the working chain and            
	       start the loop all over again */                              
	    AIO_printf ("Work on idle\n");                                   
	    --aio_request_queue.idle_threads;                                
 80044c0:	5a 83 00 68 	sw (r20+104),r3                                
	    ++aio_request_queue.active_threads;                              
 80044c4:	5a 82 00 64 	sw (r20+100),r2                                
 80044c8:	f8 00 0a 12 	calli 8006d10 <_Chain_Extract>                 
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80044cc:	2a 84 00 48 	lw r4,(r20+72)                                 
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 80044d0:	29 c3 00 14 	lw r3,(r14+20)                                 
	    ++aio_request_queue.active_threads;                              
                                                                      
	    node = rtems_chain_first (&aio_request_queue.idle_req);          
	    rtems_chain_extract (node);                                      
                                                                      
	    r_chain = (rtems_aio_request_chain *) node;                      
 80044d4:	b9 c0 68 00 	mv r13,r14                                     
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 80044d8:	28 81 00 14 	lw r1,(r4+20)                                  
 80044dc:	4c 23 00 06 	bge r1,r3,80044f4 <rtems_aio_handle+0x278>     <== NEVER TAKEN
 80044e0:	44 95 00 05 	be r4,r21,80044f4 <rtems_aio_handle+0x278>     <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80044e4:	28 84 00 00 	lw r4,(r4+0)                                   
  rtems_chain_node *node;                                             
                                                                      
  node = rtems_chain_first (&aio_request_queue.work_req);             
  temp = (rtems_aio_request_chain *) node;                            
                                                                      
  while (temp->fildes < r_chain->fildes &&                            
 80044e8:	28 81 00 14 	lw r1,(r4+20)                                  
 80044ec:	4c 23 00 02 	bge r1,r3,80044f4 <rtems_aio_handle+0x278>     
 80044f0:	e3 ff ff fc 	bi 80044e0 <rtems_aio_handle+0x264>            
RTEMS_INLINE_ROUTINE void rtems_chain_insert(                         
  rtems_chain_node *after_node,                                       
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Insert( after_node, the_node );                              
 80044f4:	28 81 00 04 	lw r1,(r4+4)                                   
 80044f8:	b9 c0 10 00 	mv r2,r14                                      
 80044fc:	35 ce 00 1c 	addi r14,r14,28                                
 8004500:	f8 00 0a 1f 	calli 8006d7c <_Chain_Insert>                  
 8004504:	e3 ff ff d0 	bi 8004444 <rtems_aio_handle+0x1c8>            
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 8004508:	2a 44 00 68 	lw r4,(r18+104)                                
	      --aio_request_queue.active_threads;                            
 800450c:	2a 43 00 64 	lw r3,(r18+100)                                
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 8004510:	bb 00 10 00 	mv r2,r24                                      
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 8004514:	34 84 00 01 	addi r4,r4,1                                   
	      --aio_request_queue.active_threads;                            
 8004518:	34 63 ff ff 	addi r3,r3,-1                                  
	    /* If the idle chain is empty sleep for 3 seconds and wait for a 
	       signal. The thread now becomes idle. */                       
	    if (rtems_chain_is_empty (&aio_request_queue.idle_req)) {        
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
 800451c:	5a 44 00 68 	sw (r18+104),r4                                
	      --aio_request_queue.active_threads;                            
 8004520:	5a 43 00 64 	sw (r18+100),r3                                
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
 8004524:	34 01 00 01 	mvi r1,1                                       
 8004528:	f8 00 01 ab 	calli 8004bd4 <clock_gettime>                  
	      timeout.tv_sec += 3;                                           
 800452c:	2b 84 00 60 	lw r4,(sp+96)                                  
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004530:	ba e0 08 00 	mv r1,r23                                      
 8004534:	ba 40 10 00 	mv r2,r18                                      
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 8004538:	34 84 00 03 	addi r4,r4,3                                   
	      timeout.tv_nsec = 0;                                           
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 800453c:	bb 00 18 00 	mv r3,r24                                      
	      AIO_printf ("Chain is empty [IQ], wait for work\n");	          
                                                                      
	      ++aio_request_queue.idle_threads;                              
	      --aio_request_queue.active_threads;                            
	      clock_gettime (CLOCK_REALTIME, &timeout);                      
	      timeout.tv_sec += 3;                                           
 8004540:	5b 84 00 60 	sw (sp+96),r4                                  
	      timeout.tv_nsec = 0;                                           
 8004544:	5b 80 00 64 	sw (sp+100),r0                                 
                                                                      
	      result = pthread_cond_timedwait (&aio_request_queue.new_req,   
 8004548:	f8 00 02 91 	calli 8004f8c <pthread_cond_timedwait>         
					       &aio_request_queue.mutex,                                 
					       &timeout);                                                
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
 800454c:	44 39 00 05 	be r1,r25,8004560 <rtems_aio_handle+0x2e4>     <== ALWAYS TAKEN
 8004550:	2a 4e 00 54 	lw r14,(r18+84)                                <== NOT EXECUTED
 8004554:	e3 ff ff d6 	bi 80044ac <rtems_aio_handle+0x230>            <== NOT EXECUTED
      	break;                                                         
                                                                      
      default:                                                        
        result = -1;                                                  
      }                                                               
      if (result == -1) {                                             
 8004558:	29 6c 00 14 	lw r12,(r11+20)                                <== NOT EXECUTED
 800455c:	e3 ff ff 84 	bi 800436c <rtems_aio_handle+0xf0>             <== NOT EXECUTED
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
 8004560:	2a 42 00 68 	lw r2,(r18+104)                                
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8004564:	ba 40 08 00 	mv r1,r18                                      
	                                                                     
	      /* If no new fd chain was added in the idle requests           
		 then this thread is finished */                                    
	      if (result == ETIMEDOUT) {                                     
		AIO_printf ("Etimeout\n");                                          
		--aio_request_queue.idle_threads;                                   
 8004568:	34 42 ff ff 	addi r2,r2,-1                                  
 800456c:	5a 42 00 68 	sw (r18+104),r2                                
		pthread_mutex_unlock (&aio_request_queue.mutex);                    
 8004570:	f8 00 03 e6 	calli 8005508 <pthread_mutex_unlock>           
		return NULL;                                                        
 8004574:	e3 ff ff 85 	bi 8004388 <rtems_aio_handle+0x10c>            
                                                                      

08004578 <rtems_aio_init>: * 0 - if initialization succeeded */ int rtems_aio_init (void) {
 8004578:	37 9c ff f0 	addi sp,sp,-16                                 
 800457c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004580:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004584:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004588:	5b 9d 00 04 	sw (sp+4),ra                                   
  int result = 0;                                                     
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
 800458c:	78 0c 08 01 	mvhi r12,0x801                                 
 8004590:	39 8c 88 48 	ori r12,r12,0x8848                             
 8004594:	b9 80 08 00 	mv r1,r12                                      
 8004598:	f8 00 04 3f 	calli 8005694 <pthread_attr_init>              
 800459c:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0)                                                    
 80045a0:	44 20 00 08 	be r1,r0,80045c0 <rtems_aio_init+0x48>         <== ALWAYS TAKEN
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 80045a4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80045a8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80045ac:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 80045b0:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 80045b4:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80045b8:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 80045bc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  result = pthread_attr_init (&aio_request_queue.attr);               
  if (result != 0)                                                    
    return result;                                                    
                                                                      
  result =                                                            
 80045c0:	b9 80 08 00 	mv r1,r12                                      
 80045c4:	34 02 00 00 	mvi r2,0                                       
 80045c8:	f8 00 04 6a 	calli 8005770 <pthread_attr_setdetachstate>    
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
 80045cc:	5c 2d 00 26 	bne r1,r13,8004664 <rtems_aio_init+0xec>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 80045d0:	78 0b 08 01 	mvhi r11,0x801                                 
 80045d4:	39 6b 88 40 	ori r11,r11,0x8840                             
 80045d8:	b9 60 08 00 	mv r1,r11                                      
 80045dc:	34 02 00 00 	mvi r2,0                                       
 80045e0:	f8 00 03 39 	calli 80052c4 <pthread_mutex_init>             
  if (result != 0)                                                    
 80045e4:	5c 20 00 28 	bne r1,r0,8004684 <rtems_aio_init+0x10c>       <== NEVER TAKEN
    pthread_attr_destroy (&aio_request_queue.attr);                   
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 80045e8:	78 01 08 01 	mvhi r1,0x801                                  
 80045ec:	38 21 88 44 	ori r1,r1,0x8844                               
 80045f0:	34 02 00 00 	mvi r2,0                                       
 80045f4:	f8 00 01 fc 	calli 8004de4 <pthread_cond_init>              
 80045f8:	b8 20 68 00 	mv r13,r1                                      
  if (result != 0) {                                                  
 80045fc:	5c 20 00 2a 	bne r1,r0,80046a4 <rtems_aio_init+0x12c>       <== NEVER TAKEN
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8004600:	78 01 08 01 	mvhi r1,0x801                                  
 8004604:	38 21 88 94 	ori r1,r1,0x8894                               
 8004608:	59 61 00 5c 	sw (r11+92),r1                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800460c:	78 04 08 01 	mvhi r4,0x801                                  
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
  aio_request_queue.idle_threads = 0;                                 
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
 8004610:	38 01 b0 0b 	mvu r1,0xb00b                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8004614:	78 03 08 01 	mvhi r3,0x801                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004618:	78 02 08 01 	mvhi r2,0x801                                  
 800461c:	38 84 88 8c 	ori r4,r4,0x888c                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
 8004620:	38 63 88 88 	ori r3,r3,0x8888                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8004624:	38 42 88 98 	ori r2,r2,0x8898                               
 8004628:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
  return result;                                                      
}                                                                     
 800462c:	b9 a0 08 00 	mv r1,r13                                      
 8004630:	59 64 00 48 	sw (r11+72),r4                                 
  head->previous = NULL;                                              
 8004634:	59 60 00 4c 	sw (r11+76),r0                                 
  tail->previous = head;                                              
 8004638:	59 63 00 50 	sw (r11+80),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800463c:	59 62 00 54 	sw (r11+84),r2                                 
  head->previous = NULL;                                              
 8004640:	59 60 00 58 	sw (r11+88),r0                                 
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&aio_request_queue.work_req);         
  rtems_chain_initialize_empty (&aio_request_queue.idle_req);         
                                                                      
  aio_request_queue.active_threads = 0;                               
 8004644:	59 60 00 64 	sw (r11+100),r0                                
  aio_request_queue.idle_threads = 0;                                 
 8004648:	59 60 00 68 	sw (r11+104),r0                                
  aio_request_queue.initialized = AIO_QUEUE_INITIALIZED;              
                                                                      
  return result;                                                      
}                                                                     
 800464c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004650:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004654:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004658:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800465c:	37 9c 00 10 	addi sp,sp,16                                  
 8004660:	c3 a0 00 00 	ret                                            
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004664:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 8004668:	78 0b 08 01 	mvhi r11,0x801                                 <== NOT EXECUTED
                                                                      
  result =                                                            
    pthread_attr_setdetachstate (&aio_request_queue.attr,             
                                 PTHREAD_CREATE_DETACHED);            
  if (result != 0)                                                    
    pthread_attr_destroy (&aio_request_queue.attr);                   
 800466c:	f8 00 04 02 	calli 8005674 <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_mutex_init (&aio_request_queue.mutex, NULL);       
 8004670:	39 6b 88 40 	ori r11,r11,0x8840                             <== NOT EXECUTED
 8004674:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004678:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800467c:	f8 00 03 12 	calli 80052c4 <pthread_mutex_init>             <== NOT EXECUTED
  if (result != 0)                                                    
 8004680:	44 20 ff da 	be r1,r0,80045e8 <rtems_aio_init+0x70>         <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 8004684:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8004688:	f8 00 03 fb 	calli 8005674 <pthread_attr_destroy>           <== NOT EXECUTED
                                                                      
                                                                      
  result = pthread_cond_init (&aio_request_queue.new_req, NULL);      
 800468c:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 8004690:	38 21 88 44 	ori r1,r1,0x8844                               <== NOT EXECUTED
 8004694:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8004698:	f8 00 01 d3 	calli 8004de4 <pthread_cond_init>              <== NOT EXECUTED
 800469c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (result != 0) {                                                  
 80046a0:	44 20 ff d8 	be r1,r0,8004600 <rtems_aio_init+0x88>         <== NOT EXECUTED
    pthread_mutex_destroy (&aio_request_queue.mutex);                 
 80046a4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80046a8:	f8 00 02 a0 	calli 8005128 <pthread_mutex_destroy>          <== NOT EXECUTED
    pthread_attr_destroy (&aio_request_queue.attr);                   
 80046ac:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80046b0:	f8 00 03 f1 	calli 8005674 <pthread_attr_destroy>           <== NOT EXECUTED
 80046b4:	e3 ff ff d3 	bi 8004600 <rtems_aio_init+0x88>               <== NOT EXECUTED
                                                                      

08004224 <rtems_aio_insert_prio>: * NONE */ static void rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req) {
 8004224:	37 9c ff fc 	addi sp,sp,-4                                  
 8004228:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 800422c:	28 23 00 00 	lw r3,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8004230:	34 26 00 04 	addi r6,r1,4                                   
 *        NONE                                                        
 */                                                                   
                                                                      
static void                                                           
rtems_aio_insert_prio (rtems_chain_control *chain, rtems_aio_request *req)
{                                                                     
 8004234:	b8 40 38 00 	mv r7,r2                                       
  rtems_chain_node *node;                                             
                                                                      
  AIO_printf ("FD exists \n");                                        
  node = rtems_chain_first (chain);                                   
                                                                      
  if (rtems_chain_is_empty (chain)) {                                 
 8004238:	44 66 00 0d 	be r3,r6,800426c <rtems_aio_insert_prio+0x48>  <== NEVER TAKEN
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 800423c:	28 42 00 14 	lw r2,(r2+20)                                  
  if (rtems_chain_is_empty (chain)) {                                 
    AIO_printf ("First in chain \n");                                 
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
 8004240:	28 61 00 14 	lw r1,(r3+20)                                  
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 8004244:	28 45 00 10 	lw r5,(r2+16)                                  
 8004248:	28 21 00 10 	lw r1,(r1+16)                                  
 800424c:	4c 25 00 06 	bge r1,r5,8004264 <rtems_aio_insert_prio+0x40> <== ALWAYS TAKEN
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004250:	28 63 00 00 	lw r3,(r3+0)                                   <== NOT EXECUTED
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
           !rtems_chain_is_tail (chain, node)) {                      
      node = rtems_chain_next (node);                                 
      prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;       
 8004254:	28 61 00 14 	lw r1,(r3+20)                                  <== NOT EXECUTED
    rtems_chain_prepend (chain, &req->next_prio);                     
  } else {                                                            
    AIO_printf ("Add by priority \n");                                
    int prio = ((rtems_aio_request *) node)->aiocbp->aio_reqprio;     
                                                                      
    while (req->aiocbp->aio_reqprio > prio &&                         
 8004258:	28 24 00 10 	lw r4,(r1+16)                                  <== NOT EXECUTED
 800425c:	4c 85 00 02 	bge r4,r5,8004264 <rtems_aio_insert_prio+0x40> <== NOT EXECUTED
 8004260:	5c 66 ff fc 	bne r3,r6,8004250 <rtems_aio_insert_prio+0x2c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void rtems_chain_insert(                         
  rtems_chain_node *after_node,                                       
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Insert( after_node, the_node );                              
 8004264:	28 61 00 04 	lw r1,(r3+4)                                   
 8004268:	b8 e0 10 00 	mv r2,r7                                       
 800426c:	f8 00 0a c4 	calli 8006d7c <_Chain_Insert>                  
    }                                                                 
                                                                      
    rtems_chain_insert (node->previous, &req->next_prio);             
                                                                      
  }                                                                   
}                                                                     
 8004270:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004274:	37 9c 00 04 	addi sp,sp,4                                   
 8004278:	c3 a0 00 00 	ret                                            
                                                                      

08004798 <rtems_aio_remove_fd>: * Output parameters: * NONE */ void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain) {
 8004798:	37 9c ff ec 	addi sp,sp,-20                                 
 800479c:	5b 8b 00 14 	sw (sp+20),r11                                 
 80047a0:	5b 8c 00 10 	sw (sp+16),r12                                 
 80047a4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80047a8:	5b 8e 00 08 	sw (sp+8),r14                                  
 80047ac:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80047b0:	28 2b 00 08 	lw r11,(r1+8)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 80047b4:	34 2c 00 0c 	addi r12,r1,12                                 
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
 80047b8:	45 6c 00 0c 	be r11,r12,80047e8 <rtems_aio_remove_fd+0x50>  <== NEVER TAKEN
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
 80047bc:	34 0e 00 8c 	mvi r14,140                                    
      req->aiocbp->return_value = -1;                                 
 80047c0:	34 0d ff ff 	mvi r13,-1                                     
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 80047c4:	b9 60 08 00 	mv r1,r11                                      
 80047c8:	f8 00 09 52 	calli 8006d10 <_Chain_Extract>                 
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
 80047cc:	29 62 00 14 	lw r2,(r11+20)                                 
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
 80047d0:	b9 60 08 00 	mv r1,r11                                      
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 80047d4:	29 6b 00 00 	lw r11,(r11+0)                                 
  while (!rtems_chain_is_tail (chain, node))                          
    {                                                                 
      rtems_chain_extract (node);                                     
      rtems_aio_request *req = (rtems_aio_request *) node;            
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
 80047d8:	58 4e 00 2c 	sw (r2+44),r14                                 
      req->aiocbp->return_value = -1;                                 
 80047dc:	58 4d 00 30 	sw (r2+48),r13                                 
      free (req);                                                     
 80047e0:	fb ff f4 82 	calli 80019e8 <free>                           
  rtems_chain_control *chain;                                         
  rtems_chain_node *node;                                             
  chain = &r_chain->perfd;                                            
  node = rtems_chain_first (chain);                                   
                                                                      
  while (!rtems_chain_is_tail (chain, node))                          
 80047e4:	5d 6c ff f8 	bne r11,r12,80047c4 <rtems_aio_remove_fd+0x2c> 
      node = rtems_chain_next (node);                                 
      req->aiocbp->error_code = ECANCELED;                            
      req->aiocbp->return_value = -1;                                 
      free (req);                                                     
    }                                                                 
}                                                                     
 80047e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047ec:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80047f0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80047f4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80047f8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80047fc:	37 9c 00 14 	addi sp,sp,20                                  
 8004800:	c3 a0 00 00 	ret                                            
                                                                      

08004804 <rtems_aio_remove_req>: * AIO_NOTCANCELED - if request was not canceled * AIO_CANCELED - if request was canceled */ int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp) {
 8004804:	37 9c ff f8 	addi sp,sp,-8                                  
 8004808:	5b 8b 00 08 	sw (sp+8),r11                                  
 800480c:	5b 9d 00 04 	sw (sp+4),ra                                   
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004810:	28 2b 00 00 	lw r11,(r1+0)                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8004814:	34 23 00 04 	addi r3,r1,4                                   
 */                                                                   
                                                                      
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{                                                                     
  if (rtems_chain_is_empty (chain))                                   
    return AIO_ALLDONE;                                               
 8004818:	34 01 00 02 	mvi r1,2                                       
 *         AIO_CANCELED      - if request was canceled                
 */                                                                   
                                                                      
int rtems_aio_remove_req (rtems_chain_control *chain, struct aiocb *aiocbp)
{                                                                     
  if (rtems_chain_is_empty (chain))                                   
 800481c:	5d 63 00 04 	bne r11,r3,800482c <rtems_aio_remove_req+0x28> 
 8004820:	e0 00 00 0f 	bi 800485c <rtems_aio_remove_req+0x58>         
    }                                                                 
  }                                                                   
                                                                      
  AIO_printf ("Thread finished\n");                                   
  return NULL;                                                        
}                                                                     
 8004824:	29 6b 00 00 	lw r11,(r11+0)                                 <== NOT EXECUTED
  rtems_chain_node *node = rtems_chain_first (chain);                 
  rtems_aio_request *current;                                         
                                                                      
  current = (rtems_aio_request *) node;                               
                                                                      
  while (!rtems_chain_is_tail (chain, node) && current->aiocbp != aiocbp) {
 8004828:	45 63 00 11 	be r11,r3,800486c <rtems_aio_remove_req+0x68>  <== NOT EXECUTED
 800482c:	29 61 00 14 	lw r1,(r11+20)                                 
 8004830:	5c 22 ff fd 	bne r1,r2,8004824 <rtems_aio_remove_req+0x20>  <== NEVER TAKEN
 8004834:	b9 60 08 00 	mv r1,r11                                      
 8004838:	f8 00 09 36 	calli 8006d10 <_Chain_Extract>                 
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
  else                                                                
    {                                                                 
      rtems_chain_extract (node);                                     
      current->aiocbp->error_code = ECANCELED;                        
 800483c:	29 61 00 14 	lw r1,(r11+20)                                 
 8004840:	34 02 00 8c 	mvi r2,140                                     
 8004844:	58 22 00 2c 	sw (r1+44),r2                                  
      current->aiocbp->return_value = -1;                             
 8004848:	34 02 ff ff 	mvi r2,-1                                      
 800484c:	58 22 00 30 	sw (r1+48),r2                                  
      free (current);                                                 
 8004850:	b9 60 08 00 	mv r1,r11                                      
 8004854:	fb ff f4 65 	calli 80019e8 <free>                           
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
 8004858:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800485c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004860:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004864:	37 9c 00 08 	addi sp,sp,8                                   
 8004868:	c3 a0 00 00 	ret                                            
    node = rtems_chain_next (node);                                   
    current = (rtems_aio_request *) node;                             
  }                                                                   
                                                                      
  if (rtems_chain_is_tail (chain, node))                              
    return AIO_NOTCANCELED;                                           
 800486c:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
      current->aiocbp->return_value = -1;                             
      free (current);                                                 
    }                                                                 
                                                                      
  return AIO_CANCELED;                                                
}                                                                     
 8004870:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004874:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8004878:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800487c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800c4a8 <rtems_assoc_local_by_remote_bitfield>: uint32_t rtems_assoc_local_by_remote_bitfield( const rtems_assoc_t *ap, uint32_t remote_value ) {
 800c4a8:	37 9c ff e8 	addi sp,sp,-24                                 
 800c4ac:	5b 8b 00 18 	sw (sp+24),r11                                 
 800c4b0:	5b 8c 00 14 	sw (sp+20),r12                                 
 800c4b4:	5b 8d 00 10 	sw (sp+16),r13                                 
 800c4b8:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800c4bc:	5b 8f 00 08 	sw (sp+8),r15                                  
 800c4c0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c4c4:	34 0c 00 20 	mvi r12,32                                     
 800c4c8:	b8 20 78 00 	mv r15,r1                                      
 800c4cc:	b8 40 68 00 	mv r13,r2                                      
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
 800c4d0:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c4d4:	34 0b 00 01 	mvi r11,1                                      
 800c4d8:	e0 00 00 03 	bi 800c4e4 <rtems_assoc_local_by_remote_bitfield+0x3c>
 800c4dc:	b5 6b 58 00 	add r11,r11,r11                                
 800c4e0:	45 80 00 0a 	be r12,r0,800c508 <rtems_assoc_local_by_remote_bitfield+0x60>
    if (b & remote_value)                                             
 800c4e4:	a1 6d 18 00 	and r3,r11,r13                                 
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c4e8:	35 8c ff ff 	addi r12,r12,-1                                
    if (b & remote_value)                                             
 800c4ec:	44 60 ff fc 	be r3,r0,800c4dc <rtems_assoc_local_by_remote_bitfield+0x34>
      local_value |= rtems_assoc_local_by_remote(ap, b);              
 800c4f0:	b9 60 10 00 	mv r2,r11                                      
 800c4f4:	b9 e0 08 00 	mv r1,r15                                      
 800c4f8:	f8 00 00 0d 	calli 800c52c <rtems_assoc_local_by_remote>    
 800c4fc:	b9 c1 70 00 	or r14,r14,r1                                  
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   local_value = 0;                                         
                                                                      
  for (b = 1; b; b <<= 1) {                                           
 800c500:	b5 6b 58 00 	add r11,r11,r11                                
 800c504:	5d 80 ff f8 	bne r12,r0,800c4e4 <rtems_assoc_local_by_remote_bitfield+0x3c><== ALWAYS TAKEN
    if (b & remote_value)                                             
      local_value |= rtems_assoc_local_by_remote(ap, b);              
  }                                                                   
                                                                      
  return local_value;                                                 
}                                                                     
 800c508:	b9 c0 08 00 	mv r1,r14                                      
 800c50c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c510:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800c514:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800c518:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800c51c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800c520:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800c524:	37 9c 00 18 	addi sp,sp,24                                  
 800c528:	c3 a0 00 00 	ret                                            
                                                                      

08008df4 <rtems_assoc_ptr_by_local>: const rtems_assoc_t *rtems_assoc_ptr_by_local( const rtems_assoc_t *ap, uint32_t local_value ) {
 8008df4:	37 9c ff f4 	addi sp,sp,-12                                 
 8008df8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8008dfc:	5b 8c 00 08 	sw (sp+8),r12                                  
 8008e00:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008e04:	b8 20 58 00 	mv r11,r1                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8008e08:	28 21 00 00 	lw r1,(r1+0)                                   
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
 8008e0c:	b8 40 60 00 	mv r12,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8008e10:	44 20 00 1f 	be r1,r0,8008e8c <rtems_assoc_ptr_by_local+0x98>
 8008e14:	78 02 08 01 	mvhi r2,0x801                                  
 8008e18:	38 42 dd 9c 	ori r2,r2,0xdd9c                               
 8008e1c:	f8 00 15 e2 	calli 800e5a4 <strcmp>                         
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8008e20:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8008e24:	5c 20 00 0b 	bne r1,r0,8008e50 <rtems_assoc_ptr_by_local+0x5c>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8008e28:	29 63 00 0c 	lw r3,(r11+12)                                 
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 8008e2c:	35 61 00 0c 	addi r1,r11,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 8008e30:	44 62 00 0a 	be r3,r2,8008e58 <rtems_assoc_ptr_by_local+0x64><== NEVER TAKEN
 8008e34:	b9 60 10 00 	mv r2,r11                                      
 8008e38:	b8 20 58 00 	mv r11,r1                                      
    if (ap->local_value == local_value)                               
 8008e3c:	29 61 00 04 	lw r1,(r11+4)                                  
 8008e40:	44 2c 00 06 	be r1,r12,8008e58 <rtems_assoc_ptr_by_local+0x64><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8008e44:	35 6b 00 0c 	addi r11,r11,12                                
 8008e48:	29 61 00 00 	lw r1,(r11+0)                                  
 8008e4c:	44 20 00 09 	be r1,r0,8008e70 <rtems_assoc_ptr_by_local+0x7c>
    if (ap->local_value == local_value)                               
 8008e50:	29 61 00 04 	lw r1,(r11+4)                                  
 8008e54:	5c 2c ff fc 	bne r1,r12,8008e44 <rtems_assoc_ptr_by_local+0x50>
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 8008e58:	b9 60 08 00 	mv r1,r11                                      
 8008e5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008e60:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008e64:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008e68:	37 9c 00 0c 	addi sp,sp,12                                  
 8008e6c:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8008e70:	b8 40 58 00 	mv r11,r2                                      
    if (ap->local_value == local_value)                               
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 8008e74:	b9 60 08 00 	mv r1,r11                                      
 8008e78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008e7c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008e80:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008e84:	37 9c 00 0c 	addi sp,sp,12                                  
 8008e88:	c3 a0 00 00 	ret                                            
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8008e8c:	34 0b 00 00 	mvi r11,0                                      
  for ( ; ap->name; ap++)                                             
    if (ap->local_value == local_value)                               
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 8008e90:	b9 60 08 00 	mv r1,r11                                      
 8008e94:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008e98:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8008e9c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8008ea0:	37 9c 00 0c 	addi sp,sp,12                                  
 8008ea4:	c3 a0 00 00 	ret                                            
                                                                      

08001f64 <rtems_assoc_ptr_by_name>: const rtems_assoc_t *rtems_assoc_ptr_by_name( const rtems_assoc_t *ap, const char *name ) {
 8001f64:	37 9c ff ec 	addi sp,sp,-20                                 
 8001f68:	5b 8b 00 14 	sw (sp+20),r11                                 
 8001f6c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8001f70:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001f74:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001f78:	5b 9d 00 04 	sw (sp+4),ra                                   
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8001f7c:	28 2b 00 00 	lw r11,(r1+0)                                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
 8001f80:	b8 20 60 00 	mv r12,r1                                      
 8001f84:	b8 40 68 00 	mv r13,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8001f88:	45 60 00 28 	be r11,r0,8002028 <rtems_assoc_ptr_by_name+0xc4><== NEVER TAKEN
 8001f8c:	78 02 08 01 	mvhi r2,0x801                                  
 8001f90:	b9 60 08 00 	mv r1,r11                                      
 8001f94:	38 42 4e d8 	ori r2,r2,0x4ed8                               
 8001f98:	f8 00 32 d1 	calli 800eadc <strcmp>                         
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8001f9c:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 8001fa0:	5c 20 00 0d 	bne r1,r0,8001fd4 <rtems_assoc_ptr_by_name+0x70>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8001fa4:	29 8b 00 0c 	lw r11,(r12+12)                                
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 8001fa8:	35 81 00 0c 	addi r1,r12,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 8001fac:	45 6e 00 0e 	be r11,r14,8001fe4 <rtems_assoc_ptr_by_name+0x80><== NEVER TAKEN
 8001fb0:	b9 80 70 00 	mv r14,r12                                     
    if (strcmp(ap->name, name) == 0)                                  
 8001fb4:	b9 a0 10 00 	mv r2,r13                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8001fb8:	b8 20 60 00 	mv r12,r1                                      
    if (strcmp(ap->name, name) == 0)                                  
 8001fbc:	b9 60 08 00 	mv r1,r11                                      
 8001fc0:	f8 00 32 c7 	calli 800eadc <strcmp>                         
 8001fc4:	44 20 00 08 	be r1,r0,8001fe4 <rtems_assoc_ptr_by_name+0x80><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8001fc8:	35 8c 00 0c 	addi r12,r12,12                                
 8001fcc:	29 8b 00 00 	lw r11,(r12+0)                                 
 8001fd0:	45 60 00 0d 	be r11,r0,8002004 <rtems_assoc_ptr_by_name+0xa0><== NEVER TAKEN
    if (strcmp(ap->name, name) == 0)                                  
 8001fd4:	b9 60 08 00 	mv r1,r11                                      
 8001fd8:	b9 a0 10 00 	mv r2,r13                                      
 8001fdc:	f8 00 32 c0 	calli 800eadc <strcmp>                         
 8001fe0:	5c 20 ff fa 	bne r1,r0,8001fc8 <rtems_assoc_ptr_by_name+0x64>
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 8001fe4:	b9 80 08 00 	mv r1,r12                                      
 8001fe8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001fec:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001ff0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001ff4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001ff8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001ffc:	37 9c 00 14 	addi sp,sp,20                                  
 8002000:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 8002004:	b9 c0 60 00 	mv r12,r14                                     
    if (strcmp(ap->name, name) == 0)                                  
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 8002008:	b9 80 08 00 	mv r1,r12                                      
 800200c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002010:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002014:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002018:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800201c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002020:	37 9c 00 14 	addi sp,sp,20                                  
 8002024:	c3 a0 00 00 	ret                                            
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 8002028:	34 0c 00 00 	mvi r12,0                                      
  for ( ; ap->name; ap++)                                             
    if (strcmp(ap->name, name) == 0)                                  
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
 800202c:	b9 80 08 00 	mv r1,r12                                      
 8002030:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002034:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002038:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800203c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002040:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002044:	37 9c 00 14 	addi sp,sp,20                                  
 8002048:	c3 a0 00 00 	ret                                            
                                                                      

0800c560 <rtems_assoc_ptr_by_remote>: const rtems_assoc_t *rtems_assoc_ptr_by_remote( const rtems_assoc_t *ap, uint32_t remote_value ) {
 800c560:	37 9c ff f4 	addi sp,sp,-12                                 
 800c564:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800c568:	5b 8c 00 08 	sw (sp+8),r12                                  
 800c56c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c570:	b8 20 58 00 	mv r11,r1                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c574:	28 21 00 00 	lw r1,(r1+0)                                   
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
 800c578:	b8 40 60 00 	mv r12,r2                                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c57c:	44 20 00 1f 	be r1,r0,800c5f8 <rtems_assoc_ptr_by_remote+0x98>
 800c580:	78 02 08 01 	mvhi r2,0x801                                  
 800c584:	38 42 dd 9c 	ori r2,r2,0xdd9c                               
 800c588:	f8 00 08 07 	calli 800e5a4 <strcmp>                         
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 800c58c:	34 02 00 00 	mvi r2,0                                       
                                                                      
  if (rtems_assoc_is_default(ap))                                     
 800c590:	5c 20 00 0b 	bne r1,r0,800c5bc <rtems_assoc_ptr_by_remote+0x5c>
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c594:	29 63 00 0c 	lw r3,(r11+12)                                 
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
 800c598:	35 61 00 0c 	addi r1,r11,12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
 800c59c:	44 62 00 0a 	be r3,r2,800c5c4 <rtems_assoc_ptr_by_remote+0x64><== NEVER TAKEN
 800c5a0:	b9 60 10 00 	mv r2,r11                                      
 800c5a4:	b8 20 58 00 	mv r11,r1                                      
    if (ap->remote_value == remote_value)                             
 800c5a8:	29 61 00 08 	lw r1,(r11+8)                                  
 800c5ac:	44 2c 00 06 	be r1,r12,800c5c4 <rtems_assoc_ptr_by_remote+0x64><== NEVER TAKEN
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c5b0:	35 6b 00 0c 	addi r11,r11,12                                
 800c5b4:	29 61 00 00 	lw r1,(r11+0)                                  
 800c5b8:	44 20 00 09 	be r1,r0,800c5dc <rtems_assoc_ptr_by_remote+0x7c>
    if (ap->remote_value == remote_value)                             
 800c5bc:	29 61 00 08 	lw r1,(r11+8)                                  
 800c5c0:	5c 2c ff fc 	bne r1,r12,800c5b0 <rtems_assoc_ptr_by_remote+0x50>
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c5c4:	b9 60 08 00 	mv r1,r11                                      
 800c5c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c5cc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c5d0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c5d4:	37 9c 00 0c 	addi sp,sp,12                                  
 800c5d8:	c3 a0 00 00 	ret                                            
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
 800c5dc:	b8 40 58 00 	mv r11,r2                                      
    if (ap->remote_value == remote_value)                             
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c5e0:	b9 60 08 00 	mv r1,r11                                      
 800c5e4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c5e8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c5ec:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c5f0:	37 9c 00 0c 	addi sp,sp,12                                  
 800c5f4:	c3 a0 00 00 	ret                                            
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
 800c5f8:	34 0b 00 00 	mvi r11,0                                      
  for ( ; ap->name; ap++)                                             
    if (ap->remote_value == remote_value)                             
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
 800c5fc:	b9 60 08 00 	mv r1,r11                                      
 800c600:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c604:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800c608:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800c60c:	37 9c 00 0c 	addi sp,sp,12                                  
 800c610:	c3 a0 00 00 	ret                                            
                                                                      

08002100 <rtems_assoc_remote_by_local_bitfield>: uint32_t rtems_assoc_remote_by_local_bitfield( const rtems_assoc_t *ap, uint32_t local_value ) {
 8002100:	37 9c ff e8 	addi sp,sp,-24                                 
 8002104:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002108:	5b 8c 00 14 	sw (sp+20),r12                                 
 800210c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002110:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002114:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002118:	5b 9d 00 04 	sw (sp+4),ra                                   
 800211c:	34 0c 00 20 	mvi r12,32                                     
 8002120:	b8 20 78 00 	mv r15,r1                                      
 8002124:	b8 40 68 00 	mv r13,r2                                      
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
 8002128:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  for (b = 1; b; b <<= 1)                                             
 800212c:	34 0b 00 01 	mvi r11,1                                      
 8002130:	e0 00 00 03 	bi 800213c <rtems_assoc_remote_by_local_bitfield+0x3c>
 8002134:	b5 6b 58 00 	add r11,r11,r11                                
 8002138:	45 80 00 0a 	be r12,r0,8002160 <rtems_assoc_remote_by_local_bitfield+0x60>
    if (b & local_value)                                              
 800213c:	a1 6d 18 00 	and r3,r11,r13                                 
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
                                                                      
  for (b = 1; b; b <<= 1)                                             
 8002140:	35 8c ff ff 	addi r12,r12,-1                                
    if (b & local_value)                                              
 8002144:	44 60 ff fc 	be r3,r0,8002134 <rtems_assoc_remote_by_local_bitfield+0x34>
      remote_value |= rtems_assoc_remote_by_local(ap, b);             
 8002148:	b9 60 10 00 	mv r2,r11                                      
 800214c:	b9 e0 08 00 	mv r1,r15                                      
 8002150:	f8 00 00 0d 	calli 8002184 <rtems_assoc_remote_by_local>    
 8002154:	b9 c1 70 00 	or r14,r14,r1                                  
)                                                                     
{                                                                     
  uint32_t   b;                                                       
  uint32_t   remote_value = 0;                                        
                                                                      
  for (b = 1; b; b <<= 1)                                             
 8002158:	b5 6b 58 00 	add r11,r11,r11                                
 800215c:	5d 80 ff f8 	bne r12,r0,800213c <rtems_assoc_remote_by_local_bitfield+0x3c><== ALWAYS TAKEN
    if (b & local_value)                                              
      remote_value |= rtems_assoc_remote_by_local(ap, b);             
                                                                      
  return remote_value;                                                
}                                                                     
 8002160:	b9 c0 08 00 	mv r1,r14                                      
 8002164:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002168:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800216c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002170:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002174:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002178:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800217c:	37 9c 00 18 	addi sp,sp,24                                  
 8002180:	c3 a0 00 00 	ret                                            
                                                                      

08009a6c <rtems_bdbuf_add_to_modified_list_after_access>: } } static void rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd) {
 8009a6c:	37 9c ff f4 	addi sp,sp,-12                                 
 8009a70:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009a74:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)   
 8009a78:	78 0b 08 01 	mvhi r11,0x801                                 
 8009a7c:	39 6b a7 74 	ori r11,r11,0xa774                             
 8009a80:	41 62 00 30 	lbu r2,(r11+48)                                
 8009a84:	44 40 00 04 	be r2,r0,8009a94 <rtems_bdbuf_add_to_modified_list_after_access+0x28><== ALWAYS TAKEN
 8009a88:	29 63 00 38 	lw r3,(r11+56)                                 <== NOT EXECUTED
 8009a8c:	28 22 00 14 	lw r2,(r1+20)                                  <== NOT EXECUTED
 8009a90:	44 62 00 27 	be r3,r2,8009b2c <rtems_bdbuf_add_to_modified_list_after_access+0xc0><== NOT EXECUTED
   * difficult question. Is a snapshot of a block that is changing better than
   * nothing being written? We have tended to think we should hold changes for
   * only a specific period of time even if still changing and get onto disk
   * and letting the file system try and recover this position if it can.
   */                                                                 
  if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED                    
 8009a94:	28 22 00 20 	lw r2,(r1+32)                                  
        || bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)               
 8009a98:	64 43 00 05 	cmpei r3,r2,5                                  
 8009a9c:	64 42 00 03 	cmpei r2,r2,3                                  
   * difficult question. Is a snapshot of a block that is changing better than
   * nothing being written? We have tended to think we should hold changes for
   * only a specific period of time even if still changing and get onto disk
   * and letting the file system try and recover this position if it can.
   */                                                                 
  if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED                    
 8009aa0:	b8 62 10 00 	or r2,r3,r2                                    
 8009aa4:	44 40 00 05 	be r2,r0,8009ab8 <rtems_bdbuf_add_to_modified_list_after_access+0x4c>
        || bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)               
    bd->hold_timer = bdbuf_config.swap_block_hold;                    
 8009aa8:	78 02 08 01 	mvhi r2,0x801                                  
 8009aac:	38 42 91 bc 	ori r2,r2,0x91bc                               
 8009ab0:	28 42 00 10 	lw r2,(r2+16)                                  
 8009ab4:	58 22 00 2c 	sw (r1+44),r2                                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8009ab8:	29 64 00 54 	lw r4,(r11+84)                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 8009abc:	34 03 00 07 	mvi r3,7                                       
                                                                      
  the_node->next = tail;                                              
 8009ac0:	78 02 08 01 	mvhi r2,0x801                                  
 8009ac4:	58 23 00 20 	sw (r1+32),r3                                  
 8009ac8:	38 42 a7 c4 	ori r2,r2,0xa7c4                               
    bd->hold_timer = bdbuf_config.swap_block_hold;                    
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
 8009acc:	28 23 00 24 	lw r3,(r1+36)                                  
 8009ad0:	58 22 00 00 	sw (r1+0),r2                                   
  tail->previous = the_node;                                          
 8009ad4:	59 61 00 54 	sw (r11+84),r1                                 
  old_last->next = the_node;                                          
 8009ad8:	58 81 00 00 	sw (r4+0),r1                                   
  the_node->previous = old_last;                                      
 8009adc:	58 24 00 04 	sw (r1+4),r4                                   
 8009ae0:	5c 60 00 0c 	bne r3,r0,8009b10 <rtems_bdbuf_add_to_modified_list_after_access+0xa4>
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
  else if (rtems_bdbuf_has_buffer_waiters ())                         
 8009ae4:	29 61 00 74 	lw r1,(r11+116)                                
 8009ae8:	5c 23 00 05 	bne r1,r3,8009afc <rtems_bdbuf_add_to_modified_list_after_access+0x90>
    rtems_bdbuf_wake_swapper ();                                      
}                                                                     
 8009aec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009af0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009af4:	37 9c 00 0c 	addi sp,sp,12                                  
 8009af8:	c3 a0 00 00 	ret                                            
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
  else if (rtems_bdbuf_has_buffer_waiters ())                         
    rtems_bdbuf_wake_swapper ();                                      
 8009afc:	fb ff ff cf 	calli 8009a38 <rtems_bdbuf_wake_swapper>       
}                                                                     
 8009b00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009b04:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009b08:	37 9c 00 0c 	addi sp,sp,12                                  
 8009b0c:	c3 a0 00 00 	ret                                            
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
 8009b10:	78 01 08 01 	mvhi r1,0x801                                  
 8009b14:	38 21 a7 d8 	ori r1,r1,0xa7d8                               
 8009b18:	fb ff ff b9 	calli 80099fc <rtems_bdbuf_wake>               
  else if (rtems_bdbuf_has_buffer_waiters ())                         
    rtems_bdbuf_wake_swapper ();                                      
}                                                                     
 8009b1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009b20:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009b24:	37 9c 00 0c 	addi sp,sp,12                                  
 8009b28:	c3 a0 00 00 	ret                                            
static void                                                           
rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
{                                                                     
  if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)   
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
 8009b2c:	5b 81 00 0c 	sw (sp+12),r1                                  <== NOT EXECUTED
 8009b30:	fb ff ff 9f 	calli 80099ac <rtems_bdbuf_unlock_cache>       <== NOT EXECUTED
                                                                      
    /*                                                                
     * Wait for the sync lock.                                        
     */                                                               
    rtems_bdbuf_lock_sync ();                                         
 8009b34:	fb ff ff 7c 	calli 8009924 <rtems_bdbuf_lock_sync>          <== NOT EXECUTED
                                                                      
    rtems_bdbuf_unlock_sync ();                                       
 8009b38:	fb ff ff a7 	calli 80099d4 <rtems_bdbuf_unlock_sync>        <== NOT EXECUTED
    rtems_bdbuf_lock_cache ();                                        
 8009b3c:	fb ff ff 70 	calli 80098fc <rtems_bdbuf_lock_cache>         <== NOT EXECUTED
 8009b40:	2b 81 00 0c 	lw r1,(sp+12)                                  <== NOT EXECUTED
 8009b44:	e3 ff ff d4 	bi 8009a94 <rtems_bdbuf_add_to_modified_list_after_access+0x28><== NOT EXECUTED
                                                                      

08009be4 <rtems_bdbuf_anonymous_wait>: * The function assumes the cache is locked on entry and it will be locked on * exit. */ static void rtems_bdbuf_anonymous_wait (rtems_bdbuf_waiters *waiters) {
 8009be4:	37 9c ff f4 	addi sp,sp,-12                                 
 8009be8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8009bec:	5b 8c 00 08 	sw (sp+8),r12                                  
 8009bf0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009bf4:	b8 20 58 00 	mv r11,r1                                      
  rtems_mode        prev_mode;                                        
                                                                      
  /*                                                                  
   * Indicate we are waiting.                                         
   */                                                                 
  ++waiters->count;                                                   
 8009bf8:	28 21 00 00 	lw r1,(r1+0)                                   
 8009bfc:	34 21 00 01 	addi r1,r1,1                                   
 8009c00:	59 61 00 00 	sw (r11+0),r1                                  
   * blocking or just hits that window, and before this task has blocked on the
   * semaphore. If the preempting task flushes the queue this task will not see
   * the flush and may block for ever or until another transaction flushes this
   * semaphore.                                                       
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
 8009c04:	fb ff ff de 	calli 8009b7c <rtems_bdbuf_disable_preemption> 
 8009c08:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   * Unlock the cache, wait, and lock the cache when we return.       
   */                                                                 
  rtems_bdbuf_unlock_cache ();                                        
 8009c0c:	fb ff ff 68 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
 8009c10:	29 61 00 04 	lw r1,(r11+4)                                  
 8009c14:	34 02 00 00 	mvi r2,0                                       
 8009c18:	34 03 00 00 	mvi r3,0                                       
 8009c1c:	fb ff ed ae 	calli 80052d4 <rtems_semaphore_obtain>         
 8009c20:	b8 20 10 00 	mv r2,r1                                       
                                                                      
  if (sc == RTEMS_TIMEOUT)                                            
 8009c24:	34 01 00 06 	mvi r1,6                                       
 8009c28:	44 41 00 10 	be r2,r1,8009c68 <rtems_bdbuf_anonymous_wait+0x84><== NEVER TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);              
                                                                      
  if (sc != RTEMS_UNSATISFIED)                                        
 8009c2c:	34 01 00 0d 	mvi r1,13                                      
 8009c30:	44 41 00 03 	be r2,r1,8009c3c <rtems_bdbuf_anonymous_wait+0x58><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_2);               
 8009c34:	34 01 00 02 	mvi r1,2                                       <== NOT EXECUTED
 8009c38:	fb ff ff 1e 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 8009c3c:	fb ff ff 30 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  rtems_bdbuf_restore_preemption (prev_mode);                         
 8009c40:	b9 80 08 00 	mv r1,r12                                      
 8009c44:	fb ff ff dc 	calli 8009bb4 <rtems_bdbuf_restore_preemption> 
                                                                      
  --waiters->count;                                                   
 8009c48:	29 61 00 00 	lw r1,(r11+0)                                  
 8009c4c:	34 21 ff ff 	addi r1,r1,-1                                  
 8009c50:	59 61 00 00 	sw (r11+0),r1                                  
}                                                                     
 8009c54:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009c58:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8009c5c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8009c60:	37 9c 00 0c 	addi sp,sp,12                                  
 8009c64:	c3 a0 00 00 	ret                                            
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
                                                                      
  if (sc == RTEMS_TIMEOUT)                                            
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);              
 8009c68:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 8009c6c:	fb ff ff 11 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 8009c70:	e3 ff ff f1 	bi 8009c34 <rtems_bdbuf_anonymous_wait+0x50>   <== NOT EXECUTED
                                                                      

0800b240 <rtems_bdbuf_create_task.clone.18>: return NULL; } static rtems_status_code rtems_bdbuf_create_task(
 800b240:	37 9c ff f0 	addi sp,sp,-16                                 
 800b244:	5b 8b 00 10 	sw (sp+16),r11                                 
 800b248:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800b24c:	5b 8d 00 08 	sw (sp+8),r13                                  
 800b250:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_task_argument arg,                                            
  rtems_id *id                                                        
)                                                                     
{                                                                     
  rtems_status_code sc;                                               
  size_t stack_size = bdbuf_config.task_stack_size ?                  
 800b254:	78 06 08 01 	mvhi r6,0x801                                  
 800b258:	38 c6 91 bc 	ori r6,r6,0x91bc                               
 800b25c:	28 c7 00 1c 	lw r7,(r6+28)                                  
                                                                      
  return NULL;                                                        
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_create_task(                                              
 800b260:	b8 60 68 00 	mv r13,r3                                      
 800b264:	b8 80 60 00 	mv r12,r4                                      
 800b268:	b8 a0 58 00 	mv r11,r5                                      
  rtems_id *id                                                        
)                                                                     
{                                                                     
  rtems_status_code sc;                                               
  size_t stack_size = bdbuf_config.task_stack_size ?                  
    bdbuf_config.task_stack_size : RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT;
 800b26c:	5c e0 00 02 	bne r7,r0,800b274 <rtems_bdbuf_create_task.clone.18+0x34><== ALWAYS TAKEN
 800b270:	34 07 10 00 	mvi r7,4096                                    <== NOT EXECUTED
                                                                      
  priority = priority != 0 ? priority : default_priority;             
 800b274:	5c 40 00 02 	bne r2,r0,800b27c <rtems_bdbuf_create_task.clone.18+0x3c><== ALWAYS TAKEN
 800b278:	34 02 00 0f 	mvi r2,15                                      <== NOT EXECUTED
                                                                      
  sc = rtems_task_create (name,                                       
 800b27c:	b8 e0 18 00 	mv r3,r7                                       
 800b280:	34 04 04 00 	mvi r4,1024                                    
 800b284:	34 05 00 00 	mvi r5,0                                       
 800b288:	b9 60 30 00 	mv r6,r11                                      
 800b28c:	f8 00 10 13 	calli 800f2d8 <rtems_task_create>              
                          stack_size,                                 
                          RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
                          RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,      
                          id);                                        
                                                                      
  if (sc == RTEMS_SUCCESSFUL)                                         
 800b290:	5c 20 00 05 	bne r1,r0,800b2a4 <rtems_bdbuf_create_task.clone.18+0x64><== NEVER TAKEN
    sc = rtems_task_start (*id, entry, arg);                          
 800b294:	29 61 00 00 	lw r1,(r11+0)                                  
 800b298:	b9 a0 10 00 	mv r2,r13                                      
 800b29c:	b9 80 18 00 	mv r3,r12                                      
 800b2a0:	fb ff e8 e9 	calli 8005644 <rtems_task_start>               
                                                                      
  return sc;                                                          
}                                                                     
 800b2a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b2a8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800b2ac:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800b2b0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800b2b4:	37 9c 00 10 	addi sp,sp,16                                  
 800b2b8:	c3 a0 00 00 	ret                                            
                                                                      

08009b7c <rtems_bdbuf_disable_preemption>: --bd->group->users; } static rtems_mode rtems_bdbuf_disable_preemption (void) {
 8009b7c:	37 9c ff f8 	addi sp,sp,-8                                  
 8009b80:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_mode prev_mode = 0;                                           
                                                                      
  sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
 8009b84:	34 01 01 00 	mvi r1,256                                     
 8009b88:	34 02 01 00 	mvi r2,256                                     
 8009b8c:	37 83 00 08 	addi r3,sp,8                                   
                                                                      
static rtems_mode                                                     
rtems_bdbuf_disable_preemption (void)                                 
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_mode prev_mode = 0;                                           
 8009b90:	5b 80 00 08 	sw (sp+8),r0                                   
                                                                      
  sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
 8009b94:	f8 00 16 4e 	calli 800f4cc <rtems_task_mode>                
  if (sc != RTEMS_SUCCESSFUL)                                         
 8009b98:	44 20 00 03 	be r1,r0,8009ba4 <rtems_bdbuf_disable_preemption+0x28><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_DIS);                
 8009b9c:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
 8009ba0:	fb ff ff 44 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
                                                                      
  return prev_mode;                                                   
}                                                                     
 8009ba4:	2b 81 00 08 	lw r1,(sp+8)                                   
 8009ba8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009bac:	37 9c 00 08 	addi sp,sp,8                                   
 8009bb0:	c3 a0 00 00 	ret                                            
                                                                      

0800aca8 <rtems_bdbuf_execute_read_request>: static rtems_status_code rtems_bdbuf_execute_read_request (rtems_disk_device *dd, rtems_bdbuf_buffer *bd, uint32_t transfer_count) {
 800aca8:	37 9c ff d0 	addi sp,sp,-48                                 
 800acac:	5b 9b 00 08 	sw (sp+8),fp                                   
 800acb0:	34 1b 00 30 	mvi fp,48                                      
 800acb4:	b7 7c d8 00 	add fp,fp,sp                                   
 800acb8:	5b 8b 00 30 	sw (sp+48),r11                                 
 800acbc:	5b 8c 00 2c 	sw (sp+44),r12                                 
 800acc0:	5b 8d 00 28 	sw (sp+40),r13                                 
 800acc4:	5b 8e 00 24 	sw (sp+36),r14                                 
 800acc8:	5b 8f 00 20 	sw (sp+32),r15                                 
 800accc:	5b 90 00 1c 	sw (sp+28),r16                                 
 800acd0:	5b 91 00 18 	sw (sp+24),r17                                 
 800acd4:	5b 92 00 14 	sw (sp+20),r18                                 
 800acd8:	5b 93 00 10 	sw (sp+16),r19                                 
 800acdc:	5b 94 00 0c 	sw (sp+12),r20                                 
 800ace0:	5b 9d 00 04 	sw (sp+4),ra                                   
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ace4:	b4 63 20 00 	add r4,r3,r3                                   
 800ace8:	b4 84 20 00 	add r4,r4,r4                                   
 800acec:	b4 84 20 00 	add r4,r4,r4                                   
 800acf0:	b4 84 20 00 	add r4,r4,r4                                   
 800acf4:	34 84 00 22 	addi r4,r4,34                                  
 800acf8:	00 84 00 01 	srui r4,r4,1                                   
  }                                                                   
                                                                      
  req->bufnum = transfer_index;                                       
                                                                      
  return rtems_bdbuf_execute_transfer_request (dd, req, true);        
}                                                                     
 800acfc:	bb 80 a0 00 	mv r20,sp                                      
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ad00:	00 84 00 01 	srui r4,r4,1                                   
                                                                      
static rtems_status_code                                              
rtems_bdbuf_execute_read_request (rtems_disk_device  *dd,             
                                  rtems_bdbuf_buffer *bd,             
                                  uint32_t            transfer_count) 
{                                                                     
 800ad04:	b8 60 80 00 	mv r16,r3                                      
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ad08:	b4 84 20 00 	add r4,r4,r4                                   
 800ad0c:	b4 84 20 00 	add r4,r4,r4                                   
 800ad10:	cb 84 e0 00 	sub sp,sp,r4                                   
 800ad14:	37 8e 00 0b 	addi r14,sp,11                                 
 800ad18:	01 ce 00 01 	srui r14,r14,1                                 
                     sizeof (rtems_blkdev_sg_buffer) * transfer_count);
                                                                      
  req->req = RTEMS_BLKDEV_REQ_READ;                                   
  req->done = rtems_bdbuf_transfer_done;                              
 800ad1c:	78 03 08 00 	mvhi r3,0x800                                  
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ad20:	01 ce 00 01 	srui r14,r14,1                                 
                     sizeof (rtems_blkdev_sg_buffer) * transfer_count);
                                                                      
  req->req = RTEMS_BLKDEV_REQ_READ;                                   
  req->done = rtems_bdbuf_transfer_done;                              
 800ad24:	38 63 9c 74 	ori r3,r3,0x9c74                               
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ad28:	01 ce 00 01 	srui r14,r14,1                                 
rtems_bdbuf_execute_read_request (rtems_disk_device  *dd,             
                                  rtems_bdbuf_buffer *bd,             
                                  uint32_t            transfer_count) 
{                                                                     
  rtems_blkdev_request *req = NULL;                                   
  rtems_blkdev_bnum media_block = bd->block;                          
 800ad2c:	28 4c 00 18 	lw r12,(r2+24)                                 
  /*                                                                  
   * TODO: This type of request structure is wrong and should be removed.
   */                                                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
 800ad30:	b5 ce 70 00 	add r14,r14,r14                                
 800ad34:	b5 ce 70 00 	add r14,r14,r14                                
 800ad38:	b5 ce 70 00 	add r14,r14,r14                                
                                  uint32_t            transfer_count) 
{                                                                     
  rtems_blkdev_request *req = NULL;                                   
  rtems_blkdev_bnum media_block = bd->block;                          
  uint32_t media_blocks_per_block = dd->media_blocks_per_block;       
  uint32_t block_size = dd->block_size;                               
 800ad3c:	28 31 00 24 	lw r17,(r1+36)                                 
                                  rtems_bdbuf_buffer *bd,             
                                  uint32_t            transfer_count) 
{                                                                     
  rtems_blkdev_request *req = NULL;                                   
  rtems_blkdev_bnum media_block = bd->block;                          
  uint32_t media_blocks_per_block = dd->media_blocks_per_block;       
 800ad40:	28 32 00 2c 	lw r18,(r1+44)                                 
#define bdbuf_alloc(size) __builtin_alloca (size)                     
                                                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
                     sizeof (rtems_blkdev_sg_buffer) * transfer_count);
                                                                      
  req->req = RTEMS_BLKDEV_REQ_READ;                                   
 800ad44:	59 c0 00 00 	sw (r14+0),r0                                  
  req->done = rtems_bdbuf_transfer_done;                              
 800ad48:	59 c3 00 04 	sw (r14+4),r3                                  
                                                                      
static rtems_status_code                                              
rtems_bdbuf_execute_read_request (rtems_disk_device  *dd,             
                                  rtems_bdbuf_buffer *bd,             
                                  uint32_t            transfer_count) 
{                                                                     
 800ad4c:	b8 40 58 00 	mv r11,r2                                      
 800ad50:	b8 20 78 00 	mv r15,r1                                      
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
                     sizeof (rtems_blkdev_sg_buffer) * transfer_count);
                                                                      
  req->req = RTEMS_BLKDEV_REQ_READ;                                   
  req->done = rtems_bdbuf_transfer_done;                              
  req->io_task = rtems_task_self ();                                  
 800ad54:	f8 00 12 4f 	calli 800f690 <rtems_task_self>                
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);             
                                                                      
  req->bufs [0].user   = bd;                                          
  req->bufs [0].block  = media_block;                                 
  req->bufs [0].length = block_size;                                  
  req->bufs [0].buffer = bd->buffer;                                  
 800ad58:	29 62 00 1c 	lw r2,(r11+28)                                 
  req = bdbuf_alloc (sizeof (rtems_blkdev_request) +                  
                     sizeof (rtems_blkdev_sg_buffer) * transfer_count);
                                                                      
  req->req = RTEMS_BLKDEV_REQ_READ;                                   
  req->done = rtems_bdbuf_transfer_done;                              
  req->io_task = rtems_task_self ();                                  
 800ad5c:	59 c1 00 14 	sw (r14+20),r1                                 
  req->bufnum = 0;                                                    
 800ad60:	59 c0 00 10 	sw (r14+16),r0                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800ad64:	34 01 00 09 	mvi r1,9                                       
 800ad68:	59 61 00 20 	sw (r11+32),r1                                 
  req->io_task = rtems_task_self ();                                  
  req->bufnum = 0;                                                    
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);             
                                                                      
  req->bufs [0].user   = bd;                                          
 800ad6c:	59 cb 00 24 	sw (r14+36),r11                                
  req->bufs [0].block  = media_block;                                 
 800ad70:	59 cc 00 18 	sw (r14+24),r12                                
  req->bufs [0].length = block_size;                                  
 800ad74:	59 d1 00 1c 	sw (r14+28),r17                                
  req->bufs [0].buffer = bd->buffer;                                  
 800ad78:	59 c2 00 20 	sw (r14+32),r2                                 
{                                                                     
  rtems_blkdev_request *req = NULL;                                   
  rtems_blkdev_bnum media_block = bd->block;                          
  uint32_t media_blocks_per_block = dd->media_blocks_per_block;       
  uint32_t block_size = dd->block_size;                               
  uint32_t transfer_index = 1;                                        
 800ad7c:	34 0d 00 01 	mvi r13,1                                      
  req->bufs [0].buffer = bd->buffer;                                  
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_users ("read", bd);                              
                                                                      
  while (transfer_index < transfer_count)                             
 800ad80:	51 b0 00 11 	bgeu r13,r16,800adc4 <rtems_bdbuf_execute_read_request+0x11c>
 800ad84:	b9 c0 58 00 	mv r11,r14                                     
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800ad88:	34 13 00 09 	mvi r19,9                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_users ("read", bd);                              
                                                                      
  while (transfer_index < transfer_count)                             
  {                                                                   
    media_block += media_blocks_per_block;                            
 800ad8c:	b5 92 60 00 	add r12,r12,r18                                
                                                                      
    bd = rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);     
 800ad90:	b9 e0 08 00 	mv r1,r15                                      
 800ad94:	b9 80 10 00 	mv r2,r12                                      
 800ad98:	fb ff ff a3 	calli 800ac24 <rtems_bdbuf_get_buffer_for_read_ahead>
                                                                      
    if (bd == NULL)                                                   
 800ad9c:	44 20 00 0a 	be r1,r0,800adc4 <rtems_bdbuf_execute_read_request+0x11c><== NEVER TAKEN
    rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);           
                                                                      
    req->bufs [transfer_index].user   = bd;                           
    req->bufs [transfer_index].block  = media_block;                  
    req->bufs [transfer_index].length = block_size;                   
    req->bufs [transfer_index].buffer = bd->buffer;                   
 800ada0:	28 22 00 1c 	lw r2,(r1+28)                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800ada4:	58 33 00 20 	sw (r1+32),r19                                 
    if (bd == NULL)                                                   
      break;                                                          
                                                                      
    rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);           
                                                                      
    req->bufs [transfer_index].user   = bd;                           
 800ada8:	59 61 00 34 	sw (r11+52),r1                                 
    req->bufs [transfer_index].block  = media_block;                  
 800adac:	59 6c 00 28 	sw (r11+40),r12                                
    req->bufs [transfer_index].length = block_size;                   
 800adb0:	59 71 00 2c 	sw (r11+44),r17                                
    req->bufs [transfer_index].buffer = bd->buffer;                   
 800adb4:	59 62 00 30 	sw (r11+48),r2                                 
                                                                      
    if (rtems_bdbuf_tracer)                                           
      rtems_bdbuf_show_users ("read", bd);                            
                                                                      
    ++transfer_index;                                                 
 800adb8:	35 ad 00 01 	addi r13,r13,1                                 
 800adbc:	35 6b 00 10 	addi r11,r11,16                                
  req->bufs [0].buffer = bd->buffer;                                  
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_users ("read", bd);                              
                                                                      
  while (transfer_index < transfer_count)                             
 800adc0:	56 0d ff f3 	bgu r16,r13,800ad8c <rtems_bdbuf_execute_read_request+0xe4>
      rtems_bdbuf_show_users ("read", bd);                            
                                                                      
    ++transfer_index;                                                 
  }                                                                   
                                                                      
  req->bufnum = transfer_index;                                       
 800adc4:	59 cd 00 10 	sw (r14+16),r13                                
                                                                      
  return rtems_bdbuf_execute_transfer_request (dd, req, true);        
 800adc8:	b9 e0 08 00 	mv r1,r15                                      
 800adcc:	b9 c0 10 00 	mv r2,r14                                      
 800add0:	34 03 00 01 	mvi r3,1                                       
 800add4:	fb ff fd 4a 	calli 800a2fc <rtems_bdbuf_execute_transfer_request>
}                                                                     
 800add8:	ba 80 e0 00 	mv sp,r20                                      
 800addc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ade0:	2b 8b 00 30 	lw r11,(sp+48)                                 
 800ade4:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 800ade8:	2b 8d 00 28 	lw r13,(sp+40)                                 
 800adec:	2b 8e 00 24 	lw r14,(sp+36)                                 
 800adf0:	2b 8f 00 20 	lw r15,(sp+32)                                 
 800adf4:	2b 90 00 1c 	lw r16,(sp+28)                                 
 800adf8:	2b 91 00 18 	lw r17,(sp+24)                                 
 800adfc:	2b 92 00 14 	lw r18,(sp+20)                                 
 800ae00:	2b 93 00 10 	lw r19,(sp+16)                                 
 800ae04:	2b 94 00 0c 	lw r20,(sp+12)                                 
 800ae08:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800ae0c:	37 9c 00 30 	addi sp,sp,48                                  
 800ae10:	c3 a0 00 00 	ret                                            
                                                                      

0800a2fc <rtems_bdbuf_execute_transfer_request>: static rtems_status_code rtems_bdbuf_execute_transfer_request (rtems_disk_device *dd, rtems_blkdev_request *req, bool cache_locked) {
 800a2fc:	37 9c ff d0 	addi sp,sp,-48                                 
 800a300:	5b 8b 00 30 	sw (sp+48),r11                                 
 800a304:	5b 8c 00 2c 	sw (sp+44),r12                                 
 800a308:	5b 8d 00 28 	sw (sp+40),r13                                 
 800a30c:	5b 8e 00 24 	sw (sp+36),r14                                 
 800a310:	5b 8f 00 20 	sw (sp+32),r15                                 
 800a314:	5b 90 00 1c 	sw (sp+28),r16                                 
 800a318:	5b 91 00 18 	sw (sp+24),r17                                 
 800a31c:	5b 92 00 14 	sw (sp+20),r18                                 
 800a320:	5b 93 00 10 	sw (sp+16),r19                                 
 800a324:	5b 94 00 0c 	sw (sp+12),r20                                 
 800a328:	5b 95 00 08 	sw (sp+8),r21                                  
 800a32c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800a330:	b8 60 a0 00 	mv r20,r3                                      
 800a334:	b8 20 58 00 	mv r11,r1                                      
 800a338:	b8 40 70 00 	mv r14,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  uint32_t transfer_index = 0;                                        
  bool wake_transfer_waiters = false;                                 
  bool wake_buffer_waiters = false;                                   
                                                                      
  if (cache_locked)                                                   
 800a33c:	5c 60 00 69 	bne r3,r0,800a4e0 <rtems_bdbuf_execute_transfer_request+0x1e4>
    rtems_bdbuf_unlock_cache ();                                      
                                                                      
  /* The return value will be ignored for transfer requests */        
  dd->ioctl (dd->phys_dev, RTEMS_BLKIO_REQUEST, req);                 
 800a340:	78 01 08 01 	mvhi r1,0x801                                  
 800a344:	38 21 96 94 	ori r1,r1,0x9694                               
 800a348:	28 22 00 00 	lw r2,(r1+0)                                   
 800a34c:	29 64 00 38 	lw r4,(r11+56)                                 
 800a350:	29 61 00 08 	lw r1,(r11+8)                                  
 800a354:	b9 c0 18 00 	mv r3,r14                                      
 800a358:	d8 80 00 00 	call r4                                        
                                                                      
  /* Wait for transfer request completion */                          
  rtems_bdbuf_wait_for_transient_event ();                            
 800a35c:	fb ff fd fb 	calli 8009b48 <rtems_bdbuf_wait_for_transient_event>
  sc = req->status;                                                   
 800a360:	29 cd 00 0c 	lw r13,(r14+12)                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800a364:	fb ff fd 66 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  /* Statistics */                                                    
  if (req->req == RTEMS_BLKDEV_REQ_READ)                              
 800a368:	29 c1 00 00 	lw r1,(r14+0)                                  
 800a36c:	5c 20 00 42 	bne r1,r0,800a474 <rtems_bdbuf_execute_transfer_request+0x178>
  {                                                                   
    dd->stats.read_blocks += req->bufnum;                             
 800a370:	29 c5 00 10 	lw r5,(r14+16)                                 
 800a374:	29 62 00 50 	lw r2,(r11+80)                                 
 800a378:	b4 45 10 00 	add r2,r2,r5                                   
 800a37c:	59 62 00 50 	sw (r11+80),r2                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
 800a380:	5d a1 00 54 	bne r13,r1,800a4d0 <rtems_bdbuf_execute_transfer_request+0x1d4>
    ++dd->stats.write_transfers;                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.write_errors;                                       
  }                                                                   
                                                                      
  for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
 800a384:	44 a0 00 1e 	be r5,r0,800a3fc <rtems_bdbuf_execute_transfer_request+0x100><== NEVER TAKEN
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a388:	78 0f 08 01 	mvhi r15,0x801                                 
                                                                      
  the_node->next = tail;                                              
 800a38c:	78 11 08 01 	mvhi r17,0x801                                 
  else                                                                
  {                                                                   
    dd->stats.write_blocks += req->bufnum;                            
    ++dd->stats.write_transfers;                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.write_errors;                                       
 800a390:	b9 c0 60 00 	mv r12,r14                                     
  }                                                                   
                                                                      
  for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
 800a394:	34 12 00 00 	mvi r18,0                                      
 800a398:	34 13 00 00 	mvi r19,0                                      
 800a39c:	34 0b 00 00 	mvi r11,0                                      
    else                                                              
      wake_buffer_waiters = true;                                     
                                                                      
    rtems_bdbuf_group_release (bd);                                   
                                                                      
    if (sc == RTEMS_SUCCESSFUL && bd->state == RTEMS_BDBUF_STATE_TRANSFER)
 800a3a0:	34 10 00 09 	mvi r16,9                                      
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800a3a4:	34 15 00 02 	mvi r21,2                                      
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a3a8:	39 ef a7 74 	ori r15,r15,0xa774                             
                                                                      
  the_node->next = tail;                                              
 800a3ac:	3a 31 a7 b8 	ori r17,r17,0xa7b8                             
      ++dd->stats.write_errors;                                       
  }                                                                   
                                                                      
  for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
  {                                                                   
    rtems_bdbuf_buffer *bd = req->bufs [transfer_index].user;         
 800a3b0:	29 84 00 24 	lw r4,(r12+36)                                 
    bool waiters = bd->waiters;                                       
                                                                      
    if (waiters)                                                      
 800a3b4:	28 81 00 24 	lw r1,(r4+36)                                  
 800a3b8:	44 20 00 26 	be r1,r0,800a450 <rtems_bdbuf_execute_transfer_request+0x154>
      wake_transfer_waiters = true;                                   
 800a3bc:	34 13 00 01 	mvi r19,1                                      
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800a3c0:	28 86 00 28 	lw r6,(r4+40)                                  
    rtems_bdbuf_group_release (bd);                                   
                                                                      
    if (sc == RTEMS_SUCCESSFUL && bd->state == RTEMS_BDBUF_STATE_TRANSFER)
      rtems_bdbuf_make_cached_and_add_to_lru_list (bd);               
    else                                                              
      rtems_bdbuf_discard_buffer (bd);                                
 800a3c4:	b8 80 08 00 	mv r1,r4                                       
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
 800a3c8:	28 c2 00 0c 	lw r2,(r6+12)                                  
 800a3cc:	34 42 ff ff 	addi r2,r2,-1                                  
 800a3d0:	58 c2 00 0c 	sw (r6+12),r2                                  
    else                                                              
      wake_buffer_waiters = true;                                     
                                                                      
    rtems_bdbuf_group_release (bd);                                   
                                                                      
    if (sc == RTEMS_SUCCESSFUL && bd->state == RTEMS_BDBUF_STATE_TRANSFER)
 800a3d4:	5d a0 00 03 	bne r13,r0,800a3e0 <rtems_bdbuf_execute_transfer_request+0xe4>
 800a3d8:	28 82 00 20 	lw r2,(r4+32)                                  
 800a3dc:	44 50 00 1f 	be r2,r16,800a458 <rtems_bdbuf_execute_transfer_request+0x15c>
      rtems_bdbuf_make_cached_and_add_to_lru_list (bd);               
    else                                                              
      rtems_bdbuf_discard_buffer (bd);                                
 800a3e0:	fb ff ff 97 	calli 800a23c <rtems_bdbuf_discard_buffer>     
 800a3e4:	29 c5 00 10 	lw r5,(r14+16)                                 
    ++dd->stats.write_transfers;                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.write_errors;                                       
  }                                                                   
                                                                      
  for (transfer_index = 0; transfer_index < req->bufnum; ++transfer_index)
 800a3e8:	35 6b 00 01 	addi r11,r11,1                                 
 800a3ec:	35 8c 00 10 	addi r12,r12,16                                
 800a3f0:	54 ab ff f0 	bgu r5,r11,800a3b0 <rtems_bdbuf_execute_transfer_request+0xb4>
                                                                      
    if (rtems_bdbuf_tracer)                                           
      rtems_bdbuf_show_users ("transfer", bd);                        
  }                                                                   
                                                                      
  if (wake_transfer_waiters)                                          
 800a3f4:	5e 60 00 32 	bne r19,r0,800a4bc <rtems_bdbuf_execute_transfer_request+0x1c0>
    rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);                 
                                                                      
  if (wake_buffer_waiters)                                            
 800a3f8:	5e 40 00 2b 	bne r18,r0,800a4a4 <rtems_bdbuf_execute_transfer_request+0x1a8><== ALWAYS TAKEN
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
                                                                      
  if (!cache_locked)                                                  
 800a3fc:	46 80 00 2e 	be r20,r0,800a4b4 <rtems_bdbuf_execute_transfer_request+0x1b8>
    rtems_bdbuf_unlock_cache ();                                      
                                                                      
  if (sc == RTEMS_SUCCESSFUL || sc == RTEMS_UNSATISFIED)              
 800a400:	65 a2 00 0d 	cmpei r2,r13,13                                
 800a404:	65 a1 00 00 	cmpei r1,r13,0                                 
 800a408:	b8 41 08 00 	or r1,r2,r1                                    
 800a40c:	5c 20 00 02 	bne r1,r0,800a414 <rtems_bdbuf_execute_transfer_request+0x118>
    return sc;                                                        
  else                                                                
    return RTEMS_IO_ERROR;                                            
 800a410:	34 0d 00 1b 	mvi r13,27                                     
}                                                                     
 800a414:	b9 a0 08 00 	mv r1,r13                                      
 800a418:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a41c:	2b 8b 00 30 	lw r11,(sp+48)                                 
 800a420:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 800a424:	2b 8d 00 28 	lw r13,(sp+40)                                 
 800a428:	2b 8e 00 24 	lw r14,(sp+36)                                 
 800a42c:	2b 8f 00 20 	lw r15,(sp+32)                                 
 800a430:	2b 90 00 1c 	lw r16,(sp+28)                                 
 800a434:	2b 91 00 18 	lw r17,(sp+24)                                 
 800a438:	2b 92 00 14 	lw r18,(sp+20)                                 
 800a43c:	2b 93 00 10 	lw r19,(sp+16)                                 
 800a440:	2b 94 00 0c 	lw r20,(sp+12)                                 
 800a444:	2b 95 00 08 	lw r21,(sp+8)                                  
 800a448:	37 9c 00 30 	addi sp,sp,48                                  
 800a44c:	c3 a0 00 00 	ret                                            
    bool waiters = bd->waiters;                                       
                                                                      
    if (waiters)                                                      
      wake_transfer_waiters = true;                                   
    else                                                              
      wake_buffer_waiters = true;                                     
 800a450:	34 12 00 01 	mvi r18,1                                      
 800a454:	e3 ff ff db 	bi 800a3c0 <rtems_bdbuf_execute_transfer_request+0xc4>
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a458:	29 e1 00 48 	lw r1,(r15+72)                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800a45c:	58 95 00 20 	sw (r4+32),r21                                 
                                                                      
  the_node->next = tail;                                              
 800a460:	58 91 00 00 	sw (r4+0),r17                                  
  tail->previous = the_node;                                          
 800a464:	59 e4 00 48 	sw (r15+72),r4                                 
  old_last->next = the_node;                                          
 800a468:	58 24 00 00 	sw (r1+0),r4                                   
  the_node->previous = old_last;                                      
 800a46c:	58 81 00 04 	sw (r4+4),r1                                   
      wake_buffer_waiters = true;                                     
                                                                      
    rtems_bdbuf_group_release (bd);                                   
                                                                      
    if (sc == RTEMS_SUCCESSFUL && bd->state == RTEMS_BDBUF_STATE_TRANSFER)
      rtems_bdbuf_make_cached_and_add_to_lru_list (bd);               
 800a470:	e3 ff ff de 	bi 800a3e8 <rtems_bdbuf_execute_transfer_request+0xec>
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.read_errors;                                        
  }                                                                   
  else                                                                
  {                                                                   
    dd->stats.write_blocks += req->bufnum;                            
 800a474:	29 c5 00 10 	lw r5,(r14+16)                                 
 800a478:	29 62 00 5c 	lw r2,(r11+92)                                 
    ++dd->stats.write_transfers;                                      
 800a47c:	29 61 00 58 	lw r1,(r11+88)                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.read_errors;                                        
  }                                                                   
  else                                                                
  {                                                                   
    dd->stats.write_blocks += req->bufnum;                            
 800a480:	b4 45 10 00 	add r2,r2,r5                                   
    ++dd->stats.write_transfers;                                      
 800a484:	34 21 00 01 	addi r1,r1,1                                   
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.read_errors;                                        
  }                                                                   
  else                                                                
  {                                                                   
    dd->stats.write_blocks += req->bufnum;                            
 800a488:	59 62 00 5c 	sw (r11+92),r2                                 
    ++dd->stats.write_transfers;                                      
 800a48c:	59 61 00 58 	sw (r11+88),r1                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
 800a490:	45 a0 ff bd 	be r13,r0,800a384 <rtems_bdbuf_execute_transfer_request+0x88>
      ++dd->stats.write_errors;                                       
 800a494:	29 61 00 60 	lw r1,(r11+96)                                 
 800a498:	34 21 00 01 	addi r1,r1,1                                   
 800a49c:	59 61 00 60 	sw (r11+96),r1                                 
 800a4a0:	e3 ff ff b9 	bi 800a384 <rtems_bdbuf_execute_transfer_request+0x88>
                                                                      
  if (wake_transfer_waiters)                                          
    rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);                 
                                                                      
  if (wake_buffer_waiters)                                            
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800a4a4:	78 01 08 01 	mvhi r1,0x801                                  
 800a4a8:	38 21 a7 e8 	ori r1,r1,0xa7e8                               
 800a4ac:	fb ff fd 54 	calli 80099fc <rtems_bdbuf_wake>               
                                                                      
  if (!cache_locked)                                                  
 800a4b0:	5e 80 ff d4 	bne r20,r0,800a400 <rtems_bdbuf_execute_transfer_request+0x104>
    rtems_bdbuf_unlock_cache ();                                      
 800a4b4:	fb ff fd 3e 	calli 80099ac <rtems_bdbuf_unlock_cache>       
 800a4b8:	e3 ff ff d2 	bi 800a400 <rtems_bdbuf_execute_transfer_request+0x104>
    if (rtems_bdbuf_tracer)                                           
      rtems_bdbuf_show_users ("transfer", bd);                        
  }                                                                   
                                                                      
  if (wake_transfer_waiters)                                          
    rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);                 
 800a4bc:	78 01 08 01 	mvhi r1,0x801                                  
 800a4c0:	38 21 a7 e0 	ori r1,r1,0xa7e0                               
 800a4c4:	fb ff fd 4e 	calli 80099fc <rtems_bdbuf_wake>               
                                                                      
  if (wake_buffer_waiters)                                            
 800a4c8:	46 40 ff cd 	be r18,r0,800a3fc <rtems_bdbuf_execute_transfer_request+0x100>
 800a4cc:	e3 ff ff f6 	bi 800a4a4 <rtems_bdbuf_execute_transfer_request+0x1a8>
  /* Statistics */                                                    
  if (req->req == RTEMS_BLKDEV_REQ_READ)                              
  {                                                                   
    dd->stats.read_blocks += req->bufnum;                             
    if (sc != RTEMS_SUCCESSFUL)                                       
      ++dd->stats.read_errors;                                        
 800a4d0:	29 61 00 54 	lw r1,(r11+84)                                 
 800a4d4:	34 21 00 01 	addi r1,r1,1                                   
 800a4d8:	59 61 00 54 	sw (r11+84),r1                                 
 800a4dc:	e3 ff ff aa 	bi 800a384 <rtems_bdbuf_execute_transfer_request+0x88>
  uint32_t transfer_index = 0;                                        
  bool wake_transfer_waiters = false;                                 
  bool wake_buffer_waiters = false;                                   
                                                                      
  if (cache_locked)                                                   
    rtems_bdbuf_unlock_cache ();                                      
 800a4e0:	fb ff fd 33 	calli 80099ac <rtems_bdbuf_unlock_cache>       
 800a4e4:	e3 ff ff 97 	bi 800a340 <rtems_bdbuf_execute_transfer_request+0x44>
                                                                      

080098b0 <rtems_bdbuf_fatal>: #define RTEMS_BDBUF_AVL_MAX_HEIGHT (32) #endif static void rtems_bdbuf_fatal (rtems_fatal_code error) {
 80098b0:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 80098b4:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_fatal (RTEMS_FATAL_SOURCE_BDBUF, error);                      
 80098b8:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80098bc:	34 01 00 03 	mvi r1,3                                       <== NOT EXECUTED
 80098c0:	fb ff ef e4 	calli 8005850 <rtems_fatal>                    <== NOT EXECUTED
                                                                      

0800994c <rtems_bdbuf_fatal_with_state>: } static void rtems_bdbuf_fatal_with_state (rtems_bdbuf_buf_state state, rtems_bdbuf_fatal_code error) {
 800994c:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 8009950:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 8009954:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8009958:	b8 40 58 00 	mv r11,r2                                      <== NOT EXECUTED
  rtems_bdbuf_fatal ((((uint32_t) state) << 16) | error);             
 800995c:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8009960:	f8 00 3a 76 	calli 8018338 <__ashlsi3>                      <== NOT EXECUTED
 8009964:	b9 61 08 00 	or r1,r11,r1                                   <== NOT EXECUTED
 8009968:	fb ff ff d2 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 800996c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8009970:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8009974:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8009978:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800bb18 <rtems_bdbuf_get>: rtems_status_code rtems_bdbuf_get (rtems_disk_device *dd, rtems_blkdev_bnum block, rtems_bdbuf_buffer **bd_ptr) {
 800bb18:	37 9c ff e8 	addi sp,sp,-24                                 
 800bb1c:	5b 8b 00 18 	sw (sp+24),r11                                 
 800bb20:	5b 8c 00 14 	sw (sp+20),r12                                 
 800bb24:	5b 8d 00 10 	sw (sp+16),r13                                 
 800bb28:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800bb2c:	5b 8f 00 08 	sw (sp+8),r15                                  
 800bb30:	5b 9d 00 04 	sw (sp+4),ra                                   
 800bb34:	b8 20 58 00 	mv r11,r1                                      
 800bb38:	b8 40 68 00 	mv r13,r2                                      
 800bb3c:	b8 60 78 00 	mv r15,r3                                      
  rtems_status_code   sc = RTEMS_SUCCESSFUL;                          
  rtems_bdbuf_buffer *bd = NULL;                                      
  rtems_blkdev_bnum   media_block;                                    
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800bb40:	fb ff f7 6f 	calli 80098fc <rtems_bdbuf_lock_cache>         
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
 800bb44:	29 61 00 28 	lw r1,(r11+40)                                 
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
  }                                                                   
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_ID;                                            
 800bb48:	34 0e 00 04 	mvi r14,4                                      
rtems_bdbuf_get (rtems_disk_device   *dd,                             
                 rtems_blkdev_bnum    block,                          
                 rtems_bdbuf_buffer **bd_ptr)                         
{                                                                     
  rtems_status_code   sc = RTEMS_SUCCESSFUL;                          
  rtems_bdbuf_buffer *bd = NULL;                                      
 800bb4c:	34 0c 00 00 	mvi r12,0                                      
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
 800bb50:	51 a1 00 15 	bgeu r13,r1,800bba4 <rtems_bdbuf_get+0x8c>     <== NEVER TAKEN
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
 800bb54:	29 62 00 30 	lw r2,(r11+48)                                 
 800bb58:	48 02 00 1e 	bg r0,r2,800bbd0 <rtems_bdbuf_get+0xb8>        <== NEVER TAKEN
    return block << dd->block_to_media_block_shift;                   
 800bb5c:	b9 a0 08 00 	mv r1,r13                                      
 800bb60:	f8 00 31 f6 	calli 8018338 <__ashlsi3>                      
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
 800bb64:	29 63 00 18 	lw r3,(r11+24)                                 
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    return block << dd->block_to_media_block_shift;                   
 800bb68:	b8 20 10 00 	mv r2,r1                                       
     */                                                               
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:get: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",  
              media_block, block, (unsigned) dd->dev);                
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
 800bb6c:	b9 60 08 00 	mv r1,r11                                      
 800bb70:	b4 43 10 00 	add r2,r2,r3                                   
 800bb74:	fb ff fd 04 	calli 800af84 <rtems_bdbuf_get_buffer_for_access>
 800bb78:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    switch (bd->state)                                                
 800bb7c:	28 21 00 20 	lw r1,(r1+32)                                  
 800bb80:	34 02 00 02 	mvi r2,2                                       
 800bb84:	44 22 00 23 	be r1,r2,800bc10 <rtems_bdbuf_get+0xf8>        
 800bb88:	34 02 00 07 	mvi r2,7                                       
 800bb8c:	44 22 00 29 	be r1,r2,800bc30 <rtems_bdbuf_get+0x118>       
 800bb90:	34 02 00 01 	mvi r2,1                                       
 800bb94:	44 22 00 23 	be r1,r2,800bc20 <rtems_bdbuf_get+0x108>       <== ALWAYS TAKEN
         * record of this so just gets the block to fill.             
         */                                                           
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_2);
 800bb98:	34 02 00 0f 	mvi r2,15                                      <== NOT EXECUTED
 800bb9c:	fb ff f7 6c 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
static rtems_status_code                                              
rtems_bdbuf_get_media_block (const rtems_disk_device *dd,             
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800bba0:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
      rtems_bdbuf_show_users ("get", bd);                             
      rtems_bdbuf_show_usage ();                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bba4:	fb ff f7 82 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  *bd_ptr = bd;                                                       
                                                                      
  return sc;                                                          
}                                                                     
 800bba8:	b9 c0 08 00 	mv r1,r14                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  *bd_ptr = bd;                                                       
 800bbac:	59 ec 00 00 	sw (r15+0),r12                                 
                                                                      
  return sc;                                                          
}                                                                     
 800bbb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bbb4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800bbb8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800bbbc:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800bbc0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800bbc4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800bbc8:	37 9c 00 18 	addi sp,sp,24                                  
 800bbcc:	c3 a0 00 00 	ret                                            
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
 800bbd0:	29 64 00 24 	lw r4,(r11+36)                                 <== NOT EXECUTED
 800bbd4:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800bbd8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800bbdc:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 800bbe0:	f8 00 29 97 	calli 801623c <__muldi3>                       <== NOT EXECUTED
 800bbe4:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 800bbe8:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800bbec:	f8 00 2e 0a 	calli 8017414 <__udivdi3>                      <== NOT EXECUTED
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
 800bbf0:	29 63 00 18 	lw r3,(r11+24)                                 <== NOT EXECUTED
     */                                                               
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:get: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",  
              media_block, block, (unsigned) dd->dev);                
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
 800bbf4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800bbf8:	b4 43 10 00 	add r2,r2,r3                                   <== NOT EXECUTED
 800bbfc:	fb ff fc e2 	calli 800af84 <rtems_bdbuf_get_buffer_for_access><== NOT EXECUTED
 800bc00:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                                      
    switch (bd->state)                                                
 800bc04:	28 21 00 20 	lw r1,(r1+32)                                  <== NOT EXECUTED
 800bc08:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800bc0c:	5c 22 ff df 	bne r1,r2,800bb88 <rtems_bdbuf_get+0x70>       <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bc10:	34 01 00 03 	mvi r1,3                                       
 800bc14:	59 81 00 20 	sw (r12+32),r1                                 
static rtems_status_code                                              
rtems_bdbuf_get_media_block (const rtems_disk_device *dd,             
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800bc18:	34 0e 00 00 	mvi r14,0                                      
                                                                      
    switch (bd->state)                                                
    {                                                                 
      case RTEMS_BDBUF_STATE_CACHED:                                  
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
 800bc1c:	e3 ff ff e2 	bi 800bba4 <rtems_bdbuf_get+0x8c>              
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bc20:	34 01 00 05 	mvi r1,5                                       
 800bc24:	59 81 00 20 	sw (r12+32),r1                                 
static rtems_status_code                                              
rtems_bdbuf_get_media_block (const rtems_disk_device *dd,             
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800bc28:	34 0e 00 00 	mvi r14,0                                      
      case RTEMS_BDBUF_STATE_CACHED:                                  
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_EMPTY);   
        break;                                                        
 800bc2c:	e3 ff ff de 	bi 800bba4 <rtems_bdbuf_get+0x8c>              
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bc30:	34 01 00 04 	mvi r1,4                                       
 800bc34:	59 81 00 20 	sw (r12+32),r1                                 
static rtems_status_code                                              
rtems_bdbuf_get_media_block (const rtems_disk_device *dd,             
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800bc38:	34 0e 00 00 	mvi r14,0                                      
         * user may have modified a byte in a block then decided to seek the
         * start and write the whole block and the file system will have no
         * record of this so just gets the block to fill.             
         */                                                           
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
 800bc3c:	e3 ff ff da 	bi 800bba4 <rtems_bdbuf_get+0x8c>              
                                                                      

0800af84 <rtems_bdbuf_get_buffer_for_access>: } static rtems_bdbuf_buffer * rtems_bdbuf_get_buffer_for_access (rtems_disk_device *dd, rtems_blkdev_bnum block) {
 800af84:	37 9c ff c0 	addi sp,sp,-64                                 
 800af88:	5b 8b 00 40 	sw (sp+64),r11                                 
 800af8c:	5b 8c 00 3c 	sw (sp+60),r12                                 
 800af90:	5b 8d 00 38 	sw (sp+56),r13                                 
 800af94:	5b 8e 00 34 	sw (sp+52),r14                                 
 800af98:	5b 8f 00 30 	sw (sp+48),r15                                 
 800af9c:	5b 90 00 2c 	sw (sp+44),r16                                 
 800afa0:	5b 91 00 28 	sw (sp+40),r17                                 
 800afa4:	5b 92 00 24 	sw (sp+36),r18                                 
 800afa8:	5b 93 00 20 	sw (sp+32),r19                                 
 800afac:	5b 94 00 1c 	sw (sp+28),r20                                 
 800afb0:	5b 95 00 18 	sw (sp+24),r21                                 
 800afb4:	5b 96 00 14 	sw (sp+20),r22                                 
 800afb8:	5b 97 00 10 	sw (sp+16),r23                                 
 800afbc:	5b 98 00 0c 	sw (sp+12),r24                                 
 800afc0:	5b 99 00 08 	sw (sp+8),r25                                  
 800afc4:	5b 9d 00 04 	sw (sp+4),ra                                   
 800afc8:	78 0d 08 01 	mvhi r13,0x801                                 
 800afcc:	78 0f 08 01 	mvhi r15,0x801                                 
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800afd0:	78 14 08 01 	mvhi r20,0x801                                 
        }                                                             
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800afd4:	78 13 08 01 	mvhi r19,0x801                                 
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800afd8:	78 12 08 01 	mvhi r18,0x801                                 
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800afdc:	78 11 08 01 	mvhi r17,0x801                                 
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
          rtems_bdbuf_make_free_and_add_to_lru_list (bd);             
          rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);             
 800afe0:	78 10 08 01 	mvhi r16,0x801                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_buffer (void)                                    
{                                                                     
  if (!rtems_chain_is_empty (&bdbuf_cache.modified))                  
 800afe4:	78 16 08 01 	mvhi r22,0x801                                 
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_for_access (rtems_disk_device *dd,             
                                   rtems_blkdev_bnum  block)          
{                                                                     
 800afe8:	b8 20 60 00 	mv r12,r1                                      
 800afec:	b8 40 70 00 	mv r14,r2                                      
 800aff0:	39 ad a7 74 	ori r13,r13,0xa774                             
 800aff4:	39 ef 96 fc 	ori r15,r15,0x96fc                             
static bool                                                           
rtems_bdbuf_wait_for_recycle (rtems_bdbuf_buffer *bd)                 
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800aff8:	34 15 00 0a 	mvi r21,10                                     
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800affc:	3a 94 a7 e0 	ori r20,r20,0xa7e0                             
        }                                                             
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800b000:	3a 73 a7 d8 	ori r19,r19,0xa7d8                             
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800b004:	34 19 00 08 	mvi r25,8                                      
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800b008:	3a 52 a7 d0 	ori r18,r18,0xa7d0                             
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800b00c:	3a 31 a7 b4 	ori r17,r17,0xa7b4                             
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
          rtems_bdbuf_make_free_and_add_to_lru_list (bd);             
          rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);             
 800b010:	3a 10 a7 e8 	ori r16,r16,0xa7e8                             
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_buffer (void)                                    
{                                                                     
  if (!rtems_chain_is_empty (&bdbuf_cache.modified))                  
 800b014:	3a d6 a7 c4 	ori r22,r22,0xa7c4                             
{                                                                     
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  do                                                                  
  {                                                                   
    bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);       
 800b018:	29 a1 00 3c 	lw r1,(r13+60)                                 
 800b01c:	b9 80 10 00 	mv r2,r12                                      
 800b020:	b9 c0 18 00 	mv r3,r14                                      
 800b024:	fb ff fb 4d 	calli 8009d58 <rtems_bdbuf_avl_search.clone.5> 
 800b028:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    if (bd != NULL)                                                   
 800b02c:	44 20 00 41 	be r1,r0,800b130 <rtems_bdbuf_get_buffer_for_access+0x1ac>
    {                                                                 
      if (bd->group->bds_per_group != dd->bds_per_group)              
 800b030:	28 24 00 28 	lw r4,(r1+40)                                  
 800b034:	29 82 00 34 	lw r2,(r12+52)                                 
 800b038:	28 84 00 08 	lw r4,(r4+8)                                   
 800b03c:	5c 82 00 11 	bne r4,r2,800b080 <rtems_bdbuf_get_buffer_for_access+0xfc>
 800b040:	78 0c 08 01 	mvhi r12,0x801                                 
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800b044:	78 0e 08 01 	mvhi r14,0x801                                 
        return;                                                       
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800b048:	78 0d 08 01 	mvhi r13,0x801                                 
 800b04c:	39 8c 96 d0 	ori r12,r12,0x96d0                             
static void                                                           
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)                  
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800b050:	34 0f 00 0a 	mvi r15,10                                     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b054:	35 71 00 24 	addi r17,r11,36                                
 800b058:	35 70 00 28 	addi r16,r11,40                                
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800b05c:	39 ce a7 e0 	ori r14,r14,0xa7e0                             
        return;                                                       
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800b060:	39 ad a7 d8 	ori r13,r13,0xa7d8                             
static void                                                           
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)                  
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800b064:	29 61 00 20 	lw r1,(r11+32)                                 
 800b068:	54 2f 00 73 	bgu r1,r15,800b234 <rtems_bdbuf_get_buffer_for_access+0x2b0><== NEVER TAKEN
 800b06c:	b4 21 18 00 	add r3,r1,r1                                   
 800b070:	b4 63 18 00 	add r3,r3,r3                                   
 800b074:	b5 83 18 00 	add r3,r12,r3                                  
 800b078:	28 62 00 00 	lw r2,(r3+0)                                   
 800b07c:	c0 40 00 00 	b r2                                           
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b080:	34 38 00 24 	addi r24,r1,36                                 
 800b084:	34 37 00 28 	addi r23,r1,40                                 
static bool                                                           
rtems_bdbuf_wait_for_recycle (rtems_bdbuf_buffer *bd)                 
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800b088:	29 64 00 20 	lw r4,(r11+32)                                 
 800b08c:	54 95 00 39 	bgu r4,r21,800b170 <rtems_bdbuf_get_buffer_for_access+0x1ec><== NEVER TAKEN
 800b090:	b4 84 20 00 	add r4,r4,r4                                   
 800b094:	b4 84 20 00 	add r4,r4,r4                                   
 800b098:	b5 e4 20 00 	add r4,r15,r4                                  
 800b09c:	28 83 00 00 	lw r3,(r4+0)                                   
 800b0a0:	c0 60 00 00 	b r3                                           
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800b0a4:	29 63 00 00 	lw r3,(r11+0)                                  <== NOT EXECUTED
  previous       = the_node->previous;                                
 800b0a8:	29 61 00 04 	lw r1,(r11+4)                                  <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800b0ac:	59 79 00 20 	sw (r11+32),r25                                <== NOT EXECUTED
  next->previous = previous;                                          
 800b0b0:	58 61 00 04 	sw (r3+4),r1                                   <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800b0b4:	29 a2 00 60 	lw r2,(r13+96)                                 <== NOT EXECUTED
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
 800b0b8:	58 23 00 00 	sw (r1+0),r3                                   <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800b0bc:	59 72 00 00 	sw (r11+0),r18                                 <== NOT EXECUTED
  tail->previous = the_node;                                          
 800b0c0:	59 ab 00 60 	sw (r13+96),r11                                <== NOT EXECUTED
  old_last->next = the_node;                                          
 800b0c4:	58 4b 00 00 	sw (r2+0),r11                                  <== NOT EXECUTED
  the_node->previous = old_last;                                      
 800b0c8:	59 62 00 04 	sw (r11+4),r2                                  <== NOT EXECUTED
rtems_bdbuf_request_sync_for_modified_buffer (rtems_bdbuf_buffer *bd) 
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
  rtems_chain_extract_unprotected (&bd->link);                        
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
  rtems_bdbuf_wake_swapper ();                                        
 800b0cc:	fb ff fa 5b 	calli 8009a38 <rtems_bdbuf_wake_swapper>       <== NOT EXECUTED
 800b0d0:	e3 ff ff ee 	bi 800b088 <rtems_bdbuf_get_buffer_for_access+0x104><== NOT EXECUTED
        }                                                             
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800b0d4:	bb 00 08 00 	mv r1,r24                                      
 800b0d8:	ba e0 10 00 	mv r2,r23                                      
 800b0dc:	ba 60 18 00 	mv r3,r19                                      
 800b0e0:	fb ff fb 2f 	calli 8009d9c <rtems_bdbuf_wait.clone.15>      
 800b0e4:	e3 ff ff e9 	bi 800b088 <rtems_bdbuf_get_buffer_for_access+0x104>
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        rtems_bdbuf_request_sync_for_modified_buffer (bd);            
        break;                                                        
      case RTEMS_BDBUF_STATE_CACHED:                                  
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        if (bd->waiters == 0)                                         
 800b0e8:	29 61 00 24 	lw r1,(r11+36)                                 
 800b0ec:	5c 20 00 19 	bne r1,r0,800b150 <rtems_bdbuf_get_buffer_for_access+0x1cc><== ALWAYS TAKEN
    {                                                                 
      if (bd->group->bds_per_group != dd->bds_per_group)              
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
 800b0f0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800b0f4:	fb ff fd 94 	calli 800a744 <rtems_bdbuf_remove_from_tree_and_lru_list><== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 800b0f8:	29 a1 00 40 	lw r1,(r13+64)                                 <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800b0fc:	59 60 00 20 	sw (r11+32),r0                                 <== NOT EXECUTED
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800b100:	59 71 00 04 	sw (r11+4),r17                                 <== NOT EXECUTED
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 800b104:	59 ab 00 40 	sw (r13+64),r11                                <== NOT EXECUTED
  the_node->next        = before_node;                                
 800b108:	59 61 00 00 	sw (r11+0),r1                                  <== NOT EXECUTED
  before_node->previous = the_node;                                   
 800b10c:	58 2b 00 04 	sw (r1+4),r11                                  <== NOT EXECUTED
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
          rtems_bdbuf_make_free_and_add_to_lru_list (bd);             
          rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);             
 800b110:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 800b114:	fb ff fa 3a 	calli 80099fc <rtems_bdbuf_wake>               <== NOT EXECUTED
{                                                                     
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  do                                                                  
  {                                                                   
    bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);       
 800b118:	29 a1 00 3c 	lw r1,(r13+60)                                 <== NOT EXECUTED
 800b11c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 800b120:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 800b124:	fb ff fb 0d 	calli 8009d58 <rtems_bdbuf_avl_search.clone.5> <== NOT EXECUTED
 800b128:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                                                      
    if (bd != NULL)                                                   
 800b12c:	5c 20 ff c1 	bne r1,r0,800b030 <rtems_bdbuf_get_buffer_for_access+0xac><== NOT EXECUTED
        bd = NULL;                                                    
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);          
 800b130:	b9 80 08 00 	mv r1,r12                                      
 800b134:	b9 c0 10 00 	mv r2,r14                                      
 800b138:	fb ff fd 9f 	calli 800a7b4 <rtems_bdbuf_get_buffer_from_lru_list>
 800b13c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
      if (bd == NULL)                                                 
 800b140:	5c 20 ff c0 	bne r1,r0,800b040 <rtems_bdbuf_get_buffer_for_access+0xbc>
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_buffer (void)                                    
{                                                                     
  if (!rtems_chain_is_empty (&bdbuf_cache.modified))                  
 800b144:	29 a1 00 4c 	lw r1,(r13+76)                                 
 800b148:	44 36 00 02 	be r1,r22,800b150 <rtems_bdbuf_get_buffer_for_access+0x1cc>
    rtems_bdbuf_wake_swapper ();                                      
 800b14c:	fb ff fa 3b 	calli 8009a38 <rtems_bdbuf_wake_swapper>       
                                                                      
  rtems_bdbuf_anonymous_wait (&bdbuf_cache.buffer_waiters);           
 800b150:	ba 00 08 00 	mv r1,r16                                      
 800b154:	fb ff fa a4 	calli 8009be4 <rtems_bdbuf_anonymous_wait>     
 800b158:	e3 ff ff b0 	bi 800b018 <rtems_bdbuf_get_buffer_for_access+0x94>
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800b15c:	bb 00 08 00 	mv r1,r24                                      <== NOT EXECUTED
 800b160:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 800b164:	ba 80 18 00 	mv r3,r20                                      <== NOT EXECUTED
 800b168:	fb ff fb 0d 	calli 8009d9c <rtems_bdbuf_wait.clone.15>      <== NOT EXECUTED
 800b16c:	e3 ff ff c7 	bi 800b088 <rtems_bdbuf_get_buffer_for_access+0x104><== NOT EXECUTED
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_8);
 800b170:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 800b174:	34 02 00 14 	mvi r2,20                                      <== NOT EXECUTED
 800b178:	fb ff f9 f5 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
 800b17c:	e3 ff ff c3 	bi 800b088 <rtems_bdbuf_get_buffer_for_access+0x104><== NOT EXECUTED
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800b180:	ba 20 08 00 	mv r1,r17                                      
 800b184:	ba 00 10 00 	mv r2,r16                                      
 800b188:	b9 c0 18 00 	mv r3,r14                                      
 800b18c:	fb ff fb 04 	calli 8009d9c <rtems_bdbuf_wait.clone.15>      
 800b190:	e3 ff ff b5 	bi 800b064 <rtems_bdbuf_get_buffer_for_access+0xe0>
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b194:	29 61 00 28 	lw r1,(r11+40)                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
 800b198:	28 22 00 0c 	lw r2,(r1+12)                                  
 800b19c:	34 42 ff ff 	addi r2,r2,-1                                  
 800b1a0:	58 22 00 0c 	sw (r1+12),r2                                  
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800b1a4:	29 64 00 00 	lw r4,(r11+0)                                  
  previous       = the_node->previous;                                
 800b1a8:	29 63 00 04 	lw r3,(r11+4)                                  
  next->previous = previous;                                          
 800b1ac:	58 83 00 04 	sw (r4+4),r3                                   
  previous->next = next;                                              
 800b1b0:	58 64 00 00 	sw (r3+0),r4                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
 800b1b4:	34 42 00 01 	addi r2,r2,1                                   
 800b1b8:	58 22 00 0c 	sw (r1+12),r2                                  
                                                                      
  rtems_bdbuf_wait_for_access (bd);                                   
  rtems_bdbuf_group_obtain (bd);                                      
                                                                      
  return bd;                                                          
}                                                                     
 800b1bc:	b9 60 08 00 	mv r1,r11                                      
 800b1c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b1c4:	2b 8b 00 40 	lw r11,(sp+64)                                 
 800b1c8:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 800b1cc:	2b 8d 00 38 	lw r13,(sp+56)                                 
 800b1d0:	2b 8e 00 34 	lw r14,(sp+52)                                 
 800b1d4:	2b 8f 00 30 	lw r15,(sp+48)                                 
 800b1d8:	2b 90 00 2c 	lw r16,(sp+44)                                 
 800b1dc:	2b 91 00 28 	lw r17,(sp+40)                                 
 800b1e0:	2b 92 00 24 	lw r18,(sp+36)                                 
 800b1e4:	2b 93 00 20 	lw r19,(sp+32)                                 
 800b1e8:	2b 94 00 1c 	lw r20,(sp+28)                                 
 800b1ec:	2b 95 00 18 	lw r21,(sp+24)                                 
 800b1f0:	2b 96 00 14 	lw r22,(sp+20)                                 
 800b1f4:	2b 97 00 10 	lw r23,(sp+16)                                 
 800b1f8:	2b 98 00 0c 	lw r24,(sp+12)                                 
 800b1fc:	2b 99 00 08 	lw r25,(sp+8)                                  
 800b200:	37 9c 00 40 	addi sp,sp,64                                  
 800b204:	c3 a0 00 00 	ret                                            
        return;                                                       
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
 800b208:	ba 20 08 00 	mv r1,r17                                      
 800b20c:	ba 00 10 00 	mv r2,r16                                      
 800b210:	b9 a0 18 00 	mv r3,r13                                      
 800b214:	fb ff fa e2 	calli 8009d9c <rtems_bdbuf_wait.clone.15>      
 800b218:	e3 ff ff 93 	bi 800b064 <rtems_bdbuf_get_buffer_for_access+0xe0>
static void                                                           
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)                  
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800b21c:	29 61 00 28 	lw r1,(r11+40)                                 
 800b220:	28 22 00 0c 	lw r2,(r1+12)                                  
 800b224:	e3 ff ff e0 	bi 800b1a4 <rtems_bdbuf_get_buffer_for_access+0x220>
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_7);
 800b228:	29 61 00 28 	lw r1,(r11+40)                                 
 800b22c:	28 22 00 0c 	lw r2,(r1+12)                                  
 800b230:	e3 ff ff e1 	bi 800b1b4 <rtems_bdbuf_get_buffer_for_access+0x230>
 800b234:	34 02 00 13 	mvi r2,19                                      <== NOT EXECUTED
 800b238:	fb ff f9 c5 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
 800b23c:	e3 ff ff 8a 	bi 800b064 <rtems_bdbuf_get_buffer_for_access+0xe0><== NOT EXECUTED
                                                                      

0800ac24 <rtems_bdbuf_get_buffer_for_read_ahead>: } static rtems_bdbuf_buffer * rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd, rtems_blkdev_bnum block) {
 800ac24:	37 9c ff f0 	addi sp,sp,-16                                 
 800ac28:	5b 8b 00 10 	sw (sp+16),r11                                 
 800ac2c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800ac30:	5b 8d 00 08 	sw (sp+8),r13                                  
 800ac34:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
 800ac38:	78 03 08 01 	mvhi r3,0x801                                  
 800ac3c:	38 63 a7 74 	ori r3,r3,0xa774                               
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd,         
                                       rtems_blkdev_bnum  block)      
{                                                                     
 800ac40:	b8 20 68 00 	mv r13,r1                                      
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
 800ac44:	28 61 00 3c 	lw r1,(r3+60)                                  
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd,         
                                       rtems_blkdev_bnum  block)      
{                                                                     
 800ac48:	b8 40 60 00 	mv r12,r2                                      
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
 800ac4c:	b8 40 18 00 	mv r3,r2                                       
 800ac50:	b9 a0 10 00 	mv r2,r13                                      
 800ac54:	fb ff fc 41 	calli 8009d58 <rtems_bdbuf_avl_search.clone.5> 
 800ac58:	b8 20 58 00 	mv r11,r1                                      
  else                                                                
    /*                                                                
     * The buffer is in the cache.  So it is already available or in use, and
     * thus no need for a read ahead.                                 
     */                                                               
    bd = NULL;                                                        
 800ac5c:	34 04 00 00 	mvi r4,0                                       
{                                                                     
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
                                                                      
  if (bd == NULL)                                                     
 800ac60:	44 20 00 08 	be r1,r0,800ac80 <rtems_bdbuf_get_buffer_for_read_ahead+0x5c><== ALWAYS TAKEN
     * thus no need for a read ahead.                                 
     */                                                               
    bd = NULL;                                                        
                                                                      
  return bd;                                                          
}                                                                     
 800ac64:	b8 80 08 00 	mv r1,r4                                       
 800ac68:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ac6c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800ac70:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800ac74:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800ac78:	37 9c 00 10 	addi sp,sp,16                                  
 800ac7c:	c3 a0 00 00 	ret                                            
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
                                                                      
  if (bd == NULL)                                                     
  {                                                                   
    bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);            
 800ac80:	b9 a0 08 00 	mv r1,r13                                      
 800ac84:	b9 80 10 00 	mv r2,r12                                      
 800ac88:	fb ff fe cb 	calli 800a7b4 <rtems_bdbuf_get_buffer_from_lru_list>
 800ac8c:	b8 20 20 00 	mv r4,r1                                       
                                                                      
    if (bd != NULL)                                                   
 800ac90:	44 2b ff f5 	be r1,r11,800ac64 <rtems_bdbuf_get_buffer_for_read_ahead+0x40><== NEVER TAKEN
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800ac94:	28 21 00 28 	lw r1,(r1+40)                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
 800ac98:	28 22 00 0c 	lw r2,(r1+12)                                  
 800ac9c:	34 42 00 01 	addi r2,r2,1                                   
 800aca0:	58 22 00 0c 	sw (r1+12),r2                                  
 800aca4:	e3 ff ff f0 	bi 800ac64 <rtems_bdbuf_get_buffer_for_read_ahead+0x40>
                                                                      

0800a7b4 <rtems_bdbuf_get_buffer_from_lru_list>: } static rtems_bdbuf_buffer * rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd, rtems_blkdev_bnum block) {
 800a7b4:	37 9c ff 48 	addi sp,sp,-184                                
 800a7b8:	5b 8b 00 38 	sw (sp+56),r11                                 
 800a7bc:	5b 8c 00 34 	sw (sp+52),r12                                 
 800a7c0:	5b 8d 00 30 	sw (sp+48),r13                                 
 800a7c4:	5b 8e 00 2c 	sw (sp+44),r14                                 
 800a7c8:	5b 8f 00 28 	sw (sp+40),r15                                 
 800a7cc:	5b 90 00 24 	sw (sp+36),r16                                 
 800a7d0:	5b 91 00 20 	sw (sp+32),r17                                 
 800a7d4:	5b 92 00 1c 	sw (sp+28),r18                                 
 800a7d8:	5b 93 00 18 	sw (sp+24),r19                                 
 800a7dc:	5b 94 00 14 	sw (sp+20),r20                                 
 800a7e0:	5b 95 00 10 	sw (sp+16),r21                                 
 800a7e4:	5b 96 00 0c 	sw (sp+12),r22                                 
 800a7e8:	5b 97 00 08 	sw (sp+8),r23                                  
 800a7ec:	5b 9d 00 04 	sw (sp+4),ra                                   
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800a7f0:	78 12 08 01 	mvhi r18,0x801                                 
 800a7f4:	3a 52 a7 74 	ori r18,r18,0xa774                             
 800a7f8:	2a 4d 00 40 	lw r13,(r18+64)                                
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
 800a7fc:	78 14 08 01 	mvhi r20,0x801                                 
 800a800:	3a 94 a7 b8 	ori r20,r20,0xa7b8                             
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
 800a804:	b8 20 88 00 	mv r17,r1                                      
 800a808:	b8 40 b0 00 	mv r22,r2                                      
    }                                                                 
                                                                      
    node = rtems_chain_next (node);                                   
  }                                                                   
                                                                      
  return NULL;                                                        
 800a80c:	34 0c 00 00 	mvi r12,0                                      
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
 800a810:	45 b4 00 40 	be r13,r20,800a910 <rtems_bdbuf_get_buffer_from_lru_list+0x15c>
 800a814:	78 10 08 01 	mvhi r16,0x801                                 
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_make_free_and_add_to_lru_list (bd);                   
                                                                      
  if (b > 1)                                                          
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800a818:	78 15 08 01 	mvhi r21,0x801                                 
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
 800a81c:	34 17 00 01 	mvi r23,1                                      
 800a820:	3a 10 a7 b4 	ori r16,r16,0xa7b4                             
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_make_free_and_add_to_lru_list (bd);                   
                                                                      
  if (b > 1)                                                          
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800a824:	3a b5 a7 e8 	ori r21,r21,0xa7e8                             
              bd->group->bds_per_group, dd->bds_per_group);           
                                                                      
    /*                                                                
     * If nobody waits for this BD, we may recycle it.                
     */                                                               
    if (bd->waiters == 0)                                             
 800a828:	29 a3 00 24 	lw r3,(r13+36)                                 
 800a82c:	5c 60 00 36 	bne r3,r0,800a904 <rtems_bdbuf_get_buffer_from_lru_list+0x150>
    {                                                                 
      if (bd->group->bds_per_group == dd->bds_per_group)              
 800a830:	29 ab 00 28 	lw r11,(r13+40)                                
 800a834:	2a 2f 00 34 	lw r15,(r17+52)                                
 800a838:	29 62 00 08 	lw r2,(r11+8)                                  
 800a83c:	44 4f 00 46 	be r2,r15,800a954 <rtems_bdbuf_get_buffer_from_lru_list+0x1a0>
      {                                                               
        rtems_bdbuf_remove_from_tree_and_lru_list (bd);               
                                                                      
        empty_bd = bd;                                                
      }                                                               
      else if (bd->group->users == 0)                                 
 800a840:	29 63 00 0c 	lw r3,(r11+12)                                 
 800a844:	5c 60 00 30 	bne r3,r0,800a904 <rtems_bdbuf_get_buffer_from_lru_list+0x150>
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:realloc: %tu: %zd -> %zd\n",                       
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
 800a848:	2a 41 00 20 	lw r1,(r18+32)                                 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
 800a84c:	29 6c 00 10 	lw r12,(r11+16)                                
 800a850:	44 43 00 12 	be r2,r3,800a898 <rtems_bdbuf_get_buffer_from_lru_list+0xe4><== NEVER TAKEN
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:realloc: %tu: %zd -> %zd\n",                       
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
 800a854:	f8 00 37 93 	calli 80186a0 <__udivsi3>                      
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
 800a858:	b4 21 18 00 	add r3,r1,r1                                   
 800a85c:	b4 63 18 00 	add r3,r3,r3                                   
 800a860:	b4 63 18 00 	add r3,r3,r3                                   
 800a864:	b4 63 20 00 	add r4,r3,r3                                   
 800a868:	b4 84 20 00 	add r4,r4,r4                                   
 800a86c:	b4 84 20 00 	add r4,r4,r4                                   
 800a870:	c8 83 98 00 	sub r19,r4,r3                                  
 800a874:	34 0e 00 00 	mvi r14,0                                      
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
 800a878:	b9 80 08 00 	mv r1,r12                                      
 800a87c:	fb ff ff b2 	calli 800a744 <rtems_bdbuf_remove_from_tree_and_lru_list>
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
 800a880:	29 63 00 08 	lw r3,(r11+8)                                  
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
 800a884:	35 ce 00 01 	addi r14,r14,1                                 
 800a888:	b5 93 60 00 	add r12,r12,r19                                
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
 800a88c:	54 6e ff fb 	bgu r3,r14,800a878 <rtems_bdbuf_get_buffer_from_lru_list+0xc4>
 800a890:	2a 41 00 20 	lw r1,(r18+32)                                 
 800a894:	29 6c 00 10 	lw r12,(r11+16)                                
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
 800a898:	59 6f 00 08 	sw (r11+8),r15                                 
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
 800a89c:	52 ef 00 19 	bgeu r23,r15,800a900 <rtems_bdbuf_get_buffer_from_lru_list+0x14c>
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
 800a8a0:	b9 e0 10 00 	mv r2,r15                                      
 800a8a4:	f8 00 37 7f 	calli 80186a0 <__udivsi3>                      
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
 800a8a8:	b4 21 18 00 	add r3,r1,r1                                   
 800a8ac:	b4 63 18 00 	add r3,r3,r3                                   
 800a8b0:	b4 63 18 00 	add r3,r3,r3                                   
 800a8b4:	b4 63 20 00 	add r4,r3,r3                                   
 800a8b8:	b4 84 20 00 	add r4,r4,r4                                   
 800a8bc:	b4 84 20 00 	add r4,r4,r4                                   
 800a8c0:	2a 45 00 40 	lw r5,(r18+64)                                 
 800a8c4:	c8 83 30 00 	sub r6,r4,r3                                   
 800a8c8:	b5 86 18 00 	add r3,r12,r6                                  
 800a8cc:	34 04 00 01 	mvi r4,1                                       
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800a8d0:	58 60 00 20 	sw (r3+32),r0                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800a8d4:	58 70 00 04 	sw (r3+4),r16                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
 800a8d8:	58 65 00 00 	sw (r3+0),r5                                   
  before_node->previous = the_node;                                   
 800a8dc:	58 a3 00 04 	sw (r5+4),r3                                   
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
 800a8e0:	34 84 00 01 	addi r4,r4,1                                   
                                                                      
static void                                                           
rtems_bdbuf_make_free_and_add_to_lru_list (rtems_bdbuf_buffer *bd)    
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_FREE);                 
  rtems_chain_prepend_unprotected (&bdbuf_cache.lru, &bd->link);      
 800a8e4:	b8 60 28 00 	mv r5,r3                                       
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
 800a8e8:	b4 66 18 00 	add r3,r3,r6                                   
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
 800a8ec:	5c 8f ff f9 	bne r4,r15,800a8d0 <rtems_bdbuf_get_buffer_from_lru_list+0x11c>
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_make_free_and_add_to_lru_list (bd);                   
                                                                      
  if (b > 1)                                                          
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800a8f0:	ba a0 08 00 	mv r1,r21                                      
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
 800a8f4:	5a 45 00 40 	sw (r18+64),r5                                 
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_make_free_and_add_to_lru_list (bd);                   
                                                                      
  if (b > 1)                                                          
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800a8f8:	fb ff fc 41 	calli 80099fc <rtems_bdbuf_wake>               
 800a8fc:	29 6c 00 10 	lw r12,(r11+16)                                
      }                                                               
      else if (bd->group->users == 0)                                 
        empty_bd = rtems_bdbuf_group_realloc (bd->group, dd->bds_per_group);
    }                                                                 
                                                                      
    if (empty_bd != NULL)                                             
 800a900:	5d 80 00 19 	bne r12,r0,800a964 <rtems_bdbuf_get_buffer_from_lru_list+0x1b0><== ALWAYS TAKEN
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800a904:	29 ad 00 00 	lw r13,(r13+0)                                 
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
 800a908:	5d b4 ff c8 	bne r13,r20,800a828 <rtems_bdbuf_get_buffer_from_lru_list+0x74>
    }                                                                 
                                                                      
    node = rtems_chain_next (node);                                   
  }                                                                   
                                                                      
  return NULL;                                                        
 800a90c:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 800a910:	b9 80 08 00 	mv r1,r12                                      
 800a914:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a918:	2b 8b 00 38 	lw r11,(sp+56)                                 
 800a91c:	2b 8c 00 34 	lw r12,(sp+52)                                 
 800a920:	2b 8d 00 30 	lw r13,(sp+48)                                 
 800a924:	2b 8e 00 2c 	lw r14,(sp+44)                                 
 800a928:	2b 8f 00 28 	lw r15,(sp+40)                                 
 800a92c:	2b 90 00 24 	lw r16,(sp+36)                                 
 800a930:	2b 91 00 20 	lw r17,(sp+32)                                 
 800a934:	2b 92 00 1c 	lw r18,(sp+28)                                 
 800a938:	2b 93 00 18 	lw r19,(sp+24)                                 
 800a93c:	2b 94 00 14 	lw r20,(sp+20)                                 
 800a940:	2b 95 00 10 	lw r21,(sp+16)                                 
 800a944:	2b 96 00 0c 	lw r22,(sp+12)                                 
 800a948:	2b 97 00 08 	lw r23,(sp+8)                                  
 800a94c:	37 9c 00 b8 	addi sp,sp,184                                 
 800a950:	c3 a0 00 00 	ret                                            
     */                                                               
    if (bd->waiters == 0)                                             
    {                                                                 
      if (bd->group->bds_per_group == dd->bds_per_group)              
      {                                                               
        rtems_bdbuf_remove_from_tree_and_lru_list (bd);               
 800a954:	b9 a0 08 00 	mv r1,r13                                      
 800a958:	b9 a0 60 00 	mv r12,r13                                     
 800a95c:	fb ff ff 7a 	calli 800a744 <rtems_bdbuf_remove_from_tree_and_lru_list>
      }                                                               
      else if (bd->group->users == 0)                                 
        empty_bd = rtems_bdbuf_group_realloc (bd->group, dd->bds_per_group);
    }                                                                 
                                                                      
    if (empty_bd != NULL)                                             
 800a960:	45 80 ff e9 	be r12,r0,800a904 <rtems_bdbuf_get_buffer_from_lru_list+0x150><== NEVER TAKEN
                       rtems_bdbuf_buffer*  node)                     
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
                                                                      
  rtems_bdbuf_buffer*  p = *root;                                     
 800a964:	2a 4b 00 3c 	lw r11,(r18+60)                                
static void                                                           
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,               
                                rtems_disk_device  *dd,               
                                rtems_blkdev_bnum   block)            
{                                                                     
  bd->dd        = dd ;                                                
 800a968:	59 91 00 14 	sw (r12+20),r17                                
  bd->block     = block;                                              
 800a96c:	59 96 00 18 	sw (r12+24),r22                                
  bd->avl.left  = NULL;                                               
 800a970:	59 80 00 08 	sw (r12+8),r0                                  
  bd->avl.right = NULL;                                               
 800a974:	59 80 00 0c 	sw (r12+12),r0                                 
  bd->waiters   = 0;                                                  
 800a978:	59 80 00 24 	sw (r12+36),r0                                 
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
 800a97c:	45 60 00 a3 	be r11,r0,800ac08 <rtems_bdbuf_get_buffer_from_lru_list+0x454>
  rtems_bdbuf_buffer*  p = *root;                                     
  rtems_bdbuf_buffer*  q;                                             
  rtems_bdbuf_buffer*  p1;                                            
  rtems_bdbuf_buffer*  p2;                                            
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
 800a980:	37 93 00 3c 	addi r19,sp,60                                 
 800a984:	ba 60 68 00 	mv r13,r19                                     
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
 800a988:	34 05 00 01 	mvi r5,1                                       
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
 800a98c:	34 06 ff ff 	mvi r6,-1                                      
 800a990:	e0 00 00 06 	bi 800a9a8 <rtems_bdbuf_get_buffer_from_lru_list+0x1f4>
      q = p->avl.left;                                                
 800a994:	29 63 00 08 	lw r3,(r11+8)                                  
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
 800a998:	31 66 00 10 	sb (r11+16),r6                                 
      q = p->avl.left;                                                
      if (q == NULL)                                                  
 800a99c:	44 60 00 90 	be r3,r0,800abdc <rtems_bdbuf_get_buffer_from_lru_list+0x428>
      {                                                               
        q = node;                                                     
        p->avl.left = q;                                              
 800a9a0:	b8 80 68 00 	mv r13,r4                                      
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
 800a9a4:	b8 60 58 00 	mv r11,r3                                      
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
 800a9a8:	29 61 00 14 	lw r1,(r11+20)                                 
    return 0;                                                         
  }                                                                   
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
 800a9ac:	59 ab 00 00 	sw (r13+0),r11                                 
 800a9b0:	35 a4 00 04 	addi r4,r13,4                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
 800a9b4:	56 21 00 04 	bgu r17,r1,800a9c4 <rtems_bdbuf_get_buffer_from_lru_list+0x210><== NEVER TAKEN
        || ((p->dd == dd) && (p->block < block)))                     
 800a9b8:	5e 21 ff f7 	bne r17,r1,800a994 <rtems_bdbuf_get_buffer_from_lru_list+0x1e0><== NEVER TAKEN
 800a9bc:	29 61 00 18 	lw r1,(r11+24)                                 
 800a9c0:	50 36 00 95 	bgeu r1,r22,800ac14 <rtems_bdbuf_get_buffer_from_lru_list+0x460>
    {                                                                 
      p->avl.cache = 1;                                               
      q = p->avl.right;                                               
 800a9c4:	29 63 00 0c 	lw r3,(r11+12)                                 
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
 800a9c8:	31 65 00 10 	sb (r11+16),r5                                 
      q = p->avl.right;                                               
      if (q == NULL)                                                  
 800a9cc:	5c 60 ff f5 	bne r3,r0,800a9a0 <rtems_bdbuf_get_buffer_from_lru_list+0x1ec>
      {                                                               
        q = node;                                                     
        p->avl.right = q = node;                                      
 800a9d0:	59 6c 00 0c 	sw (r11+12),r12                                
 800a9d4:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
                                                                      
    p = q;                                                            
  }                                                                   
                                                                      
  q->avl.left = q->avl.right = NULL;                                  
 800a9d8:	59 80 00 0c 	sw (r12+12),r0                                 
 800a9dc:	59 80 00 08 	sw (r12+8),r0                                  
  q->avl.bal = 0;                                                     
 800a9e0:	31 80 00 11 	sb (r12+17),r0                                 
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
  {                                                                   
    if (p->avl.cache == -1)                                           
 800a9e4:	34 0f ff ff 	mvi r15,-1                                     
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = 1;                                             
 800a9e8:	34 14 00 01 	mvi r20,1                                      
 800a9ec:	34 11 00 01 	mvi r17,1                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 800a9f0:	34 15 ff ff 	mvi r21,-1                                     
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
  {                                                                   
    if (p->avl.cache == -1)                                           
 800a9f4:	44 2f 00 19 	be r1,r15,800aa58 <rtems_bdbuf_get_buffer_from_lru_list+0x2a4>
          break;                                                      
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      switch (p->avl.bal)                                             
 800a9f8:	41 61 00 11 	lbu r1,(r11+17)                                
 800a9fc:	34 02 00 18 	mvi r2,24                                      
 800aa00:	f8 00 36 4e 	calli 8018338 <__ashlsi3>                      
 800aa04:	34 02 00 18 	mvi r2,24                                      
 800aa08:	f8 00 36 73 	calli 80183d4 <__ashrsi3>                      
 800aa0c:	44 20 00 60 	be r1,r0,800ab8c <rtems_bdbuf_get_buffer_from_lru_list+0x3d8>
 800aa10:	44 31 00 42 	be r1,r17,800ab18 <rtems_bdbuf_get_buffer_from_lru_list+0x364>
 800aa14:	44 2f 00 3d 	be r1,r15,800ab08 <rtems_bdbuf_get_buffer_from_lru_list+0x354><== ALWAYS TAKEN
 800aa18:	b9 60 70 00 	mv r14,r11                                     <== NOT EXECUTED
 800aa1c:	34 10 00 01 	mvi r16,1                                      <== NOT EXECUTED
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
    q = p;                                                            
    if (buf_prev > buf_stack)                                         
 800aa20:	52 6d 00 69 	bgeu r19,r13,800abc4 <rtems_bdbuf_get_buffer_from_lru_list+0x410>
    {                                                                 
      p = *--buf_prev;                                                
 800aa24:	35 ad ff fc 	addi r13,r13,-4                                
 800aa28:	29 ab 00 00 	lw r11,(r13+0)                                 
                                                                      
      if (p->avl.cache == -1)                                         
 800aa2c:	34 02 00 18 	mvi r2,24                                      
 800aa30:	41 61 00 10 	lbu r1,(r11+16)                                
 800aa34:	f8 00 36 41 	calli 8018338 <__ashlsi3>                      
 800aa38:	34 02 00 18 	mvi r2,24                                      
 800aa3c:	f8 00 36 66 	calli 80183d4 <__ashrsi3>                      
 800aa40:	44 2f 00 2f 	be r1,r15,800aafc <rtems_bdbuf_get_buffer_from_lru_list+0x348>
      {                                                               
        p->avl.left = q;                                              
      }                                                               
      else                                                            
      {                                                               
        p->avl.right = q;                                             
 800aa44:	59 6e 00 0c 	sw (r11+12),r14                                
  q->avl.left = q->avl.right = NULL;                                  
  q->avl.bal = 0;                                                     
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
 800aa48:	5e 00 ff eb 	bne r16,r0,800a9f4 <rtems_bdbuf_get_buffer_from_lru_list+0x240>
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800aa4c:	34 01 00 01 	mvi r1,1                                       
 800aa50:	59 81 00 20 	sw (r12+32),r1                                 
                                                                      
    if (empty_bd != NULL)                                             
    {                                                                 
      rtems_bdbuf_setup_empty_buffer (empty_bd, dd, block);           
                                                                      
      return empty_bd;                                                
 800aa54:	e3 ff ff af 	bi 800a910 <rtems_bdbuf_get_buffer_from_lru_list+0x15c>
                                                                      
  while (modified)                                                    
  {                                                                   
    if (p->avl.cache == -1)                                           
    {                                                                 
      switch (p->avl.bal)                                             
 800aa58:	41 61 00 11 	lbu r1,(r11+17)                                
 800aa5c:	34 02 00 18 	mvi r2,24                                      
 800aa60:	f8 00 36 36 	calli 8018338 <__ashlsi3>                      
 800aa64:	34 02 00 18 	mvi r2,24                                      
 800aa68:	f8 00 36 5b 	calli 80183d4 <__ashrsi3>                      
 800aa6c:	44 20 00 4c 	be r1,r0,800ab9c <rtems_bdbuf_get_buffer_from_lru_list+0x3e8>
 800aa70:	44 31 00 26 	be r1,r17,800ab08 <rtems_bdbuf_get_buffer_from_lru_list+0x354>
 800aa74:	5c 2f ff e9 	bne r1,r15,800aa18 <rtems_bdbuf_get_buffer_from_lru_list+0x264><== NEVER TAKEN
        case 0:                                                       
          p->avl.bal = -1;                                            
          break;                                                      
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
 800aa78:	29 70 00 08 	lw r16,(r11+8)                                 
          if (p1->avl.bal == -1) /* simple LL-turn */                 
 800aa7c:	34 02 00 18 	mvi r2,24                                      
 800aa80:	42 01 00 11 	lbu r1,(r16+17)                                
 800aa84:	f8 00 36 2d 	calli 8018338 <__ashlsi3>                      
 800aa88:	34 02 00 18 	mvi r2,24                                      
 800aa8c:	f8 00 36 52 	calli 80183d4 <__ashrsi3>                      
 800aa90:	44 2f 00 56 	be r1,r15,800abe8 <rtems_bdbuf_get_buffer_from_lru_list+0x434>
            p->avl.bal = 0;                                           
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
 800aa94:	2a 0e 00 0c 	lw r14,(r16+12)                                
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
 800aa98:	34 02 00 18 	mvi r2,24                                      
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
 800aa9c:	29 c3 00 08 	lw r3,(r14+8)                                  
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
 800aaa0:	41 c1 00 11 	lbu r1,(r14+17)                                
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
 800aaa4:	59 d0 00 08 	sw (r14+8),r16                                 
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
 800aaa8:	5a 03 00 0c 	sw (r16+12),r3                                 
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
 800aaac:	29 c3 00 0c 	lw r3,(r14+12)                                 
            p2->avl.right = p;                                        
 800aab0:	59 cb 00 0c 	sw (r14+12),r11                                
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
 800aab4:	59 63 00 08 	sw (r11+8),r3                                  
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
 800aab8:	f8 00 36 20 	calli 8018338 <__ashlsi3>                      
 800aabc:	34 02 00 18 	mvi r2,24                                      
 800aac0:	f8 00 36 45 	calli 80183d4 <__ashrsi3>                      
 800aac4:	44 2f 00 4f 	be r1,r15,800ac00 <rtems_bdbuf_get_buffer_from_lru_list+0x44c>
 800aac8:	31 60 00 11 	sb (r11+17),r0                                 
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 800aacc:	41 c1 00 11 	lbu r1,(r14+17)                                
 800aad0:	34 02 00 18 	mvi r2,24                                      
 800aad4:	f8 00 36 19 	calli 8018338 <__ashlsi3>                      
 800aad8:	34 02 00 18 	mvi r2,24                                      
 800aadc:	f8 00 36 3e 	calli 80183d4 <__ashrsi3>                      
 800aae0:	44 31 00 05 	be r1,r17,800aaf4 <rtems_bdbuf_get_buffer_from_lru_list+0x340>
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
 800aae4:	32 00 00 11 	sb (r16+17),r0                                 
            p = p2;                                                   
          }                                                           
          p->avl.bal = 0;                                             
 800aae8:	31 c0 00 11 	sb (r14+17),r0                                 
          modified = false;                                           
 800aaec:	34 10 00 00 	mvi r16,0                                      
 800aaf0:	e3 ff ff cc 	bi 800aa20 <rtems_bdbuf_get_buffer_from_lru_list+0x26c>
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 800aaf4:	32 15 00 11 	sb (r16+17),r21                                
 800aaf8:	e3 ff ff fc 	bi 800aae8 <rtems_bdbuf_get_buffer_from_lru_list+0x334>
    {                                                                 
      p = *--buf_prev;                                                
                                                                      
      if (p->avl.cache == -1)                                         
      {                                                               
        p->avl.left = q;                                              
 800aafc:	59 6e 00 08 	sw (r11+8),r14                                 
  q->avl.left = q->avl.right = NULL;                                  
  q->avl.bal = 0;                                                     
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
 800ab00:	5e 00 ff bd 	bne r16,r0,800a9f4 <rtems_bdbuf_get_buffer_from_lru_list+0x240>
 800ab04:	e3 ff ff d2 	bi 800aa4c <rtems_bdbuf_get_buffer_from_lru_list+0x298>
    else                                                              
    {                                                                 
      switch (p->avl.bal)                                             
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
 800ab08:	31 60 00 11 	sb (r11+17),r0                                 
 800ab0c:	b9 60 70 00 	mv r14,r11                                     
          modified = false;                                           
 800ab10:	34 10 00 00 	mvi r16,0                                      
 800ab14:	e3 ff ff c3 	bi 800aa20 <rtems_bdbuf_get_buffer_from_lru_list+0x26c>
        case 0:                                                       
          p->avl.bal = 1;                                             
          break;                                                      
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
 800ab18:	29 70 00 0c 	lw r16,(r11+12)                                
          if (p1->avl.bal == 1) /* simple RR-turn */                  
 800ab1c:	34 02 00 18 	mvi r2,24                                      
 800ab20:	42 01 00 11 	lbu r1,(r16+17)                                
 800ab24:	f8 00 36 05 	calli 8018338 <__ashlsi3>                      
 800ab28:	34 02 00 18 	mvi r2,24                                      
 800ab2c:	f8 00 36 2a 	calli 80183d4 <__ashrsi3>                      
 800ab30:	44 31 00 1f 	be r1,r17,800abac <rtems_bdbuf_get_buffer_from_lru_list+0x3f8>
            p->avl.bal = 0;                                           
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
 800ab34:	2a 0e 00 08 	lw r14,(r16+8)                                 
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800ab38:	34 02 00 18 	mvi r2,24                                      
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
 800ab3c:	29 c3 00 0c 	lw r3,(r14+12)                                 
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800ab40:	41 c1 00 11 	lbu r1,(r14+17)                                
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
 800ab44:	59 d0 00 0c 	sw (r14+12),r16                                
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
 800ab48:	5a 03 00 08 	sw (r16+8),r3                                  
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
 800ab4c:	29 c3 00 08 	lw r3,(r14+8)                                  
            p2->avl.left = p;                                         
 800ab50:	59 cb 00 08 	sw (r14+8),r11                                 
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
 800ab54:	59 63 00 0c 	sw (r11+12),r3                                 
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800ab58:	f8 00 35 f8 	calli 8018338 <__ashlsi3>                      
 800ab5c:	34 02 00 18 	mvi r2,24                                      
 800ab60:	f8 00 36 1d 	calli 80183d4 <__ashrsi3>                      
 800ab64:	44 31 00 1c 	be r1,r17,800abd4 <rtems_bdbuf_get_buffer_from_lru_list+0x420><== NEVER TAKEN
 800ab68:	31 60 00 11 	sb (r11+17),r0                                 
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
 800ab6c:	41 c1 00 11 	lbu r1,(r14+17)                                
 800ab70:	34 02 00 18 	mvi r2,24                                      
 800ab74:	f8 00 35 f1 	calli 8018338 <__ashlsi3>                      
 800ab78:	34 02 00 18 	mvi r2,24                                      
 800ab7c:	f8 00 36 16 	calli 80183d4 <__ashrsi3>                      
 800ab80:	5c 2f ff d9 	bne r1,r15,800aae4 <rtems_bdbuf_get_buffer_from_lru_list+0x330><== ALWAYS TAKEN
 800ab84:	32 14 00 11 	sb (r16+17),r20                                <== NOT EXECUTED
 800ab88:	e3 ff ff d8 	bi 800aae8 <rtems_bdbuf_get_buffer_from_lru_list+0x334><== NOT EXECUTED
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = 1;                                             
 800ab8c:	31 74 00 11 	sb (r11+17),r20                                
 800ab90:	b9 60 70 00 	mv r14,r11                                     
 800ab94:	34 10 00 01 	mvi r16,1                                      
 800ab98:	e3 ff ff a2 	bi 800aa20 <rtems_bdbuf_get_buffer_from_lru_list+0x26c>
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = -1;                                            
 800ab9c:	31 6f 00 11 	sb (r11+17),r15                                
 800aba0:	b9 60 70 00 	mv r14,r11                                     
 800aba4:	34 10 00 01 	mvi r16,1                                      
 800aba8:	e3 ff ff 9e 	bi 800aa20 <rtems_bdbuf_get_buffer_from_lru_list+0x26c>
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
 800abac:	2a 01 00 08 	lw r1,(r16+8)                                  
            p1->avl.left = p;                                         
            p->avl.bal = 0;                                           
 800abb0:	31 60 00 11 	sb (r11+17),r0                                 
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
            p1->avl.left = p;                                         
 800abb4:	5a 0b 00 08 	sw (r16+8),r11                                 
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
 800abb8:	59 61 00 0c 	sw (r11+12),r1                                 
            p1->avl.left = p;                                         
            p->avl.bal = 0;                                           
 800abbc:	ba 00 70 00 	mv r14,r16                                     
 800abc0:	e3 ff ff ca 	bi 800aae8 <rtems_bdbuf_get_buffer_from_lru_list+0x334>
        p->avl.right = q;                                             
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      *root = p;                                                      
 800abc4:	5a 4e 00 3c 	sw (r18+60),r14                                
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800abc8:	34 01 00 01 	mvi r1,1                                       
 800abcc:	59 81 00 20 	sw (r12+32),r1                                 
 800abd0:	e3 ff ff 50 	bi 800a910 <rtems_bdbuf_get_buffer_from_lru_list+0x15c>
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800abd4:	31 6f 00 11 	sb (r11+17),r15                                <== NOT EXECUTED
 800abd8:	e3 ff ff e5 	bi 800ab6c <rtems_bdbuf_get_buffer_from_lru_list+0x3b8><== NOT EXECUTED
      p->avl.cache = -1;                                              
      q = p->avl.left;                                                
      if (q == NULL)                                                  
      {                                                               
        q = node;                                                     
        p->avl.left = q;                                              
 800abdc:	59 6c 00 08 	sw (r11+8),r12                                 
 800abe0:	34 01 ff ff 	mvi r1,-1                                      
 800abe4:	e3 ff ff 7d 	bi 800a9d8 <rtems_bdbuf_get_buffer_from_lru_list+0x224>
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
          if (p1->avl.bal == -1) /* simple LL-turn */                 
          {                                                           
            p->avl.left = p1->avl.right;                              
 800abe8:	2a 01 00 0c 	lw r1,(r16+12)                                 
            p1->avl.right = p;                                        
            p->avl.bal = 0;                                           
 800abec:	31 60 00 11 	sb (r11+17),r0                                 
        case -1:                                                      
          p1 = p->avl.left;                                           
          if (p1->avl.bal == -1) /* simple LL-turn */                 
          {                                                           
            p->avl.left = p1->avl.right;                              
            p1->avl.right = p;                                        
 800abf0:	5a 0b 00 0c 	sw (r16+12),r11                                
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
          if (p1->avl.bal == -1) /* simple LL-turn */                 
          {                                                           
            p->avl.left = p1->avl.right;                              
 800abf4:	59 61 00 08 	sw (r11+8),r1                                  
            p1->avl.right = p;                                        
            p->avl.bal = 0;                                           
 800abf8:	ba 00 70 00 	mv r14,r16                                     
 800abfc:	e3 ff ff bb 	bi 800aae8 <rtems_bdbuf_get_buffer_from_lru_list+0x334>
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
 800ac00:	31 71 00 11 	sb (r11+17),r17                                
 800ac04:	e3 ff ff b2 	bi 800aacc <rtems_bdbuf_get_buffer_from_lru_list+0x318>
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
  {                                                                   
    *root = node;                                                     
 800ac08:	5a 4c 00 3c 	sw (r18+60),r12                                
    node->avl.left = NULL;                                            
    node->avl.right = NULL;                                           
    node->avl.bal = 0;                                                
 800ac0c:	31 80 00 11 	sb (r12+17),r0                                 
 800ac10:	e3 ff ff 8f 	bi 800aa4c <rtems_bdbuf_get_buffer_from_lru_list+0x298>
        q = node;                                                     
        p->avl.right = q = node;                                      
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
 800ac14:	5e c1 ff 60 	bne r22,r1,800a994 <rtems_bdbuf_get_buffer_from_lru_list+0x1e0><== ALWAYS TAKEN
  bd->avl.left  = NULL;                                               
  bd->avl.right = NULL;                                               
  bd->waiters   = 0;                                                  
                                                                      
  if (rtems_bdbuf_avl_insert (&bdbuf_cache.tree, bd) != 0)            
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RECYCLE);                    
 800ac18:	34 01 00 08 	mvi r1,8                                       <== NOT EXECUTED
 800ac1c:	fb ff fb 25 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 800ac20:	e3 ff ff 8b 	bi 800aa4c <rtems_bdbuf_get_buffer_from_lru_list+0x298><== NOT EXECUTED
                                                                      

0800b67c <rtems_bdbuf_init>: * * @return rtems_status_code The initialisation status. */ rtems_status_code rtems_bdbuf_init (void) {
 800b67c:	37 9c ff c4 	addi sp,sp,-60                                 
 800b680:	5b 8b 00 3c 	sw (sp+60),r11                                 
 800b684:	5b 8c 00 38 	sw (sp+56),r12                                 
 800b688:	5b 8d 00 34 	sw (sp+52),r13                                 
 800b68c:	5b 8e 00 30 	sw (sp+48),r14                                 
 800b690:	5b 8f 00 2c 	sw (sp+44),r15                                 
 800b694:	5b 90 00 28 	sw (sp+40),r16                                 
 800b698:	5b 91 00 24 	sw (sp+36),r17                                 
 800b69c:	5b 92 00 20 	sw (sp+32),r18                                 
 800b6a0:	5b 93 00 1c 	sw (sp+28),r19                                 
 800b6a4:	5b 94 00 18 	sw (sp+24),r20                                 
 800b6a8:	5b 95 00 14 	sw (sp+20),r21                                 
 800b6ac:	5b 96 00 10 	sw (sp+16),r22                                 
 800b6b0:	5b 97 00 0c 	sw (sp+12),r23                                 
 800b6b4:	5b 98 00 08 	sw (sp+8),r24                                  
 800b6b8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_mode          prev_mode;                                      
                                                                      
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:init\n");                                          
                                                                      
  if (rtems_interrupt_is_in_progress())                               
 800b6bc:	78 01 08 01 	mvhi r1,0x801                                  
 800b6c0:	38 21 ae 00 	ori r1,r1,0xae00                               
 800b6c4:	28 2b 00 08 	lw r11,(r1+8)                                  
    return RTEMS_CALLED_FROM_ISR;                                     
 800b6c8:	34 03 00 12 	mvi r3,18                                      
  rtems_mode          prev_mode;                                      
                                                                      
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:init\n");                                          
                                                                      
  if (rtems_interrupt_is_in_progress())                               
 800b6cc:	5d 60 00 0b 	bne r11,r0,800b6f8 <rtems_bdbuf_init+0x7c>     <== NEVER TAKEN
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  /*                                                                  
   * Check the configuration table values.                            
   */                                                                 
  if ((bdbuf_config.buffer_max % bdbuf_config.buffer_min) != 0)       
 800b6d0:	78 0c 08 01 	mvhi r12,0x801                                 
 800b6d4:	39 8c 91 bc 	ori r12,r12,0x91bc                             
 800b6d8:	29 8f 00 28 	lw r15,(r12+40)                                
 800b6dc:	29 8d 00 24 	lw r13,(r12+36)                                
 800b6e0:	b9 e0 08 00 	mv r1,r15                                      
 800b6e4:	b9 a0 10 00 	mv r2,r13                                      
 800b6e8:	f8 00 33 fe 	calli 80186e0 <__umodsi3>                      
 800b6ec:	b8 20 70 00 	mv r14,r1                                      
    return RTEMS_INVALID_NUMBER;                                      
 800b6f0:	34 03 00 0a 	mvi r3,10                                      
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  /*                                                                  
   * Check the configuration table values.                            
   */                                                                 
  if ((bdbuf_config.buffer_max % bdbuf_config.buffer_min) != 0)       
 800b6f4:	44 2b 00 13 	be r1,r11,800b740 <rtems_bdbuf_init+0xc4>      <== ALWAYS TAKEN
  }                                                                   
                                                                      
  bdbuf_cache.initialised = false;                                    
                                                                      
  return RTEMS_UNSATISFIED;                                           
}                                                                     
 800b6f8:	b8 60 08 00 	mv r1,r3                                       
 800b6fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800b700:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 800b704:	2b 8c 00 38 	lw r12,(sp+56)                                 
 800b708:	2b 8d 00 34 	lw r13,(sp+52)                                 
 800b70c:	2b 8e 00 30 	lw r14,(sp+48)                                 
 800b710:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 800b714:	2b 90 00 28 	lw r16,(sp+40)                                 
 800b718:	2b 91 00 24 	lw r17,(sp+36)                                 
 800b71c:	2b 92 00 20 	lw r18,(sp+32)                                 
 800b720:	2b 93 00 1c 	lw r19,(sp+28)                                 
 800b724:	2b 94 00 18 	lw r20,(sp+24)                                 
 800b728:	2b 95 00 14 	lw r21,(sp+20)                                 
 800b72c:	2b 96 00 10 	lw r22,(sp+16)                                 
 800b730:	2b 97 00 0c 	lw r23,(sp+12)                                 
 800b734:	2b 98 00 08 	lw r24,(sp+8)                                  
 800b738:	37 9c 00 3c 	addi sp,sp,60                                  
 800b73c:	c3 a0 00 00 	ret                                            
   * We use a special variable to manage the initialisation incase we have
   * completing threads doing this. You may get errors if the another thread
   * makes a call and we have not finished initialisation.            
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
  if (bdbuf_cache.initialised)                                        
 800b740:	78 0b 08 01 	mvhi r11,0x801                                 
 800b744:	39 6b a7 74 	ori r11,r11,0xa774                             
  /*                                                                  
   * We use a special variable to manage the initialisation incase we have
   * completing threads doing this. You may get errors if the another thread
   * makes a call and we have not finished initialisation.            
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
 800b748:	fb ff f9 0d 	calli 8009b7c <rtems_bdbuf_disable_preemption> 
  if (bdbuf_cache.initialised)                                        
 800b74c:	41 70 00 95 	lbu r16,(r11+149)                              
  /*                                                                  
   * We use a special variable to manage the initialisation incase we have
   * completing threads doing this. You may get errors if the another thread
   * makes a call and we have not finished initialisation.            
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
 800b750:	b8 20 88 00 	mv r17,r1                                      
  if (bdbuf_cache.initialised)                                        
 800b754:	46 0e 00 04 	be r16,r14,800b764 <rtems_bdbuf_init+0xe8>     <== ALWAYS TAKEN
  {                                                                   
    rtems_bdbuf_restore_preemption (prev_mode);                       
 800b758:	fb ff f9 17 	calli 8009bb4 <rtems_bdbuf_restore_preemption> <== NOT EXECUTED
    return RTEMS_RESOURCE_IN_USE;                                     
 800b75c:	34 03 00 0c 	mvi r3,12                                      <== NOT EXECUTED
 800b760:	e3 ff ff e6 	bi 800b6f8 <rtems_bdbuf_init+0x7c>             <== NOT EXECUTED
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
 800b764:	34 03 00 98 	mvi r3,152                                     
 800b768:	34 02 00 00 	mvi r2,0                                       
 800b76c:	b9 60 08 00 	mv r1,r11                                      
 800b770:	f8 00 1e ee 	calli 8013328 <memset>                         
  bdbuf_cache.initialised = true;                                     
 800b774:	34 02 00 01 	mvi r2,1                                       
  rtems_bdbuf_restore_preemption (prev_mode);                         
 800b778:	ba 20 08 00 	mv r1,r17                                      
    rtems_bdbuf_restore_preemption (prev_mode);                       
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
  bdbuf_cache.initialised = true;                                     
 800b77c:	31 62 00 95 	sb (r11+149),r2                                
  rtems_bdbuf_restore_preemption (prev_mode);                         
 800b780:	fb ff f9 0d 	calli 8009bb4 <rtems_bdbuf_restore_preemption> 
  rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);       
                                                                      
  /*                                                                  
   * Create the locks for the cache.                                  
   */                                                                 
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'), 
 800b784:	78 02 08 01 	mvhi r2,0x801                                  
 800b788:	38 42 96 b4 	ori r2,r2,0x96b4                               
 800b78c:	28 41 00 00 	lw r1,(r2+0)                                   
                                                                      
  head->next = tail;                                                  
 800b790:	78 14 08 01 	mvhi r20,0x801                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b794:	78 13 08 01 	mvhi r19,0x801                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b798:	78 0e 08 01 	mvhi r14,0x801                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b79c:	78 12 08 01 	mvhi r18,0x801                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7a0:	78 11 08 01 	mvhi r17,0x801                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7a4:	78 0a 08 01 	mvhi r10,0x801                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7a8:	78 09 08 01 	mvhi r9,0x801                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7ac:	78 08 08 01 	mvhi r8,0x801                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7b0:	78 07 08 01 	mvhi r7,0x801                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7b4:	78 06 08 01 	mvhi r6,0x801                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7b8:	3a 31 a7 c4 	ori r17,r17,0xa7c4                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7bc:	39 4a a7 c0 	ori r10,r10,0xa7c0                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7c0:	39 29 a7 d0 	ori r9,r9,0xa7d0                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7c4:	39 08 a7 cc 	ori r8,r8,0xa7cc                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7c8:	38 e7 a8 00 	ori r7,r7,0xa800                               
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7cc:	38 c6 a7 fc 	ori r6,r6,0xa7fc                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7d0:	3a 94 a7 80 	ori r20,r20,0xa780                             
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800b7d4:	3a 73 a7 7c 	ori r19,r19,0xa77c                             
 800b7d8:	3a 52 a7 b4 	ori r18,r18,0xa7b4                             
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b7dc:	39 ce a7 b8 	ori r14,r14,0xa7b8                             
 800b7e0:	78 05 08 01 	mvhi r5,0x801                                  
 800b7e4:	59 71 00 4c 	sw (r11+76),r17                                
 800b7e8:	34 02 00 01 	mvi r2,1                                       
 800b7ec:	34 03 00 54 	mvi r3,84                                      
 800b7f0:	34 04 00 00 	mvi r4,0                                       
 800b7f4:	38 a5 a7 9c 	ori r5,r5,0xa79c                               
   */                                                                 
  cache_aligment = 32; /* FIXME rtems_cache_get_data_line_size() */   
  if (cache_aligment <= 0)                                            
    cache_aligment = CPU_ALIGNMENT;                                   
                                                                      
  bdbuf_cache.sync_device = BDBUF_INVALID_DEV;                        
 800b7f8:	59 60 00 38 	sw (r11+56),r0                                 
 800b7fc:	59 74 00 08 	sw (r11+8),r20                                 
  head->previous = NULL;                                              
 800b800:	59 60 00 0c 	sw (r11+12),r0                                 
  tail->previous = head;                                              
 800b804:	59 73 00 10 	sw (r11+16),r19                                
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b808:	59 6e 00 40 	sw (r11+64),r14                                
  head->previous = NULL;                                              
 800b80c:	59 60 00 44 	sw (r11+68),r0                                 
  tail->previous = head;                                              
 800b810:	59 72 00 48 	sw (r11+72),r18                                
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 800b814:	59 60 00 50 	sw (r11+80),r0                                 
  tail->previous = head;                                              
 800b818:	59 6a 00 54 	sw (r11+84),r10                                
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b81c:	59 69 00 58 	sw (r11+88),r9                                 
  head->previous = NULL;                                              
 800b820:	59 60 00 5c 	sw (r11+92),r0                                 
  tail->previous = head;                                              
 800b824:	59 68 00 60 	sw (r11+96),r8                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b828:	59 67 00 88 	sw (r11+136),r7                                
  head->previous = NULL;                                              
 800b82c:	59 60 00 8c 	sw (r11+140),r0                                
  tail->previous = head;                                              
 800b830:	59 66 00 90 	sw (r11+144),r6                                
  rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);       
                                                                      
  /*                                                                  
   * Create the locks for the cache.                                  
   */                                                                 
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'), 
 800b834:	fb ff e5 ed 	calli 8004fe8 <rtems_semaphore_create>         
 800b838:	b8 20 88 00 	mv r17,r1                                      
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.lock);                    
  if (sc != RTEMS_SUCCESSFUL)                                         
 800b83c:	44 30 00 20 	be r1,r16,800b8bc <rtems_bdbuf_init+0x240>     <== ALWAYS TAKEN
                                                                      
  return RTEMS_SUCCESSFUL;                                            
                                                                      
error:                                                                
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
 800b840:	29 61 00 84 	lw r1,(r11+132)                                <== NOT EXECUTED
 800b844:	5c 20 00 16 	bne r1,r0,800b89c <rtems_bdbuf_init+0x220>     <== NOT EXECUTED
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
                                                                      
  if (bdbuf_cache.swapout != 0)                                       
 800b848:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800b84c:	5c 20 00 1a 	bne r1,r0,800b8b4 <rtems_bdbuf_init+0x238>     <== NOT EXECUTED
    rtems_task_delete (bdbuf_cache.swapout);                          
                                                                      
  free (bdbuf_cache.buffers);                                         
 800b850:	29 61 00 18 	lw r1,(r11+24)                                 <== NOT EXECUTED
 800b854:	fb ff dc 1a 	calli 80028bc <free>                           <== NOT EXECUTED
  free (bdbuf_cache.groups);                                          
 800b858:	29 61 00 80 	lw r1,(r11+128)                                <== NOT EXECUTED
 800b85c:	fb ff dc 18 	calli 80028bc <free>                           <== NOT EXECUTED
  free (bdbuf_cache.bds);                                             
 800b860:	29 61 00 14 	lw r1,(r11+20)                                 <== NOT EXECUTED
 800b864:	fb ff dc 16 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
  rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);           
 800b868:	29 61 00 78 	lw r1,(r11+120)                                <== NOT EXECUTED
 800b86c:	fb ff e6 63 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.access_waiters.sema);           
 800b870:	29 61 00 68 	lw r1,(r11+104)                                <== NOT EXECUTED
 800b874:	fb ff e6 61 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);         
 800b878:	29 61 00 70 	lw r1,(r11+112)                                <== NOT EXECUTED
 800b87c:	fb ff e6 5f 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.sync_lock);                     
 800b880:	29 61 00 2c 	lw r1,(r11+44)                                 <== NOT EXECUTED
 800b884:	fb ff e6 5d 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
                                                                      
  if (bdbuf_cache.lock != 0)                                          
 800b888:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 800b88c:	5c 20 00 06 	bne r1,r0,800b8a4 <rtems_bdbuf_init+0x228>     <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
    rtems_semaphore_delete (bdbuf_cache.lock);                        
  }                                                                   
                                                                      
  bdbuf_cache.initialised = false;                                    
 800b890:	31 60 00 95 	sb (r11+149),r0                                <== NOT EXECUTED
                                                                      
  return RTEMS_UNSATISFIED;                                           
 800b894:	34 03 00 0d 	mvi r3,13                                      <== NOT EXECUTED
 800b898:	e3 ff ff 98 	bi 800b6f8 <rtems_bdbuf_init+0x7c>             <== NOT EXECUTED
  return RTEMS_SUCCESSFUL;                                            
                                                                      
error:                                                                
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
 800b89c:	f8 00 0e e4 	calli 800f42c <rtems_task_delete>              <== NOT EXECUTED
 800b8a0:	e3 ff ff ea 	bi 800b848 <rtems_bdbuf_init+0x1cc>            <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);         
  rtems_semaphore_delete (bdbuf_cache.sync_lock);                     
                                                                      
  if (bdbuf_cache.lock != 0)                                          
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
 800b8a4:	fb ff f8 42 	calli 80099ac <rtems_bdbuf_unlock_cache>       <== NOT EXECUTED
    rtems_semaphore_delete (bdbuf_cache.lock);                        
 800b8a8:	29 61 00 28 	lw r1,(r11+40)                                 <== NOT EXECUTED
 800b8ac:	fb ff e6 53 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
 800b8b0:	e3 ff ff f8 	bi 800b890 <rtems_bdbuf_init+0x214>            <== NOT EXECUTED
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
                                                                      
  if (bdbuf_cache.swapout != 0)                                       
    rtems_task_delete (bdbuf_cache.swapout);                          
 800b8b4:	f8 00 0e de 	calli 800f42c <rtems_task_delete>              <== NOT EXECUTED
 800b8b8:	e3 ff ff e6 	bi 800b850 <rtems_bdbuf_init+0x1d4>            <== NOT EXECUTED
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.lock);                    
  if (sc != RTEMS_SUCCESSFUL)                                         
    goto error;                                                       
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800b8bc:	fb ff f8 10 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 's'), 
 800b8c0:	78 02 08 01 	mvhi r2,0x801                                  
 800b8c4:	38 42 96 b8 	ori r2,r2,0x96b8                               
 800b8c8:	28 41 00 00 	lw r1,(r2+0)                                   
 800b8cc:	78 05 08 01 	mvhi r5,0x801                                  
 800b8d0:	34 02 00 01 	mvi r2,1                                       
 800b8d4:	34 03 00 54 	mvi r3,84                                      
 800b8d8:	34 04 00 00 	mvi r4,0                                       
 800b8dc:	38 a5 a7 a0 	ori r5,r5,0xa7a0                               
 800b8e0:	fb ff e5 c2 	calli 8004fe8 <rtems_semaphore_create>         
 800b8e4:	b8 20 80 00 	mv r16,r1                                      
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.sync_lock);               
  if (sc != RTEMS_SUCCESSFUL)                                         
 800b8e8:	5c 31 ff d6 	bne r1,r17,800b840 <rtems_bdbuf_init+0x1c4>    <== NEVER TAKEN
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'a'), 
 800b8ec:	78 02 08 01 	mvhi r2,0x801                                  
 800b8f0:	38 42 96 bc 	ori r2,r2,0x96bc                               
 800b8f4:	28 41 00 00 	lw r1,(r2+0)                                   
 800b8f8:	78 05 08 01 	mvhi r5,0x801                                  
 800b8fc:	34 02 00 00 	mvi r2,0                                       
 800b900:	34 03 00 24 	mvi r3,36                                      
 800b904:	34 04 00 00 	mvi r4,0                                       
 800b908:	38 a5 a7 dc 	ori r5,r5,0xa7dc                               
 800b90c:	fb ff e5 b7 	calli 8004fe8 <rtems_semaphore_create>         
 800b910:	b8 20 88 00 	mv r17,r1                                      
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.access_waiters.sema);     
  if (sc != RTEMS_SUCCESSFUL)                                         
 800b914:	5c 30 ff cb 	bne r1,r16,800b840 <rtems_bdbuf_init+0x1c4>    <== NEVER TAKEN
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 't'), 
 800b918:	78 02 08 01 	mvhi r2,0x801                                  
 800b91c:	38 42 96 c0 	ori r2,r2,0x96c0                               
 800b920:	28 41 00 00 	lw r1,(r2+0)                                   
 800b924:	78 05 08 01 	mvhi r5,0x801                                  
 800b928:	34 02 00 00 	mvi r2,0                                       
 800b92c:	34 03 00 24 	mvi r3,36                                      
 800b930:	34 04 00 00 	mvi r4,0                                       
 800b934:	38 a5 a7 e4 	ori r5,r5,0xa7e4                               
 800b938:	fb ff e5 ac 	calli 8004fe8 <rtems_semaphore_create>         
 800b93c:	b8 20 80 00 	mv r16,r1                                      
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.transfer_waiters.sema);   
  if (sc != RTEMS_SUCCESSFUL)                                         
 800b940:	5c 31 ff c0 	bne r1,r17,800b840 <rtems_bdbuf_init+0x1c4>    <== NEVER TAKEN
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'b'), 
 800b944:	78 02 08 01 	mvhi r2,0x801                                  
 800b948:	38 42 96 c4 	ori r2,r2,0x96c4                               
 800b94c:	28 41 00 00 	lw r1,(r2+0)                                   
 800b950:	78 05 08 01 	mvhi r5,0x801                                  
 800b954:	34 02 00 00 	mvi r2,0                                       
 800b958:	34 03 00 24 	mvi r3,36                                      
 800b95c:	34 04 00 00 	mvi r4,0                                       
 800b960:	38 a5 a7 ec 	ori r5,r5,0xa7ec                               
 800b964:	fb ff e5 a1 	calli 8004fe8 <rtems_semaphore_create>         
 800b968:	b8 20 88 00 	mv r17,r1                                      
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.buffer_waiters.sema);     
  if (sc != RTEMS_SUCCESSFUL)                                         
 800b96c:	5c 30 ff b5 	bne r1,r16,800b840 <rtems_bdbuf_init+0x1c4>    <== NEVER TAKEN
                                                                      
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
 800b970:	29 81 00 20 	lw r1,(r12+32)                                 
 800b974:	b9 a0 10 00 	mv r2,r13                                      
 800b978:	f8 00 33 4a 	calli 80186a0 <__udivsi3>                      
 800b97c:	b8 20 80 00 	mv r16,r1                                      
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
 800b980:	b9 a0 10 00 	mv r2,r13                                      
 800b984:	b9 e0 08 00 	mv r1,r15                                      
    goto error;                                                       
                                                                      
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
 800b988:	59 70 00 1c 	sw (r11+28),r16                                
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
 800b98c:	f8 00 33 45 	calli 80186a0 <__udivsi3>                      
 800b990:	b8 20 18 00 	mv r3,r1                                       
  bdbuf_cache.group_count =                                           
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
 800b994:	b8 20 10 00 	mv r2,r1                                       
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
 800b998:	59 63 00 20 	sw (r11+32),r3                                 
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
  bdbuf_cache.group_count =                                           
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
 800b99c:	ba 00 08 00 	mv r1,r16                                      
 800b9a0:	f8 00 33 40 	calli 80186a0 <__udivsi3>                      
 800b9a4:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),              
 800b9a8:	ba 00 10 00 	mv r2,r16                                      
 800b9ac:	34 01 00 38 	mvi r1,56                                      
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
  bdbuf_cache.group_count =                                           
 800b9b0:	59 6f 00 7c 	sw (r11+124),r15                               
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),              
 800b9b4:	fb ff db 74 	calli 8002784 <calloc>                         
 800b9b8:	59 61 00 14 	sw (r11+20),r1                                 
                            bdbuf_cache.buffer_min_count);            
  if (!bdbuf_cache.bds)                                               
 800b9bc:	44 31 ff a1 	be r1,r17,800b840 <rtems_bdbuf_init+0x1c4>     <== NEVER TAKEN
    goto error;                                                       
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.groups = calloc (sizeof (rtems_bdbuf_group),            
 800b9c0:	34 01 00 14 	mvi r1,20                                      
 800b9c4:	b9 e0 10 00 	mv r2,r15                                      
 800b9c8:	fb ff db 6f 	calli 8002784 <calloc>                         
 800b9cc:	59 61 00 80 	sw (r11+128),r1                                
                               bdbuf_cache.group_count);              
  if (!bdbuf_cache.groups)                                            
 800b9d0:	44 31 ff 9c 	be r1,r17,800b840 <rtems_bdbuf_init+0x1c4>     <== NEVER TAKEN
   *                                                                  
   * The memory allocate allows a                                     
   */                                                                 
  if (rtems_memalign ((void **) &bdbuf_cache.buffers,                 
                      cache_aligment,                                 
                      bdbuf_cache.buffer_min_count * bdbuf_config.buffer_min) != 0)
 800b9d4:	b9 a0 10 00 	mv r2,r13                                      
   * aligned. It is possible to free the memory allocated by rtems_memalign()
   * with free(). Return 0 if allocated.                              
   *                                                                  
   * The memory allocate allows a                                     
   */                                                                 
  if (rtems_memalign ((void **) &bdbuf_cache.buffers,                 
 800b9d8:	78 0f 08 01 	mvhi r15,0x801                                 
                      cache_aligment,                                 
                      bdbuf_cache.buffer_min_count * bdbuf_config.buffer_min) != 0)
 800b9dc:	ba 00 08 00 	mv r1,r16                                      
 800b9e0:	f8 00 32 cb 	calli 801850c <__mulsi3>                       
   * aligned. It is possible to free the memory allocated by rtems_memalign()
   * with free(). Return 0 if allocated.                              
   *                                                                  
   * The memory allocate allows a                                     
   */                                                                 
  if (rtems_memalign ((void **) &bdbuf_cache.buffers,                 
 800b9e4:	39 ef a7 8c 	ori r15,r15,0xa78c                             
                      cache_aligment,                                 
                      bdbuf_cache.buffer_min_count * bdbuf_config.buffer_min) != 0)
 800b9e8:	b8 20 18 00 	mv r3,r1                                       
   * aligned. It is possible to free the memory allocated by rtems_memalign()
   * with free(). Return 0 if allocated.                              
   *                                                                  
   * The memory allocate allows a                                     
   */                                                                 
  if (rtems_memalign ((void **) &bdbuf_cache.buffers,                 
 800b9ec:	34 02 00 20 	mvi r2,32                                      
 800b9f0:	b9 e0 08 00 	mv r1,r15                                      
 800b9f4:	f8 00 08 a6 	calli 800dc8c <rtems_memalign>                 
 800b9f8:	5c 20 ff 92 	bne r1,r0,800b840 <rtems_bdbuf_init+0x1c4>     <== NEVER TAKEN
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
 800b9fc:	29 70 00 80 	lw r16,(r11+128)                               
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
 800ba00:	29 71 00 14 	lw r17,(r11+20)                                
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
 800ba04:	29 75 00 20 	lw r21,(r11+32)                                
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
 800ba08:	29 74 00 18 	lw r20,(r11+24)                                
       b < bdbuf_cache.buffer_min_count;                              
 800ba0c:	29 77 00 1c 	lw r23,(r11+28)                                
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
        (bdbuf_cache.max_bds_per_group - 1))                          
 800ba10:	29 63 00 48 	lw r3,(r11+72)                                 
 800ba14:	36 b6 ff ff 	addi r22,r21,-1                                
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
 800ba18:	ba 20 78 00 	mv r15,r17                                     
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
 800ba1c:	ba 00 98 00 	mv r19,r16                                     
 800ba20:	34 12 00 00 	mvi r18,0                                      
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
 800ba24:	ba 40 08 00 	mv r1,r18                                      
 800ba28:	ba a0 10 00 	mv r2,r21                                      
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
 800ba2c:	b9 e0 c0 00 	mv r24,r15                                     
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
 800ba30:	56 f2 00 2c 	bgu r23,r18,800bae0 <rtems_bdbuf_init+0x464>   
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
 800ba34:	29 6d 00 20 	lw r13,(r11+32)                                
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
 800ba38:	34 02 00 38 	mvi r2,56                                      
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
 800ba3c:	59 63 00 48 	sw (r11+72),r3                                 
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
 800ba40:	b9 a0 08 00 	mv r1,r13                                      
 800ba44:	f8 00 32 b2 	calli 801850c <__mulsi3>                       
  }                                                                   
                                                                      
  for (b = 0,                                                         
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
 800ba48:	29 63 00 7c 	lw r3,(r11+124)                                
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
 800ba4c:	34 02 00 00 	mvi r2,0                                       
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
        (bdbuf_cache.max_bds_per_group - 1))                          
      group++;                                                        
  }                                                                   
                                                                      
  for (b = 0,                                                         
 800ba50:	54 62 00 1e 	bgu r3,r2,800bac8 <rtems_bdbuf_init+0x44c>     
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
 800ba54:	78 02 08 01 	mvhi r2,0x801                                  
 800ba58:	38 42 96 c8 	ori r2,r2,0x96c8                               
 800ba5c:	28 41 00 00 	lw r1,(r2+0)                                   
 800ba60:	29 82 00 08 	lw r2,(r12+8)                                  
                                                                      
  /*                                                                  
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
 800ba64:	34 0d 00 01 	mvi r13,1                                      
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
 800ba68:	78 03 08 00 	mvhi r3,0x800                                  
 800ba6c:	38 63 b2 bc 	ori r3,r3,0xb2bc                               
 800ba70:	34 04 00 00 	mvi r4,0                                       
 800ba74:	b9 60 28 00 	mv r5,r11                                      
                                                                      
  /*                                                                  
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
 800ba78:	31 6d 00 04 	sb (r11+4),r13                                 
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
 800ba7c:	fb ff fd f1 	calli 800b240 <rtems_bdbuf_create_task.clone.18>
                                bdbuf_config.swapout_priority,        
                                RTEMS_BDBUF_SWAPOUT_TASK_PRIORITY_DEFAULT,
                                rtems_bdbuf_swapout_task,             
                                0,                                    
                                &bdbuf_cache.swapout);                
  if (sc != RTEMS_SUCCESSFUL)                                         
 800ba80:	5c 20 ff 70 	bne r1,r0,800b840 <rtems_bdbuf_init+0x1c4>     <== NEVER TAKEN
    goto error;                                                       
                                                                      
  if (bdbuf_config.max_read_ahead_blocks > 0)                         
 800ba84:	29 82 00 00 	lw r2,(r12+0)                                  
 800ba88:	44 41 00 0d 	be r2,r1,800babc <rtems_bdbuf_init+0x440>      
  {                                                                   
    bdbuf_cache.read_ahead_enabled = true;                            
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
 800ba8c:	78 02 08 01 	mvhi r2,0x801                                  
 800ba90:	38 42 96 cc 	ori r2,r2,0x96cc                               
 800ba94:	28 41 00 00 	lw r1,(r2+0)                                   
 800ba98:	29 82 00 2c 	lw r2,(r12+44)                                 
 800ba9c:	78 03 08 00 	mvhi r3,0x800                                  
 800baa0:	78 05 08 01 	mvhi r5,0x801                                  
 800baa4:	38 63 ae 14 	ori r3,r3,0xae14                               
 800baa8:	34 04 00 00 	mvi r4,0                                       
 800baac:	38 a5 a7 f8 	ori r5,r5,0xa7f8                               
  if (sc != RTEMS_SUCCESSFUL)                                         
    goto error;                                                       
                                                                      
  if (bdbuf_config.max_read_ahead_blocks > 0)                         
  {                                                                   
    bdbuf_cache.read_ahead_enabled = true;                            
 800bab0:	31 6d 00 94 	sb (r11+148),r13                               
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
 800bab4:	fb ff fd e3 	calli 800b240 <rtems_bdbuf_create_task.clone.18>
                                  bdbuf_config.read_ahead_priority,   
                                  RTEMS_BDBUF_READ_AHEAD_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_read_ahead_task,        
                                  0,                                  
                                  &bdbuf_cache.read_ahead_task);      
    if (sc != RTEMS_SUCCESSFUL)                                       
 800bab8:	5c 20 ff 62 	bne r1,r0,800b840 <rtems_bdbuf_init+0x1c4>     <== NEVER TAKEN
      goto error;                                                     
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800babc:	fb ff f7 bc 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800bac0:	34 03 00 00 	mvi r3,0                                       
 800bac4:	e3 ff ff 0d 	bi 800b6f8 <rtems_bdbuf_init+0x7c>             
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
    group->bdbuf = bd;                                                
 800bac8:	5a 11 00 10 	sw (r16+16),r17                                
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
 800bacc:	5a 0d 00 08 	sw (r16+8),r13                                 
                                                                      
  for (b = 0,                                                         
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
 800bad0:	34 42 00 01 	addi r2,r2,1                                   
         group++,                                                     
 800bad4:	36 10 00 14 	addi r16,r16,20                                
         bd += bdbuf_cache.max_bds_per_group)                         
 800bad8:	b6 21 88 00 	add r17,r17,r1                                 
 800badc:	e3 ff ff dd 	bi 800ba50 <rtems_bdbuf_init+0x3d4>            
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
    bd->group  = group;                                               
 800bae0:	59 f3 00 28 	sw (r15+40),r19                                
    bd->buffer = buffer;                                              
 800bae4:	59 f4 00 1c 	sw (r15+28),r20                                
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
 800bae8:	59 e0 00 14 	sw (r15+20),r0                                 
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800baec:	59 ee 00 00 	sw (r15+0),r14                                 
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
 800baf0:	58 6f 00 00 	sw (r3+0),r15                                  
  the_node->previous = old_last;                                      
 800baf4:	59 e3 00 04 	sw (r15+4),r3                                  
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
 800baf8:	f8 00 32 fa 	calli 80186e0 <__umodsi3>                      
 800bafc:	5c 36 00 02 	bne r1,r22,800bb04 <rtems_bdbuf_init+0x488>    
        (bdbuf_cache.max_bds_per_group - 1))                          
      group++;                                                        
 800bb00:	36 73 00 14 	addi r19,r19,20                                
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
 800bb04:	36 52 00 01 	addi r18,r18,1                                 
 800bb08:	35 ef 00 38 	addi r15,r15,56                                
 800bb0c:	b6 8d a0 00 	add r20,r20,r13                                
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
 800bb10:	bb 00 18 00 	mv r3,r24                                      
 800bb14:	e3 ff ff c4 	bi 800ba24 <rtems_bdbuf_init+0x3a8>            
                                                                      

080098c4 <rtems_bdbuf_lock>: * @param lock The mutex to lock. * @param fatal_error_code The error code if the call fails. */ static void rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code) {
 80098c4:	37 9c ff f8 	addi sp,sp,-8                                  
 80098c8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80098cc:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = rtems_semaphore_obtain (lock,                
 80098d0:	34 03 00 00 	mvi r3,0                                       
 * @param lock The mutex to lock.                                     
 * @param fatal_error_code The error code if the call fails.          
 */                                                                   
static void                                                           
rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code)           
{                                                                     
 80098d4:	b8 40 58 00 	mv r11,r2                                      
  rtems_status_code sc = rtems_semaphore_obtain (lock,                
 80098d8:	34 02 00 00 	mvi r2,0                                       
 80098dc:	fb ff ee 7e 	calli 80052d4 <rtems_semaphore_obtain>         
                                                 RTEMS_WAIT,          
                                                 RTEMS_NO_TIMEOUT);   
  if (sc != RTEMS_SUCCESSFUL)                                         
 80098e0:	44 20 00 03 	be r1,r0,80098ec <rtems_bdbuf_lock+0x28>       <== ALWAYS TAKEN
    rtems_bdbuf_fatal (fatal_error_code);                             
 80098e4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80098e8:	fb ff ff f2 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 80098ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80098f0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80098f4:	37 9c 00 08 	addi sp,sp,8                                   
 80098f8:	c3 a0 00 00 	ret                                            
                                                                      

0800c1e8 <rtems_bdbuf_purge_dev>: } } void rtems_bdbuf_purge_dev (rtems_disk_device *dd) {
 800c1e8:	37 9c ff 4c 	addi sp,sp,-180                                
 800c1ec:	5b 8b 00 28 	sw (sp+40),r11                                 
 800c1f0:	5b 8c 00 24 	sw (sp+36),r12                                 
 800c1f4:	5b 8d 00 20 	sw (sp+32),r13                                 
 800c1f8:	5b 8e 00 1c 	sw (sp+28),r14                                 
 800c1fc:	5b 8f 00 18 	sw (sp+24),r15                                 
 800c200:	5b 90 00 14 	sw (sp+20),r16                                 
 800c204:	5b 91 00 10 	sw (sp+16),r17                                 
 800c208:	5b 92 00 0c 	sw (sp+12),r18                                 
 800c20c:	5b 93 00 08 	sw (sp+8),r19                                  
 800c210:	5b 9d 00 04 	sw (sp+4),ra                                   
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800c214:	37 8f 00 ac 	addi r15,sp,172                                
 800c218:	37 8e 00 b0 	addi r14,sp,176                                
 800c21c:	b8 20 68 00 	mv r13,r1                                      
 800c220:	5b 8e 00 ac 	sw (sp+172),r14                                
  head->previous = NULL;                                              
 800c224:	5b 80 00 b0 	sw (sp+176),r0                                 
  tail->previous = head;                                              
 800c228:	5b 8f 00 b4 	sw (sp+180),r15                                
  rtems_chain_control purge_list;                                     
                                                                      
  rtems_chain_initialize_empty (&purge_list);                         
  rtems_bdbuf_lock_cache ();                                          
 800c22c:	fb ff f5 b4 	calli 80098fc <rtems_bdbuf_lock_cache>         
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c230:	29 a1 00 64 	lw r1,(r13+100)                                
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 800c234:	44 20 00 6b 	be r1,r0,800c3e0 <rtems_bdbuf_purge_dev+0x1f8> <== ALWAYS TAKEN
  rtems_bdbuf_lock_cache ();                                          
  rtems_bdbuf_read_ahead_reset (dd);                                  
  rtems_bdbuf_gather_for_purge (&purge_list, dd);                     
  rtems_bdbuf_purge_list (&purge_list);                               
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c238:	29 a2 00 68 	lw r2,(r13+104)                                <== NOT EXECUTED
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
 800c23c:	58 22 00 04 	sw (r1+4),r2                                   <== NOT EXECUTED
  previous->next = next;                                              
 800c240:	58 41 00 00 	sw (r2+0),r1                                   <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 800c244:	59 a0 00 68 	sw (r13+104),r0                                <== NOT EXECUTED
 800c248:	59 a0 00 64 	sw (r13+100),r0                                <== NOT EXECUTED
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,        
                              const rtems_disk_device *dd)            
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
 800c24c:	78 01 08 01 	mvhi r1,0x801                                  
 800c250:	38 21 a7 74 	ori r1,r1,0xa774                               
 800c254:	28 2b 00 3c 	lw r11,(r1+60)                                 
                                                                      
static void                                                           
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)                  
{                                                                     
  rtems_bdbuf_read_ahead_cancel (dd);                                 
  dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;          
 800c258:	34 01 ff ff 	mvi r1,-1                                      
 800c25c:	59 a1 00 6c 	sw (r13+108),r1                                
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
                                                                      
  *prev = NULL;                                                       
 800c260:	5b 80 00 2c 	sw (sp+44),r0                                  
                                                                      
  while (cur != NULL)                                                 
 800c264:	45 60 00 10 	be r11,r0,800c2a4 <rtems_bdbuf_purge_dev+0xbc> 
  {                                                                   
    if (cur->dd == dd)                                                
    {                                                                 
      switch (cur->state)                                             
 800c268:	78 10 08 01 	mvhi r16,0x801                                 
        case RTEMS_BDBUF_STATE_EMPTY:                                 
        case RTEMS_BDBUF_STATE_ACCESS_PURGED:                         
        case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                       
          break;                                                      
        case RTEMS_BDBUF_STATE_SYNC:                                  
          rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);           
 800c26c:	78 11 08 01 	mvhi r17,0x801                                 
static void                                                           
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,        
                              const rtems_disk_device *dd)            
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
 800c270:	37 8c 00 2c 	addi r12,sp,44                                 
                                                                      
  while (cur != NULL)                                                 
  {                                                                   
    if (cur->dd == dd)                                                
    {                                                                 
      switch (cur->state)                                             
 800c274:	34 12 00 0a 	mvi r18,10                                     
 800c278:	3a 10 97 28 	ori r16,r16,0x9728                             
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800c27c:	34 13 00 06 	mvi r19,6                                      
        case RTEMS_BDBUF_STATE_EMPTY:                                 
        case RTEMS_BDBUF_STATE_ACCESS_PURGED:                         
        case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                       
          break;                                                      
        case RTEMS_BDBUF_STATE_SYNC:                                  
          rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);           
 800c280:	3a 31 a7 e0 	ori r17,r17,0xa7e0                             
                                                                      
  *prev = NULL;                                                       
                                                                      
  while (cur != NULL)                                                 
  {                                                                   
    if (cur->dd == dd)                                                
 800c284:	29 62 00 14 	lw r2,(r11+20)                                 
 800c288:	45 a2 00 24 	be r13,r2,800c318 <rtems_bdbuf_purge_dev+0x130>
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
      }                                                               
    }                                                                 
                                                                      
    if (cur->avl.left != NULL)                                        
 800c28c:	29 62 00 08 	lw r2,(r11+8)                                  
 800c290:	44 40 00 3a 	be r2,r0,800c378 <rtems_bdbuf_purge_dev+0x190> 
    {                                                                 
      /* Left */                                                      
      ++prev;                                                         
 800c294:	35 8c 00 04 	addi r12,r12,4                                 
      *prev = cur;                                                    
 800c298:	59 8b 00 00 	sw (r12+0),r11                                 
      cur = cur->avl.left;                                            
 800c29c:	29 6b 00 08 	lw r11,(r11+8)                                 
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
                                                                      
  *prev = NULL;                                                       
                                                                      
  while (cur != NULL)                                                 
 800c2a0:	5d 60 ff f9 	bne r11,r0,800c284 <rtems_bdbuf_purge_dev+0x9c><== ALWAYS TAKEN
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c2a4:	2b 81 00 ac 	lw r1,(sp+172)                                 
  while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)   
  {                                                                   
    rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;             
                                                                      
    if (bd->waiters == 0)                                             
      wake_buffer_waiters = true;                                     
 800c2a8:	34 0b 00 00 	mvi r11,0                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800c2ac:	44 2e 00 0a 	be r1,r14,800c2d4 <rtems_bdbuf_purge_dev+0xec> 
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 800c2b0:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
  while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)   
  {                                                                   
    rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;             
                                                                      
    if (bd->waiters == 0)                                             
 800c2b4:	28 23 00 24 	lw r3,(r1+36)                                  
                                                                      
  head->next = new_first;                                             
 800c2b8:	5b 82 00 ac 	sw (sp+172),r2                                 
  new_first->previous = head;                                         
 800c2bc:	58 4f 00 04 	sw (r2+4),r15                                  
 800c2c0:	5c 60 00 02 	bne r3,r0,800c2c8 <rtems_bdbuf_purge_dev+0xe0> 
      wake_buffer_waiters = true;                                     
 800c2c4:	34 0b 00 01 	mvi r11,1                                      
                                                                      
    rtems_bdbuf_discard_buffer (bd);                                  
 800c2c8:	fb ff f7 dd 	calli 800a23c <rtems_bdbuf_discard_buffer>     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c2cc:	2b 81 00 ac 	lw r1,(sp+172)                                 
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800c2d0:	5c 2e ff f8 	bne r1,r14,800c2b0 <rtems_bdbuf_purge_dev+0xc8>
      wake_buffer_waiters = true;                                     
                                                                      
    rtems_bdbuf_discard_buffer (bd);                                  
  }                                                                   
                                                                      
  if (wake_buffer_waiters)                                            
 800c2d4:	45 60 00 04 	be r11,r0,800c2e4 <rtems_bdbuf_purge_dev+0xfc> 
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800c2d8:	78 01 08 01 	mvhi r1,0x801                                  
 800c2dc:	38 21 a7 e8 	ori r1,r1,0xa7e8                               
 800c2e0:	fb ff f5 c7 	calli 80099fc <rtems_bdbuf_wake>               
  rtems_chain_initialize_empty (&purge_list);                         
  rtems_bdbuf_lock_cache ();                                          
  rtems_bdbuf_read_ahead_reset (dd);                                  
  rtems_bdbuf_gather_for_purge (&purge_list, dd);                     
  rtems_bdbuf_purge_list (&purge_list);                               
  rtems_bdbuf_unlock_cache ();                                        
 800c2e4:	fb ff f5 b2 	calli 80099ac <rtems_bdbuf_unlock_cache>       
}                                                                     
 800c2e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c2ec:	2b 8b 00 28 	lw r11,(sp+40)                                 
 800c2f0:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800c2f4:	2b 8d 00 20 	lw r13,(sp+32)                                 
 800c2f8:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800c2fc:	2b 8f 00 18 	lw r15,(sp+24)                                 
 800c300:	2b 90 00 14 	lw r16,(sp+20)                                 
 800c304:	2b 91 00 10 	lw r17,(sp+16)                                 
 800c308:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800c30c:	2b 93 00 08 	lw r19,(sp+8)                                  
 800c310:	37 9c 00 b4 	addi sp,sp,180                                 
 800c314:	c3 a0 00 00 	ret                                            
                                                                      
  while (cur != NULL)                                                 
  {                                                                   
    if (cur->dd == dd)                                                
    {                                                                 
      switch (cur->state)                                             
 800c318:	29 62 00 20 	lw r2,(r11+32)                                 
 800c31c:	54 52 00 2e 	bgu r2,r18,800c3d4 <rtems_bdbuf_purge_dev+0x1ec><== NEVER TAKEN
 800c320:	b4 42 10 00 	add r2,r2,r2                                   
 800c324:	b4 42 10 00 	add r2,r2,r2                                   
 800c328:	b6 02 10 00 	add r2,r16,r2                                  
 800c32c:	28 41 00 00 	lw r1,(r2+0)                                   
 800c330:	c0 20 00 00 	b r1                                           
        case RTEMS_BDBUF_STATE_EMPTY:                                 
        case RTEMS_BDBUF_STATE_ACCESS_PURGED:                         
        case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                       
          break;                                                      
        case RTEMS_BDBUF_STATE_SYNC:                                  
          rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);           
 800c334:	ba 20 08 00 	mv r1,r17                                      
 800c338:	fb ff f5 b1 	calli 80099fc <rtems_bdbuf_wake>               
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c33c:	29 61 00 28 	lw r1,(r11+40)                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
 800c340:	28 22 00 0c 	lw r2,(r1+12)                                  
 800c344:	34 42 ff ff 	addi r2,r2,-1                                  
 800c348:	58 22 00 0c 	sw (r1+12),r2                                  
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800c34c:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 800c350:	29 61 00 04 	lw r1,(r11+4)                                  
  next->previous = previous;                                          
 800c354:	58 61 00 04 	sw (r3+4),r1                                   
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800c358:	2b 82 00 b4 	lw r2,(sp+180)                                 
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
 800c35c:	58 23 00 00 	sw (r1+0),r3                                   
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800c360:	59 6e 00 00 	sw (r11+0),r14                                 
  tail->previous = the_node;                                          
 800c364:	5b 8b 00 b4 	sw (sp+180),r11                                
  old_last->next = the_node;                                          
 800c368:	58 4b 00 00 	sw (r2+0),r11                                  
  the_node->previous = old_last;                                      
 800c36c:	59 62 00 04 	sw (r11+4),r2                                  
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
      }                                                               
    }                                                                 
                                                                      
    if (cur->avl.left != NULL)                                        
 800c370:	29 62 00 08 	lw r2,(r11+8)                                  
 800c374:	5c 40 ff c8 	bne r2,r0,800c294 <rtems_bdbuf_purge_dev+0xac> 
      /* Left */                                                      
      ++prev;                                                         
      *prev = cur;                                                    
      cur = cur->avl.left;                                            
    }                                                                 
    else if (cur->avl.right != NULL)                                  
 800c378:	29 61 00 0c 	lw r1,(r11+12)                                 
 800c37c:	44 22 00 0a 	be r1,r2,800c3a4 <rtems_bdbuf_purge_dev+0x1bc> 
    {                                                                 
      /* Right */                                                     
      ++prev;                                                         
 800c380:	35 8c 00 04 	addi r12,r12,4                                 
      *prev = cur;                                                    
 800c384:	59 8b 00 00 	sw (r12+0),r11                                 
      cur = cur->avl.right;                                           
 800c388:	29 6b 00 0c 	lw r11,(r11+12)                                
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
                                                                      
  *prev = NULL;                                                       
                                                                      
  while (cur != NULL)                                                 
 800c38c:	5d 60 ff be 	bne r11,r0,800c284 <rtems_bdbuf_purge_dev+0x9c><== ALWAYS TAKEN
 800c390:	e3 ff ff c5 	bi 800c2a4 <rtems_bdbuf_purge_dev+0xbc>        <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800c394:	59 73 00 20 	sw (r11+32),r19                                
 800c398:	e3 ff ff bd 	bi 800c28c <rtems_bdbuf_purge_dev+0xa4>        
 800c39c:	59 72 00 20 	sw (r11+32),r18                                
 800c3a0:	e3 ff ff bb 	bi 800c28c <rtems_bdbuf_purge_dev+0xa4>        
      *prev = cur;                                                    
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
 800c3a4:	29 82 00 00 	lw r2,(r12+0)                                  
 800c3a8:	5c 41 00 04 	bne r2,r1,800c3b8 <rtems_bdbuf_purge_dev+0x1d0>
 800c3ac:	e3 ff ff be 	bi 800c2a4 <rtems_bdbuf_purge_dev+0xbc>        
 800c3b0:	b8 40 58 00 	mv r11,r2                                      
 800c3b4:	b8 60 10 00 	mv r2,r3                                       
             && (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
 800c3b8:	28 43 00 0c 	lw r3,(r2+12)                                  
 800c3bc:	44 6b 00 02 	be r3,r11,800c3c4 <rtems_bdbuf_purge_dev+0x1dc>
 800c3c0:	5c 60 00 0b 	bne r3,r0,800c3ec <rtems_bdbuf_purge_dev+0x204>
      {                                                               
        /* Up */                                                      
        cur = *prev;                                                  
        --prev;                                                       
 800c3c4:	35 8c ff fc 	addi r12,r12,-4                                
      *prev = cur;                                                    
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
 800c3c8:	29 83 00 00 	lw r3,(r12+0)                                  
 800c3cc:	5c 60 ff f9 	bne r3,r0,800c3b0 <rtems_bdbuf_purge_dev+0x1c8>
 800c3d0:	e3 ff ff b5 	bi 800c2a4 <rtems_bdbuf_purge_dev+0xbc>        
        case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                          
        case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                       
          rtems_bdbuf_set_state (cur, RTEMS_BDBUF_STATE_ACCESS_PURGED);
          break;                                                      
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
 800c3d4:	34 01 00 17 	mvi r1,23                                      <== NOT EXECUTED
 800c3d8:	fb ff f5 36 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 800c3dc:	e3 ff ff ac 	bi 800c28c <rtems_bdbuf_purge_dev+0xa4>        <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 800c3e0:	29 a2 00 68 	lw r2,(r13+104)                                
 800c3e4:	5c 41 ff 96 	bne r2,r1,800c23c <rtems_bdbuf_purge_dev+0x54> <== NEVER TAKEN
 800c3e8:	e3 ff ff 99 	bi 800c24c <rtems_bdbuf_purge_dev+0x64>        
        cur = *prev;                                                  
        --prev;                                                       
      }                                                               
      if (*prev != NULL)                                              
        /* Right */                                                   
        cur = (*prev)->avl.right;                                     
 800c3ec:	b8 60 58 00 	mv r11,r3                                      
 800c3f0:	e3 ff ff a5 	bi 800c284 <rtems_bdbuf_purge_dev+0x9c>        
                                                                      

0800bc40 <rtems_bdbuf_read>: rtems_status_code rtems_bdbuf_read (rtems_disk_device *dd, rtems_blkdev_bnum block, rtems_bdbuf_buffer **bd_ptr) {
 800bc40:	37 9c ff e0 	addi sp,sp,-32                                 
 800bc44:	5b 8b 00 20 	sw (sp+32),r11                                 
 800bc48:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800bc4c:	5b 8d 00 18 	sw (sp+24),r13                                 
 800bc50:	5b 8e 00 14 	sw (sp+20),r14                                 
 800bc54:	5b 8f 00 10 	sw (sp+16),r15                                 
 800bc58:	5b 90 00 0c 	sw (sp+12),r16                                 
 800bc5c:	5b 91 00 08 	sw (sp+8),r17                                  
 800bc60:	5b 9d 00 04 	sw (sp+4),ra                                   
 800bc64:	b8 20 58 00 	mv r11,r1                                      
 800bc68:	b8 40 68 00 	mv r13,r2                                      
 800bc6c:	b8 60 80 00 	mv r16,r3                                      
  rtems_status_code     sc = RTEMS_SUCCESSFUL;                        
  rtems_bdbuf_buffer   *bd = NULL;                                    
  rtems_blkdev_bnum     media_block;                                  
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800bc70:	fb ff f7 23 	calli 80098fc <rtems_bdbuf_lock_cache>         
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
 800bc74:	29 61 00 28 	lw r1,(r11+40)                                 
rtems_bdbuf_read (rtems_disk_device   *dd,                            
                  rtems_blkdev_bnum    block,                         
                  rtems_bdbuf_buffer **bd_ptr)                        
{                                                                     
  rtems_status_code     sc = RTEMS_SUCCESSFUL;                        
  rtems_bdbuf_buffer   *bd = NULL;                                    
 800bc78:	34 0c 00 00 	mvi r12,0                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
  }                                                                   
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_ID;                                            
 800bc7c:	34 0e 00 04 	mvi r14,4                                      
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
 800bc80:	51 a1 00 1d 	bgeu r13,r1,800bcf4 <rtems_bdbuf_read+0xb4>    <== NEVER TAKEN
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
 800bc84:	29 62 00 30 	lw r2,(r11+48)                                 
 800bc88:	48 02 00 28 	bg r0,r2,800bd28 <rtems_bdbuf_read+0xe8>       <== NEVER TAKEN
    return block << dd->block_to_media_block_shift;                   
 800bc8c:	b9 a0 08 00 	mv r1,r13                                      
 800bc90:	f8 00 31 aa 	calli 8018338 <__ashlsi3>                      
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
 800bc94:	29 63 00 18 	lw r3,(r11+24)                                 
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    return block << dd->block_to_media_block_shift;                   
 800bc98:	b8 20 10 00 	mv r2,r1                                       
  {                                                                   
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n", 
              media_block + dd->start, block, (unsigned) dd->dev);    
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
 800bc9c:	b9 60 08 00 	mv r1,r11                                      
 800bca0:	b4 43 10 00 	add r2,r2,r3                                   
 800bca4:	fb ff fc b8 	calli 800af84 <rtems_bdbuf_get_buffer_for_access>
 800bca8:	b8 20 60 00 	mv r12,r1                                      
    switch (bd->state)                                                
 800bcac:	28 21 00 20 	lw r1,(r1+32)                                  
 800bcb0:	34 02 00 02 	mvi r2,2                                       
 800bcb4:	44 22 00 2d 	be r1,r2,800bd68 <rtems_bdbuf_read+0x128>      
 800bcb8:	34 02 00 07 	mvi r2,7                                       
 800bcbc:	44 22 00 53 	be r1,r2,800be08 <rtems_bdbuf_read+0x1c8>      
 800bcc0:	34 02 00 01 	mvi r2,1                                       
 800bcc4:	44 22 00 30 	be r1,r2,800bd84 <rtems_bdbuf_read+0x144>      <== ALWAYS TAKEN
        {                                                             
          bd = NULL;                                                  
        }                                                             
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_4);
 800bcc8:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 800bccc:	fb ff f7 20 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
        break;                                                        
 800bcd0:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
                                                                      
static void                                                           
rtems_bdbuf_check_read_ahead_trigger (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  if (bdbuf_cache.read_ahead_task != 0                                
 800bcd4:	78 0f 08 01 	mvhi r15,0x801                                 
 800bcd8:	39 ef a7 74 	ori r15,r15,0xa774                             
 800bcdc:	29 e1 00 84 	lw r1,(r15+132)                                
 800bce0:	44 20 00 05 	be r1,r0,800bcf4 <rtems_bdbuf_read+0xb4>       
      && dd->read_ahead.trigger == block                              
 800bce4:	29 62 00 6c 	lw r2,(r11+108)                                
 800bce8:	5d a2 00 03 	bne r13,r2,800bcf4 <rtems_bdbuf_read+0xb4>     
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 800bcec:	29 62 00 64 	lw r2,(r11+100)                                
 800bcf0:	44 40 00 4f 	be r2,r0,800be2c <rtems_bdbuf_read+0x1ec>      <== ALWAYS TAKEN
    }                                                                 
                                                                      
    rtems_bdbuf_check_read_ahead_trigger (dd, block);                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bcf4:	fb ff f7 2e 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  *bd_ptr = bd;                                                       
                                                                      
  return sc;                                                          
}                                                                     
 800bcf8:	b9 c0 08 00 	mv r1,r14                                      
    rtems_bdbuf_check_read_ahead_trigger (dd, block);                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  *bd_ptr = bd;                                                       
 800bcfc:	5a 0c 00 00 	sw (r16+0),r12                                 
                                                                      
  return sc;                                                          
}                                                                     
 800bd00:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bd04:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800bd08:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800bd0c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800bd10:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800bd14:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800bd18:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800bd1c:	2b 91 00 08 	lw r17,(sp+8)                                  
 800bd20:	37 9c 00 20 	addi sp,sp,32                                  
 800bd24:	c3 a0 00 00 	ret                                            
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
 800bd28:	29 64 00 24 	lw r4,(r11+36)                                 <== NOT EXECUTED
 800bd2c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800bd30:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800bd34:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 800bd38:	f8 00 29 41 	calli 801623c <__muldi3>                       <== NOT EXECUTED
 800bd3c:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 800bd40:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800bd44:	f8 00 2d b4 	calli 8017414 <__udivdi3>                      <== NOT EXECUTED
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
 800bd48:	29 63 00 18 	lw r3,(r11+24)                                 <== NOT EXECUTED
  {                                                                   
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n", 
              media_block + dd->start, block, (unsigned) dd->dev);    
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
 800bd4c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800bd50:	b4 43 10 00 	add r2,r2,r3                                   <== NOT EXECUTED
 800bd54:	fb ff fc 8c 	calli 800af84 <rtems_bdbuf_get_buffer_for_access><== NOT EXECUTED
 800bd58:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    switch (bd->state)                                                
 800bd5c:	28 21 00 20 	lw r1,(r1+32)                                  <== NOT EXECUTED
 800bd60:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800bd64:	5c 22 ff d5 	bne r1,r2,800bcb8 <rtems_bdbuf_read+0x78>      <== NOT EXECUTED
    {                                                                 
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
 800bd68:	29 61 00 44 	lw r1,(r11+68)                                 
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
 800bd6c:	34 0e 00 00 	mvi r14,0                                      
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
    switch (bd->state)                                                
    {                                                                 
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
 800bd70:	34 21 00 01 	addi r1,r1,1                                   
 800bd74:	59 61 00 44 	sw (r11+68),r1                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bd78:	34 01 00 03 	mvi r1,3                                       
 800bd7c:	59 81 00 20 	sw (r12+32),r1                                 
    switch (bd->state)                                                
    {                                                                 
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
 800bd80:	e3 ff ff d5 	bi 800bcd4 <rtems_bdbuf_read+0x94>             
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
 800bd84:	29 61 00 48 	lw r1,(r11+72)                                 
                                                                      
static void                                                           
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,            
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
 800bd88:	29 62 00 6c 	lw r2,(r11+108)                                
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
 800bd8c:	34 21 00 01 	addi r1,r1,1                                   
 800bd90:	59 61 00 48 	sw (r11+72),r1                                 
                                                                      
static void                                                           
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,            
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
 800bd94:	45 a2 00 0c 	be r13,r2,800bdc4 <rtems_bdbuf_read+0x184>     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800bd98:	29 61 00 64 	lw r1,(r11+100)                                
 800bd9c:	44 20 00 31 	be r1,r0,800be60 <rtems_bdbuf_read+0x220>      <== ALWAYS TAKEN
 800bda0:	29 62 00 68 	lw r2,(r11+104)                                <== NOT EXECUTED
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
 800bda4:	58 22 00 04 	sw (r1+4),r2                                   <== NOT EXECUTED
  previous->next = next;                                              
 800bda8:	58 41 00 00 	sw (r2+0),r1                                   <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 800bdac:	59 60 00 68 	sw (r11+104),r0                                <== NOT EXECUTED
 800bdb0:	59 60 00 64 	sw (r11+100),r0                                <== NOT EXECUTED
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
  {                                                                   
    rtems_bdbuf_read_ahead_cancel (dd);                               
    dd->read_ahead.trigger = block + 1;                               
 800bdb4:	35 a2 00 01 	addi r2,r13,1                                  
    dd->read_ahead.next = block + 2;                                  
 800bdb8:	35 a1 00 02 	addi r1,r13,2                                  
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
  {                                                                   
    rtems_bdbuf_read_ahead_cancel (dd);                               
    dd->read_ahead.trigger = block + 1;                               
 800bdbc:	59 62 00 6c 	sw (r11+108),r2                                
    dd->read_ahead.next = block + 2;                                  
 800bdc0:	59 61 00 70 	sw (r11+112),r1                                
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
        rtems_bdbuf_set_read_ahead_trigger (dd, block);               
        sc = rtems_bdbuf_execute_read_request (dd, bd, 1);            
 800bdc4:	b9 60 08 00 	mv r1,r11                                      
 800bdc8:	b9 80 10 00 	mv r2,r12                                      
 800bdcc:	34 03 00 01 	mvi r3,1                                       
 800bdd0:	fb ff fb b6 	calli 800aca8 <rtems_bdbuf_execute_read_request>
 800bdd4:	b8 20 70 00 	mv r14,r1                                      
        if (sc == RTEMS_SUCCESSFUL)                                   
 800bdd8:	5c 20 00 13 	bne r1,r0,800be24 <rtems_bdbuf_read+0x1e4>     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800bddc:	29 81 00 28 	lw r1,(r12+40)                                 
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 800bde0:	29 82 00 04 	lw r2,(r12+4)                                  
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800bde4:	29 83 00 00 	lw r3,(r12+0)                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
 800bde8:	28 25 00 0c 	lw r5,(r1+12)                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bdec:	34 04 00 03 	mvi r4,3                                       
 800bdf0:	59 84 00 20 	sw (r12+32),r4                                 
  previous       = the_node->previous;                                
  next->previous = previous;                                          
 800bdf4:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 800bdf8:	58 43 00 00 	sw (r2+0),r3                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
 800bdfc:	34 a2 00 01 	addi r2,r5,1                                   
 800be00:	58 22 00 0c 	sw (r1+12),r2                                  
 800be04:	e3 ff ff b4 	bi 800bcd4 <rtems_bdbuf_read+0x94>             
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
 800be08:	29 61 00 44 	lw r1,(r11+68)                                 
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
 800be0c:	34 0e 00 00 	mvi r14,0                                      
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
 800be10:	34 21 00 01 	addi r1,r1,1                                   
 800be14:	59 61 00 44 	sw (r11+68),r1                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800be18:	34 01 00 04 	mvi r1,4                                       
 800be1c:	59 81 00 20 	sw (r12+32),r1                                 
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
 800be20:	e3 ff ff ad 	bi 800bcd4 <rtems_bdbuf_read+0x94>             
          rtems_chain_extract_unprotected (&bd->link);                
          rtems_bdbuf_group_obtain (bd);                              
        }                                                             
        else                                                          
        {                                                             
          bd = NULL;                                                  
 800be24:	34 0c 00 00 	mvi r12,0                                      
 800be28:	e3 ff ff ab 	bi 800bcd4 <rtems_bdbuf_read+0x94>             
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 800be2c:	29 71 00 68 	lw r17,(r11+104)                               
 800be30:	5e 22 ff b1 	bne r17,r2,800bcf4 <rtems_bdbuf_read+0xb4>     <== NEVER TAKEN
      && !rtems_bdbuf_is_read_ahead_active (dd))                      
  {                                                                   
    rtems_status_code sc;                                             
    rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;       
                                                                      
    if (rtems_chain_is_empty (chain))                                 
 800be34:	29 e2 00 88 	lw r2,(r15+136)                                
 800be38:	78 0d 08 01 	mvhi r13,0x801                                 
 800be3c:	39 ad a8 00 	ori r13,r13,0xa800                             
 800be40:	44 4d 00 0b 	be r2,r13,800be6c <rtems_bdbuf_read+0x22c>     <== ALWAYS TAKEN
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800be44:	29 e2 00 90 	lw r2,(r15+144)                                
                             RTEMS_BDBUF_READ_AHEAD_WAKE_UP);         
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);             
    }                                                                 
                                                                      
    rtems_chain_append_unprotected (chain, &dd->read_ahead.node);     
 800be48:	35 61 00 64 	addi r1,r11,100                                
                                                                      
  the_node->next = tail;                                              
 800be4c:	59 6d 00 64 	sw (r11+100),r13                               
  tail->previous = the_node;                                          
 800be50:	59 e1 00 90 	sw (r15+144),r1                                
  old_last->next = the_node;                                          
 800be54:	58 41 00 00 	sw (r2+0),r1                                   
  the_node->previous = old_last;                                      
 800be58:	59 62 00 68 	sw (r11+104),r2                                
 800be5c:	e3 ff ff a6 	bi 800bcf4 <rtems_bdbuf_read+0xb4>             
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 800be60:	29 62 00 68 	lw r2,(r11+104)                                
 800be64:	5c 41 ff d0 	bne r2,r1,800bda4 <rtems_bdbuf_read+0x164>     <== NEVER TAKEN
 800be68:	e3 ff ff d3 	bi 800bdb4 <rtems_bdbuf_read+0x174>            
    rtems_status_code sc;                                             
    rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;       
                                                                      
    if (rtems_chain_is_empty (chain))                                 
    {                                                                 
      sc = rtems_event_send (bdbuf_cache.read_ahead_task,             
 800be6c:	34 02 00 02 	mvi r2,2                                       
 800be70:	f8 00 0b df 	calli 800edec <rtems_event_send>               
                             RTEMS_BDBUF_READ_AHEAD_WAKE_UP);         
      if (sc != RTEMS_SUCCESSFUL)                                     
 800be74:	46 21 ff f4 	be r17,r1,800be44 <rtems_bdbuf_read+0x204>     <== ALWAYS TAKEN
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);             
 800be78:	34 01 00 07 	mvi r1,7                                       <== NOT EXECUTED
 800be7c:	fb ff f6 8d 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 800be80:	e3 ff ff f1 	bi 800be44 <rtems_bdbuf_read+0x204>            <== NOT EXECUTED
                                                                      

0800ae14 <rtems_bdbuf_read_ahead_task>: return sc; } static rtems_task rtems_bdbuf_read_ahead_task (rtems_task_argument arg) {
 800ae14:	37 9c ff e0 	addi sp,sp,-32                                 
 800ae18:	5b 8b 00 20 	sw (sp+32),r11                                 
 800ae1c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800ae20:	5b 8d 00 18 	sw (sp+24),r13                                 
 800ae24:	5b 8e 00 14 	sw (sp+20),r14                                 
 800ae28:	5b 8f 00 10 	sw (sp+16),r15                                 
 800ae2c:	5b 90 00 0c 	sw (sp+12),r16                                 
 800ae30:	5b 91 00 08 	sw (sp+8),r17                                  
 800ae34:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;         
                                                                      
  while (bdbuf_cache.read_ahead_enabled)                              
 800ae38:	78 0d 08 01 	mvhi r13,0x801                                 
 800ae3c:	39 ad a7 74 	ori r13,r13,0xa774                             
 800ae40:	41 a1 00 94 	lbu r1,(r13+148)                               
 800ae44:	44 20 00 1c 	be r1,r0,800aeb4 <rtems_bdbuf_read_ahead_task+0xa0><== NEVER TAKEN
 800ae48:	78 0e 08 01 	mvhi r14,0x801                                 
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 800ae4c:	78 0f 08 01 	mvhi r15,0x801                                 
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
 800ae50:	78 10 08 01 	mvhi r16,0x801                                 
 800ae54:	39 ce a8 00 	ori r14,r14,0xa800                             
 800ae58:	39 ef a7 fc 	ori r15,r15,0xa7fc                             
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
        }                                                             
      }                                                               
      else                                                            
      {                                                               
        dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;    
 800ae5c:	34 11 ff ff 	mvi r17,-1                                     
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
 800ae60:	3a 10 91 bc 	ori r16,r16,0x91bc                             
                                                                      
  while (bdbuf_cache.read_ahead_enabled)                              
  {                                                                   
    rtems_chain_node *node;                                           
                                                                      
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);      
 800ae64:	34 01 00 02 	mvi r1,2                                       
 800ae68:	fb ff fb 8d 	calli 8009c9c <rtems_bdbuf_wait_for_event>     
    rtems_bdbuf_lock_cache ();                                        
 800ae6c:	fb ff fa a4 	calli 80098fc <rtems_bdbuf_lock_cache>         
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800ae70:	29 ab 00 88 	lw r11,(r13+136)                               
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800ae74:	45 6e 00 0d 	be r11,r14,800aea8 <rtems_bdbuf_read_ahead_task+0x94>
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 800ae78:	29 61 00 00 	lw r1,(r11+0)                                  
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);      
    rtems_bdbuf_lock_cache ();                                        
                                                                      
    while ((node = rtems_chain_get_unprotected (chain)) != NULL)      
    {                                                                 
      rtems_disk_device *dd = (rtems_disk_device *)                   
 800ae7c:	35 6b ff 9c 	addi r11,r11,-100                              
        ((char *) node - offsetof (rtems_disk_device, read_ahead.node));
      rtems_blkdev_bnum block = dd->read_ahead.next;                  
 800ae80:	29 6c 00 70 	lw r12,(r11+112)                               
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
 800ae84:	29 62 00 28 	lw r2,(r11+40)                                 
                                                                      
  head->next = new_first;                                             
 800ae88:	59 a1 00 88 	sw (r13+136),r1                                
  new_first->previous = head;                                         
 800ae8c:	58 2f 00 04 	sw (r1+4),r15                                  
 800ae90:	54 4c 00 15 	bgu r2,r12,800aee4 <rtems_bdbuf_read_ahead_task+0xd0>
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 800ae94:	59 60 00 68 	sw (r11+104),r0                                
 800ae98:	59 60 00 64 	sw (r11+100),r0                                
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
        }                                                             
      }                                                               
      else                                                            
      {                                                               
        dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;    
 800ae9c:	59 71 00 6c 	sw (r11+108),r17                               
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800aea0:	29 ab 00 88 	lw r11,(r13+136)                               
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800aea4:	5d 6e ff f5 	bne r11,r14,800ae78 <rtems_bdbuf_read_ahead_task+0x64><== NEVER TAKEN
      {                                                               
        dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;    
      }                                                               
    }                                                                 
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
 800aea8:	fb ff fa c1 	calli 80099ac <rtems_bdbuf_unlock_cache>       
static rtems_task                                                     
rtems_bdbuf_read_ahead_task (rtems_task_argument arg)                 
{                                                                     
  rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;         
                                                                      
  while (bdbuf_cache.read_ahead_enabled)                              
 800aeac:	41 a1 00 94 	lbu r1,(r13+148)                               
 800aeb0:	5c 20 ff ed 	bne r1,r0,800ae64 <rtems_bdbuf_read_ahead_task+0x50><== ALWAYS TAKEN
    }                                                                 
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
  }                                                                   
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
 800aeb4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800aeb8:	f8 00 11 5d 	calli 800f42c <rtems_task_delete>              <== NOT EXECUTED
}                                                                     
 800aebc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800aec0:	2b 8b 00 20 	lw r11,(sp+32)                                 <== NOT EXECUTED
 800aec4:	2b 8c 00 1c 	lw r12,(sp+28)                                 <== NOT EXECUTED
 800aec8:	2b 8d 00 18 	lw r13,(sp+24)                                 <== NOT EXECUTED
 800aecc:	2b 8e 00 14 	lw r14,(sp+20)                                 <== NOT EXECUTED
 800aed0:	2b 8f 00 10 	lw r15,(sp+16)                                 <== NOT EXECUTED
 800aed4:	2b 90 00 0c 	lw r16,(sp+12)                                 <== NOT EXECUTED
 800aed8:	2b 91 00 08 	lw r17,(sp+8)                                  <== NOT EXECUTED
 800aedc:	37 9c 00 20 	addi sp,sp,32                                  <== NOT EXECUTED
 800aee0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
 800aee4:	29 62 00 30 	lw r2,(r11+48)                                 
 800aee8:	48 02 00 1c 	bg r0,r2,800af58 <rtems_bdbuf_read_ahead_task+0x144><== NEVER TAKEN
    return block << dd->block_to_media_block_shift;                   
 800aeec:	b9 80 08 00 	mv r1,r12                                      
 800aef0:	f8 00 35 12 	calli 8018338 <__ashlsi3>                      
 800aef4:	b8 20 10 00 	mv r2,r1                                       
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
 800aef8:	29 63 00 18 	lw r3,(r11+24)                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 800aefc:	59 60 00 68 	sw (r11+104),r0                                
 800af00:	59 60 00 64 	sw (r11+100),r0                                
                                                                      
      rtems_chain_set_off_chain (&dd->read_ahead.node);               
                                                                      
      if (sc == RTEMS_SUCCESSFUL)                                     
      {                                                               
        rtems_bdbuf_buffer *bd =                                      
 800af04:	b4 43 10 00 	add r2,r2,r3                                   
 800af08:	b9 60 08 00 	mv r1,r11                                      
 800af0c:	fb ff ff 46 	calli 800ac24 <rtems_bdbuf_get_buffer_for_read_ahead>
 800af10:	b8 20 10 00 	mv r2,r1                                       
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
 800af14:	44 20 ff d7 	be r1,r0,800ae70 <rtems_bdbuf_read_ahead_task+0x5c><== NEVER TAKEN
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
 800af18:	29 63 00 28 	lw r3,(r11+40)                                 
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
 800af1c:	2a 01 00 00 	lw r1,(r16+0)                                  
        rtems_bdbuf_buffer *bd =                                      
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
 800af20:	c8 6c 18 00 	sub r3,r3,r12                                  
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
                                                                      
          if (transfer_count >= max_transfer_count)                   
 800af24:	54 23 00 16 	bgu r1,r3,800af7c <rtems_bdbuf_read_ahead_task+0x168>
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
 800af28:	00 24 00 01 	srui r4,r1,1                                   
            dd->read_ahead.next = block + transfer_count;             
 800af2c:	b4 2c 18 00 	add r3,r1,r12                                  
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
 800af30:	b4 8c 60 00 	add r12,r4,r12                                 
            dd->read_ahead.next = block + transfer_count;             
 800af34:	59 63 00 70 	sw (r11+112),r3                                
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
 800af38:	59 6c 00 6c 	sw (r11+108),r12                               
            dd->read_ahead.next = block + transfer_count;             
 800af3c:	b8 20 18 00 	mv r3,r1                                       
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
          }                                                           
                                                                      
          ++dd->stats.read_ahead_transfers;                           
 800af40:	29 64 00 4c 	lw r4,(r11+76)                                 
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
 800af44:	b9 60 08 00 	mv r1,r11                                      
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
          }                                                           
                                                                      
          ++dd->stats.read_ahead_transfers;                           
 800af48:	34 84 00 01 	addi r4,r4,1                                   
 800af4c:	59 64 00 4c 	sw (r11+76),r4                                 
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
 800af50:	fb ff ff 56 	calli 800aca8 <rtems_bdbuf_execute_read_request>
 800af54:	e3 ff ff c7 	bi 800ae70 <rtems_bdbuf_read_ahead_task+0x5c>  
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
 800af58:	29 62 00 24 	lw r2,(r11+36)                                 <== NOT EXECUTED
 800af5c:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 800af60:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800af64:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800af68:	f8 00 2c b5 	calli 801623c <__muldi3>                       <== NOT EXECUTED
 800af6c:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 800af70:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800af74:	f8 00 31 28 	calli 8017414 <__udivdi3>                      <== NOT EXECUTED
 800af78:	e3 ff ff e0 	bi 800aef8 <rtems_bdbuf_read_ahead_task+0xe4>  <== NOT EXECUTED
            dd->read_ahead.trigger = block + transfer_count / 2;      
            dd->read_ahead.next = block + transfer_count;             
          }                                                           
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
 800af7c:	59 71 00 6c 	sw (r11+108),r17                               
 800af80:	e3 ff ff f0 	bi 800af40 <rtems_bdbuf_read_ahead_task+0x12c> 
                                                                      

0800be84 <rtems_bdbuf_release>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_bdbuf_release (rtems_bdbuf_buffer *bd) {
 800be84:	37 9c ff f8 	addi sp,sp,-8                                  
 800be88:	5b 8b 00 08 	sw (sp+8),r11                                  
 800be8c:	5b 9d 00 04 	sw (sp+4),ra                                   
 800be90:	b8 20 58 00 	mv r11,r1                                      
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 800be94:	34 01 00 09 	mvi r1,9                                       
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
 800be98:	45 60 00 0c 	be r11,r0,800bec8 <rtems_bdbuf_release+0x44>   <== NEVER TAKEN
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
 800be9c:	fb ff f6 98 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release");           
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
 800bea0:	29 61 00 20 	lw r1,(r11+32)                                 
 800bea4:	34 02 00 04 	mvi r2,4                                       
 800bea8:	44 22 00 11 	be r1,r2,800beec <rtems_bdbuf_release+0x68>    
 800beac:	54 22 00 0b 	bgu r1,r2,800bed8 <rtems_bdbuf_release+0x54>   
 800beb0:	34 02 00 03 	mvi r2,3                                       
 800beb4:	44 22 00 16 	be r1,r2,800bf0c <rtems_bdbuf_release+0x88>    <== ALWAYS TAKEN
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_0);
 800beb8:	34 02 00 0e 	mvi r2,14                                      <== NOT EXECUTED
 800bebc:	fb ff f6 a4 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bec0:	fb ff f6 bb 	calli 80099ac <rtems_bdbuf_unlock_cache>       <== NOT EXECUTED
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800bec4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 800bec8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800becc:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800bed0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800bed4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release");           
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
 800bed8:	34 02 00 06 	mvi r2,6                                       
 800bedc:	54 22 ff f7 	bgu r1,r2,800beb8 <rtems_bdbuf_release+0x34>   <== NEVER TAKEN
    case RTEMS_BDBUF_STATE_ACCESS_CACHED:                             
      rtems_bdbuf_add_to_lru_list_after_access (bd);                  
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
 800bee0:	b9 60 08 00 	mv r1,r11                                      
 800bee4:	fb ff f8 ed 	calli 800a298 <rtems_bdbuf_discard_buffer_after_access>
      break;                                                          
 800bee8:	e0 00 00 03 	bi 800bef4 <rtems_bdbuf_release+0x70>          
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
 800beec:	b9 60 08 00 	mv r1,r11                                      
 800bef0:	fb ff f6 df 	calli 8009a6c <rtems_bdbuf_add_to_modified_list_after_access>
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bef4:	fb ff f6 ae 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800bef8:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800befc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bf00:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800bf04:	37 9c 00 08 	addi sp,sp,8                                   
 800bf08:	c3 a0 00 00 	ret                                            
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800bf0c:	29 62 00 28 	lw r2,(r11+40)                                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800bf10:	78 01 08 01 	mvhi r1,0x801                                  
 800bf14:	38 21 a7 74 	ori r1,r1,0xa774                               
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
 800bf18:	28 43 00 0c 	lw r3,(r2+12)                                  
 800bf1c:	28 24 00 48 	lw r4,(r1+72)                                  
 800bf20:	34 63 ff ff 	addi r3,r3,-1                                  
 800bf24:	58 43 00 0c 	sw (r2+12),r3                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800bf28:	34 03 00 02 	mvi r3,2                                       
                                                                      
  the_node->next = tail;                                              
 800bf2c:	78 02 08 01 	mvhi r2,0x801                                  
 800bf30:	59 63 00 20 	sw (r11+32),r3                                 
 800bf34:	38 42 a7 b8 	ori r2,r2,0xa7b8                               
rtems_bdbuf_add_to_lru_list_after_access (rtems_bdbuf_buffer *bd)     
{                                                                     
  rtems_bdbuf_group_release (bd);                                     
  rtems_bdbuf_make_cached_and_add_to_lru_list (bd);                   
                                                                      
  if (bd->waiters)                                                    
 800bf38:	29 63 00 24 	lw r3,(r11+36)                                 
 800bf3c:	59 62 00 00 	sw (r11+0),r2                                  
  tail->previous = the_node;                                          
 800bf40:	58 2b 00 48 	sw (r1+72),r11                                 
  old_last->next = the_node;                                          
 800bf44:	58 8b 00 00 	sw (r4+0),r11                                  
  the_node->previous = old_last;                                      
 800bf48:	59 64 00 04 	sw (r11+4),r4                                  
 800bf4c:	44 60 00 05 	be r3,r0,800bf60 <rtems_bdbuf_release+0xdc>    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
 800bf50:	78 01 08 01 	mvhi r1,0x801                                  
 800bf54:	38 21 a7 d8 	ori r1,r1,0xa7d8                               
 800bf58:	fb ff f6 a9 	calli 80099fc <rtems_bdbuf_wake>               
 800bf5c:	e3 ff ff e6 	bi 800bef4 <rtems_bdbuf_release+0x70>          
  else                                                                
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800bf60:	78 01 08 01 	mvhi r1,0x801                                  
 800bf64:	38 21 a7 e8 	ori r1,r1,0xa7e8                               
 800bf68:	fb ff f6 a5 	calli 80099fc <rtems_bdbuf_wake>               
 800bf6c:	e3 ff ff e2 	bi 800bef4 <rtems_bdbuf_release+0x70>          
                                                                      

0800bf70 <rtems_bdbuf_release_modified>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_bdbuf_release_modified (rtems_bdbuf_buffer *bd) {
 800bf70:	37 9c ff f8 	addi sp,sp,-8                                  
 800bf74:	5b 8b 00 08 	sw (sp+8),r11                                  
 800bf78:	5b 9d 00 04 	sw (sp+4),ra                                   
 800bf7c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 800bf80:	34 01 00 09 	mvi r1,9                                       
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
 800bf84:	45 60 00 0d 	be r11,r0,800bfb8 <rtems_bdbuf_release_modified+0x48><== NEVER TAKEN
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
 800bf88:	fb ff f6 5d 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");  
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
 800bf8c:	29 61 00 20 	lw r1,(r11+32)                                 
 800bf90:	34 02 00 03 	mvi r2,3                                       
 800bf94:	54 41 00 0d 	bgu r2,r1,800bfc8 <rtems_bdbuf_release_modified+0x58><== NEVER TAKEN
 800bf98:	34 02 00 05 	mvi r2,5                                       
 800bf9c:	50 41 00 13 	bgeu r2,r1,800bfe8 <rtems_bdbuf_release_modified+0x78>
 800bfa0:	34 02 00 06 	mvi r2,6                                       
 800bfa4:	5c 22 00 09 	bne r1,r2,800bfc8 <rtems_bdbuf_release_modified+0x58><== NEVER TAKEN
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
 800bfa8:	b9 60 08 00 	mv r1,r11                                      
 800bfac:	fb ff f8 bb 	calli 800a298 <rtems_bdbuf_discard_buffer_after_access>
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bfb0:	fb ff f6 7f 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800bfb4:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800bfb8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bfbc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800bfc0:	37 9c 00 08 	addi sp,sp,8                                   
 800bfc4:	c3 a0 00 00 	ret                                            
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_6);
 800bfc8:	34 02 00 12 	mvi r2,18                                      <== NOT EXECUTED
 800bfcc:	fb ff f6 60 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800bfd0:	fb ff f6 77 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800bfd4:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800bfd8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bfdc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800bfe0:	37 9c 00 08 	addi sp,sp,8                                   
 800bfe4:	c3 a0 00 00 	ret                                            
  switch (bd->state)                                                  
  {                                                                   
    case RTEMS_BDBUF_STATE_ACCESS_CACHED:                             
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
 800bfe8:	b9 60 08 00 	mv r1,r11                                      
 800bfec:	fb ff f6 a0 	calli 8009a6c <rtems_bdbuf_add_to_modified_list_after_access>
      break;                                                          
 800bff0:	e3 ff ff f8 	bi 800bfd0 <rtems_bdbuf_release_modified+0x60> 
                                                                      

08009e08 <rtems_bdbuf_remove_from_tree>: return bdbuf_cache.buffer_waiters.count; } static void rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd) {
 8009e08:	37 9c ff 54 	addi sp,sp,-172                                
 8009e0c:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8009e10:	5b 8c 00 28 	sw (sp+40),r12                                 
 8009e14:	5b 8d 00 24 	sw (sp+36),r13                                 
 8009e18:	5b 8e 00 20 	sw (sp+32),r14                                 
 8009e1c:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8009e20:	5b 90 00 18 	sw (sp+24),r16                                 
 8009e24:	5b 91 00 14 	sw (sp+20),r17                                 
 8009e28:	5b 92 00 10 	sw (sp+16),r18                                 
 8009e2c:	5b 93 00 0c 	sw (sp+12),r19                                 
 8009e30:	5b 94 00 08 	sw (sp+8),r20                                  
 8009e34:	5b 9d 00 04 	sw (sp+4),ra                                   
                       const rtems_bdbuf_buffer* node)                
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
                                                                      
  rtems_bdbuf_buffer*  p = *root;                                     
 8009e38:	78 12 08 01 	mvhi r18,0x801                                 
 8009e3c:	3a 52 a7 74 	ori r18,r18,0xa774                             
 8009e40:	2a 4b 00 3c 	lw r11,(r18+60)                                
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
 8009e44:	37 90 00 30 	addi r16,sp,48                                 
  return bdbuf_cache.buffer_waiters.count;                            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
 8009e48:	b8 20 70 00 	mv r14,r1                                      
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
 8009e4c:	34 02 00 00 	mvi r2,0                                       
 8009e50:	ba 00 08 00 	mv r1,r16                                      
 8009e54:	34 03 00 80 	mvi r3,128                                     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 8009e58:	29 cd 00 14 	lw r13,(r14+20)                                
 8009e5c:	29 cf 00 18 	lw r15,(r14+24)                                
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
 8009e60:	f8 00 25 32 	calli 8013328 <memset>                         
                                                                      
  while (p != NULL)                                                   
 8009e64:	45 60 00 14 	be r11,r0,8009eb4 <rtems_bdbuf_remove_from_tree+0xac><== NEVER TAKEN
  rtems_bdbuf_buffer*  r;                                             
  rtems_bdbuf_buffer*  s;                                             
  rtems_bdbuf_buffer*  p1;                                            
  rtems_bdbuf_buffer*  p2;                                            
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
 8009e68:	ba 00 10 00 	mv r2,r16                                      
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
 8009e6c:	34 04 00 01 	mvi r4,1                                       
      p = p->avl.right;                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
 8009e70:	34 05 ff ff 	mvi r5,-1                                      
 8009e74:	e0 00 00 05 	bi 8009e88 <rtems_bdbuf_remove_from_tree+0x80> 
 8009e78:	31 65 00 10 	sb (r11+16),r5                                 
      p = p->avl.left;                                                
 8009e7c:	29 6b 00 08 	lw r11,(r11+8)                                 
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
 8009e80:	b9 80 10 00 	mv r2,r12                                      
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
 8009e84:	45 60 00 0c 	be r11,r0,8009eb4 <rtems_bdbuf_remove_from_tree+0xac><== NEVER TAKEN
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
 8009e88:	29 63 00 14 	lw r3,(r11+20)                                 
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
 8009e8c:	58 4b 00 00 	sw (r2+0),r11                                  
 8009e90:	34 4c 00 04 	addi r12,r2,4                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
 8009e94:	55 a3 00 04 	bgu r13,r3,8009ea4 <rtems_bdbuf_remove_from_tree+0x9c><== NEVER TAKEN
        || ((p->dd == dd) && (p->block < block)))                     
 8009e98:	5d a3 ff f8 	bne r13,r3,8009e78 <rtems_bdbuf_remove_from_tree+0x70><== NEVER TAKEN
 8009e9c:	29 61 00 18 	lw r1,(r11+24)                                 
 8009ea0:	50 2f 00 15 	bgeu r1,r15,8009ef4 <rtems_bdbuf_remove_from_tree+0xec>
    {                                                                 
      p->avl.cache = 1;                                               
 8009ea4:	31 64 00 10 	sb (r11+16),r4                                 
      p = p->avl.right;                                               
 8009ea8:	29 6b 00 0c 	lw r11,(r11+12)                                
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
 8009eac:	b9 80 10 00 	mv r2,r12                                      
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
 8009eb0:	5d 60 ff f6 	bne r11,r0,8009e88 <rtems_bdbuf_remove_from_tree+0x80><== ALWAYS TAKEN
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
  if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)            
    rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
 8009eb4:	29 c1 00 20 	lw r1,(r14+32)                                 <== NOT EXECUTED
 8009eb8:	34 02 00 1b 	mvi r2,27                                      <== NOT EXECUTED
 8009ebc:	fb ff fe a4 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
}                                                                     
 8009ec0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009ec4:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8009ec8:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8009ecc:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8009ed0:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8009ed4:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8009ed8:	2b 90 00 18 	lw r16,(sp+24)                                 
 8009edc:	2b 91 00 14 	lw r17,(sp+20)                                 
 8009ee0:	2b 92 00 10 	lw r18,(sp+16)                                 
 8009ee4:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8009ee8:	2b 94 00 08 	lw r20,(sp+8)                                  
 8009eec:	37 9c 00 ac 	addi sp,sp,172                                 
 8009ef0:	c3 a0 00 00 	ret                                            
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
      p = p->avl.right;                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
 8009ef4:	5d e1 ff e1 	bne r15,r1,8009e78 <rtems_bdbuf_remove_from_tree+0x70>
  {                                                                   
    p = *(buf_prev - 1);                                              
  }                                                                   
  else                                                                
  {                                                                   
    p = NULL;                                                         
 8009ef8:	34 0e 00 00 	mvi r14,0                                      
  }                                                                   
                                                                      
  q = p;                                                              
                                                                      
  buf_prev--;                                                         
  if (buf_prev > buf_stack)                                           
 8009efc:	52 02 00 02 	bgeu r16,r2,8009f04 <rtems_bdbuf_remove_from_tree+0xfc>
  {                                                                   
    p = *(buf_prev - 1);                                              
 8009f00:	28 4e ff fc 	lw r14,(r2+-4)                                 
  {                                                                   
    p = NULL;                                                         
  }                                                                   
                                                                      
  /* at this moment q - is a node to delete, p is q's parent */       
  if (q->avl.right == NULL)                                           
 8009f04:	29 64 00 0c 	lw r4,(r11+12)                                 
 8009f08:	44 80 00 b8 	be r4,r0,800a1e8 <rtems_bdbuf_remove_from_tree+0x3e0>
  {                                                                   
    rtems_bdbuf_buffer **t;                                           
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
 8009f0c:	28 8d 00 08 	lw r13,(r4+8)                                  
 8009f10:	b8 80 18 00 	mv r3,r4                                       
                                                                      
      while (s->avl.left != NULL)                                     
      {                                                               
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
 8009f14:	34 05 ff ff 	mvi r5,-1                                      
  {                                                                   
    rtems_bdbuf_buffer **t;                                           
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
 8009f18:	5d a0 00 04 	bne r13,r0,8009f28 <rtems_bdbuf_remove_from_tree+0x120>
 8009f1c:	e0 00 00 bb 	bi 800a208 <rtems_bdbuf_remove_from_tree+0x400>
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
 8009f20:	b9 a0 18 00 	mv r3,r13                                      
 8009f24:	b8 20 68 00 	mv r13,r1                                      
      {                                                               
        *buf_prev++ = r = s;                                          
 8009f28:	59 83 00 00 	sw (r12+0),r3                                  
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
 8009f2c:	29 a1 00 08 	lw r1,(r13+8)                                  
      {                                                               
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
 8009f30:	30 65 00 10 	sb (r3+16),r5                                  
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
      {                                                               
        *buf_prev++ = r = s;                                          
 8009f34:	35 8c 00 04 	addi r12,r12,4                                 
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
 8009f38:	5c 20 ff fa 	bne r1,r0,8009f20 <rtems_bdbuf_remove_from_tree+0x118>
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
 8009f3c:	29 66 00 08 	lw r6,(r11+8)                                  
      r->avl.left = s->avl.right;                                     
      s->avl.right = q->avl.right;                                    
      s->avl.bal = q->avl.bal;                                        
 8009f40:	41 61 00 11 	lbu r1,(r11+17)                                
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
      r->avl.left = s->avl.right;                                     
 8009f44:	29 a5 00 0c 	lw r5,(r13+12)                                 
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
 8009f48:	59 a6 00 08 	sw (r13+8),r6                                  
      r->avl.left = s->avl.right;                                     
      s->avl.right = q->avl.right;                                    
      s->avl.bal = q->avl.bal;                                        
 8009f4c:	31 a1 00 11 	sb (r13+17),r1                                 
      s->avl.cache = 1;                                               
 8009f50:	34 01 00 01 	mvi r1,1                                       
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
      r->avl.left = s->avl.right;                                     
 8009f54:	58 65 00 08 	sw (r3+8),r5                                   
      s->avl.right = q->avl.right;                                    
 8009f58:	59 a4 00 0c 	sw (r13+12),r4                                 
      s->avl.bal = q->avl.bal;                                        
      s->avl.cache = 1;                                               
 8009f5c:	31 a1 00 10 	sb (r13+16),r1                                 
                                                                      
      *t = q = s;                                                     
 8009f60:	58 4d 00 00 	sw (r2+0),r13                                  
    }                                                                 
  }                                                                   
                                                                      
  if (p != NULL)                                                      
 8009f64:	45 c0 00 a6 	be r14,r0,800a1fc <rtems_bdbuf_remove_from_tree+0x3f4>
  {                                                                   
    if (p->avl.cache == -1)                                           
 8009f68:	41 c1 00 10 	lbu r1,(r14+16)                                
 8009f6c:	34 02 00 18 	mvi r2,24                                      
 8009f70:	f8 00 38 f2 	calli 8018338 <__ashlsi3>                      
 8009f74:	34 02 00 18 	mvi r2,24                                      
 8009f78:	f8 00 39 17 	calli 80183d4 <__ashrsi3>                      
 8009f7c:	34 02 ff ff 	mvi r2,-1                                      
 8009f80:	44 22 00 81 	be r1,r2,800a184 <rtems_bdbuf_remove_from_tree+0x37c>
    {                                                                 
      p->avl.left = q;                                                
    }                                                                 
    else                                                              
    {                                                                 
      p->avl.right = q;                                               
 8009f84:	59 cd 00 0c 	sw (r14+12),r13                                
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
  {                                                                   
    if (buf_prev > buf_stack)                                         
 8009f88:	55 90 00 02 	bgu r12,r16,8009f90 <rtems_bdbuf_remove_from_tree+0x188><== ALWAYS TAKEN
 8009f8c:	e3 ff ff cd 	bi 8009ec0 <rtems_bdbuf_remove_from_tree+0xb8> <== NOT EXECUTED
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
 8009f90:	29 8b ff fc 	lw r11,(r12+-4)                                
 8009f94:	34 02 00 18 	mvi r2,24                                      
    else                                                              
    {                                                                 
      break;                                                          
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
 8009f98:	34 0e ff ff 	mvi r14,-1                                     
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
 8009f9c:	41 61 00 10 	lbu r1,(r11+16)                                
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
 8009fa0:	34 11 00 01 	mvi r17,1                                      
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 8009fa4:	34 14 ff ff 	mvi r20,-1                                     
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
 8009fa8:	f8 00 38 e4 	calli 8018338 <__ashlsi3>                      
 8009fac:	34 02 00 18 	mvi r2,24                                      
 8009fb0:	f8 00 39 09 	calli 80183d4 <__ashrsi3>                      
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
        case  0:                                                      
          p->avl.bal = 1;                                             
 8009fb4:	34 13 00 01 	mvi r19,1                                      
                                                                      
  while (modified)                                                    
  {                                                                   
    if (buf_prev > buf_stack)                                         
    {                                                                 
      p = *--buf_prev;                                                
 8009fb8:	35 8c ff fc 	addi r12,r12,-4                                
    else                                                              
    {                                                                 
      break;                                                          
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
 8009fbc:	44 2e 00 17 	be r1,r14,800a018 <rtems_bdbuf_remove_from_tree+0x210>
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
 8009fc0:	41 61 00 11 	lbu r1,(r11+17)                                
 8009fc4:	34 02 00 18 	mvi r2,24                                      
 8009fc8:	f8 00 38 dc 	calli 8018338 <__ashlsi3>                      
 8009fcc:	34 02 00 18 	mvi r2,24                                      
 8009fd0:	f8 00 39 01 	calli 80183d4 <__ashrsi3>                      
 8009fd4:	44 20 00 20 	be r1,r0,800a054 <rtems_bdbuf_remove_from_tree+0x24c>
 8009fd8:	44 31 00 18 	be r1,r17,800a038 <rtems_bdbuf_remove_from_tree+0x230>
 8009fdc:	44 2e 00 22 	be r1,r14,800a064 <rtems_bdbuf_remove_from_tree+0x25c><== ALWAYS TAKEN
 8009fe0:	b9 60 68 00 	mv r13,r11                                     <== NOT EXECUTED
 8009fe4:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
                                                                      
    if (buf_prev > buf_stack)                                         
 8009fe8:	52 0c 00 5c 	bgeu r16,r12,800a158 <rtems_bdbuf_remove_from_tree+0x350>
    {                                                                 
      q = *(buf_prev - 1);                                            
 8009fec:	29 8b ff fc 	lw r11,(r12+-4)                                
                                                                      
      if (q->avl.cache == -1)                                         
 8009ff0:	34 02 00 18 	mvi r2,24                                      
 8009ff4:	41 61 00 10 	lbu r1,(r11+16)                                
 8009ff8:	f8 00 38 d0 	calli 8018338 <__ashlsi3>                      
 8009ffc:	34 02 00 18 	mvi r2,24                                      
 800a000:	f8 00 38 f5 	calli 80183d4 <__ashrsi3>                      
 800a004:	44 2e 00 11 	be r1,r14,800a048 <rtems_bdbuf_remove_from_tree+0x240>
      {                                                               
        q->avl.left = p;                                              
      }                                                               
      else                                                            
      {                                                               
        q->avl.right = p;                                             
 800a008:	59 6d 00 0c 	sw (r11+12),r13                                
    *root = q;                                                        
  }                                                                   
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
 800a00c:	45 e0 ff ad 	be r15,r0,8009ec0 <rtems_bdbuf_remove_from_tree+0xb8>
  {                                                                   
    if (buf_prev > buf_stack)                                         
    {                                                                 
      p = *--buf_prev;                                                
 800a010:	35 8c ff fc 	addi r12,r12,-4                                
    else                                                              
    {                                                                 
      break;                                                          
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
 800a014:	5c 2e ff eb 	bne r1,r14,8009fc0 <rtems_bdbuf_remove_from_tree+0x1b8>
    {                                                                 
      /* rebalance left branch */                                     
      switch (p->avl.bal)                                             
 800a018:	41 61 00 11 	lbu r1,(r11+17)                                
 800a01c:	34 02 00 18 	mvi r2,24                                      
 800a020:	f8 00 38 c6 	calli 8018338 <__ashlsi3>                      
 800a024:	34 02 00 18 	mvi r2,24                                      
 800a028:	f8 00 38 eb 	calli 80183d4 <__ashrsi3>                      
 800a02c:	44 20 00 43 	be r1,r0,800a138 <rtems_bdbuf_remove_from_tree+0x330>
 800a030:	44 31 00 34 	be r1,r17,800a100 <rtems_bdbuf_remove_from_tree+0x2f8>
 800a034:	5c 2e ff eb 	bne r1,r14,8009fe0 <rtems_bdbuf_remove_from_tree+0x1d8><== NEVER TAKEN
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
      {                                                               
        case +1:                                                      
          p->avl.bal = 0;                                             
 800a038:	31 60 00 11 	sb (r11+17),r0                                 
 800a03c:	b9 60 68 00 	mv r13,r11                                     
 800a040:	34 0f 00 01 	mvi r15,1                                      
 800a044:	e3 ff ff e9 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
    {                                                                 
      q = *(buf_prev - 1);                                            
                                                                      
      if (q->avl.cache == -1)                                         
      {                                                               
        q->avl.left = p;                                              
 800a048:	59 6d 00 08 	sw (r11+8),r13                                 
    *root = q;                                                        
  }                                                                   
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
 800a04c:	5d e0 ff f1 	bne r15,r0,800a010 <rtems_bdbuf_remove_from_tree+0x208>
 800a050:	e3 ff ff 9c 	bi 8009ec0 <rtems_bdbuf_remove_from_tree+0xb8> 
        case +1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
                                                                      
        case  0:                                                      
          p->avl.bal = -1;                                            
 800a054:	31 6e 00 11 	sb (r11+17),r14                                
 800a058:	b9 60 68 00 	mv r13,r11                                     
          modified = false;                                           
 800a05c:	34 0f 00 00 	mvi r15,0                                      
 800a060:	e3 ff ff e2 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
          break;                                                      
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
 800a064:	29 6f 00 08 	lw r15,(r11+8)                                 
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
 800a068:	34 02 00 18 	mvi r2,24                                      
 800a06c:	41 e1 00 11 	lbu r1,(r15+17)                                
 800a070:	f8 00 38 b2 	calli 8018338 <__ashlsi3>                      
 800a074:	34 02 00 18 	mvi r2,24                                      
 800a078:	f8 00 38 d7 	calli 80183d4 <__ashrsi3>                      
 800a07c:	48 20 00 09 	bg r1,r0,800a0a0 <rtems_bdbuf_remove_from_tree+0x298>
          {                                                           
            p->avl.left = p1->avl.right;                              
 800a080:	29 e2 00 0c 	lw r2,(r15+12)                                 
            p1->avl.right = p;                                        
 800a084:	59 eb 00 0c 	sw (r15+12),r11                                
        case -1:                                                      
          p1 = p->avl.left;                                           
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
          {                                                           
            p->avl.left = p1->avl.right;                              
 800a088:	59 62 00 08 	sw (r11+8),r2                                  
            p1->avl.right = p;                                        
            if (p1->avl.bal == 0)                                     
 800a08c:	5c 20 00 39 	bne r1,r0,800a170 <rtems_bdbuf_remove_from_tree+0x368>
            {                                                         
              p1->avl.bal = 1;                                        
 800a090:	31 f1 00 11 	sb (r15+17),r17                                
 800a094:	b9 e0 68 00 	mv r13,r15                                     
              modified = false;                                       
 800a098:	34 0f 00 00 	mvi r15,0                                      
 800a09c:	e3 ff ff d3 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
            }                                                         
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
 800a0a0:	29 ed 00 0c 	lw r13,(r15+12)                                
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
 800a0a4:	34 02 00 18 	mvi r2,24                                      
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
 800a0a8:	29 a3 00 08 	lw r3,(r13+8)                                  
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
 800a0ac:	41 a1 00 11 	lbu r1,(r13+17)                                
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
 800a0b0:	59 af 00 08 	sw (r13+8),r15                                 
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
 800a0b4:	59 e3 00 0c 	sw (r15+12),r3                                 
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
 800a0b8:	29 a3 00 0c 	lw r3,(r13+12)                                 
            p2->avl.right = p;                                        
 800a0bc:	59 ab 00 0c 	sw (r13+12),r11                                
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
 800a0c0:	59 63 00 08 	sw (r11+8),r3                                  
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
 800a0c4:	f8 00 38 9d 	calli 8018338 <__ashlsi3>                      
 800a0c8:	34 02 00 18 	mvi r2,24                                      
 800a0cc:	f8 00 38 c2 	calli 80183d4 <__ashrsi3>                      
 800a0d0:	44 2e 00 20 	be r1,r14,800a150 <rtems_bdbuf_remove_from_tree+0x348>
 800a0d4:	31 60 00 11 	sb (r11+17),r0                                 
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 800a0d8:	41 a1 00 11 	lbu r1,(r13+17)                                
 800a0dc:	34 02 00 18 	mvi r2,24                                      
 800a0e0:	f8 00 38 96 	calli 8018338 <__ashlsi3>                      
 800a0e4:	34 02 00 18 	mvi r2,24                                      
 800a0e8:	f8 00 38 bb 	calli 80183d4 <__ashrsi3>                      
 800a0ec:	44 31 00 17 	be r1,r17,800a148 <rtems_bdbuf_remove_from_tree+0x340>
 800a0f0:	31 e0 00 11 	sb (r15+17),r0                                 
                                                                      
            p = p2;                                                   
            p2->avl.bal = 0;                                          
 800a0f4:	31 a0 00 11 	sb (r13+17),r0                                 
 800a0f8:	34 0f 00 01 	mvi r15,1                                      
 800a0fc:	e3 ff ff bb 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
          p->avl.bal = 1;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case +1:                                                      
          p1 = p->avl.right;                                          
 800a100:	29 6d 00 0c 	lw r13,(r11+12)                                
                                                                      
          if (p1->avl.bal >= 0) /* simple RR-turn */                  
 800a104:	34 02 00 18 	mvi r2,24                                      
 800a108:	41 a1 00 11 	lbu r1,(r13+17)                                
 800a10c:	f8 00 38 8b 	calli 8018338 <__ashlsi3>                      
 800a110:	34 02 00 18 	mvi r2,24                                      
 800a114:	f8 00 38 b0 	calli 80183d4 <__ashrsi3>                      
 800a118:	48 01 00 1e 	bg r0,r1,800a190 <rtems_bdbuf_remove_from_tree+0x388>
          {                                                           
            p->avl.right = p1->avl.left;                              
 800a11c:	29 a2 00 08 	lw r2,(r13+8)                                  
            p1->avl.left = p;                                         
 800a120:	59 ab 00 08 	sw (r13+8),r11                                 
        case +1:                                                      
          p1 = p->avl.right;                                          
                                                                      
          if (p1->avl.bal >= 0) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
 800a124:	59 62 00 0c 	sw (r11+12),r2                                 
            p1->avl.left = p;                                         
                                                                      
            if (p1->avl.bal == 0)                                     
 800a128:	5c 20 00 0e 	bne r1,r0,800a160 <rtems_bdbuf_remove_from_tree+0x358>
            {                                                         
              p1->avl.bal = -1;                                       
 800a12c:	31 ae 00 11 	sb (r13+17),r14                                
              modified = false;                                       
 800a130:	34 0f 00 00 	mvi r15,0                                      
 800a134:	e3 ff ff ad 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
        case  0:                                                      
          p->avl.bal = 1;                                             
 800a138:	31 73 00 11 	sb (r11+17),r19                                
 800a13c:	b9 60 68 00 	mv r13,r11                                     
          modified = false;                                           
 800a140:	34 0f 00 00 	mvi r15,0                                      
 800a144:	e3 ff ff a9 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
 800a148:	31 f4 00 11 	sb (r15+17),r20                                
 800a14c:	e3 ff ff ea 	bi 800a0f4 <rtems_bdbuf_remove_from_tree+0x2ec>
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
 800a150:	31 71 00 11 	sb (r11+17),r17                                
 800a154:	e3 ff ff e1 	bi 800a0d8 <rtems_bdbuf_remove_from_tree+0x2d0>
        q->avl.right = p;                                             
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      *root = p;                                                      
 800a158:	5a 4d 00 3c 	sw (r18+60),r13                                
 800a15c:	e3 ff ff 59 	bi 8009ec0 <rtems_bdbuf_remove_from_tree+0xb8> 
              p1->avl.bal = -1;                                       
              modified = false;                                       
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
 800a160:	31 60 00 11 	sb (r11+17),r0                                 
              p1->avl.bal = 0;                                        
 800a164:	31 a0 00 11 	sb (r13+17),r0                                 
 800a168:	34 0f 00 01 	mvi r15,1                                      
 800a16c:	e3 ff ff 9f 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
              p1->avl.bal = 1;                                        
              modified = false;                                       
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
 800a170:	31 60 00 11 	sb (r11+17),r0                                 
              p1->avl.bal = 0;                                        
 800a174:	31 e0 00 11 	sb (r15+17),r0                                 
 800a178:	b9 e0 68 00 	mv r13,r15                                     
 800a17c:	34 0f 00 01 	mvi r15,1                                      
 800a180:	e3 ff ff 9a 	bi 8009fe8 <rtems_bdbuf_remove_from_tree+0x1e0>
                                                                      
  if (p != NULL)                                                      
  {                                                                   
    if (p->avl.cache == -1)                                           
    {                                                                 
      p->avl.left = q;                                                
 800a184:	59 cd 00 08 	sw (r14+8),r13                                 
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
  {                                                                   
    if (buf_prev > buf_stack)                                         
 800a188:	55 90 ff 82 	bgu r12,r16,8009f90 <rtems_bdbuf_remove_from_tree+0x188><== ALWAYS TAKEN
 800a18c:	e3 ff ff 4d 	bi 8009ec0 <rtems_bdbuf_remove_from_tree+0xb8> <== NOT EXECUTED
            }                                                         
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
 800a190:	29 af 00 08 	lw r15,(r13+8)                                 
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800a194:	34 02 00 18 	mvi r2,24                                      
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
 800a198:	29 e3 00 0c 	lw r3,(r15+12)                                 
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800a19c:	41 e1 00 11 	lbu r1,(r15+17)                                
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
 800a1a0:	59 ed 00 0c 	sw (r15+12),r13                                
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
 800a1a4:	59 a3 00 08 	sw (r13+8),r3                                  
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
 800a1a8:	29 e3 00 08 	lw r3,(r15+8)                                  
            p2->avl.left = p;                                         
 800a1ac:	59 eb 00 08 	sw (r15+8),r11                                 
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
 800a1b0:	59 63 00 0c 	sw (r11+12),r3                                 
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800a1b4:	f8 00 38 61 	calli 8018338 <__ashlsi3>                      
 800a1b8:	34 02 00 18 	mvi r2,24                                      
 800a1bc:	f8 00 38 86 	calli 80183d4 <__ashrsi3>                      
 800a1c0:	44 31 00 1d 	be r1,r17,800a234 <rtems_bdbuf_remove_from_tree+0x42c>
 800a1c4:	31 60 00 11 	sb (r11+17),r0                                 
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
 800a1c8:	41 e1 00 11 	lbu r1,(r15+17)                                
 800a1cc:	34 02 00 18 	mvi r2,24                                      
 800a1d0:	f8 00 38 5a 	calli 8018338 <__ashlsi3>                      
 800a1d4:	34 02 00 18 	mvi r2,24                                      
 800a1d8:	f8 00 38 7f 	calli 80183d4 <__ashrsi3>                      
 800a1dc:	44 2e 00 14 	be r1,r14,800a22c <rtems_bdbuf_remove_from_tree+0x424><== NEVER TAKEN
 800a1e0:	31 a0 00 11 	sb (r13+17),r0                                 
 800a1e4:	e3 ff ff e4 	bi 800a174 <rtems_bdbuf_remove_from_tree+0x36c>
  }                                                                   
                                                                      
  /* at this moment q - is a node to delete, p is q's parent */       
  if (q->avl.right == NULL)                                           
  {                                                                   
    r = q->avl.left;                                                  
 800a1e8:	29 6d 00 08 	lw r13,(r11+8)                                 
    if (r != NULL)                                                    
 800a1ec:	b8 40 60 00 	mv r12,r2                                      
 800a1f0:	45 a4 ff 5d 	be r13,r4,8009f64 <rtems_bdbuf_remove_from_tree+0x15c>
    {                                                                 
      r->avl.bal = 0;                                                 
 800a1f4:	31 a0 00 11 	sb (r13+17),r0                                 
                                                                      
      *t = q = s;                                                     
    }                                                                 
  }                                                                   
                                                                      
  if (p != NULL)                                                      
 800a1f8:	5d c0 ff 5c 	bne r14,r0,8009f68 <rtems_bdbuf_remove_from_tree+0x160>
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
 800a1fc:	5a 4d 00 3c 	sw (r18+60),r13                                
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
  {                                                                   
    if (buf_prev > buf_stack)                                         
 800a200:	55 90 ff 64 	bgu r12,r16,8009f90 <rtems_bdbuf_remove_from_tree+0x188>
 800a204:	e3 ff ff 2f 	bi 8009ec0 <rtems_bdbuf_remove_from_tree+0xb8> 
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
      r->avl.bal = q->avl.bal;                                        
 800a208:	41 61 00 11 	lbu r1,(r11+17)                                
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
 800a20c:	29 63 00 08 	lw r3,(r11+8)                                  
      r->avl.bal = q->avl.bal;                                        
      r->avl.cache = 1;                                               
      *buf_prev++ = q = r;                                            
 800a210:	b8 80 68 00 	mv r13,r4                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
      r->avl.bal = q->avl.bal;                                        
 800a214:	30 81 00 11 	sb (r4+17),r1                                  
      r->avl.cache = 1;                                               
 800a218:	34 01 00 01 	mvi r1,1                                       
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
 800a21c:	58 83 00 08 	sw (r4+8),r3                                   
      r->avl.bal = q->avl.bal;                                        
      r->avl.cache = 1;                                               
 800a220:	30 81 00 10 	sb (r4+16),r1                                  
      *buf_prev++ = q = r;                                            
 800a224:	58 44 00 00 	sw (r2+0),r4                                   
 800a228:	e3 ff ff 4f 	bi 8009f64 <rtems_bdbuf_remove_from_tree+0x15c>
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
 800a22c:	31 b3 00 11 	sb (r13+17),r19                                <== NOT EXECUTED
 800a230:	e3 ff ff d1 	bi 800a174 <rtems_bdbuf_remove_from_tree+0x36c><== NOT EXECUTED
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
 800a234:	31 6e 00 11 	sb (r11+17),r14                                
 800a238:	e3 ff ff e4 	bi 800a1c8 <rtems_bdbuf_remove_from_tree+0x3c0>
                                                                      

0800a744 <rtems_bdbuf_remove_from_tree_and_lru_list>: rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM); } static void rtems_bdbuf_remove_from_tree_and_lru_list (rtems_bdbuf_buffer *bd) {
 800a744:	37 9c ff f8 	addi sp,sp,-8                                  
 800a748:	5b 8b 00 08 	sw (sp+8),r11                                  
 800a74c:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch (bd->state)                                                  
 800a750:	28 22 00 20 	lw r2,(r1+32)                                  
    rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree_and_lru_list (rtems_bdbuf_buffer *bd)    
{                                                                     
 800a754:	b8 20 58 00 	mv r11,r1                                      
  switch (bd->state)                                                  
 800a758:	44 40 00 06 	be r2,r0,800a770 <rtems_bdbuf_remove_from_tree_and_lru_list+0x2c>
 800a75c:	34 03 00 02 	mvi r3,2                                       
 800a760:	44 43 00 0c 	be r2,r3,800a790 <rtems_bdbuf_remove_from_tree_and_lru_list+0x4c><== ALWAYS TAKEN
      break;                                                          
    case RTEMS_BDBUF_STATE_CACHED:                                    
      rtems_bdbuf_remove_from_tree (bd);                              
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_10);
 800a764:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 800a768:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 800a76c:	fb ff fc 78 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800a770:	29 62 00 00 	lw r2,(r11+0)                                  
  previous       = the_node->previous;                                
 800a774:	29 61 00 04 	lw r1,(r11+4)                                  
  next->previous = previous;                                          
 800a778:	58 41 00 04 	sw (r2+4),r1                                   
  previous->next = next;                                              
 800a77c:	58 22 00 00 	sw (r1+0),r2                                   
  }                                                                   
                                                                      
  rtems_chain_extract_unprotected (&bd->link);                        
}                                                                     
 800a780:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a784:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800a788:	37 9c 00 08 	addi sp,sp,8                                   
 800a78c:	c3 a0 00 00 	ret                                            
  switch (bd->state)                                                  
  {                                                                   
    case RTEMS_BDBUF_STATE_FREE:                                      
      break;                                                          
    case RTEMS_BDBUF_STATE_CACHED:                                    
      rtems_bdbuf_remove_from_tree (bd);                              
 800a790:	fb ff fd 9e 	calli 8009e08 <rtems_bdbuf_remove_from_tree>   
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800a794:	29 62 00 00 	lw r2,(r11+0)                                  
  previous       = the_node->previous;                                
 800a798:	29 61 00 04 	lw r1,(r11+4)                                  
  next->previous = previous;                                          
 800a79c:	58 41 00 04 	sw (r2+4),r1                                   
  previous->next = next;                                              
 800a7a0:	58 22 00 00 	sw (r1+0),r2                                   
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_10);
  }                                                                   
                                                                      
  rtems_chain_extract_unprotected (&bd->link);                        
}                                                                     
 800a7a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a7a8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800a7ac:	37 9c 00 08 	addi sp,sp,8                                   
 800a7b0:	c3 a0 00 00 	ret                                            
                                                                      

08009bb4 <rtems_bdbuf_restore_preemption>: static void rtems_bdbuf_restore_preemption (rtems_mode prev_mode) {
 8009bb4:	37 9c ff f8 	addi sp,sp,-8                                  
 8009bb8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode); 
 8009bbc:	38 02 ff ff 	mvu r2,0xffff                                  
 8009bc0:	37 83 00 08 	addi r3,sp,8                                   
  return prev_mode;                                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_restore_preemption (rtems_mode prev_mode)                 
{                                                                     
 8009bc4:	5b 81 00 08 	sw (sp+8),r1                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode); 
 8009bc8:	f8 00 16 41 	calli 800f4cc <rtems_task_mode>                
  if (sc != RTEMS_SUCCESSFUL)                                         
 8009bcc:	44 20 00 03 	be r1,r0,8009bd8 <rtems_bdbuf_restore_preemption+0x24><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_RST);                
 8009bd0:	34 01 00 06 	mvi r1,6                                       <== NOT EXECUTED
 8009bd4:	fb ff ff 37 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 8009bd8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009bdc:	37 9c 00 08 	addi sp,sp,8                                   
 8009be0:	c3 a0 00 00 	ret                                            
                                                                      

0800c3f4 <rtems_bdbuf_set_block_size>: rtems_status_code rtems_bdbuf_set_block_size (rtems_disk_device *dd, uint32_t block_size, bool sync) {
 800c3f4:	37 9c ff e4 	addi sp,sp,-28                                 
 800c3f8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800c3fc:	5b 8c 00 18 	sw (sp+24),r12                                 
 800c400:	5b 8d 00 14 	sw (sp+20),r13                                 
 800c404:	5b 8e 00 10 	sw (sp+16),r14                                 
 800c408:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800c40c:	5b 90 00 08 	sw (sp+8),r16                                  
 800c410:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c414:	20 63 00 ff 	andi r3,r3,0xff                                
 800c418:	b8 20 68 00 	mv r13,r1                                      
 800c41c:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  /*                                                                  
   * We do not care about the synchronization status since we will purge the
   * device later.                                                    
   */                                                                 
  if (sync)                                                           
 800c420:	5c 60 00 40 	bne r3,r0,800c520 <rtems_bdbuf_set_block_size+0x12c>
    rtems_bdbuf_syncdev (dd);                                         
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800c424:	fb ff f5 36 	calli 80098fc <rtems_bdbuf_lock_cache>         
      sc = RTEMS_INVALID_NUMBER;                                      
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_NUMBER;                                        
 800c428:	34 0b 00 0a 	mvi r11,10                                     
  if (sync)                                                           
    rtems_bdbuf_syncdev (dd);                                         
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  if (block_size > 0)                                                 
 800c42c:	45 c0 00 32 	be r14,r0,800c4f4 <rtems_bdbuf_set_block_size+0x100>
rtems_bdbuf_bds_per_group (size_t size)                               
{                                                                     
  size_t bufs_per_size;                                               
  size_t bds_per_size;                                                
                                                                      
  if (size > bdbuf_config.buffer_max)                                 
 800c430:	78 02 08 01 	mvhi r2,0x801                                  
 800c434:	38 42 91 bc 	ori r2,r2,0x91bc                               
 800c438:	28 41 00 28 	lw r1,(r2+40)                                  
 800c43c:	55 c1 00 2e 	bgu r14,r1,800c4f4 <rtems_bdbuf_set_block_size+0x100><== NEVER TAKEN
    return 0;                                                         
                                                                      
  bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;         
 800c440:	28 42 00 24 	lw r2,(r2+36)                                  
 800c444:	35 c1 ff ff 	addi r1,r14,-1                                 
 800c448:	f8 00 30 96 	calli 80186a0 <__udivsi3>                      
 800c44c:	34 21 00 01 	addi r1,r1,1                                   
                                                                      
  for (bds_per_size = 1;                                              
 800c450:	34 03 00 01 	mvi r3,1                                       
 800c454:	50 61 00 03 	bgeu r3,r1,800c460 <rtems_bdbuf_set_block_size+0x6c>
       bds_per_size < bufs_per_size;                                  
       bds_per_size <<= 1)                                            
 800c458:	b4 63 18 00 	add r3,r3,r3                                   
  if (size > bdbuf_config.buffer_max)                                 
    return 0;                                                         
                                                                      
  bufs_per_size = ((size - 1) / bdbuf_config.buffer_min) + 1;         
                                                                      
  for (bds_per_size = 1;                                              
 800c45c:	54 23 ff ff 	bgu r1,r3,800c458 <rtems_bdbuf_set_block_size+0x64>
       bds_per_size < bufs_per_size;                                  
       bds_per_size <<= 1)                                            
    ;                                                                 
                                                                      
  return bdbuf_cache.max_bds_per_group / bds_per_size;                
 800c460:	78 01 08 01 	mvhi r1,0x801                                  
 800c464:	38 21 a7 74 	ori r1,r1,0xa774                               
 800c468:	28 21 00 20 	lw r1,(r1+32)                                  
 800c46c:	b8 60 10 00 	mv r2,r3                                       
                                                                      
      rtems_bdbuf_purge_dev (dd);                                     
    }                                                                 
    else                                                              
    {                                                                 
      sc = RTEMS_INVALID_NUMBER;                                      
 800c470:	34 0b 00 0a 	mvi r11,10                                     
  for (bds_per_size = 1;                                              
       bds_per_size < bufs_per_size;                                  
       bds_per_size <<= 1)                                            
    ;                                                                 
                                                                      
  return bdbuf_cache.max_bds_per_group / bds_per_size;                
 800c474:	f8 00 30 8b 	calli 80186a0 <__udivsi3>                      
 800c478:	b8 20 80 00 	mv r16,r1                                      
                                                                      
  if (block_size > 0)                                                 
  {                                                                   
    size_t bds_per_group = rtems_bdbuf_bds_per_group (block_size);    
                                                                      
    if (bds_per_group != 0)                                           
 800c47c:	44 20 00 1e 	be r1,r0,800c4f4 <rtems_bdbuf_set_block_size+0x100><== NEVER TAKEN
    {                                                                 
      int block_to_media_block_shift = 0;                             
      uint32_t media_blocks_per_block = block_size / dd->media_block_size;
 800c480:	29 af 00 20 	lw r15,(r13+32)                                
 800c484:	b9 c0 08 00 	mv r1,r14                                      
  {                                                                   
    size_t bds_per_group = rtems_bdbuf_bds_per_group (block_size);    
                                                                      
    if (bds_per_group != 0)                                           
    {                                                                 
      int block_to_media_block_shift = 0;                             
 800c488:	34 0b 00 00 	mvi r11,0                                      
      uint32_t media_blocks_per_block = block_size / dd->media_block_size;
 800c48c:	b9 e0 10 00 	mv r2,r15                                      
 800c490:	f8 00 30 84 	calli 80186a0 <__udivsi3>                      
 800c494:	b8 20 60 00 	mv r12,r1                                      
      uint32_t one = 1;                                               
                                                                      
      while ((one << block_to_media_block_shift) < media_blocks_per_block)
 800c498:	34 01 00 01 	mvi r1,1                                       
 800c49c:	50 2c 00 06 	bgeu r1,r12,800c4b4 <rtems_bdbuf_set_block_size+0xc0>
      {                                                               
        ++block_to_media_block_shift;                                 
 800c4a0:	35 6b 00 01 	addi r11,r11,1                                 
    {                                                                 
      int block_to_media_block_shift = 0;                             
      uint32_t media_blocks_per_block = block_size / dd->media_block_size;
      uint32_t one = 1;                                               
                                                                      
      while ((one << block_to_media_block_shift) < media_blocks_per_block)
 800c4a4:	34 01 00 01 	mvi r1,1                                       
 800c4a8:	b9 60 10 00 	mv r2,r11                                      
 800c4ac:	f8 00 2f a3 	calli 8018338 <__ashlsi3>                      
 800c4b0:	55 81 ff fc 	bgu r12,r1,800c4a0 <rtems_bdbuf_set_block_size+0xac>
      {                                                               
        ++block_to_media_block_shift;                                 
      }                                                               
                                                                      
      if ((dd->media_block_size << block_to_media_block_shift) != block_size)
 800c4b4:	b9 e0 08 00 	mv r1,r15                                      
 800c4b8:	b9 60 10 00 	mv r2,r11                                      
 800c4bc:	f8 00 2f 9f 	calli 8018338 <__ashlsi3>                      
 800c4c0:	44 2e 00 02 	be r1,r14,800c4c8 <rtems_bdbuf_set_block_size+0xd4><== ALWAYS TAKEN
        block_to_media_block_shift = -1;                              
 800c4c4:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
                                                                      
      dd->block_size = block_size;                                    
      dd->block_count = dd->size / media_blocks_per_block;            
 800c4c8:	29 a1 00 1c 	lw r1,(r13+28)                                 
 800c4cc:	b9 80 10 00 	mv r2,r12                                      
      }                                                               
                                                                      
      if ((dd->media_block_size << block_to_media_block_shift) != block_size)
        block_to_media_block_shift = -1;                              
                                                                      
      dd->block_size = block_size;                                    
 800c4d0:	59 ae 00 24 	sw (r13+36),r14                                
      dd->block_count = dd->size / media_blocks_per_block;            
 800c4d4:	f8 00 30 73 	calli 80186a0 <__udivsi3>                      
 800c4d8:	59 a1 00 28 	sw (r13+40),r1                                 
      dd->media_blocks_per_block = media_blocks_per_block;            
      dd->block_to_media_block_shift = block_to_media_block_shift;    
 800c4dc:	59 ab 00 30 	sw (r13+48),r11                                
      if ((dd->media_block_size << block_to_media_block_shift) != block_size)
        block_to_media_block_shift = -1;                              
                                                                      
      dd->block_size = block_size;                                    
      dd->block_count = dd->size / media_blocks_per_block;            
      dd->media_blocks_per_block = media_blocks_per_block;            
 800c4e0:	59 ac 00 2c 	sw (r13+44),r12                                
      dd->block_to_media_block_shift = block_to_media_block_shift;    
      dd->bds_per_group = bds_per_group;                              
 800c4e4:	59 b0 00 34 	sw (r13+52),r16                                
                                                                      
      rtems_bdbuf_purge_dev (dd);                                     
 800c4e8:	b9 a0 08 00 	mv r1,r13                                      
 800c4ec:	fb ff ff 3f 	calli 800c1e8 <rtems_bdbuf_purge_dev>          
rtems_status_code                                                     
rtems_bdbuf_set_block_size (rtems_disk_device *dd,                    
                            uint32_t           block_size,            
                            bool               sync)                  
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800c4f0:	34 0b 00 00 	mvi r11,0                                      
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_NUMBER;                                        
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800c4f4:	fb ff f5 2e 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return sc;                                                          
}                                                                     
 800c4f8:	b9 60 08 00 	mv r1,r11                                      
 800c4fc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c500:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800c504:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800c508:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800c50c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800c510:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800c514:	2b 90 00 08 	lw r16,(sp+8)                                  
 800c518:	37 9c 00 1c 	addi sp,sp,28                                  
 800c51c:	c3 a0 00 00 	ret                                            
  /*                                                                  
   * We do not care about the synchronization status since we will purge the
   * device later.                                                    
   */                                                                 
  if (sync)                                                           
    rtems_bdbuf_syncdev (dd);                                         
 800c520:	fb ff ff 1a 	calli 800c188 <rtems_bdbuf_syncdev>            
 800c524:	e3 ff ff c0 	bi 800c424 <rtems_bdbuf_set_block_size+0x30>   
                                                                      

08009758 <rtems_bdbuf_swapout_modified_processing>: rtems_chain_control* chain, rtems_chain_control* transfer, bool sync_active, bool update_timers, uint32_t timer_delta) {
 8009758:	37 9c ff f0 	addi sp,sp,-16                                 
 800975c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8009760:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8009764:	5b 8d 00 08 	sw (sp+8),r13                                  
 8009768:	5b 8e 00 04 	sw (sp+4),r14                                  
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800976c:	28 47 00 00 	lw r7,(r2+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8009770:	34 4b 00 04 	addi r11,r2,4                                  
                                         rtems_chain_control* transfer,
                                         bool                 sync_active,
                                         bool                 update_timers,
                                         uint32_t             timer_delta)
{                                                                     
  if (!rtems_chain_is_empty (chain))                                  
 8009774:	44 eb 00 1c 	be r7,r11,80097e4 <rtems_bdbuf_swapout_modified_processing+0x8c>
     * A sync active with no valid dev means sync all.                
     */                                                               
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
 8009778:	34 0a 00 00 	mvi r10,0                                      
    node = node->next;                                                
                                                                      
    /*                                                                
     * A sync active with no valid dev means sync all.                
     */                                                               
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
 800977c:	44 80 00 03 	be r4,r0,8009788 <rtems_bdbuf_swapout_modified_processing+0x30>
 * @param update_timers If true update the timers.                    
 * @param timer_delta It update_timers is true update the timers by this
 *                    amount.                                         
 */                                                                   
static void                                                           
rtems_bdbuf_swapout_modified_processing (rtems_disk_device  **dd_ptr, 
 8009780:	28 2a 00 00 	lw r10,(r1+0)                                  
 8009784:	65 4a 00 00 	cmpei r10,r10,0                                
}                                                                     
                                                                      
static bool                                                           
rtems_bdbuf_has_buffer_waiters (void)                                 
{                                                                     
  return bdbuf_cache.buffer_waiters.count;                            
 8009788:	78 02 08 01 	mvhi r2,0x801                                  
 800978c:	38 42 a7 74 	ori r2,r2,0xa774                               
 8009790:	28 4d 00 74 	lw r13,(r2+116)                                
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 8009794:	34 0e 00 09 	mvi r14,9                                      
       * or someone waits for a buffer written force all the timers to 0.
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
 8009798:	5d 40 00 34 	bne r10,r0,8009868 <rtems_bdbuf_swapout_modified_processing+0x110>
 800979c:	44 8a 00 04 	be r4,r10,80097ac <rtems_bdbuf_swapout_modified_processing+0x54>
 80097a0:	28 28 00 00 	lw r8,(r1+0)                                   
 80097a4:	28 e2 00 14 	lw r2,(r7+20)                                  
 80097a8:	45 02 00 2c 	be r8,r2,8009858 <rtems_bdbuf_swapout_modified_processing+0x100>
          || rtems_bdbuf_has_buffer_waiters ())                       
 80097ac:	5d a0 00 2f 	bne r13,r0,8009868 <rtems_bdbuf_swapout_modified_processing+0x110>
        bd->hold_timer = 0;                                           
                                                                      
      if (bd->hold_timer)                                             
 80097b0:	28 e8 00 2c 	lw r8,(r7+44)                                  
 80097b4:	45 0d 00 06 	be r8,r13,80097cc <rtems_bdbuf_swapout_modified_processing+0x74><== NEVER TAKEN
      {                                                               
        if (update_timers)                                            
 80097b8:	44 a0 00 09 	be r5,r0,80097dc <rtems_bdbuf_swapout_modified_processing+0x84>
        {                                                             
          if (bd->hold_timer > timer_delta)                           
 80097bc:	50 c8 00 39 	bgeu r6,r8,80098a0 <rtems_bdbuf_swapout_modified_processing+0x148>
            bd->hold_timer -= timer_delta;                            
 80097c0:	c9 06 40 00 	sub r8,r8,r6                                   
 80097c4:	58 e8 00 2c 	sw (r7+44),r8                                  
          else                                                        
            bd->hold_timer = 0;                                       
        }                                                             
                                                                      
        if (bd->hold_timer)                                           
 80097c8:	5d 00 00 05 	bne r8,r0,80097dc <rtems_bdbuf_swapout_modified_processing+0x84><== ALWAYS TAKEN
        {                                                             
          node = node->next;                                          
          continue;                                                   
 80097cc:	28 28 00 00 	lw r8,(r1+0)                                   <== NOT EXECUTED
 80097d0:	28 e9 00 14 	lw r9,(r7+20)                                  <== NOT EXECUTED
      /*                                                              
       * This assumes we can set it to BDBUF_INVALID_DEV which is just an
       * assumption. Cannot use the transfer list being empty the sync dev
       * calls sets the dev to use.                                   
       */                                                             
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
 80097d4:	45 00 00 1c 	be r8,r0,8009844 <rtems_bdbuf_swapout_modified_processing+0xec>
        *dd_ptr = bd->dd;                                             
                                                                      
      if (bd->dd == *dd_ptr)                                          
 80097d8:	45 28 00 09 	be r9,r8,80097fc <rtems_bdbuf_swapout_modified_processing+0xa4><== ALWAYS TAKEN
                                                                      
        node = next_node;                                             
      }                                                               
      else                                                            
      {                                                               
        node = node->next;                                            
 80097dc:	28 e7 00 00 	lw r7,(r7+0)                                   
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
                                                                      
    while (!rtems_chain_is_tail (chain, node))                        
 80097e0:	5d 67 ff ee 	bne r11,r7,8009798 <rtems_bdbuf_swapout_modified_processing+0x40>
      {                                                               
        node = node->next;                                            
      }                                                               
    }                                                                 
  }                                                                   
}                                                                     
 80097e4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80097e8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80097ec:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80097f0:	2b 8e 00 04 	lw r14,(sp+4)                                  
 80097f4:	37 9c 00 10 	addi sp,sp,16                                  
 80097f8:	c3 a0 00 00 	ret                                            
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
        *dd_ptr = bd->dd;                                             
                                                                      
      if (bd->dd == *dd_ptr)                                          
      {                                                               
        rtems_chain_node* next_node = node->next;                     
 80097fc:	28 e2 00 00 	lw r2,(r7+0)                                   
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
 8009800:	28 e9 00 04 	lw r9,(r7+4)                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 8009804:	58 ee 00 20 	sw (r7+32),r14                                 
  next->previous = previous;                                          
 8009808:	58 49 00 04 	sw (r2+4),r9                                   
                                                                      
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);       
                                                                      
        rtems_chain_extract_unprotected (node);                       
                                                                      
        tnode = tnode->previous;                                      
 800980c:	28 68 00 08 	lw r8,(r3+8)                                   
  previous->next = next;                                              
 8009810:	59 22 00 00 	sw (r9+0),r2                                   
                                                                      
        while (node && !rtems_chain_is_head (transfer, tnode))        
 8009814:	45 03 00 1b 	be r8,r3,8009880 <rtems_bdbuf_swapout_modified_processing+0x128>
 8009818:	28 e9 00 18 	lw r9,(r7+24)                                  
        {                                                             
          rtems_bdbuf_buffer* tbd = (rtems_bdbuf_buffer*) tnode;      
                                                                      
          if (bd->block > tbd->block)                                 
 800981c:	29 0c 00 18 	lw r12,(r8+24)                                 
 8009820:	51 89 00 16 	bgeu r12,r9,8009878 <rtems_bdbuf_swapout_modified_processing+0x120>
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8009824:	29 09 00 00 	lw r9,(r8+0)                                   
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8009828:	58 e8 00 04 	sw (r7+4),r8                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 800982c:	59 07 00 00 	sw (r8+0),r7                                   
  the_node->next        = before_node;                                
 8009830:	58 e9 00 00 	sw (r7+0),r9                                   
  before_node->previous = the_node;                                   
 8009834:	59 27 00 04 	sw (r9+4),r7                                   
 8009838:	b8 40 38 00 	mv r7,r2                                       
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
                                                                      
    while (!rtems_chain_is_tail (chain, node))                        
 800983c:	5d 67 ff d7 	bne r11,r7,8009798 <rtems_bdbuf_swapout_modified_processing+0x40>
 8009840:	e3 ff ff e9 	bi 80097e4 <rtems_bdbuf_swapout_modified_processing+0x8c>
       * This assumes we can set it to BDBUF_INVALID_DEV which is just an
       * assumption. Cannot use the transfer list being empty the sync dev
       * calls sets the dev to use.                                   
       */                                                             
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
        *dd_ptr = bd->dd;                                             
 8009844:	58 29 00 00 	sw (r1+0),r9                                   
 8009848:	b9 20 40 00 	mv r8,r9                                       
 800984c:	28 e9 00 14 	lw r9,(r7+20)                                  
                                                                      
      if (bd->dd == *dd_ptr)                                          
 8009850:	5d 28 ff e3 	bne r9,r8,80097dc <rtems_bdbuf_swapout_modified_processing+0x84><== NEVER TAKEN
 8009854:	e3 ff ff ea 	bi 80097fc <rtems_bdbuf_swapout_modified_processing+0xa4>
       * or someone waits for a buffer written force all the timers to 0.
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
 8009858:	b9 00 48 00 	mv r9,r8                                       
          || rtems_bdbuf_has_buffer_waiters ())                       
        bd->hold_timer = 0;                                           
 800985c:	58 e0 00 2c 	sw (r7+44),r0                                  
      /*                                                              
       * This assumes we can set it to BDBUF_INVALID_DEV which is just an
       * assumption. Cannot use the transfer list being empty the sync dev
       * calls sets the dev to use.                                   
       */                                                             
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
 8009860:	5d 00 ff de 	bne r8,r0,80097d8 <rtems_bdbuf_swapout_modified_processing+0x80>
 8009864:	e3 ff ff f8 	bi 8009844 <rtems_bdbuf_swapout_modified_processing+0xec>
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
          || rtems_bdbuf_has_buffer_waiters ())                       
 8009868:	28 28 00 00 	lw r8,(r1+0)                                   
 800986c:	28 e9 00 14 	lw r9,(r7+20)                                  
        bd->hold_timer = 0;                                           
 8009870:	58 e0 00 2c 	sw (r7+44),r0                                  
 8009874:	e3 ff ff fb 	bi 8009860 <rtems_bdbuf_swapout_modified_processing+0x108>
          {                                                           
            rtems_chain_insert_unprotected (tnode, node);             
            node = NULL;                                              
          }                                                           
          else                                                        
            tnode = tnode->previous;                                  
 8009878:	29 08 00 04 	lw r8,(r8+4)                                   
                                                                      
        rtems_chain_extract_unprotected (node);                       
                                                                      
        tnode = tnode->previous;                                      
                                                                      
        while (node && !rtems_chain_is_head (transfer, tnode))        
 800987c:	5d 03 ff e8 	bne r8,r3,800981c <rtems_bdbuf_swapout_modified_processing+0xc4>
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8009880:	28 68 00 00 	lw r8,(r3+0)                                   
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8009884:	58 e3 00 04 	sw (r7+4),r3                                   
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8009888:	58 67 00 00 	sw (r3+0),r7                                   
  the_node->next        = before_node;                                
 800988c:	58 e8 00 00 	sw (r7+0),r8                                   
  before_node->previous = the_node;                                   
 8009890:	59 07 00 04 	sw (r8+4),r7                                   
 8009894:	b8 40 38 00 	mv r7,r2                                       
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
                                                                      
    while (!rtems_chain_is_tail (chain, node))                        
 8009898:	5d 67 ff c0 	bne r11,r7,8009798 <rtems_bdbuf_swapout_modified_processing+0x40>
 800989c:	e3 ff ff d2 	bi 80097e4 <rtems_bdbuf_swapout_modified_processing+0x8c>
        if (update_timers)                                            
        {                                                             
          if (bd->hold_timer > timer_delta)                           
            bd->hold_timer -= timer_delta;                            
          else                                                        
            bd->hold_timer = 0;                                       
 80098a0:	58 e0 00 2c 	sw (r7+44),r0                                  
 80098a4:	28 28 00 00 	lw r8,(r1+0)                                   
 80098a8:	28 e9 00 14 	lw r9,(r7+20)                                  
 80098ac:	e3 ff ff ca 	bi 80097d4 <rtems_bdbuf_swapout_modified_processing+0x7c>
                                                                      

0800b2bc <rtems_bdbuf_swapout_task>: * not this. * @return rtems_task Not used. */ static rtems_task rtems_bdbuf_swapout_task (rtems_task_argument arg) {
 800b2bc:	37 9c ff a0 	addi sp,sp,-96                                 
 800b2c0:	5b 8b 00 44 	sw (sp+68),r11                                 
 800b2c4:	5b 8c 00 40 	sw (sp+64),r12                                 
 800b2c8:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800b2cc:	5b 8e 00 38 	sw (sp+56),r14                                 
 800b2d0:	5b 8f 00 34 	sw (sp+52),r15                                 
 800b2d4:	5b 90 00 30 	sw (sp+48),r16                                 
 800b2d8:	5b 91 00 2c 	sw (sp+44),r17                                 
 800b2dc:	5b 92 00 28 	sw (sp+40),r18                                 
 800b2e0:	5b 93 00 24 	sw (sp+36),r19                                 
 800b2e4:	5b 94 00 20 	sw (sp+32),r20                                 
 800b2e8:	5b 95 00 1c 	sw (sp+28),r21                                 
 800b2ec:	5b 96 00 18 	sw (sp+24),r22                                 
 800b2f0:	5b 97 00 14 	sw (sp+20),r23                                 
 800b2f4:	5b 98 00 10 	sw (sp+16),r24                                 
 800b2f8:	5b 99 00 0c 	sw (sp+12),r25                                 
 800b2fc:	5b 9b 00 08 	sw (sp+8),fp                                   
 800b300:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_bdbuf_swapout_transfer transfer;                              
  uint32_t                     period_in_ticks;                       
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
 800b304:	78 0b 08 01 	mvhi r11,0x801                                 
 800b308:	39 6b 91 bc 	ori r11,r11,0x91bc                             
 800b30c:	29 70 00 0c 	lw r16,(r11+12)                                
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
 800b310:	fb ff fa 75 	calli 8009ce4 <rtems_bdbuf_swapout_writereq_alloc>
  transfer.syncing = false;                                           
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
 800b314:	78 05 08 01 	mvhi r5,0x801                                  
 800b318:	b6 10 10 00 	add r2,r16,r16                                 
 800b31c:	b4 42 10 00 	add r2,r2,r2                                   
 800b320:	b4 42 10 00 	add r2,r2,r2                                   
 800b324:	b4 42 18 00 	add r3,r2,r2                                   
 800b328:	b4 63 18 00 	add r3,r3,r3                                   
 800b32c:	b4 43 10 00 	add r2,r2,r3                                   
 800b330:	b4 42 18 00 	add r3,r2,r2                                   
 800b334:	b4 63 18 00 	add r3,r3,r3                                   
 800b338:	b4 43 20 00 	add r4,r2,r3                                   
 800b33c:	38 a5 91 ec 	ori r5,r5,0x91ec                               
 800b340:	b4 84 18 00 	add r3,r4,r4                                   
 800b344:	28 a2 00 0c 	lw r2,(r5+12)                                  
 800b348:	b4 63 18 00 	add r3,r3,r3                                   
  rtems_bdbuf_swapout_transfer transfer;                              
  uint32_t                     period_in_ticks;                       
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
 800b34c:	5b 81 00 5c 	sw (sp+92),r1                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b350:	37 92 00 48 	addi r18,sp,72                                 
  transfer.syncing = false;                                           
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
 800b354:	b4 83 08 00 	add r1,r4,r3                                   
 800b358:	37 95 00 4c 	addi r21,sp,76                                 
 800b35c:	5b 95 00 48 	sw (sp+72),r21                                 
  head->previous = NULL;                                              
 800b360:	5b 80 00 4c 	sw (sp+76),r0                                  
  tail->previous = head;                                              
 800b364:	5b 92 00 50 	sw (sp+80),r18                                 
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
  rtems_chain_initialize_empty (&transfer.bds);                       
  transfer.dd = BDBUF_INVALID_DEV;                                    
 800b368:	5b 80 00 54 	sw (sp+84),r0                                  
  transfer.syncing = false;                                           
 800b36c:	33 80 00 58 	sb (sp+88),r0                                  
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
 800b370:	f8 00 34 cc 	calli 80186a0 <__udivsi3>                      
 800b374:	b8 20 d8 00 	mv fp,r1                                       
rtems_bdbuf_swapout_workers_open (void)                               
{                                                                     
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800b378:	fb ff f9 61 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b37c:	29 6f 00 14 	lw r15,(r11+20)                                
 800b380:	45 e0 00 ba 	be r15,r0,800b668 <rtems_bdbuf_swapout_task+0x3ac><== ALWAYS TAKEN
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
 800b384:	78 01 08 01 	mvhi r1,0x801                                  <== NOT EXECUTED
 800b388:	38 21 96 b0 	ori r1,r1,0x96b0                               <== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b38c:	29 74 00 18 	lw r20,(r11+24)                                <== NOT EXECUTED
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
 800b390:	28 33 00 00 	lw r19,(r1+0)                                  <== NOT EXECUTED
 800b394:	78 0c 08 01 	mvhi r12,0x801                                 <== NOT EXECUTED
 800b398:	78 16 08 01 	mvhi r22,0x801                                 <== NOT EXECUTED
 800b39c:	78 0e 08 00 	mvhi r14,0x800                                 <== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b3a0:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 800b3a4:	39 8c a7 74 	ori r12,r12,0xa774                             <== NOT EXECUTED
 800b3a8:	3a d6 a7 80 	ori r22,r22,0xa780                             <== NOT EXECUTED
 800b3ac:	39 ce a6 88 	ori r14,r14,0xa688                             <== NOT EXECUTED
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
    if (!worker)                                                      
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
 800b3b0:	34 11 00 01 	mvi r17,1                                      <== NOT EXECUTED
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
  {                                                                   
    rtems_bdbuf_swapout_worker* worker;                               
                                                                      
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
 800b3b4:	34 01 00 28 	mvi r1,40                                      <== NOT EXECUTED
 800b3b8:	fb ff de d5 	calli 8002f0c <malloc>                         <== NOT EXECUTED
 800b3bc:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (!worker)                                                      
 800b3c0:	44 20 00 a7 	be r1,r0,800b65c <rtems_bdbuf_swapout_task+0x3a0><== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800b3c4:	29 81 00 10 	lw r1,(r12+16)                                 <== NOT EXECUTED
                                                                      
  the_node->next = tail;                                              
 800b3c8:	59 76 00 00 	sw (r11+0),r22                                 <== NOT EXECUTED
  tail->previous = the_node;                                          
 800b3cc:	59 8b 00 10 	sw (r12+16),r11                                <== NOT EXECUTED
  old_last->next = the_node;                                          
 800b3d0:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
  the_node->previous = old_last;                                      
 800b3d4:	59 61 00 04 	sw (r11+4),r1                                  <== NOT EXECUTED
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
 800b3d8:	31 71 00 0c 	sb (r11+12),r17                                <== NOT EXECUTED
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
 800b3dc:	fb ff fa 42 	calli 8009ce4 <rtems_bdbuf_swapout_writereq_alloc><== NOT EXECUTED
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
 800b3e0:	35 a6 00 61 	addi r6,r13,97                                 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800b3e4:	35 68 00 14 	addi r8,r11,20                                 <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 800b3e8:	35 67 00 10 	addi r7,r11,16                                 <== NOT EXECUTED
    if (!worker)                                                      
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
 800b3ec:	59 61 00 24 	sw (r11+36),r1                                 <== NOT EXECUTED
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
 800b3f0:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 800b3f4:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 800b3f8:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 800b3fc:	35 65 00 08 	addi r5,r11,8                                  <== NOT EXECUTED
 800b400:	b8 d3 08 00 	or r1,r6,r19                                   <== NOT EXECUTED
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b404:	59 68 00 10 	sw (r11+16),r8                                 <== NOT EXECUTED
  head->previous = NULL;                                              
 800b408:	59 60 00 14 	sw (r11+20),r0                                 <== NOT EXECUTED
  tail->previous = head;                                              
 800b40c:	59 67 00 18 	sw (r11+24),r7                                 <== NOT EXECUTED
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
 800b410:	59 60 00 1c 	sw (r11+28),r0                                 <== NOT EXECUTED
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
 800b414:	fb ff ff 8b 	calli 800b240 <rtems_bdbuf_create_task.clone.18><== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b418:	35 ad 00 01 	addi r13,r13,1                                 <== NOT EXECUTED
                                  bdbuf_config.swapout_worker_priority,
                                  RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_swapout_worker_task,    
                                  (rtems_task_argument) worker,       
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
 800b41c:	5c 20 00 4b 	bne r1,r0,800b548 <rtems_bdbuf_swapout_task+0x28c><== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b420:	55 ed ff e5 	bgu r15,r13,800b3b4 <rtems_bdbuf_swapout_task+0xf8><== NOT EXECUTED
 800b424:	78 14 08 01 	mvhi r20,0x801                                 
 800b428:	78 13 08 01 	mvhi r19,0x801                                 
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 800b42c:	78 18 08 01 	mvhi r24,0x801                                 
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);             
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800b430:	fb ff f9 5f 	calli 80099ac <rtems_bdbuf_unlock_cache>       
 800b434:	3a 94 a7 cc 	ori r20,r20,0xa7cc                             
 800b438:	3a 73 a7 c0 	ori r19,r19,0xa7c0                             
 800b43c:	3b 18 a7 7c 	ori r24,r24,0xa77c                             
      transfer = &worker->transfer;                                   
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&transfer->bds);                      
  transfer->dd = BDBUF_INVALID_DEV;                                   
  transfer->syncing = bdbuf_cache.sync_active;                        
 800b440:	34 19 00 01 	mvi r25,1                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800b444:	37 97 00 4c 	addi r23,sp,76                                 
  /*                                                                  
   * Create the worker threads.                                       
   */                                                                 
  rtems_bdbuf_swapout_workers_open ();                                
                                                                      
  while (bdbuf_cache.swapout_enabled)                                 
 800b448:	41 82 00 04 	lbu r2,(r12+4)                                 
 800b44c:	44 40 00 59 	be r2,r0,800b5b0 <rtems_bdbuf_swapout_task+0x2f4><== NEVER TAKEN
                                rtems_bdbuf_swapout_transfer* transfer)
{                                                                     
  rtems_bdbuf_swapout_worker* worker;                                 
  bool                        transfered_buffers = false;             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800b450:	fb ff f9 2b 	calli 80098fc <rtems_bdbuf_lock_cache>         
   * here. We do not know the worker is the last in a sequence of sync writes
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
 800b454:	41 84 00 30 	lbu r4,(r12+48)                                
  /*                                                                  
   * Create the worker threads.                                       
   */                                                                 
  rtems_bdbuf_swapout_workers_open ();                                
                                                                      
  while (bdbuf_cache.swapout_enabled)                                 
 800b458:	34 11 00 01 	mvi r17,1                                      
   * here. We do not know the worker is the last in a sequence of sync writes
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
 800b45c:	5c 80 00 30 	bne r4,r0,800b51c <rtems_bdbuf_swapout_task+0x260>
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b460:	29 84 00 08 	lw r4,(r12+8)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800b464:	34 0d 00 00 	mvi r13,0                                      
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
 800b468:	ba 40 58 00 	mv r11,r18                                     
 800b46c:	44 96 00 06 	be r4,r22,800b484 <rtems_bdbuf_swapout_task+0x1c8><== ALWAYS TAKEN
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 800b470:	28 82 00 00 	lw r2,(r4+0)                                   <== NOT EXECUTED
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    worker = NULL;                                                    
  else                                                                
  {                                                                   
    worker = (rtems_bdbuf_swapout_worker*)                            
 800b474:	b8 80 68 00 	mv r13,r4                                      <== NOT EXECUTED
      rtems_chain_get_unprotected (&bdbuf_cache.swapout_workers);     
    if (worker)                                                       
      transfer = &worker->transfer;                                   
 800b478:	34 8b 00 10 	addi r11,r4,16                                 <== NOT EXECUTED
                                                                      
  head->next = new_first;                                             
 800b47c:	59 82 00 08 	sw (r12+8),r2                                  <== NOT EXECUTED
  new_first->previous = head;                                         
 800b480:	58 58 00 04 	sw (r2+4),r24                                  <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800b484:	35 6f 00 04 	addi r15,r11,4                                 
                                                                      
  head->next = tail;                                                  
 800b488:	59 6f 00 00 	sw (r11+0),r15                                 
  head->previous = NULL;                                              
 800b48c:	59 60 00 04 	sw (r11+4),r0                                  
  tail->previous = head;                                              
 800b490:	59 6b 00 08 	sw (r11+8),r11                                 
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&transfer->bds);                      
  transfer->dd = BDBUF_INVALID_DEV;                                   
 800b494:	59 60 00 0c 	sw (r11+12),r0                                 
  transfer->syncing = bdbuf_cache.sync_active;                        
 800b498:	31 60 00 10 	sb (r11+16),r0                                 
                                                                      
  /*                                                                  
   * If we have any buffers in the sync queue move them to the modified
   * list. The first sync buffer will select the device we use.       
   */                                                                 
  rtems_bdbuf_swapout_modified_processing (&transfer->dd,             
 800b49c:	35 6e 00 0c 	addi r14,r11,12                                
 800b4a0:	b9 c0 08 00 	mv r1,r14                                      
 800b4a4:	34 04 00 01 	mvi r4,1                                       
 800b4a8:	34 05 00 00 	mvi r5,0                                       
 800b4ac:	ba 00 30 00 	mv r6,r16                                      
 800b4b0:	ba 80 10 00 	mv r2,r20                                      
 800b4b4:	b9 60 18 00 	mv r3,r11                                      
 800b4b8:	fb ff f8 a8 	calli 8009758 <rtems_bdbuf_swapout_modified_processing>
                                           timer_delta);              
                                                                      
  /*                                                                  
   * Process the cache's modified list.                               
   */                                                                 
  rtems_bdbuf_swapout_modified_processing (&transfer->dd,             
 800b4bc:	41 84 00 30 	lbu r4,(r12+48)                                
 800b4c0:	b9 c0 08 00 	mv r1,r14                                      
 800b4c4:	ba 60 10 00 	mv r2,r19                                      
 800b4c8:	b9 60 18 00 	mv r3,r11                                      
 800b4cc:	ba 20 28 00 	mv r5,r17                                      
 800b4d0:	ba 00 30 00 	mv r6,r16                                      
 800b4d4:	fb ff f8 a1 	calli 8009758 <rtems_bdbuf_swapout_modified_processing>
  /*                                                                  
   * We have all the buffers that have been modified for this device so the
   * cache can be unlocked because the state of each buffer has been set to
   * TRANSFER.                                                        
   */                                                                 
  rtems_bdbuf_unlock_cache ();                                        
 800b4d8:	fb ff f9 35 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
 800b4dc:	29 62 00 00 	lw r2,(r11+0)                                  
rtems_bdbuf_swapout_processing (unsigned long                 timer_delta,
                                bool                          update_timers,
                                rtems_bdbuf_swapout_transfer* transfer)
{                                                                     
  rtems_bdbuf_swapout_worker* worker;                                 
  bool                        transfered_buffers = false;             
 800b4e0:	34 0e 00 00 	mvi r14,0                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
 800b4e4:	45 e2 00 07 	be r15,r2,800b500 <rtems_bdbuf_swapout_task+0x244>
  {                                                                   
    if (worker)                                                       
 800b4e8:	45 a0 00 59 	be r13,r0,800b64c <rtems_bdbuf_swapout_task+0x390><== ALWAYS TAKEN
    {                                                                 
      rtems_status_code sc = rtems_event_send (worker->id,            
 800b4ec:	29 a1 00 08 	lw r1,(r13+8)                                  <== NOT EXECUTED
 800b4f0:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
    else                                                              
    {                                                                 
      rtems_bdbuf_swapout_write (transfer);                           
    }                                                                 
                                                                      
    transfered_buffers = true;                                        
 800b4f4:	34 0e 00 01 	mvi r14,1                                      <== NOT EXECUTED
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
  {                                                                   
    if (worker)                                                       
    {                                                                 
      rtems_status_code sc = rtems_event_send (worker->id,            
 800b4f8:	f8 00 0e 3d 	calli 800edec <rtems_event_send>               <== NOT EXECUTED
                                               RTEMS_BDBUF_SWAPOUT_SYNC);
      if (sc != RTEMS_SUCCESSFUL)                                     
 800b4fc:	5c 20 00 51 	bne r1,r0,800b640 <rtems_bdbuf_swapout_task+0x384><== NOT EXECUTED
    }                                                                 
                                                                      
    transfered_buffers = true;                                        
  }                                                                   
                                                                      
  if (bdbuf_cache.sync_active && !transfered_buffers)                 
 800b500:	41 84 00 30 	lbu r4,(r12+48)                                
 800b504:	44 80 00 4c 	be r4,r0,800b634 <rtems_bdbuf_swapout_task+0x378>
 800b508:	45 c0 00 14 	be r14,r0,800b558 <rtems_bdbuf_swapout_task+0x29c>
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
 800b50c:	34 11 00 00 	mvi r17,0                                      
                                rtems_bdbuf_swapout_transfer* transfer)
{                                                                     
  rtems_bdbuf_swapout_worker* worker;                                 
  bool                        transfered_buffers = false;             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800b510:	fb ff f8 fb 	calli 80098fc <rtems_bdbuf_lock_cache>         
   * here. We do not know the worker is the last in a sequence of sync writes
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
 800b514:	41 84 00 30 	lbu r4,(r12+48)                                
 800b518:	44 80 ff d2 	be r4,r0,800b460 <rtems_bdbuf_swapout_task+0x1a4>
   * When the sync is for a device limit the sync to that device. If the sync
   * is for a buffer handle process the devices in the order on the sync
   * list. This means the dev is BDBUF_INVALID_DEV.                   
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    transfer->dd = bdbuf_cache.sync_device;                           
 800b51c:	29 82 00 38 	lw r2,(r12+56)                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800b520:	5b 95 00 48 	sw (sp+72),r21                                 
  head->previous = NULL;                                              
 800b524:	5b 80 00 4c 	sw (sp+76),r0                                  
  tail->previous = head;                                              
 800b528:	5b 92 00 50 	sw (sp+80),r18                                 
      transfer = &worker->transfer;                                   
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&transfer->bds);                      
  transfer->dd = BDBUF_INVALID_DEV;                                   
  transfer->syncing = bdbuf_cache.sync_active;                        
 800b52c:	33 99 00 58 	sb (sp+88),r25                                 
   * When the sync is for a device limit the sync to that device. If the sync
   * is for a buffer handle process the devices in the order on the sync
   * list. This means the dev is BDBUF_INVALID_DEV.                   
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    transfer->dd = bdbuf_cache.sync_device;                           
 800b530:	5b 82 00 54 	sw (sp+84),r2                                  
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    worker = NULL;                                                    
 800b534:	34 0d 00 00 	mvi r13,0                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 800b538:	ba e0 a8 00 	mv r21,r23                                     
 800b53c:	ba e0 78 00 	mv r15,r23                                     
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
 800b540:	ba 40 58 00 	mv r11,r18                                     
 800b544:	e3 ff ff d6 	bi 800b49c <rtems_bdbuf_swapout_task+0x1e0>    
                                  RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_swapout_worker_task,    
                                  (rtems_task_argument) worker,       
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);             
 800b548:	34 01 00 0d 	mvi r1,13                                      <== NOT EXECUTED
 800b54c:	fb ff f8 d9 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
 800b550:	55 ed ff 99 	bgu r15,r13,800b3b4 <rtems_bdbuf_swapout_task+0xf8><== NOT EXECUTED
 800b554:	e3 ff ff b4 	bi 800b424 <rtems_bdbuf_swapout_task+0x168>    <== NOT EXECUTED
  }                                                                   
                                                                      
  if (bdbuf_cache.sync_active && !transfered_buffers)                 
  {                                                                   
    rtems_id sync_requester;                                          
    rtems_bdbuf_lock_cache ();                                        
 800b558:	fb ff f8 e9 	calli 80098fc <rtems_bdbuf_lock_cache>         
    sync_requester = bdbuf_cache.sync_requester;                      
 800b55c:	29 8b 00 34 	lw r11,(r12+52)                                
    bdbuf_cache.sync_active = false;                                  
 800b560:	31 80 00 30 	sb (r12+48),r0                                 
    bdbuf_cache.sync_requester = 0;                                   
 800b564:	59 80 00 34 	sw (r12+52),r0                                 
    rtems_bdbuf_unlock_cache ();                                      
 800b568:	fb ff f9 11 	calli 80099ac <rtems_bdbuf_unlock_cache>       
    if (sync_requester)                                               
 800b56c:	45 6e 00 04 	be r11,r14,800b57c <rtems_bdbuf_swapout_task+0x2c0><== NEVER TAKEN
 800b570:	b9 60 08 00 	mv r1,r11                                      
 800b574:	78 02 80 00 	mvhi r2,0x8000                                 
 800b578:	fb ff e7 ec 	calli 8005528 <rtems_event_system_send>        
       */                                                             
      update_timers = false;                                          
    }                                                                 
    while (transfered_buffers);                                       
                                                                      
    sc = rtems_event_receive (RTEMS_BDBUF_SWAPOUT_SYNC,               
 800b57c:	34 02 00 00 	mvi r2,0                                       
 800b580:	34 01 00 04 	mvi r1,4                                       
 800b584:	bb 60 18 00 	mv r3,fp                                       
 800b588:	37 84 00 60 	addi r4,sp,96                                  
 800b58c:	f8 00 0d a1 	calli 800ec10 <rtems_event_receive>            
                              RTEMS_EVENT_ALL | RTEMS_WAIT,           
                              period_in_ticks,                        
                              &out);                                  
                                                                      
    if ((sc != RTEMS_SUCCESSFUL) && (sc != RTEMS_TIMEOUT))            
 800b590:	7c 22 00 06 	cmpnei r2,r1,6                                 
 800b594:	7c 21 00 00 	cmpnei r1,r1,0                                 
 800b598:	a0 41 10 00 	and r2,r2,r1                                   
 800b59c:	44 40 ff ab 	be r2,r0,800b448 <rtems_bdbuf_swapout_task+0x18c><== ALWAYS TAKEN
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);               
 800b5a0:	34 01 00 18 	mvi r1,24                                      <== NOT EXECUTED
 800b5a4:	fb ff f8 c3 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
  /*                                                                  
   * Create the worker threads.                                       
   */                                                                 
  rtems_bdbuf_swapout_workers_open ();                                
                                                                      
  while (bdbuf_cache.swapout_enabled)                                 
 800b5a8:	41 82 00 04 	lbu r2,(r12+4)                                 <== NOT EXECUTED
 800b5ac:	5c 40 ff a9 	bne r2,r0,800b450 <rtems_bdbuf_swapout_task+0x194><== NOT EXECUTED
static void                                                           
rtems_bdbuf_swapout_workers_close (void)                              
{                                                                     
  rtems_chain_node* node;                                             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
 800b5b0:	fb ff f8 d3 	calli 80098fc <rtems_bdbuf_lock_cache>         <== NOT EXECUTED
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b5b4:	29 8b 00 08 	lw r11,(r12+8)                                 <== NOT EXECUTED
  rtems_chain_node* node;                                             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  node = rtems_chain_first (&bdbuf_cache.swapout_workers);            
  while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))   
 800b5b8:	45 76 00 07 	be r11,r22,800b5d4 <rtems_bdbuf_swapout_task+0x318><== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) node;
    worker->enabled = false;                                          
    rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);          
 800b5bc:	29 61 00 08 	lw r1,(r11+8)                                  <== NOT EXECUTED
                                                                      
  node = rtems_chain_first (&bdbuf_cache.swapout_workers);            
  while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))   
  {                                                                   
    rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) node;
    worker->enabled = false;                                          
 800b5c0:	31 60 00 0c 	sb (r11+12),r0                                 <== NOT EXECUTED
    rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);          
 800b5c4:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 800b5c8:	f8 00 0e 09 	calli 800edec <rtems_event_send>               <== NOT EXECUTED
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800b5cc:	29 6b 00 00 	lw r11,(r11+0)                                 <== NOT EXECUTED
  rtems_chain_node* node;                                             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  node = rtems_chain_first (&bdbuf_cache.swapout_workers);            
  while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))   
 800b5d0:	5d 76 ff fb 	bne r11,r22,800b5bc <rtems_bdbuf_swapout_task+0x300><== NOT EXECUTED
    worker->enabled = false;                                          
    rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);          
    node = rtems_chain_next (node);                                   
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800b5d4:	fb ff f8 f6 	calli 80099ac <rtems_bdbuf_unlock_cache>       <== NOT EXECUTED
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);               
  }                                                                   
                                                                      
  rtems_bdbuf_swapout_workers_close ();                               
                                                                      
  free (transfer.write_req);                                          
 800b5d8:	2b 81 00 5c 	lw r1,(sp+92)                                  <== NOT EXECUTED
 800b5dc:	fb ff dc b8 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
 800b5e0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800b5e4:	f8 00 0f 92 	calli 800f42c <rtems_task_delete>              <== NOT EXECUTED
}                                                                     
 800b5e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800b5ec:	2b 8b 00 44 	lw r11,(sp+68)                                 <== NOT EXECUTED
 800b5f0:	2b 8c 00 40 	lw r12,(sp+64)                                 <== NOT EXECUTED
 800b5f4:	2b 8d 00 3c 	lw r13,(sp+60)                                 <== NOT EXECUTED
 800b5f8:	2b 8e 00 38 	lw r14,(sp+56)                                 <== NOT EXECUTED
 800b5fc:	2b 8f 00 34 	lw r15,(sp+52)                                 <== NOT EXECUTED
 800b600:	2b 90 00 30 	lw r16,(sp+48)                                 <== NOT EXECUTED
 800b604:	2b 91 00 2c 	lw r17,(sp+44)                                 <== NOT EXECUTED
 800b608:	2b 92 00 28 	lw r18,(sp+40)                                 <== NOT EXECUTED
 800b60c:	2b 93 00 24 	lw r19,(sp+36)                                 <== NOT EXECUTED
 800b610:	2b 94 00 20 	lw r20,(sp+32)                                 <== NOT EXECUTED
 800b614:	2b 95 00 1c 	lw r21,(sp+28)                                 <== NOT EXECUTED
 800b618:	2b 96 00 18 	lw r22,(sp+24)                                 <== NOT EXECUTED
 800b61c:	2b 97 00 14 	lw r23,(sp+20)                                 <== NOT EXECUTED
 800b620:	2b 98 00 10 	lw r24,(sp+16)                                 <== NOT EXECUTED
 800b624:	2b 99 00 0c 	lw r25,(sp+12)                                 <== NOT EXECUTED
 800b628:	2b 9b 00 08 	lw fp,(sp+8)                                   <== NOT EXECUTED
 800b62c:	37 9c 00 60 	addi sp,sp,96                                  <== NOT EXECUTED
 800b630:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
 800b634:	45 c4 ff d2 	be r14,r4,800b57c <rtems_bdbuf_swapout_task+0x2c0>
 800b638:	34 11 00 00 	mvi r17,0                                      
 800b63c:	e3 ff ff b5 	bi 800b510 <rtems_bdbuf_swapout_task+0x254>    
    if (worker)                                                       
    {                                                                 
      rtems_status_code sc = rtems_event_send (worker->id,            
                                               RTEMS_BDBUF_SWAPOUT_SYNC);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_2);              
 800b640:	34 01 00 0c 	mvi r1,12                                      <== NOT EXECUTED
 800b644:	fb ff f8 9b 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 800b648:	e3 ff ff ae 	bi 800b500 <rtems_bdbuf_swapout_task+0x244>    <== NOT EXECUTED
    }                                                                 
    else                                                              
    {                                                                 
      rtems_bdbuf_swapout_write (transfer);                           
 800b64c:	b9 60 08 00 	mv r1,r11                                      
 800b650:	fb ff fb a6 	calli 800a4e8 <rtems_bdbuf_swapout_write>      
    }                                                                 
                                                                      
    transfered_buffers = true;                                        
 800b654:	34 0e 00 01 	mvi r14,1                                      
 800b658:	e3 ff ff aa 	bi 800b500 <rtems_bdbuf_swapout_task+0x244>    
  {                                                                   
    rtems_bdbuf_swapout_worker* worker;                               
                                                                      
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
    if (!worker)                                                      
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
 800b65c:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 800b660:	fb ff f8 94 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 800b664:	e3 ff ff 58 	bi 800b3c4 <rtems_bdbuf_swapout_task+0x108>    <== NOT EXECUTED
 800b668:	78 0c 08 01 	mvhi r12,0x801                                 
 800b66c:	78 16 08 01 	mvhi r22,0x801                                 
 800b670:	39 8c a7 74 	ori r12,r12,0xa774                             
 800b674:	3a d6 a7 80 	ori r22,r22,0xa780                             
 800b678:	e3 ff ff 6b 	bi 800b424 <rtems_bdbuf_swapout_task+0x168>    
                                                                      

0800a688 <rtems_bdbuf_swapout_worker_task>: * @param arg A pointer to the worker thread's private data. * @return rtems_task Not used. */ static rtems_task rtems_bdbuf_swapout_worker_task (rtems_task_argument arg) {
 800a688:	37 9c ff e8 	addi sp,sp,-24                                 <== NOT EXECUTED
 800a68c:	5b 8b 00 18 	sw (sp+24),r11                                 <== NOT EXECUTED
 800a690:	5b 8c 00 14 	sw (sp+20),r12                                 <== NOT EXECUTED
 800a694:	5b 8d 00 10 	sw (sp+16),r13                                 <== NOT EXECUTED
 800a698:	5b 8e 00 0c 	sw (sp+12),r14                                 <== NOT EXECUTED
 800a69c:	5b 8f 00 08 	sw (sp+8),r15                                  <== NOT EXECUTED
 800a6a0:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800a6a4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
                                                                      
  while (worker->enabled)                                             
 800a6a8:	40 21 00 0c 	lbu r1,(r1+12)                                 <== NOT EXECUTED
 800a6ac:	44 20 00 18 	be r1,r0,800a70c <rtems_bdbuf_swapout_worker_task+0x84><== NOT EXECUTED
 800a6b0:	78 0c 08 01 	mvhi r12,0x801                                 <== NOT EXECUTED
 800a6b4:	78 0e 08 01 	mvhi r14,0x801                                 <== NOT EXECUTED
 800a6b8:	35 6d 00 10 	addi r13,r11,16                                <== NOT EXECUTED
 800a6bc:	35 6f 00 14 	addi r15,r11,20                                <== NOT EXECUTED
 800a6c0:	39 8c a7 74 	ori r12,r12,0xa774                             <== NOT EXECUTED
 800a6c4:	39 ce a7 80 	ori r14,r14,0xa780                             <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_SWAPOUT_SYNC);            
 800a6c8:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
 800a6cc:	fb ff fd 74 	calli 8009c9c <rtems_bdbuf_wait_for_event>     <== NOT EXECUTED
                                                                      
    rtems_bdbuf_swapout_write (&worker->transfer);                    
 800a6d0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800a6d4:	fb ff ff 85 	calli 800a4e8 <rtems_bdbuf_swapout_write>      <== NOT EXECUTED
                                                                      
    rtems_bdbuf_lock_cache ();                                        
 800a6d8:	fb ff fc 89 	calli 80098fc <rtems_bdbuf_lock_cache>         <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800a6dc:	29 81 00 10 	lw r1,(r12+16)                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800a6e0:	59 6f 00 10 	sw (r11+16),r15                                <== NOT EXECUTED
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
 800a6e4:	59 60 00 1c 	sw (r11+28),r0                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 800a6e8:	59 6e 00 00 	sw (r11+0),r14                                 <== NOT EXECUTED
  tail->previous = the_node;                                          
 800a6ec:	59 8b 00 10 	sw (r12+16),r11                                <== NOT EXECUTED
  old_last->next = the_node;                                          
 800a6f0:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
  the_node->previous = old_last;                                      
 800a6f4:	59 61 00 04 	sw (r11+4),r1                                  <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
 800a6f8:	59 60 00 14 	sw (r11+20),r0                                 <== NOT EXECUTED
  tail->previous = head;                                              
 800a6fc:	59 6d 00 18 	sw (r11+24),r13                                <== NOT EXECUTED
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
 800a700:	fb ff fc ab 	calli 80099ac <rtems_bdbuf_unlock_cache>       <== NOT EXECUTED
static rtems_task                                                     
rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)             
{                                                                     
  rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
                                                                      
  while (worker->enabled)                                             
 800a704:	41 61 00 0c 	lbu r1,(r11+12)                                <== NOT EXECUTED
 800a708:	5c 20 ff f0 	bne r1,r0,800a6c8 <rtems_bdbuf_swapout_worker_task+0x40><== NOT EXECUTED
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
  }                                                                   
                                                                      
  free (worker->transfer.write_req);                                  
 800a70c:	29 61 00 24 	lw r1,(r11+36)                                 <== NOT EXECUTED
 800a710:	fb ff e0 6b 	calli 80028bc <free>                           <== NOT EXECUTED
  free (worker);                                                      
 800a714:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800a718:	fb ff e0 69 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
 800a71c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800a720:	f8 00 13 43 	calli 800f42c <rtems_task_delete>              <== NOT EXECUTED
}                                                                     
 800a724:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800a728:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 800a72c:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 800a730:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 800a734:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 800a738:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 800a73c:	37 9c 00 18 	addi sp,sp,24                                  <== NOT EXECUTED
 800a740:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800a4e8 <rtems_bdbuf_swapout_write>: * * @param transfer The transfer transaction. */ static void rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer) {
 800a4e8:	37 9c ff dc 	addi sp,sp,-36                                 
 800a4ec:	5b 8b 00 24 	sw (sp+36),r11                                 
 800a4f0:	5b 8c 00 20 	sw (sp+32),r12                                 
 800a4f4:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800a4f8:	5b 8e 00 18 	sw (sp+24),r14                                 
 800a4fc:	5b 8f 00 14 	sw (sp+20),r15                                 
 800a500:	5b 90 00 10 	sw (sp+16),r16                                 
 800a504:	5b 91 00 0c 	sw (sp+12),r17                                 
 800a508:	5b 92 00 08 	sw (sp+8),r18                                  
 800a50c:	5b 9d 00 04 	sw (sp+4),ra                                   
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800a510:	28 25 00 00 	lw r5,(r1+0)                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 800a514:	34 2d 00 04 	addi r13,r1,4                                  
 *                                                                    
 * @param transfer The transfer transaction.                          
 */                                                                   
static void                                                           
rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer)    
{                                                                     
 800a518:	b8 20 58 00 	mv r11,r1                                      
    printf ("bdbuf:swapout transfer: %08x\n", (unsigned) transfer->dd->dev);
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
 800a51c:	44 ad 00 29 	be r5,r13,800a5c0 <rtems_bdbuf_swapout_write+0xd8><== NEVER TAKEN
     * The last block number used when the driver only supports       
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
 800a520:	28 2c 00 0c 	lw r12,(r1+12)                                 
     * should be possible to make this change with little effect in this
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
 800a524:	28 22 00 14 	lw r2,(r1+20)                                  
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
 800a528:	78 0e 08 01 	mvhi r14,0x801                                 
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
 800a52c:	29 81 00 08 	lw r1,(r12+8)                                  
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
 800a530:	29 92 00 2c 	lw r18,(r12+44)                                
  {                                                                   
    /*                                                                
     * The last block number used when the driver only supports       
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
 800a534:	34 0f 00 00 	mvi r15,0                                      
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
 800a538:	28 30 00 0c 	lw r16,(r1+12)                                 
     * should be possible to make this change with little effect in this
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
 800a53c:	34 01 00 0c 	mvi r1,12                                      
 800a540:	58 41 00 0c 	sw (r2+12),r1                                  
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
 800a544:	22 10 00 01 	andi r16,r16,0x1                               
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
    transfer->write_req->bufnum = 0;                                  
 800a548:	58 40 00 10 	sw (r2+16),r0                                  
                                                                      
      if (write)                                                      
      {                                                               
        rtems_bdbuf_execute_transfer_request (dd, transfer->write_req, false);
                                                                      
        transfer->write_req->status = RTEMS_RESOURCE_IN_USE;          
 800a54c:	34 11 00 0c 	mvi r17,12                                     
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
 800a550:	39 ce 91 bc 	ori r14,r14,0x91bc                             
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 800a554:	28 a3 00 00 	lw r3,(r5+0)                                   
                                                                      
  head->next = new_first;                                             
 800a558:	59 63 00 00 	sw (r11+0),r3                                  
  new_first->previous = head;                                         
 800a55c:	58 6b 00 04 	sw (r3+4),r11                                  
      if (rtems_bdbuf_tracer)                                         
        printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
                bd->block, transfer->write_req->bufnum,               
                need_continuous_blocks ? "MULTI" : "SCAT");           
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
 800a560:	46 00 00 23 	be r16,r0,800a5ec <rtems_bdbuf_swapout_write+0x104>
 800a564:	28 41 00 10 	lw r1,(r2+16)                                  
 800a568:	44 20 00 21 	be r1,r0,800a5ec <rtems_bdbuf_swapout_write+0x104>
 800a56c:	28 a1 00 18 	lw r1,(r5+24)                                  
          bd->block != last_block + media_blocks_per_block)           
 800a570:	b5 f2 20 00 	add r4,r15,r18                                 
      if (rtems_bdbuf_tracer)                                         
        printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
                bd->block, transfer->write_req->bufnum,               
                need_continuous_blocks ? "MULTI" : "SCAT");           
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
 800a574:	44 24 00 1f 	be r1,r4,800a5f0 <rtems_bdbuf_swapout_write+0x108>
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 800a578:	59 65 00 00 	sw (r11+0),r5                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800a57c:	58 ab 00 04 	sw (r5+4),r11                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
 800a580:	58 a3 00 00 	sw (r5+0),r3                                   
  before_node->previous = the_node;                                   
 800a584:	58 65 00 04 	sw (r3+4),r5                                   
      /*                                                              
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
 800a588:	29 65 00 00 	lw r5,(r11+0)                                  
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
          bd->block != last_block + media_blocks_per_block)           
      {                                                               
        rtems_chain_prepend_unprotected (&transfer->bds, &bd->link);  
        write = true;                                                 
 800a58c:	34 01 00 01 	mvi r1,1                                       
      /*                                                              
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
 800a590:	45 a5 00 30 	be r13,r5,800a650 <rtems_bdbuf_swapout_write+0x168><== NEVER TAKEN
 800a594:	28 44 00 10 	lw r4,(r2+16)                                  
 800a598:	29 c3 00 04 	lw r3,(r14+4)                                  
 800a59c:	50 83 00 2d 	bgeu r4,r3,800a650 <rtems_bdbuf_swapout_write+0x168>
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
        write = true;                                                 
                                                                      
      if (write)                                                      
 800a5a0:	5c 20 00 2c 	bne r1,r0,800a650 <rtems_bdbuf_swapout_write+0x168>
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 800a5a4:	5c ad ff ec 	bne r5,r13,800a554 <rtems_bdbuf_swapout_write+0x6c><== ALWAYS TAKEN
                                                                      
    /*                                                                
     * If sync'ing and the deivce is capability of handling a sync IO control
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
 800a5a8:	41 61 00 10 	lbu r1,(r11+16)                                
 800a5ac:	44 20 00 05 	be r1,r0,800a5c0 <rtems_bdbuf_swapout_write+0xd8>
        (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))         
 800a5b0:	29 81 00 08 	lw r1,(r12+8)                                  
 800a5b4:	28 22 00 0c 	lw r2,(r1+12)                                  
 800a5b8:	20 42 00 02 	andi r2,r2,0x2                                 
                                                                      
    /*                                                                
     * If sync'ing and the deivce is capability of handling a sync IO control
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
 800a5bc:	5c 40 00 2e 	bne r2,r0,800a674 <rtems_bdbuf_swapout_write+0x18c><== NEVER TAKEN
    {                                                                 
      /* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
      /* How should the error be handled ? */                         
    }                                                                 
  }                                                                   
}                                                                     
 800a5c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a5c4:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800a5c8:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800a5cc:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800a5d0:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800a5d4:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800a5d8:	2b 90 00 10 	lw r16,(sp+16)                                 
 800a5dc:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800a5e0:	2b 92 00 08 	lw r18,(sp+8)                                  
 800a5e4:	37 9c 00 24 	addi sp,sp,36                                  
 800a5e8:	c3 a0 00 00 	ret                                            
 800a5ec:	28 a1 00 18 	lw r1,(r5+24)                                  
        write = true;                                                 
      }                                                               
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
 800a5f0:	28 46 00 10 	lw r6,(r2+16)                                  
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
        buf->block  = bd->block;                                      
        buf->length = dd->block_size;                                 
 800a5f4:	29 88 00 24 	lw r8,(r12+36)                                 
        buf->buffer = bd->buffer;                                     
 800a5f8:	28 a7 00 1c 	lw r7,(r5+28)                                  
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
        buf->block  = bd->block;                                      
 800a5fc:	b4 c6 20 00 	add r4,r6,r6                                   
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a600:	34 c3 00 02 	addi r3,r6,2                                   
        buf->block  = bd->block;                                      
 800a604:	b4 84 20 00 	add r4,r4,r4                                   
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a608:	b4 63 18 00 	add r3,r3,r3                                   
        buf->block  = bd->block;                                      
 800a60c:	b4 84 20 00 	add r4,r4,r4                                   
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a610:	b4 63 18 00 	add r3,r3,r3                                   
        buf->block  = bd->block;                                      
 800a614:	b4 84 20 00 	add r4,r4,r4                                   
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a618:	b4 63 18 00 	add r3,r3,r3                                   
        buf->block  = bd->block;                                      
 800a61c:	b4 44 20 00 	add r4,r2,r4                                   
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a620:	b4 63 18 00 	add r3,r3,r3                                   
        buf->block  = bd->block;                                      
 800a624:	58 81 00 18 	sw (r4+24),r1                                  
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a628:	b4 43 18 00 	add r3,r2,r3                                   
        buf->block  = bd->block;                                      
        buf->length = dd->block_size;                                 
 800a62c:	58 88 00 1c 	sw (r4+28),r8                                  
        buf->buffer = bd->buffer;                                     
        last_block  = bd->block;                                      
 800a630:	28 af 00 18 	lw r15,(r5+24)                                 
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
 800a634:	58 65 00 04 	sw (r3+4),r5                                   
      /*                                                              
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
 800a638:	29 65 00 00 	lw r5,(r11+0)                                  
      }                                                               
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
 800a63c:	34 c6 00 01 	addi r6,r6,1                                   
 800a640:	58 46 00 10 	sw (r2+16),r6                                  
        buf->user   = bd;                                             
        buf->block  = bd->block;                                      
        buf->length = dd->block_size;                                 
        buf->buffer = bd->buffer;                                     
 800a644:	58 67 00 00 	sw (r3+0),r7                                   
    transfer->write_req->bufnum = 0;                                  
                                                                      
    while ((node = rtems_chain_get_unprotected(&transfer->bds)) != NULL)
    {                                                                 
      rtems_bdbuf_buffer* bd = (rtems_bdbuf_buffer*) node;            
      bool                write = false;                              
 800a648:	34 01 00 00 	mvi r1,0                                       
      /*                                                              
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
 800a64c:	5d a5 ff d2 	bne r13,r5,800a594 <rtems_bdbuf_swapout_write+0xac>
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
        write = true;                                                 
                                                                      
      if (write)                                                      
      {                                                               
        rtems_bdbuf_execute_transfer_request (dd, transfer->write_req, false);
 800a650:	b9 80 08 00 	mv r1,r12                                      
 800a654:	34 03 00 00 	mvi r3,0                                       
 800a658:	fb ff ff 29 	calli 800a2fc <rtems_bdbuf_execute_transfer_request>
                                                                      
        transfer->write_req->status = RTEMS_RESOURCE_IN_USE;          
 800a65c:	29 62 00 14 	lw r2,(r11+20)                                 
 800a660:	29 65 00 00 	lw r5,(r11+0)                                  
 800a664:	58 51 00 0c 	sw (r2+12),r17                                 
        transfer->write_req->bufnum = 0;                              
 800a668:	58 40 00 10 	sw (r2+16),r0                                  
 800a66c:	5c ad ff ba 	bne r5,r13,800a554 <rtems_bdbuf_swapout_write+0x6c>
 800a670:	e3 ff ff ce 	bi 800a5a8 <rtems_bdbuf_swapout_write+0xc0>    
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
        (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))         
    {                                                                 
      /* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
 800a674:	29 84 00 38 	lw r4,(r12+56)                                 <== NOT EXECUTED
 800a678:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 800a67c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 800a680:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
 800a684:	e3 ff ff cf 	bi 800a5c0 <rtems_bdbuf_swapout_write+0xd8>    <== NOT EXECUTED
                                                                      

08009ce4 <rtems_bdbuf_swapout_writereq_alloc>: * * @return rtems_blkdev_request* The write reference memory. */ static rtems_blkdev_request* rtems_bdbuf_swapout_writereq_alloc (void) {
 8009ce4:	37 9c ff f8 	addi sp,sp,-8                                  
 8009ce8:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009cec:	5b 9d 00 04 	sw (sp+4),ra                                   
   * have been a rtems_chain_control. Simple, fast and less storage as the node
   * is already part of the buffer structure.                         
   */                                                                 
  rtems_blkdev_request* write_req =                                   
    malloc (sizeof (rtems_blkdev_request) +                           
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
 8009cf0:	78 01 08 01 	mvhi r1,0x801                                  
 8009cf4:	38 21 91 bc 	ori r1,r1,0x91bc                               
 8009cf8:	28 21 00 04 	lw r1,(r1+4)                                   
 8009cfc:	b4 21 08 00 	add r1,r1,r1                                   
 8009d00:	b4 21 08 00 	add r1,r1,r1                                   
 8009d04:	b4 21 08 00 	add r1,r1,r1                                   
 8009d08:	b4 21 08 00 	add r1,r1,r1                                   
   * I am disappointment at finding code like this in RTEMS. The request should
   * have been a rtems_chain_control. Simple, fast and less storage as the node
   * is already part of the buffer structure.                         
   */                                                                 
  rtems_blkdev_request* write_req =                                   
    malloc (sizeof (rtems_blkdev_request) +                           
 8009d0c:	34 21 00 18 	addi r1,r1,24                                  
 8009d10:	fb ff e4 7f 	calli 8002f0c <malloc>                         
 8009d14:	b8 20 58 00 	mv r11,r1                                      
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
 8009d18:	44 20 00 0d 	be r1,r0,8009d4c <rtems_bdbuf_swapout_writereq_alloc+0x68><== NEVER TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
                                                                      
  write_req->req = RTEMS_BLKDEV_REQ_WRITE;                            
  write_req->done = rtems_bdbuf_transfer_done;                        
 8009d1c:	78 01 08 00 	mvhi r1,0x800                                  
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
                                                                      
  write_req->req = RTEMS_BLKDEV_REQ_WRITE;                            
 8009d20:	34 02 00 01 	mvi r2,1                                       
  write_req->done = rtems_bdbuf_transfer_done;                        
 8009d24:	38 21 9c 74 	ori r1,r1,0x9c74                               
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
                                                                      
  write_req->req = RTEMS_BLKDEV_REQ_WRITE;                            
 8009d28:	59 62 00 00 	sw (r11+0),r2                                  
  write_req->done = rtems_bdbuf_transfer_done;                        
 8009d2c:	59 61 00 04 	sw (r11+4),r1                                  
  write_req->io_task = rtems_task_self ();                            
 8009d30:	f8 00 16 58 	calli 800f690 <rtems_task_self>                
 8009d34:	59 61 00 14 	sw (r11+20),r1                                 
                                                                      
  return write_req;                                                   
}                                                                     
 8009d38:	b9 60 08 00 	mv r1,r11                                      
 8009d3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009d40:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009d44:	37 9c 00 08 	addi sp,sp,8                                   
 8009d48:	c3 a0 00 00 	ret                                            
  rtems_blkdev_request* write_req =                                   
    malloc (sizeof (rtems_blkdev_request) +                           
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
 8009d4c:	34 01 00 09 	mvi r1,9                                       <== NOT EXECUTED
 8009d50:	fb ff fe d8 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
 8009d54:	e3 ff ff f2 	bi 8009d1c <rtems_bdbuf_swapout_writereq_alloc+0x38><== NOT EXECUTED
                                                                      

0800bff4 <rtems_bdbuf_sync>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_bdbuf_sync (rtems_bdbuf_buffer *bd) {
 800bff4:	37 9c ff e0 	addi sp,sp,-32                                 
 800bff8:	5b 8b 00 20 	sw (sp+32),r11                                 
 800bffc:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800c000:	5b 8d 00 18 	sw (sp+24),r13                                 
 800c004:	5b 8e 00 14 	sw (sp+20),r14                                 
 800c008:	5b 8f 00 10 	sw (sp+16),r15                                 
 800c00c:	5b 90 00 0c 	sw (sp+12),r16                                 
 800c010:	5b 91 00 08 	sw (sp+8),r17                                  
 800c014:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c018:	b8 20 58 00 	mv r11,r1                                      
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 800c01c:	34 01 00 09 	mvi r1,9                                       
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
 800c020:	45 60 00 0d 	be r11,r0,800c054 <rtems_bdbuf_sync+0x60>      <== NEVER TAKEN
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
 800c024:	fb ff f6 36 	calli 80098fc <rtems_bdbuf_lock_cache>         
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "sync");              
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
 800c028:	29 61 00 20 	lw r1,(r11+32)                                 
 800c02c:	34 02 00 03 	mvi r2,3                                       
 800c030:	54 41 00 13 	bgu r2,r1,800c07c <rtems_bdbuf_sync+0x88>      <== NEVER TAKEN
 800c034:	34 02 00 05 	mvi r2,5                                       
 800c038:	50 41 00 16 	bgeu r2,r1,800c090 <rtems_bdbuf_sync+0x9c>     
 800c03c:	34 02 00 06 	mvi r2,6                                       
 800c040:	5c 22 00 0f 	bne r1,r2,800c07c <rtems_bdbuf_sync+0x88>      <== NEVER TAKEN
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_sync_after_access (bd);                             
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
 800c044:	b9 60 08 00 	mv r1,r11                                      
 800c048:	fb ff f8 94 	calli 800a298 <rtems_bdbuf_discard_buffer_after_access>
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800c04c:	fb ff f6 58 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c050:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 800c054:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c058:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800c05c:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800c060:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800c064:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800c068:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800c06c:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800c070:	2b 91 00 08 	lw r17,(sp+8)                                  
 800c074:	37 9c 00 20 	addi sp,sp,32                                  
 800c078:	c3 a0 00 00 	ret                                            
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_5);
 800c07c:	34 02 00 11 	mvi r2,17                                      <== NOT EXECUTED
 800c080:	fb ff f6 33 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
 800c084:	fb ff f6 4a 	calli 80099ac <rtems_bdbuf_unlock_cache>       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800c088:	34 01 00 00 	mvi r1,0                                       
 800c08c:	e3 ff ff f2 	bi 800c054 <rtems_bdbuf_sync+0x60>             
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 800c090:	78 0c 08 01 	mvhi r12,0x801                                 
 800c094:	39 8c a7 74 	ori r12,r12,0xa774                             
 800c098:	29 82 00 60 	lw r2,(r12+96)                                 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800c09c:	34 03 00 08 	mvi r3,8                                       
                                                                      
  the_node->next = tail;                                              
 800c0a0:	78 01 08 01 	mvhi r1,0x801                                  
 800c0a4:	59 63 00 20 	sw (r11+32),r3                                 
 800c0a8:	38 21 a7 d0 	ori r1,r1,0xa7d0                               
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
                                                                      
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
 800c0ac:	29 63 00 24 	lw r3,(r11+36)                                 
 800c0b0:	59 61 00 00 	sw (r11+0),r1                                  
  tail->previous = the_node;                                          
 800c0b4:	59 8b 00 60 	sw (r12+96),r11                                
  old_last->next = the_node;                                          
 800c0b8:	58 4b 00 00 	sw (r2+0),r11                                  
  the_node->previous = old_last;                                      
 800c0bc:	59 62 00 04 	sw (r11+4),r2                                  
 800c0c0:	5c 60 00 23 	bne r3,r0,800c14c <rtems_bdbuf_sync+0x158>     
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        return;                                                       
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800c0c4:	78 0d 08 01 	mvhi r13,0x801                                 
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
                                                                      
  rtems_bdbuf_wake_swapper ();                                        
 800c0c8:	fb ff f6 5c 	calli 8009a38 <rtems_bdbuf_wake_swapper>       
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c0cc:	34 0e 00 07 	mvi r14,7                                      
 800c0d0:	34 11 00 0a 	mvi r17,10                                     
void rtems_bdbuf_reset_device_stats (rtems_disk_device *dd)           
{                                                                     
  rtems_bdbuf_lock_cache ();                                          
  memset (&dd->stats, 0, sizeof(dd->stats));                          
  rtems_bdbuf_unlock_cache ();                                        
}                                                                     
 800c0d4:	35 70 00 24 	addi r16,r11,36                                
 800c0d8:	35 6f 00 28 	addi r15,r11,40                                
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        return;                                                       
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800c0dc:	39 ad a7 e0 	ori r13,r13,0xa7e0                             
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c0e0:	29 64 00 20 	lw r4,(r11+32)                                 
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
 800c0e4:	34 02 00 15 	mvi r2,21                                      
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c0e8:	34 03 00 01 	mvi r3,1                                       
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
 800c0ec:	b8 80 08 00 	mv r1,r4                                       
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c0f0:	5c 80 00 07 	bne r4,r0,800c10c <rtems_bdbuf_sync+0x118>     <== ALWAYS TAKEN
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
 800c0f4:	fb ff f6 16 	calli 800994c <rtems_bdbuf_fatal_with_state>   <== NOT EXECUTED
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c0f8:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
 800c0fc:	34 02 00 15 	mvi r2,21                                      <== NOT EXECUTED
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c100:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
 800c104:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c108:	44 80 ff fb 	be r4,r0,800c0f4 <rtems_bdbuf_sync+0x100>      <== NOT EXECUTED
 800c10c:	51 c4 00 07 	bgeu r14,r4,800c128 <rtems_bdbuf_sync+0x134>   
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        return;                                                       
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800c110:	b9 a0 18 00 	mv r3,r13                                      
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
 800c114:	54 91 ff f8 	bgu r4,r17,800c0f4 <rtems_bdbuf_sync+0x100>    <== NEVER TAKEN
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        return;                                                       
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
 800c118:	ba 00 08 00 	mv r1,r16                                      
 800c11c:	b9 e0 10 00 	mv r2,r15                                      
 800c120:	fb ff f7 1f 	calli 8009d9c <rtems_bdbuf_wait.clone.15>      
 800c124:	e3 ff ff ef 	bi 800c0e0 <rtems_bdbuf_sync+0xec>             
  rtems_bdbuf_wait_for_sync_done (bd);                                
                                                                      
  /*                                                                  
   * We may have created a cached or empty buffer which may be recycled.
   */                                                                 
  if (bd->waiters == 0                                                
 800c128:	29 61 00 24 	lw r1,(r11+36)                                 
 800c12c:	5c 20 ff d6 	bne r1,r0,800c084 <rtems_bdbuf_sync+0x90>      
        && (bd->state == RTEMS_BDBUF_STATE_CACHED                     
          || bd->state == RTEMS_BDBUF_STATE_EMPTY))                   
 800c130:	34 81 ff ff 	addi r1,r4,-1                                  
                                                                      
  /*                                                                  
   * We may have created a cached or empty buffer which may be recycled.
   */                                                                 
  if (bd->waiters == 0                                                
        && (bd->state == RTEMS_BDBUF_STATE_CACHED                     
 800c134:	54 23 ff d4 	bgu r1,r3,800c084 <rtems_bdbuf_sync+0x90>      <== NEVER TAKEN
          || bd->state == RTEMS_BDBUF_STATE_EMPTY))                   
  {                                                                   
    if (bd->state == RTEMS_BDBUF_STATE_EMPTY)                         
 800c138:	44 83 00 09 	be r4,r3,800c15c <rtems_bdbuf_sync+0x168>      
    {                                                                 
      rtems_bdbuf_remove_from_tree (bd);                              
      rtems_bdbuf_make_free_and_add_to_lru_list (bd);                 
    }                                                                 
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
 800c13c:	78 01 08 01 	mvhi r1,0x801                                  
 800c140:	38 21 a7 e8 	ori r1,r1,0xa7e8                               
 800c144:	fb ff f6 2e 	calli 80099fc <rtems_bdbuf_wake>               
 800c148:	e3 ff ff cf 	bi 800c084 <rtems_bdbuf_sync+0x90>             
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
                                                                      
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
 800c14c:	78 01 08 01 	mvhi r1,0x801                                  
 800c150:	38 21 a7 d8 	ori r1,r1,0xa7d8                               
 800c154:	fb ff f6 2a 	calli 80099fc <rtems_bdbuf_wake>               
 800c158:	e3 ff ff db 	bi 800c0c4 <rtems_bdbuf_sync+0xd0>             
        && (bd->state == RTEMS_BDBUF_STATE_CACHED                     
          || bd->state == RTEMS_BDBUF_STATE_EMPTY))                   
  {                                                                   
    if (bd->state == RTEMS_BDBUF_STATE_EMPTY)                         
    {                                                                 
      rtems_bdbuf_remove_from_tree (bd);                              
 800c15c:	b9 60 08 00 	mv r1,r11                                      
 800c160:	fb ff f7 2a 	calli 8009e08 <rtems_bdbuf_remove_from_tree>   
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 800c164:	29 82 00 40 	lw r2,(r12+64)                                 
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 800c168:	78 01 08 01 	mvhi r1,0x801                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
 800c16c:	59 60 00 20 	sw (r11+32),r0                                 
 800c170:	38 21 a7 b4 	ori r1,r1,0xa7b4                               
 800c174:	59 61 00 04 	sw (r11+4),r1                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 800c178:	59 8b 00 40 	sw (r12+64),r11                                
  the_node->next        = before_node;                                
 800c17c:	59 62 00 00 	sw (r11+0),r2                                  
  before_node->previous = the_node;                                   
 800c180:	58 4b 00 04 	sw (r2+4),r11                                  
 800c184:	e3 ff ff ee 	bi 800c13c <rtems_bdbuf_sync+0x148>            
                                                                      

0800997c <rtems_bdbuf_unlock>: * @param lock The mutex to unlock. * @param fatal_error_code The error code if the call fails. */ static void rtems_bdbuf_unlock (rtems_id lock, uint32_t fatal_error_code) {
 800997c:	37 9c ff f8 	addi sp,sp,-8                                  
 8009980:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009984:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009988:	b8 40 58 00 	mv r11,r2                                      
  rtems_status_code sc = rtems_semaphore_release (lock);              
 800998c:	fb ff ee ae 	calli 8005444 <rtems_semaphore_release>        
  if (sc != RTEMS_SUCCESSFUL)                                         
 8009990:	44 20 00 03 	be r1,r0,800999c <rtems_bdbuf_unlock+0x20>     <== ALWAYS TAKEN
    rtems_bdbuf_fatal (fatal_error_code);                             
 8009994:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8009998:	fb ff ff c6 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 800999c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80099a0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80099a4:	37 9c 00 08 	addi sp,sp,8                                   
 80099a8:	c3 a0 00 00 	ret                                            
                                                                      

08009c9c <rtems_bdbuf_wait_for_event>: return RTEMS_UNSATISFIED; } static void rtems_bdbuf_wait_for_event (rtems_event_set event) {
 8009c9c:	37 9c ff f4 	addi sp,sp,-12                                 
 8009ca0:	5b 8b 00 08 	sw (sp+8),r11                                  
 8009ca4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_event_set   out = 0;                                          
                                                                      
  sc = rtems_event_receive (event,                                    
 8009ca8:	34 02 00 00 	mvi r2,0                                       
 8009cac:	34 03 00 00 	mvi r3,0                                       
 8009cb0:	37 84 00 0c 	addi r4,sp,12                                  
  return RTEMS_UNSATISFIED;                                           
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_event (rtems_event_set event)                    
{                                                                     
 8009cb4:	b8 20 58 00 	mv r11,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_event_set   out = 0;                                          
 8009cb8:	5b 80 00 0c 	sw (sp+12),r0                                  
                                                                      
  sc = rtems_event_receive (event,                                    
 8009cbc:	f8 00 13 d5 	calli 800ec10 <rtems_event_receive>            
                            RTEMS_EVENT_ALL | RTEMS_WAIT,             
                            RTEMS_NO_TIMEOUT,                         
                            &out);                                    
                                                                      
  if (sc != RTEMS_SUCCESSFUL || out != event)                         
 8009cc0:	5c 20 00 03 	bne r1,r0,8009ccc <rtems_bdbuf_wait_for_event+0x30><== NEVER TAKEN
 8009cc4:	2b 81 00 0c 	lw r1,(sp+12)                                  
 8009cc8:	44 2b 00 03 	be r1,r11,8009cd4 <rtems_bdbuf_wait_for_event+0x38><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);                  
 8009ccc:	34 01 00 1c 	mvi r1,28                                      <== NOT EXECUTED
 8009cd0:	fb ff fe f8 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 8009cd4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009cd8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009cdc:	37 9c 00 0c 	addi sp,sp,12                                  
 8009ce0:	c3 a0 00 00 	ret                                            
                                                                      

08009b48 <rtems_bdbuf_wait_for_transient_event>: rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT); } static void rtems_bdbuf_wait_for_transient_event (void) {
 8009b48:	37 9c ff f8 	addi sp,sp,-8                                  
 8009b4c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_interval ticks                                                
)                                                                     
{                                                                     
  rtems_event_set event_out;                                          
                                                                      
  return rtems_event_system_receive(                                  
 8009b50:	78 01 80 00 	mvhi r1,0x8000                                 
 8009b54:	34 02 00 00 	mvi r2,0                                       
 8009b58:	34 03 00 00 	mvi r3,0                                       
 8009b5c:	37 84 00 08 	addi r4,sp,8                                   
 8009b60:	f8 00 15 ba 	calli 800f248 <rtems_event_system_receive>     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_event_transient_receive (RTEMS_WAIT, RTEMS_NO_TIMEOUT);  
  if (sc != RTEMS_SUCCESSFUL)                                         
 8009b64:	44 20 00 03 	be r1,r0,8009b70 <rtems_bdbuf_wait_for_transient_event+0x28><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_TRANS_EVNT);            
 8009b68:	34 01 00 1d 	mvi r1,29                                      <== NOT EXECUTED
 8009b6c:	fb ff ff 51 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 8009b70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009b74:	37 9c 00 08 	addi sp,sp,8                                   
 8009b78:	c3 a0 00 00 	ret                                            
                                                                      

080099fc <rtems_bdbuf_wake>: * Wake a blocked resource. The resource has a counter that lets us know if * there are any waiters. */ static void rtems_bdbuf_wake (const rtems_bdbuf_waiters *waiters) {
 80099fc:	37 9c ff fc 	addi sp,sp,-4                                  
 8009a00:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (waiters->count > 0)                                             
 8009a04:	28 22 00 00 	lw r2,(r1+0)                                   
 8009a08:	5c 40 00 04 	bne r2,r0,8009a18 <rtems_bdbuf_wake+0x1c>      
  {                                                                   
    sc = rtems_semaphore_flush (waiters->sema);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAKE);               
  }                                                                   
}                                                                     
 8009a0c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009a10:	37 9c 00 04 	addi sp,sp,4                                   
 8009a14:	c3 a0 00 00 	ret                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (waiters->count > 0)                                             
  {                                                                   
    sc = rtems_semaphore_flush (waiters->sema);                       
 8009a18:	28 21 00 04 	lw r1,(r1+4)                                   
 8009a1c:	f8 00 15 dd 	calli 800f190 <rtems_semaphore_flush>          
    if (sc != RTEMS_SUCCESSFUL)                                       
 8009a20:	44 20 ff fb 	be r1,r0,8009a0c <rtems_bdbuf_wake+0x10>       <== ALWAYS TAKEN
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAKE);               
 8009a24:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
 8009a28:	fb ff ff a2 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
  }                                                                   
}                                                                     
 8009a2c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8009a30:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8009a34:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08009a38 <rtems_bdbuf_wake_swapper>: static void rtems_bdbuf_wake_swapper (void) {
 8009a38:	37 9c ff fc 	addi sp,sp,-4                                  
 8009a3c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = rtems_event_send (bdbuf_cache.swapout,       
 8009a40:	78 01 08 01 	mvhi r1,0x801                                  
 8009a44:	38 21 a7 74 	ori r1,r1,0xa774                               
 8009a48:	28 21 00 00 	lw r1,(r1+0)                                   
 8009a4c:	34 02 00 04 	mvi r2,4                                       
 8009a50:	f8 00 14 e7 	calli 800edec <rtems_event_send>               
                                           RTEMS_BDBUF_SWAPOUT_SYNC); 
  if (sc != RTEMS_SUCCESSFUL)                                         
 8009a54:	44 20 00 03 	be r1,r0,8009a60 <rtems_bdbuf_wake_swapper+0x28><== ALWAYS TAKEN
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_1);                  
 8009a58:	34 01 00 0b 	mvi r1,11                                      <== NOT EXECUTED
 8009a5c:	fb ff ff 95 	calli 80098b0 <rtems_bdbuf_fatal>              <== NOT EXECUTED
}                                                                     
 8009a60:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009a64:	37 9c 00 04 	addi sp,sp,4                                   
 8009a68:	c3 a0 00 00 	ret                                            
                                                                      

08000dfc <rtems_bdpart_create>: const rtems_bdpart_format *format, rtems_bdpart_partition *pt, const unsigned *dist, size_t count ) {
 8000dfc:	37 9c ff c0 	addi sp,sp,-64                                 
 8000e00:	5b 8b 00 3c 	sw (sp+60),r11                                 
 8000e04:	5b 8c 00 38 	sw (sp+56),r12                                 
 8000e08:	5b 8d 00 34 	sw (sp+52),r13                                 
 8000e0c:	5b 8e 00 30 	sw (sp+48),r14                                 
 8000e10:	5b 8f 00 2c 	sw (sp+44),r15                                 
 8000e14:	5b 90 00 28 	sw (sp+40),r16                                 
 8000e18:	5b 91 00 24 	sw (sp+36),r17                                 
 8000e1c:	5b 92 00 20 	sw (sp+32),r18                                 
 8000e20:	5b 93 00 1c 	sw (sp+28),r19                                 
 8000e24:	5b 94 00 18 	sw (sp+24),r20                                 
 8000e28:	5b 95 00 14 	sw (sp+20),r21                                 
 8000e2c:	5b 96 00 10 	sw (sp+16),r22                                 
 8000e30:	5b 97 00 0c 	sw (sp+12),r23                                 
 8000e34:	5b 98 00 08 	sw (sp+8),r24                                  
 8000e38:	5b 9d 00 04 	sw (sp+4),ra                                   
 8000e3c:	b8 40 70 00 	mv r14,r2                                      
 8000e40:	b8 60 80 00 	mv r16,r3                                      
 8000e44:	b8 80 58 00 	mv r11,r4                                      
 8000e48:	b8 a0 60 00 	mv r12,r5                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
 8000e4c:	44 40 00 03 	be r2,r0,8000e58 <rtems_bdpart_create+0x5c>    <== NEVER TAKEN
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
 8000e50:	28 42 00 00 	lw r2,(r2+0)                                   
 8000e54:	44 40 00 6c 	be r2,r0,8001004 <rtems_bdpart_create+0x208>   
    && format->mbr.dos_compatibility;                                 
  rtems_blkdev_bnum disk_end = 0;                                     
 8000e58:	5b 80 00 40 	sw (sp+64),r0                                  <== NOT EXECUTED
  const unsigned *dist,                                               
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
 8000e5c:	34 11 00 00 	mvi r17,0                                      <== NOT EXECUTED
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum pos = 0;                                          
  rtems_blkdev_bnum dist_sum = 0;                                     
  rtems_blkdev_bnum record_space =                                    
 8000e60:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
 8000e64:	34 0d 00 00 	mvi r13,0                                      
  rtems_blkdev_bnum overhead = 0;                                     
  rtems_blkdev_bnum free_space = 0;                                   
  size_t i = 0;                                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
 8000e68:	45 80 00 4e 	be r12,r0,8000fa0 <rtems_bdpart_create+0x1a4>  <== NEVER TAKEN
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || dist == NULL) {                 
 8000e6c:	66 03 00 00 	cmpei r3,r16,0                                 
 8000e70:	65 c2 00 00 	cmpei r2,r14,0                                 
    return RTEMS_INVALID_ADDRESS;                                     
 8000e74:	34 0d 00 09 	mvi r13,9                                      
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || dist == NULL) {                 
 8000e78:	b8 62 10 00 	or r2,r3,r2                                    
 8000e7c:	5c 40 00 49 	bne r2,r0,8000fa0 <rtems_bdpart_create+0x1a4>  <== NEVER TAKEN
 8000e80:	45 62 00 48 	be r11,r2,8000fa0 <rtems_bdpart_create+0x1a4>  <== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, NULL, NULL, &disk_end); 
 8000e84:	34 03 00 00 	mvi r3,0                                       
 8000e88:	37 84 00 40 	addi r4,sp,64                                  
 8000e8c:	f8 00 01 a3 	calli 8001518 <rtems_bdpart_get_disk_data>     
 8000e90:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8000e94:	5c 20 00 43 	bne r1,r0,8000fa0 <rtems_bdpart_create+0x1a4>  <== NEVER TAKEN
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
 8000e98:	29 73 00 00 	lw r19,(r11+0)                                 
                                                                      
    if (dist_sum < prev_sum) {                                        
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
                                                                      
    if (dist [i] == 0) {                                              
 8000e9c:	46 61 00 60 	be r19,r1,800101c <rtems_bdpart_create+0x220>  <== NEVER TAKEN
 8000ea0:	b9 60 90 00 	mv r18,r11                                     
 8000ea4:	b9 60 38 00 	mv r7,r11                                      
 8000ea8:	34 06 00 00 	mvi r6,0                                       
 8000eac:	ba 60 58 00 	mv r11,r19                                     
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
 8000eb0:	34 c6 00 01 	addi r6,r6,1                                   
 8000eb4:	55 86 00 4d 	bgu r12,r6,8000fe8 <rtems_bdpart_create+0x1ec> 
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
 8000eb8:	29 c1 00 00 	lw r1,(r14+0)                                  
 8000ebc:	5c 20 00 5a 	bne r1,r0,8001024 <rtems_bdpart_create+0x228>  <== NEVER TAKEN
    return RTEMS_NOT_IMPLEMENTED;                                     
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
 8000ec0:	5e 21 00 64 	bne r17,r1,8001050 <rtems_bdpart_create+0x254> 
 8000ec4:	2b 98 00 40 	lw r24,(sp+64)                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * In case we need an extended partition and logical partitions we have to
   * account for the space of each EBR.                               
   */                                                                 
  if (count > 4) {                                                    
 8000ec8:	34 01 00 04 	mvi r1,4                                       
                                                                      
  /*                                                                  
   * We need at least space for the MBR and the compatibility space for the
   * first primary partition.                                         
   */                                                                 
  overhead += record_space;                                           
 8000ecc:	b9 e0 b0 00 	mv r22,r15                                     
                                                                      
  /*                                                                  
   * In case we need an extended partition and logical partitions we have to
   * account for the space of each EBR.                               
   */                                                                 
  if (count > 4) {                                                    
 8000ed0:	50 2c 00 05 	bgeu r1,r12,8000ee4 <rtems_bdpart_create+0xe8> <== NEVER TAKEN
    overhead += (count - 3) * record_space;                           
 8000ed4:	b9 e0 08 00 	mv r1,r15                                      
 8000ed8:	35 82 ff fd 	addi r2,r12,-3                                 
 8000edc:	f8 00 95 b0 	calli 802659c <__mulsi3>                       
 8000ee0:	b4 2f b0 00 	add r22,r1,r15                                 
                                                                      
  /*                                                                  
   * Account space to align every partition on cylinder boundaries if 
   * necessary.                                                       
   */                                                                 
  if (dos_compatibility) {                                            
 8000ee4:	46 20 00 05 	be r17,r0,8000ef8 <rtems_bdpart_create+0xfc>   <== NEVER TAKEN
    overhead += (count - 1) * record_space;                           
 8000ee8:	b9 e0 08 00 	mv r1,r15                                      
 8000eec:	35 82 ff ff 	addi r2,r12,-1                                 
 8000ef0:	f8 00 95 ab 	calli 802659c <__mulsi3>                       
 8000ef4:	b6 c1 b0 00 	add r22,r22,r1                                 
  }                                                                   
                                                                      
  /* Check disk space */                                              
  if ((overhead + count) > disk_end) {                                
 8000ef8:	b6 cc 08 00 	add r1,r22,r12                                 
 8000efc:	54 38 00 5c 	bgu r1,r24,800106c <rtems_bdpart_create+0x270> <== NEVER TAKEN
                                                                      
  /* Begin of first primary partition */                              
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
 8000f00:	cb 16 b0 00 	sub r22,r24,r22                                
                                                                      
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
 8000f04:	ba c0 08 00 	mv r1,r22                                      
 8000f08:	ba 60 10 00 	mv r2,r19                                      
 8000f0c:	f8 00 95 a4 	calli 802659c <__mulsi3>                       
    if (s < free_space || s < dist [i]) {                             
 8000f10:	56 c1 00 43 	bgu r22,r1,800101c <rtems_bdpart_create+0x220> <== NEVER TAKEN
 8000f14:	56 61 00 42 	bgu r19,r1,800101c <rtems_bdpart_create+0x220> <== NEVER TAKEN
 8000f18:	75 97 00 04 	cmpgui r23,r12,0x4                             
 8000f1c:	ba 00 a8 00 	mv r21,r16                                     
 8000f20:	ba 00 a0 00 	mv r20,r16                                     
  if ((overhead + count) > disk_end) {                                
    return RTEMS_IO_ERROR;                                            
  }                                                                   
                                                                      
  /* Begin of first primary partition */                              
  pos = record_space;                                                 
 8000f24:	b9 e0 70 00 	mv r14,r15                                     
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
 8000f28:	34 13 00 00 	mvi r19,0                                      
    rtems_blkdev_bnum s = free_space * dist [i];                      
    if (s < free_space || s < dist [i]) {                             
      /* TODO: Calculate without overflow */                          
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
    s /= dist_sum;                                                    
 8000f2c:	b9 60 10 00 	mv r2,r11                                      
 8000f30:	f8 00 96 00 	calli 8026730 <__udivsi3>                      
 8000f34:	b8 20 88 00 	mv r17,r1                                      
    if (s == 0) {                                                     
      s = 1;                                                          
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
 8000f38:	b9 e0 10 00 	mv r2,r15                                      
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
    s /= dist_sum;                                                    
                                                                      
    /* Ensure that the partition is not empty */                      
    if (s == 0) {                                                     
 8000f3c:	5c 20 00 02 	bne r1,r0,8000f44 <rtems_bdpart_create+0x148>  <== ALWAYS TAKEN
      s = 1;                                                          
 8000f40:	34 11 00 01 	mvi r17,1                                      <== NOT EXECUTED
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
 8000f44:	ba 20 08 00 	mv r1,r17                                      
 8000f48:	f8 00 96 0a 	calli 8026770 <__umodsi3>                      
                                                                      
    /* Reserve space for the EBR if necessary */                      
    if (count > 4 && i > 2) {                                         
 8000f4c:	76 62 00 02 	cmpgui r2,r19,0x2                              
    if (s == 0) {                                                     
      s = 1;                                                          
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
 8000f50:	b6 2f 88 00 	add r17,r17,r15                                
                                                                      
    /* Reserve space for the EBR if necessary */                      
    if (count > 4 && i > 2) {                                         
 8000f54:	a2 e2 10 00 	and r2,r23,r2                                  
    if (s == 0) {                                                     
      s = 1;                                                          
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
 8000f58:	ca 21 88 00 	sub r17,r17,r1                                 
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
 8000f5c:	36 73 00 01 	addi r19,r19,1                                 
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
 8000f60:	ba c0 08 00 	mv r1,r22                                      
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
                                                                      
    /* Reserve space for the EBR if necessary */                      
    if (count > 4 && i > 2) {                                         
 8000f64:	44 40 00 02 	be r2,r0,8000f6c <rtems_bdpart_create+0x170>   
      pos += record_space;                                            
 8000f68:	b5 cf 70 00 	add r14,r14,r15                                
    }                                                                 
                                                                      
    /* Partition begin and end */                                     
    p->begin = pos;                                                   
 8000f6c:	5a 8e 00 00 	sw (r20+0),r14                                 
    pos += s;                                                         
 8000f70:	b5 d1 70 00 	add r14,r14,r17                                
    p->end = pos;                                                     
 8000f74:	5a 8e 00 04 	sw (r20+4),r14                                 
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
 8000f78:	55 93 00 2d 	bgu r12,r19,800102c <rtems_bdpart_create+0x230><== NEVER TAKEN
    pos += s;                                                         
    p->end = pos;                                                     
  }                                                                   
                                                                      
  /* Expand the last partition to the disk end */                     
  pt [count - 1].end = disk_end;                                      
 8000f7c:	35 8c ff ff 	addi r12,r12,-1                                
 8000f80:	b5 8c 08 00 	add r1,r12,r12                                 
 8000f84:	b4 2c 08 00 	add r1,r1,r12                                  
 8000f88:	b4 21 08 00 	add r1,r1,r1                                   
 8000f8c:	b4 21 08 00 	add r1,r1,r1                                   
 8000f90:	b4 21 08 00 	add r1,r1,r1                                   
 8000f94:	b4 21 08 00 	add r1,r1,r1                                   
 8000f98:	b6 01 08 00 	add r1,r16,r1                                  
 8000f9c:	58 38 00 04 	sw (r1+4),r24                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8000fa0:	b9 a0 08 00 	mv r1,r13                                      
 8000fa4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000fa8:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 8000fac:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8000fb0:	2b 8d 00 34 	lw r13,(sp+52)                                 
 8000fb4:	2b 8e 00 30 	lw r14,(sp+48)                                 
 8000fb8:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 8000fbc:	2b 90 00 28 	lw r16,(sp+40)                                 
 8000fc0:	2b 91 00 24 	lw r17,(sp+36)                                 
 8000fc4:	2b 92 00 20 	lw r18,(sp+32)                                 
 8000fc8:	2b 93 00 1c 	lw r19,(sp+28)                                 
 8000fcc:	2b 94 00 18 	lw r20,(sp+24)                                 
 8000fd0:	2b 95 00 14 	lw r21,(sp+20)                                 
 8000fd4:	2b 96 00 10 	lw r22,(sp+16)                                 
 8000fd8:	2b 97 00 0c 	lw r23,(sp+12)                                 
 8000fdc:	2b 98 00 08 	lw r24,(sp+8)                                  
 8000fe0:	37 9c 00 40 	addi sp,sp,64                                  
 8000fe4:	c3 a0 00 00 	ret                                            
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
 8000fe8:	28 e5 00 04 	lw r5,(r7+4)                                   
                                                                      
    if (dist_sum < prev_sum) {                                        
 8000fec:	34 e7 00 04 	addi r7,r7,4                                   
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
 8000ff0:	b5 65 40 00 	add r8,r11,r5                                  
                                                                      
    if (dist_sum < prev_sum) {                                        
 8000ff4:	55 68 00 0a 	bgu r11,r8,800101c <rtems_bdpart_create+0x220> <== NEVER TAKEN
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
                                                                      
    if (dist [i] == 0) {                                              
 8000ff8:	44 a0 00 09 	be r5,r0,800101c <rtems_bdpart_create+0x220>   <== NEVER TAKEN
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
 8000ffc:	b9 00 58 00 	mv r11,r8                                      
 8001000:	e3 ff ff ac 	bi 8000eb0 <rtems_bdpart_create+0xb4>          
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
 8001004:	41 c3 00 08 	lbu r3,(r14+8)                                 
 8001008:	44 62 ff 94 	be r3,r2,8000e58 <rtems_bdpart_create+0x5c>    <== NEVER TAKEN
  rtems_blkdev_bnum disk_end = 0;                                     
 800100c:	5b 80 00 40 	sw (sp+64),r0                                  
  const unsigned *dist,                                               
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
 8001010:	34 11 00 01 	mvi r17,1                                      
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum pos = 0;                                          
  rtems_blkdev_bnum dist_sum = 0;                                     
  rtems_blkdev_bnum record_space =                                    
 8001014:	34 0f 00 3f 	mvi r15,63                                     
 8001018:	e3 ff ff 93 	bi 8000e64 <rtems_bdpart_create+0x68>          
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    if (s < free_space || s < dist [i]) {                             
      /* TODO: Calculate without overflow */                          
      return RTEMS_INVALID_NUMBER;                                    
 800101c:	34 0d 00 0a 	mvi r13,10                                     <== NOT EXECUTED
 8001020:	e3 ff ff e0 	bi 8000fa0 <rtems_bdpart_create+0x1a4>         <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
    return RTEMS_NOT_IMPLEMENTED;                                     
 8001024:	34 0d 00 18 	mvi r13,24                                     <== NOT EXECUTED
 8001028:	e3 ff ff de 	bi 8000fa0 <rtems_bdpart_create+0x1a4>         <== NOT EXECUTED
                                                                      
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
 800102c:	2a 51 00 04 	lw r17,(r18+4)                                 
    if (s < free_space || s < dist [i]) {                             
 8001030:	36 b5 00 30 	addi r21,r21,48                                
 8001034:	36 52 00 04 	addi r18,r18,4                                 
                                                                      
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
 8001038:	ba 20 10 00 	mv r2,r17                                      
 800103c:	f8 00 95 58 	calli 802659c <__mulsi3>                       
    if (s < free_space || s < dist [i]) {                             
 8001040:	56 c1 ff f7 	bgu r22,r1,800101c <rtems_bdpart_create+0x220> <== NEVER TAKEN
 8001044:	56 21 ff f6 	bgu r17,r1,800101c <rtems_bdpart_create+0x220> <== NEVER TAKEN
 8001048:	ba a0 a0 00 	mv r20,r21                                     
 800104c:	e3 ff ff b8 	bi 8000f2c <rtems_bdpart_create+0x130>         
    return RTEMS_NOT_IMPLEMENTED;                                     
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
 8001050:	2b 98 00 40 	lw r24,(sp+64)                                 
 8001054:	b9 e0 10 00 	mv r2,r15                                      
 8001058:	bb 00 08 00 	mv r1,r24                                      
 800105c:	f8 00 95 c5 	calli 8026770 <__umodsi3>                      
 8001060:	cb 01 c0 00 	sub r24,r24,r1                                 
 8001064:	5b 98 00 40 	sw (sp+64),r24                                 
 8001068:	e3 ff ff 98 	bi 8000ec8 <rtems_bdpart_create+0xcc>          
    overhead += (count - 1) * record_space;                           
  }                                                                   
                                                                      
  /* Check disk space */                                              
  if ((overhead + count) > disk_end) {                                
    return RTEMS_IO_ERROR;                                            
 800106c:	34 0d 00 1b 	mvi r13,27                                     <== NOT EXECUTED
 8001070:	e3 ff ff cc 	bi 8000fa0 <rtems_bdpart_create+0x1a4>         <== NOT EXECUTED
                                                                      

08001074 <rtems_bdpart_dump>: { uuid_unparse_lower( type, str); } void rtems_bdpart_dump( const rtems_bdpart_partition *pt, size_t count) {
 8001074:	37 9c ff 84 	addi sp,sp,-124                                
 8001078:	5b 8b 00 44 	sw (sp+68),r11                                 
 800107c:	5b 8c 00 40 	sw (sp+64),r12                                 
 8001080:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8001084:	5b 8e 00 38 	sw (sp+56),r14                                 
 8001088:	5b 8f 00 34 	sw (sp+52),r15                                 
 800108c:	5b 90 00 30 	sw (sp+48),r16                                 
 8001090:	5b 91 00 2c 	sw (sp+44),r17                                 
 8001094:	5b 92 00 28 	sw (sp+40),r18                                 
 8001098:	5b 93 00 24 	sw (sp+36),r19                                 
 800109c:	5b 94 00 20 	sw (sp+32),r20                                 
 80010a0:	5b 95 00 1c 	sw (sp+28),r21                                 
 80010a4:	5b 96 00 18 	sw (sp+24),r22                                 
 80010a8:	5b 97 00 14 	sw (sp+20),r23                                 
 80010ac:	5b 98 00 10 	sw (sp+16),r24                                 
 80010b0:	5b 99 00 0c 	sw (sp+12),r25                                 
 80010b4:	5b 9b 00 08 	sw (sp+8),fp                                   
 80010b8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80010bc:	b8 40 90 00 	mv r18,r2                                      
  size_t i = 0;                                                       
                                                                      
  printf(                                                             
 80010c0:	78 02 08 02 	mvhi r2,0x802                                  
{                                                                     
  uuid_unparse_lower( type, str);                                     
}                                                                     
                                                                      
void rtems_bdpart_dump( const rtems_bdpart_partition *pt, size_t count)
{                                                                     
 80010c4:	b8 20 58 00 	mv r11,r1                                      
  size_t i = 0;                                                       
                                                                      
  printf(                                                             
 80010c8:	b8 40 08 00 	mv r1,r2                                       
 80010cc:	38 21 72 24 	ori r1,r1,0x7224                               
 80010d0:	f8 00 51 16 	calli 8015528 <puts>                           
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
 80010d4:	46 40 00 32 	be r18,r0,800119c <rtems_bdpart_dump+0x128>    <== NEVER TAKEN
 80010d8:	78 0e 08 02 	mvhi r14,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
 80010dc:	78 0f 08 02 	mvhi r15,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
          break;                                                      
        default:                                                      
          snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
 80010e0:	78 19 08 02 	mvhi r25,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
 80010e4:	78 15 08 02 	mvhi r21,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
 80010e8:	78 17 08 02 	mvhi r23,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
 80010ec:	78 18 08 02 	mvhi r24,0x802                                 
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
 80010f0:	78 14 08 02 	mvhi r20,0x802                                 
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
 80010f4:	78 16 08 02 	mvhi r22,0x802                                 
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
 80010f8:	34 0c 00 00 	mvi r12,0                                      
 80010fc:	37 93 00 7f 	addi r19,sp,127                                
 8001100:	39 ce 73 6c 	ori r14,r14,0x736c                             
          snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
          type = type_buffer;                                         
          break;                                                      
      }                                                               
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
 8001104:	37 90 00 48 	addi r16,sp,72                                 
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001108:	34 11 00 0b 	mvi r17,11                                     
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
 800110c:	39 ef 72 10 	ori r15,r15,0x7210                             
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
          break;                                                      
        default:                                                      
          snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
 8001110:	3b 39 73 64 	ori r25,r25,0x7364                             
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
 8001114:	3a b5 72 18 	ori r21,r21,0x7218                             
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
 8001118:	3a f7 71 fc 	ori r23,r23,0x71fc                             
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
 800111c:	3b 18 72 04 	ori r24,r24,0x7204                             
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001120:	34 1b 00 01 	mvi fp,1                                       
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
 8001124:	3a 94 71 f4 	ori r20,r20,0x71f4                             
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
 8001128:	3a d6 71 ec 	ori r22,r22,0x71ec                             
    const rtems_bdpart_partition *p = pt + i;                         
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
 800112c:	35 6d 00 08 	addi r13,r11,8                                 
 8001130:	b9 a0 08 00 	mv r1,r13                                      
 8001134:	ba 60 10 00 	mv r2,r19                                      
                                                                      
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
 8001138:	33 80 00 7f 	sb (sp+127),r0                                 
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
 800113c:	f8 00 00 ea 	calli 80014e4 <rtems_bdpart_to_mbr_partition_type>
 8001140:	44 20 00 2d 	be r1,r0,80011f4 <rtems_bdpart_dump+0x180>     <== NEVER TAKEN
      switch (type_mbr) {                                             
 8001144:	43 85 00 7f 	lbu r5,(sp+127)                                
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
 8001148:	b9 e0 20 00 	mv r4,r15                                      
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 800114c:	44 b1 00 0d 	be r5,r17,8001180 <rtems_bdpart_dump+0x10c>    <== ALWAYS TAKEN
 8001150:	54 b1 00 2e 	bgu r5,r17,8001208 <rtems_bdpart_dump+0x194>   <== NOT EXECUTED
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
 8001154:	ba 80 20 00 	mv r4,r20                                      <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001158:	44 bb 00 0a 	be r5,fp,8001180 <rtems_bdpart_dump+0x10c>     <== NOT EXECUTED
 800115c:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
 8001160:	ba c0 20 00 	mv r4,r22                                      <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001164:	44 a1 00 07 	be r5,r1,8001180 <rtems_bdpart_dump+0x10c>     <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
          break;                                                      
        default:                                                      
          snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
 8001168:	b8 a0 20 00 	mv r4,r5                                       <== NOT EXECUTED
 800116c:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8001170:	34 02 00 34 	mvi r2,52                                      <== NOT EXECUTED
 8001174:	bb 20 18 00 	mv r3,r25                                      <== NOT EXECUTED
 8001178:	f8 00 51 22 	calli 8015600 <snprintf>                       <== NOT EXECUTED
          type = type_buffer;                                         
 800117c:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    }                                                                 
                                                                      
    printf(                                                           
 8001180:	29 62 00 00 	lw r2,(r11+0)                                  
 8001184:	29 63 00 04 	lw r3,(r11+4)                                  
 8001188:	b9 c0 08 00 	mv r1,r14                                      
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
 800118c:	35 8c 00 01 	addi r12,r12,1                                 
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    }                                                                 
                                                                      
    printf(                                                           
 8001190:	f8 00 50 9b 	calli 80153fc <printf>                         
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
 8001194:	35 6b 00 30 	addi r11,r11,48                                
 8001198:	56 4c ff e5 	bgu r18,r12,800112c <rtems_bdpart_dump+0xb8>   
      p->end,                                                         
      type                                                            
    );                                                                
  }                                                                   
                                                                      
  puts( "------------+------------+-----------------------------------------------------");
 800119c:	78 01 08 02 	mvhi r1,0x802                                  
 80011a0:	38 21 73 14 	ori r1,r1,0x7314                               
 80011a4:	f8 00 50 e1 	calli 8015528 <puts>                           
}                                                                     
 80011a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80011ac:	2b 8b 00 44 	lw r11,(sp+68)                                 
 80011b0:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80011b4:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80011b8:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80011bc:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80011c0:	2b 90 00 30 	lw r16,(sp+48)                                 
 80011c4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80011c8:	2b 92 00 28 	lw r18,(sp+40)                                 
 80011cc:	2b 93 00 24 	lw r19,(sp+36)                                 
 80011d0:	2b 94 00 20 	lw r20,(sp+32)                                 
 80011d4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80011d8:	2b 96 00 18 	lw r22,(sp+24)                                 
 80011dc:	2b 97 00 14 	lw r23,(sp+20)                                 
 80011e0:	2b 98 00 10 	lw r24,(sp+16)                                 
 80011e4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80011e8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80011ec:	37 9c 00 7c 	addi sp,sp,124                                 
 80011f0:	c3 a0 00 00 	ret                                            
static void rtems_bdpart_type_to_string(                              
  const uuid_t type,                                                  
  char str [37]                                                       
)                                                                     
{                                                                     
  uuid_unparse_lower( type, str);                                     
 80011f4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80011f8:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 80011fc:	f8 00 29 57 	calli 800b758 <uuid_unparse_lower>             <== NOT EXECUTED
          type = type_buffer;                                         
          break;                                                      
      }                                                               
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
 8001200:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 8001204:	e3 ff ff df 	bi 8001180 <rtems_bdpart_dump+0x10c>           <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001208:	34 01 00 0e 	mvi r1,14                                      <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
 800120c:	ba a0 20 00 	mv r4,r21                                      <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001210:	44 a1 ff dc 	be r5,r1,8001180 <rtems_bdpart_dump+0x10c>     <== NOT EXECUTED
 8001214:	34 01 00 da 	mvi r1,218                                     <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
 8001218:	ba e0 20 00 	mv r4,r23                                      <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 800121c:	44 a1 ff d9 	be r5,r1,8001180 <rtems_bdpart_dump+0x10c>     <== NOT EXECUTED
 8001220:	34 01 00 0c 	mvi r1,12                                      <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
 8001224:	bb 00 20 00 	mv r4,r24                                      <== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
 8001228:	5c a1 ff d0 	bne r5,r1,8001168 <rtems_bdpart_dump+0xf4>     <== NOT EXECUTED
 800122c:	e3 ff ff d5 	bi 8001180 <rtems_bdpart_dump+0x10c>           <== NOT EXECUTED
                                                                      

08001518 <rtems_bdpart_get_disk_data>: const char *disk_name, int *fd_ptr, rtems_disk_device **dd_ptr, rtems_blkdev_bnum *disk_end ) {
 8001518:	37 9c ff e4 	addi sp,sp,-28                                 
 800151c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8001520:	5b 8c 00 14 	sw (sp+20),r12                                 
 8001524:	5b 8d 00 10 	sw (sp+16),r13                                 
 8001528:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800152c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8001530:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001534:	b8 40 70 00 	mv r14,r2                                      
  rtems_disk_device *dd = NULL;                                       
  rtems_blkdev_bnum disk_begin = 0;                                   
  rtems_blkdev_bnum block_size = 0;                                   
                                                                      
  /* Open device file */                                              
  fd = open( disk_name, O_RDWR);                                      
 8001538:	34 02 00 02 	mvi r2,2                                       
  const char *disk_name,                                              
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
 800153c:	b8 60 68 00 	mv r13,r3                                      
 8001540:	b8 80 78 00 	mv r15,r4                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int rv = 0;                                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
 8001544:	5b 80 00 1c 	sw (sp+28),r0                                  
  rtems_blkdev_bnum disk_begin = 0;                                   
  rtems_blkdev_bnum block_size = 0;                                   
                                                                      
  /* Open device file */                                              
  fd = open( disk_name, O_RDWR);                                      
 8001548:	f8 00 0f 9f 	calli 80053c4 <open>                           
 800154c:	b8 20 58 00 	mv r11,r1                                      
  if (fd < 0) {                                                       
 8001550:	48 01 00 17 	bg r0,r1,80015ac <rtems_bdpart_get_disk_data+0x94><== NEVER TAKEN
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
 8001554:	78 03 08 02 	mvhi r3,0x802                                  
 8001558:	38 63 70 04 	ori r3,r3,0x7004                               
 800155c:	28 62 00 00 	lw r2,(r3+0)                                   
 8001560:	37 83 00 1c 	addi r3,sp,28                                  
 8001564:	f8 00 0b f1 	calli 8004528 <ioctl>                          
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk handle */                                               
  rv = rtems_disk_fd_get_disk_device( fd, &dd);                       
  if (rv != 0) {                                                      
 8001568:	5c 20 00 11 	bne r1,r0,80015ac <rtems_bdpart_get_disk_data+0x94><== NEVER TAKEN
    sc = RTEMS_INVALID_NAME;                                          
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk begin, end and block size */                            
  disk_begin = dd->start;                                             
 800156c:	2b 85 00 1c 	lw r5,(sp+28)                                  
  *disk_end = dd->size;                                               
  block_size = dd->block_size;                                        
                                                                      
  /* Check block size */                                              
  if (block_size < RTEMS_BDPART_BLOCK_SIZE) {                         
    sc = RTEMS_IO_ERROR;                                              
 8001570:	34 0c 00 1b 	mvi r12,27                                     
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk begin, end and block size */                            
  disk_begin = dd->start;                                             
  *disk_end = dd->size;                                               
 8001574:	28 a1 00 1c 	lw r1,(r5+28)                                  
    sc = RTEMS_INVALID_NAME;                                          
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk begin, end and block size */                            
  disk_begin = dd->start;                                             
 8001578:	28 a2 00 18 	lw r2,(r5+24)                                  
  *disk_end = dd->size;                                               
 800157c:	59 e1 00 00 	sw (r15+0),r1                                  
  block_size = dd->block_size;                                        
                                                                      
  /* Check block size */                                              
  if (block_size < RTEMS_BDPART_BLOCK_SIZE) {                         
 8001580:	28 a3 00 24 	lw r3,(r5+36)                                  
 8001584:	34 01 01 ff 	mvi r1,511                                     
 8001588:	50 23 00 0a 	bgeu r1,r3,80015b0 <rtems_bdpart_get_disk_data+0x98><== NEVER TAKEN
    sc = RTEMS_IO_ERROR;                                              
    goto error;                                                       
  }                                                                   
                                                                      
  /* Check that we have do not have a logical disk */                 
  if (disk_begin != 0) {                                              
 800158c:	5c 40 00 09 	bne r2,r0,80015b0 <rtems_bdpart_get_disk_data+0x98><== NEVER TAKEN
    goto error;                                                       
  }                                                                   
                                                                      
error:                                                                
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
 8001590:	7d c1 00 00 	cmpnei r1,r14,0                                
 8001594:	44 22 00 12 	be r1,r2,80015dc <rtems_bdpart_get_disk_data+0xc4>
 8001598:	45 a0 00 11 	be r13,r0,80015dc <rtems_bdpart_get_disk_data+0xc4><== NEVER TAKEN
    *fd_ptr = fd;                                                     
 800159c:	59 cb 00 00 	sw (r14+0),r11                                 
    *dd_ptr = dd;                                                     
 80015a0:	59 a5 00 00 	sw (r13+0),r5                                  
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 80015a4:	34 0c 00 00 	mvi r12,0                                      
                                                                      
error:                                                                
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    *fd_ptr = fd;                                                     
    *dd_ptr = dd;                                                     
 80015a8:	e0 00 00 04 	bi 80015b8 <rtems_bdpart_get_disk_data+0xa0>   
  }                                                                   
                                                                      
  /* Get disk handle */                                               
  rv = rtems_disk_fd_get_disk_device( fd, &dd);                       
  if (rv != 0) {                                                      
    sc = RTEMS_INVALID_NAME;                                          
 80015ac:	34 0c 00 03 	mvi r12,3                                      <== NOT EXECUTED
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    *fd_ptr = fd;                                                     
    *dd_ptr = dd;                                                     
  } else {                                                            
    close( fd);                                                       
 80015b0:	b9 60 08 00 	mv r1,r11                                      
 80015b4:	f8 00 0b 0e 	calli 80041ec <close>                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 80015b8:	b9 80 08 00 	mv r1,r12                                      
 80015bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80015c0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80015c4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80015c8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80015cc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 80015d0:	2b 8f 00 08 	lw r15,(sp+8)                                  
 80015d4:	37 9c 00 1c 	addi sp,sp,28                                  
 80015d8:	c3 a0 00 00 	ret                                            
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 80015dc:	34 0c 00 00 	mvi r12,0                                      
 80015e0:	e3 ff ff f4 	bi 80015b0 <rtems_bdpart_get_disk_data+0x98>   
                                                                      

08022330 <rtems_bdpart_mount>: const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count, const char *mount_base ) {
 8022330:	37 9c ff d4 	addi sp,sp,-44                                 <== NOT EXECUTED
 8022334:	5b 8b 00 2c 	sw (sp+44),r11                                 <== NOT EXECUTED
 8022338:	5b 8c 00 28 	sw (sp+40),r12                                 <== NOT EXECUTED
 802233c:	5b 8d 00 24 	sw (sp+36),r13                                 <== NOT EXECUTED
 8022340:	5b 8e 00 20 	sw (sp+32),r14                                 <== NOT EXECUTED
 8022344:	5b 8f 00 1c 	sw (sp+28),r15                                 <== NOT EXECUTED
 8022348:	5b 90 00 18 	sw (sp+24),r16                                 <== NOT EXECUTED
 802234c:	5b 91 00 14 	sw (sp+20),r17                                 <== NOT EXECUTED
 8022350:	5b 92 00 10 	sw (sp+16),r18                                 <== NOT EXECUTED
 8022354:	5b 93 00 0c 	sw (sp+12),r19                                 <== NOT EXECUTED
 8022358:	5b 94 00 08 	sw (sp+8),r20                                  <== NOT EXECUTED
 802235c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
 8022360:	34 02 00 2f 	mvi r2,47                                      <== NOT EXECUTED
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
 8022364:	b8 80 98 00 	mv r19,r4                                      <== NOT EXECUTED
 8022368:	b8 60 90 00 	mv r18,r3                                      <== NOT EXECUTED
 802236c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
 8022370:	f8 00 8f 6b 	calli 804611c <strrchr>                        <== NOT EXECUTED
 8022374:	b8 20 a0 00 	mv r20,r1                                      <== NOT EXECUTED
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  char *mount_point = NULL;                                           
  char *mount_marker = NULL;                                          
  size_t disk_file_name_size = 0;                                     
  size_t disk_name_size = strlen( disk_name);                         
 8022378:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 802237c:	f8 00 8b 8d 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 8022380:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
 8022384:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 8022388:	f8 00 8b 8a 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 802238c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Create logical disk name base */                                 
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
 8022390:	35 e1 00 04 	addi r1,r15,4                                  <== NOT EXECUTED
 8022394:	fb ff 7c 5f 	calli 8001510 <malloc>                         <== NOT EXECUTED
 8022398:	b8 20 70 00 	mv r14,r1                                      <== NOT EXECUTED
  if (logical_disk_name == NULL) {                                    
    return RTEMS_NO_MEMORY;                                           
 802239c:	34 0b 00 1a 	mvi r11,26                                     <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
  size_t i = 0;                                                       
                                                                      
  /* Create logical disk name base */                                 
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (logical_disk_name == NULL) {                                    
 80223a0:	44 20 00 43 	be r1,r0,80224ac <rtems_bdpart_mount+0x17c>    <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
 80223a4:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 80223a8:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 80223ac:	f8 00 8c 24 	calli 804543c <strncpy>                        <== NOT EXECUTED
  if (disk_file_name != NULL) {                                       
    disk_file_name += 1;                                              
    disk_file_name_size = strlen( disk_file_name);                    
  } else {                                                            
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
 80223b0:	b9 e0 80 00 	mv r16,r15                                     <== NOT EXECUTED
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
    disk_file_name += 1;                                              
    disk_file_name_size = strlen( disk_file_name);                    
  } else {                                                            
    disk_file_name = disk_name;                                       
 80223b4:	b9 80 88 00 	mv r17,r12                                     <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
 80223b8:	46 80 00 05 	be r20,r0,80223cc <rtems_bdpart_mount+0x9c>    <== NOT EXECUTED
    disk_file_name += 1;                                              
 80223bc:	36 91 00 01 	addi r17,r20,1                                 <== NOT EXECUTED
    disk_file_name_size = strlen( disk_file_name);                    
 80223c0:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 80223c4:	f8 00 8b 7b 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 80223c8:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
 80223cc:	b6 0d a0 00 	add r20,r16,r13                                <== NOT EXECUTED
 80223d0:	36 81 00 05 	addi r1,r20,5                                  <== NOT EXECUTED
 80223d4:	fb ff 7c 4f 	calli 8001510 <malloc>                         <== NOT EXECUTED
 80223d8:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
 80223dc:	34 0b 00 1a 	mvi r11,26                                     <== NOT EXECUTED
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (mount_point == NULL) {                                          
 80223e0:	44 20 00 2f 	be r1,r0,802249c <rtems_bdpart_mount+0x16c>    <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
 80223e4:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 80223e8:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 80223ec:	f8 00 8c 14 	calli 804543c <strncpy>                        <== NOT EXECUTED
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 80223f0:	35 a1 00 01 	addi r1,r13,1                                  <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
 80223f4:	34 04 00 2f 	mvi r4,47                                      <== NOT EXECUTED
 80223f8:	b5 8d 68 00 	add r13,r12,r13                                <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 80223fc:	b5 81 08 00 	add r1,r12,r1                                  <== NOT EXECUTED
 8022400:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8022404:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
 8022408:	31 a4 00 00 	sb (r13+0),r4                                  <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
                                                                      
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
 802240c:	36 94 00 01 	addi r20,r20,1                                 <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 8022410:	f8 00 8c 0b 	calli 804543c <strncpy>                        <== NOT EXECUTED
                                                                      
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
 8022414:	b5 cf 78 00 	add r15,r14,r15                                <== NOT EXECUTED
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
 8022418:	b5 94 a0 00 	add r20,r12,r20                                <== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 802241c:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
 8022420:	46 40 00 1f 	be r18,r0,802249c <rtems_bdpart_mount+0x16c>   <== NOT EXECUTED
 8022424:	78 10 08 06 	mvhi r16,0x806                                 <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
 8022428:	78 11 08 06 	mvhi r17,0x806                                 <== NOT EXECUTED
 802242c:	3a 10 60 cc 	ori r16,r16,0x60cc                             <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 8022430:	34 13 00 03 	mvi r19,3                                      <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
 8022434:	3a 31 40 fc 	ori r17,r17,0x40fc                             <== NOT EXECUTED
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
 8022438:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
 802243c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8022440:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 8022444:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 8022448:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 802244c:	f8 00 87 e7 	calli 80443e8 <snprintf>                       <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
 8022450:	34 03 00 04 	mvi r3,4                                       <== NOT EXECUTED
 8022454:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 8022458:	48 33 00 27 	bg r1,r19,80224f4 <rtems_bdpart_mount+0x1c4>   <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
 802245c:	ba 80 08 00 	mv r1,r20                                      <== NOT EXECUTED
 8022460:	f8 00 8b f7 	calli 804543c <strncpy>                        <== NOT EXECUTED
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
 8022464:	34 02 01 ff 	mvi r2,511                                     <== NOT EXECUTED
 8022468:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 802246c:	f8 00 13 b3 	calli 8027338 <rtems_mkdir>                    <== NOT EXECUTED
 8022470:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
 8022474:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8022478:	ba 20 18 00 	mv r3,r17                                      <== NOT EXECUTED
 802247c:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 8022480:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
 8022484:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
    if (rv != 0) {                                                    
 8022488:	5d a0 00 21 	bne r13,r0,802250c <rtems_bdpart_mount+0x1dc>  <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
 802248c:	fb ff 7c b0 	calli 800174c <mount>                          <== NOT EXECUTED
      mount_point,                                                    
      "msdos",                                                        
      0,                                                              
      NULL                                                            
    );                                                                
    if (rv != 0) {                                                    
 8022490:	5c 2d 00 15 	bne r1,r13,80224e4 <rtems_bdpart_mount+0x1b4>  <== NOT EXECUTED
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
 8022494:	56 4b ff e9 	bgu r18,r11,8022438 <rtems_bdpart_mount+0x108> <== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8022498:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 802249c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80224a0:	fb ff 7b 1a 	calli 8001108 <free>                           <== NOT EXECUTED
  free( mount_point);                                                 
 80224a4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80224a8:	fb ff 7b 18 	calli 8001108 <free>                           <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
 80224ac:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80224b0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80224b4:	2b 8b 00 2c 	lw r11,(sp+44)                                 <== NOT EXECUTED
 80224b8:	2b 8c 00 28 	lw r12,(sp+40)                                 <== NOT EXECUTED
 80224bc:	2b 8d 00 24 	lw r13,(sp+36)                                 <== NOT EXECUTED
 80224c0:	2b 8e 00 20 	lw r14,(sp+32)                                 <== NOT EXECUTED
 80224c4:	2b 8f 00 1c 	lw r15,(sp+28)                                 <== NOT EXECUTED
 80224c8:	2b 90 00 18 	lw r16,(sp+24)                                 <== NOT EXECUTED
 80224cc:	2b 91 00 14 	lw r17,(sp+20)                                 <== NOT EXECUTED
 80224d0:	2b 92 00 10 	lw r18,(sp+16)                                 <== NOT EXECUTED
 80224d4:	2b 93 00 0c 	lw r19,(sp+12)                                 <== NOT EXECUTED
 80224d8:	2b 94 00 08 	lw r20,(sp+8)                                  <== NOT EXECUTED
 80224dc:	37 9c 00 2c 	addi sp,sp,44                                  <== NOT EXECUTED
 80224e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
      "msdos",                                                        
      0,                                                              
      NULL                                                            
    );                                                                
    if (rv != 0) {                                                    
      rmdir( mount_point);                                            
 80224e4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80224e8:	f8 00 13 5c 	calli 8027258 <rmdir>                          <== NOT EXECUTED
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
 80224ec:	56 4b ff d3 	bgu r18,r11,8022438 <rtems_bdpart_mount+0x108> <== NOT EXECUTED
 80224f0:	e3 ff ff ea 	bi 8022498 <rtems_bdpart_mount+0x168>          <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 80224f4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80224f8:	fb ff 7b 04 	calli 8001108 <free>                           <== NOT EXECUTED
  free( mount_point);                                                 
 80224fc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
      esc = RTEMS_INVALID_NAME;                                       
 8022500:	34 0b 00 03 	mvi r11,3                                      <== NOT EXECUTED
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
  free( mount_point);                                                 
 8022504:	fb ff 7b 01 	calli 8001108 <free>                           <== NOT EXECUTED
 8022508:	e3 ff ff e9 	bi 80224ac <rtems_bdpart_mount+0x17c>          <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 802250c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8022510:	fb ff 7a fe 	calli 8001108 <free>                           <== NOT EXECUTED
  free( mount_point);                                                 
 8022514:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
    if (rv != 0) {                                                    
      esc = RTEMS_IO_ERROR;                                           
 8022518:	34 0b 00 1b 	mvi r11,27                                     <== NOT EXECUTED
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
  free( mount_point);                                                 
 802251c:	fb ff 7a fb 	calli 8001108 <free>                           <== NOT EXECUTED
 8022520:	e3 ff ff e3 	bi 80224ac <rtems_bdpart_mount+0x17c>          <== NOT EXECUTED
                                                                      

08001c20 <rtems_bdpart_new_record>: static rtems_status_code rtems_bdpart_new_record( rtems_disk_device *dd, rtems_blkdev_bnum index, rtems_bdbuf_buffer **block ) {
 8001c20:	37 9c ff ec 	addi sp,sp,-20                                 
 8001c24:	5b 8b 00 14 	sw (sp+20),r11                                 
 8001c28:	5b 8c 00 10 	sw (sp+16),r12                                 
 8001c2c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001c30:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001c34:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001c38:	b8 60 60 00 	mv r12,r3                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  /* Synchronize previous block if necessary */                       
  if (*block != NULL) {                                               
 8001c3c:	28 63 00 00 	lw r3,(r3+0)                                   
static rtems_status_code rtems_bdpart_new_record(                     
  rtems_disk_device *dd,                                              
  rtems_blkdev_bnum index,                                            
  rtems_bdbuf_buffer **block                                          
)                                                                     
{                                                                     
 8001c40:	b8 20 70 00 	mv r14,r1                                      
 8001c44:	b8 40 68 00 	mv r13,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  /* Synchronize previous block if necessary */                       
  if (*block != NULL) {                                               
 8001c48:	44 60 00 05 	be r3,r0,8001c5c <rtems_bdpart_new_record+0x3c>
    sc = rtems_bdbuf_sync( *block);                                   
 8001c4c:	b8 60 08 00 	mv r1,r3                                       
 8001c50:	f8 00 31 01 	calli 800e054 <rtems_bdbuf_sync>               
 8001c54:	b8 20 58 00 	mv r11,r1                                      
    if (sc != RTEMS_SUCCESSFUL) {                                     
 8001c58:	5c 20 00 15 	bne r1,r0,8001cac <rtems_bdpart_new_record+0x8c><== NEVER TAKEN
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  /* Read the new record block (this accounts for disk block sizes > 512) */
  sc = rtems_bdbuf_read( dd, index, block);                           
 8001c5c:	b9 c0 08 00 	mv r1,r14                                      
 8001c60:	b9 a0 10 00 	mv r2,r13                                      
 8001c64:	b9 80 18 00 	mv r3,r12                                      
 8001c68:	f8 00 30 0e 	calli 800dca0 <rtems_bdbuf_read>               
 8001c6c:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001c70:	5c 20 00 0f 	bne r1,r0,8001cac <rtems_bdpart_new_record+0x8c><== NEVER TAKEN
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
 8001c74:	29 81 00 00 	lw r1,(r12+0)                                  
 8001c78:	44 2b 00 15 	be r1,r11,8001ccc <rtems_bdpart_new_record+0xac><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Clear record */                                                  
  memset( (*block)->buffer, 0, RTEMS_BDPART_BLOCK_SIZE);              
 8001c7c:	28 21 00 1c 	lw r1,(r1+28)                                  
 8001c80:	34 02 00 00 	mvi r2,0                                       
 8001c84:	34 03 02 00 	mvi r3,512                                     
 8001c88:	f8 00 4d 6a 	calli 8015230 <memset>                         
                                                                      
  /* Write signature */                                               
  (*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0] =            
 8001c8c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001c90:	34 02 00 55 	mvi r2,85                                      
 8001c94:	28 21 00 1c 	lw r1,(r1+28)                                  
 8001c98:	30 22 01 fe 	sb (r1+510),r2                                 
    RTEMS_BDPART_MBR_SIGNATURE_0;                                     
  (*block)->buffer [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1] =            
 8001c9c:	29 81 00 00 	lw r1,(r12+0)                                  
 8001ca0:	34 02 ff aa 	mvi r2,-86                                     
 8001ca4:	28 21 00 1c 	lw r1,(r1+28)                                  
 8001ca8:	30 22 01 ff 	sb (r1+511),r2                                 
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001cac:	b9 60 08 00 	mv r1,r11                                      
 8001cb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001cb4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001cb8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001cbc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001cc0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001cc4:	37 9c 00 14 	addi sp,sp,20                                  
 8001cc8:	c3 a0 00 00 	ret                                            
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
    return RTEMS_INVALID_ADDRESS;                                     
 8001ccc:	34 0b 00 09 	mvi r11,9                                      <== NOT EXECUTED
 8001cd0:	e3 ff ff f7 	bi 8001cac <rtems_bdpart_new_record+0x8c>      <== NOT EXECUTED
                                                                      

080015e4 <rtems_bdpart_read>: const char *disk_name, rtems_bdpart_format *format, rtems_bdpart_partition *pt, size_t *count ) {
 80015e4:	37 9c ff bc 	addi sp,sp,-68                                 
 80015e8:	5b 8b 00 2c 	sw (sp+44),r11                                 
 80015ec:	5b 8c 00 28 	sw (sp+40),r12                                 
 80015f0:	5b 8d 00 24 	sw (sp+36),r13                                 
 80015f4:	5b 8e 00 20 	sw (sp+32),r14                                 
 80015f8:	5b 8f 00 1c 	sw (sp+28),r15                                 
 80015fc:	5b 90 00 18 	sw (sp+24),r16                                 
 8001600:	5b 91 00 14 	sw (sp+20),r17                                 
 8001604:	5b 92 00 10 	sw (sp+16),r18                                 
 8001608:	5b 93 00 0c 	sw (sp+12),r19                                 
 800160c:	5b 94 00 08 	sw (sp+8),r20                                  
 8001610:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001614:	b8 60 68 00 	mv r13,r3                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
 8001618:	34 63 ff d0 	addi r3,r3,-48                                 
  size_t *count                                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
 800161c:	5b 80 00 44 	sw (sp+68),r0                                  
  rtems_bdpart_partition *p = pt - 1;                                 
 8001620:	5b 83 00 40 	sw (sp+64),r3                                  
  const char *disk_name,                                              
  rtems_bdpart_format *format,                                        
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
 8001624:	b8 80 58 00 	mv r11,r4                                      
 8001628:	b8 40 70 00 	mv r14,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
 800162c:	34 0f 00 00 	mvi r15,0                                      
 8001630:	44 80 00 08 	be r4,r0,8001650 <rtems_bdpart_read+0x6c>      <== NEVER TAKEN
 8001634:	28 83 00 00 	lw r3,(r4+0)                                   
 8001638:	b4 63 28 00 	add r5,r3,r3                                   
 800163c:	b4 a3 28 00 	add r5,r5,r3                                   
 8001640:	b4 a5 28 00 	add r5,r5,r5                                   
 8001644:	b4 a5 28 00 	add r5,r5,r5                                   
 8001648:	b4 a5 28 00 	add r5,r5,r5                                   
 800164c:	b4 a5 78 00 	add r15,r5,r5                                  
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
 8001650:	65 a4 00 00 	cmpei r4,r13,0                                 
 8001654:	65 c2 00 00 	cmpei r2,r14,0                                 
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
  rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */   
  rtems_blkdev_bnum disk_end = 0;                                     
  size_t i = 0;                                                       
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
 8001658:	34 06 ff ff 	mvi r6,-1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
 800165c:	5b 80 00 3c 	sw (sp+60),r0                                  
  rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */   
  rtems_blkdev_bnum disk_end = 0;                                     
 8001660:	5b 80 00 38 	sw (sp+56),r0                                  
  size_t i = 0;                                                       
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
 8001664:	5b 86 00 34 	sw (sp+52),r6                                  
  rtems_disk_device *dd = NULL;                                       
 8001668:	5b 80 00 30 	sw (sp+48),r0                                  
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
 800166c:	b8 82 10 00 	or r2,r4,r2                                    
    return RTEMS_INVALID_ADDRESS;                                     
 8001670:	34 0c 00 09 	mvi r12,9                                      
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
 8001674:	5c 40 00 09 	bne r2,r0,8001698 <rtems_bdpart_read+0xb4>     <== NEVER TAKEN
 8001678:	45 62 00 08 	be r11,r2,8001698 <rtems_bdpart_read+0xb4>     <== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Set count to a save value */                                     
  *count = 0;                                                         
 800167c:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001680:	37 82 00 34 	addi r2,sp,52                                  
 8001684:	37 83 00 30 	addi r3,sp,48                                  
 8001688:	37 84 00 38 	addi r4,sp,56                                  
 800168c:	fb ff ff a3 	calli 8001518 <rtems_bdpart_get_disk_data>     
 8001690:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001694:	44 20 00 0f 	be r1,r0,80016d0 <rtems_bdpart_read+0xec>      <== ALWAYS TAKEN
  if (block != NULL) {                                                
    rtems_bdbuf_release( block);                                      
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
 8001698:	b9 80 08 00 	mv r1,r12                                      
 800169c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80016a0:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 80016a4:	2b 8c 00 28 	lw r12,(sp+40)                                 
 80016a8:	2b 8d 00 24 	lw r13,(sp+36)                                 
 80016ac:	2b 8e 00 20 	lw r14,(sp+32)                                 
 80016b0:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 80016b4:	2b 90 00 18 	lw r16,(sp+24)                                 
 80016b8:	2b 91 00 14 	lw r17,(sp+20)                                 
 80016bc:	2b 92 00 10 	lw r18,(sp+16)                                 
 80016c0:	2b 93 00 0c 	lw r19,(sp+12)                                 
 80016c4:	2b 94 00 08 	lw r20,(sp+8)                                  
 80016c8:	37 9c 00 44 	addi sp,sp,68                                  
 80016cc:	c3 a0 00 00 	ret                                            
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  /* Read MBR */                                                      
  sc = rtems_bdpart_read_record( dd, 0, &block);                      
 80016d0:	2b 81 00 30 	lw r1,(sp+48)                                  
 80016d4:	34 02 00 00 	mvi r2,0                                       
 80016d8:	37 83 00 44 	addi r3,sp,68                                  
 80016dc:	fb ff fe d5 	calli 8001230 <rtems_bdpart_read_record>       
 80016e0:	b8 20 88 00 	mv r17,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 80016e4:	b8 20 80 00 	mv r16,r1                                      
 80016e8:	44 2c 00 09 	be r1,r12,800170c <rtems_bdpart_read+0x128>    <== ALWAYS TAKEN
  /* Return partition count */                                        
  *count = (size_t) (p - pt + 1);                                     
                                                                      
cleanup:                                                              
                                                                      
  if (fd >= 0) {                                                      
 80016ec:	2b 81 00 34 	lw r1,(sp+52)                                  
 80016f0:	48 01 00 02 	bg r0,r1,80016f8 <rtems_bdpart_read+0x114>     <== NEVER TAKEN
    close( fd);                                                       
 80016f4:	f8 00 0a be 	calli 80041ec <close>                          
  }                                                                   
                                                                      
  if (block != NULL) {                                                
 80016f8:	2b 81 00 44 	lw r1,(sp+68)                                  
    rtems_bdbuf_release( block);                                      
  }                                                                   
                                                                      
  return esc;                                                         
 80016fc:	ba 00 60 00 	mv r12,r16                                     
                                                                      
  if (fd >= 0) {                                                      
    close( fd);                                                       
  }                                                                   
                                                                      
  if (block != NULL) {                                                
 8001700:	44 20 ff e6 	be r1,r0,8001698 <rtems_bdpart_read+0xb4>      <== NEVER TAKEN
    rtems_bdbuf_release( block);                                      
 8001704:	f8 00 31 f8 	calli 800dee4 <rtems_bdbuf_release>            
 8001708:	e3 ff ff e4 	bi 8001698 <rtems_bdpart_read+0xb4>            
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
 800170c:	2b 81 00 44 	lw r1,(sp+68)                                  
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
 8001710:	b5 af 78 00 	add r15,r13,r15                                
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);  
 8001714:	37 92 00 40 	addi r18,sp,64                                 
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
 8001718:	28 34 00 1c 	lw r20,(r1+28)                                 
  sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);  
 800171c:	37 93 00 3c 	addi r19,sp,60                                 
 8001720:	ba 40 10 00 	mv r2,r18                                      
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
 8001724:	36 8c 01 be 	addi r12,r20,446                               
  sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);  
 8001728:	b9 80 08 00 	mv r1,r12                                      
 800172c:	b9 e0 18 00 	mv r3,r15                                      
 8001730:	ba 60 20 00 	mv r4,r19                                      
 8001734:	fb ff ff 18 	calli 8001394 <rtems_bdpart_read_mbr_partition>
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001738:	b8 20 80 00 	mv r16,r1                                      
 800173c:	5c 31 ff ec 	bne r1,r17,80016ec <rtems_bdpart_read+0x108>   <== NEVER TAKEN
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Determine if we have a MBR or GPT format */                      
  if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
 8001740:	2b 81 00 40 	lw r1,(sp+64)                                  
    esc = RTEMS_NOT_IMPLEMENTED;                                      
 8001744:	34 10 00 18 	mvi r16,24                                     
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Determine if we have a MBR or GPT format */                      
  if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
 8001748:	40 22 00 08 	lbu r2,(r1+8)                                  
 800174c:	34 01 00 ee 	mvi r1,238                                     
 8001750:	44 41 ff e7 	be r2,r1,80016ec <rtems_bdpart_read+0x108>     <== NEVER TAKEN
    esc = RTEMS_NOT_IMPLEMENTED;                                      
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
 8001754:	2b 81 00 44 	lw r1,(sp+68)                                  
 8001758:	59 c0 00 00 	sw (r14+0),r0                                  
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
 800175c:	34 06 00 00 	mvi r6,0                                       
 8001760:	28 27 00 1c 	lw r7,(r1+28)                                  
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
 8001764:	34 e2 ff fc 	addi r2,r7,-4                                  
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
 8001768:	b4 c6 30 00 	add r6,r6,r6                                   
 800176c:	b4 c6 30 00 	add r6,r6,r6                                   
 8001770:	b4 c6 30 00 	add r6,r6,r6                                   
 8001774:	b4 c6 30 00 	add r6,r6,r6                                   
 8001778:	b4 c6 30 00 	add r6,r6,r6                                   
 800177c:	40 e1 01 bb 	lbu r1,(r7+443)                                
 8001780:	b4 c6 30 00 	add r6,r6,r6                                   
 8001784:	b4 c6 30 00 	add r6,r6,r6                                   
 8001788:	b4 c6 30 00 	add r6,r6,r6                                   
 800178c:	34 e7 ff ff 	addi r7,r7,-1                                  
 8001790:	b4 c1 30 00 	add r6,r6,r1                                   
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
 8001794:	5c e2 ff f5 	bne r7,r2,8001768 <rtems_bdpart_read+0x184>    
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
  format->mbr.dos_compatibility = true;                               
 8001798:	34 01 00 01 	mvi r1,1                                       
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
 800179c:	59 c6 00 04 	sw (r14+4),r6                                  
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
  format->mbr.dos_compatibility = true;                               
 80017a0:	31 c1 00 08 	sb (r14+8),r1                                  
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
 80017a4:	36 94 01 ee 	addi r20,r20,494                               
  );                                                                  
  format->mbr.dos_compatibility = true;                               
                                                                      
  /* Iterate through the rest of the primary partition table */       
  for (i = 1; i < 4; ++i) {                                           
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
 80017a8:	35 8c 00 10 	addi r12,r12,16                                
                                                                      
    sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
 80017ac:	b9 80 08 00 	mv r1,r12                                      
 80017b0:	ba 40 10 00 	mv r2,r18                                      
 80017b4:	b9 e0 18 00 	mv r3,r15                                      
 80017b8:	ba 60 20 00 	mv r4,r19                                      
 80017bc:	fb ff fe f6 	calli 8001394 <rtems_bdpart_read_mbr_partition>
    if (sc != RTEMS_SUCCESSFUL) {                                     
 80017c0:	5c 20 00 57 	bne r1,r0,800191c <rtems_bdpart_read+0x338>    <== NEVER TAKEN
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
  format->mbr.dos_compatibility = true;                               
                                                                      
  /* Iterate through the rest of the primary partition table */       
  for (i = 1; i < 4; ++i) {                                           
 80017c4:	5d 94 ff f9 	bne r12,r20,80017a8 <rtems_bdpart_read+0x1c4>  
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Iterate through the logical partitions within the extended partition */
  ebr = ep_begin;                                                     
 80017c8:	2b 8c 00 3c 	lw r12,(sp+60)                                 
{                                                                     
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EXTENDED) {                            
 80017cc:	34 10 00 05 	mvi r16,5                                      
    }                                                                 
  }                                                                   
                                                                      
  /* Iterate through the logical partitions within the extended partition */
  ebr = ep_begin;                                                     
  while (ebr != 0) {                                                  
 80017d0:	45 80 00 57 	be r12,r0,800192c <rtems_bdpart_read+0x348>    <== NEVER TAKEN
    rtems_blkdev_bnum tmp = 0;                                        
                                                                      
    /* Read EBR */                                                    
    sc = rtems_bdpart_read_record( dd, ebr, &block);                  
 80017d4:	2b 81 00 30 	lw r1,(sp+48)                                  
 80017d8:	b9 80 10 00 	mv r2,r12                                      
 80017dc:	37 83 00 44 	addi r3,sp,68                                  
 80017e0:	fb ff fe 94 	calli 8001230 <rtems_bdpart_read_record>       
 80017e4:	b8 20 70 00 	mv r14,r1                                      
    if (sc != RTEMS_SUCCESSFUL) {                                     
 80017e8:	5c 20 00 4f 	bne r1,r0,8001924 <rtems_bdpart_read+0x340>    <== NEVER TAKEN
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read first partition entry */                                  
    sc = rtems_bdpart_read_mbr_partition(                             
 80017ec:	2b 81 00 44 	lw r1,(sp+68)                                  
 80017f0:	ba 40 10 00 	mv r2,r18                                      
 80017f4:	b9 e0 18 00 	mv r3,r15                                      
 80017f8:	28 21 00 1c 	lw r1,(r1+28)                                  
 80017fc:	34 04 00 00 	mvi r4,0                                       
 8001800:	34 21 01 be 	addi r1,r1,446                                 
 8001804:	fb ff fe e4 	calli 8001394 <rtems_bdpart_read_mbr_partition>
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,                
      &p,                                                             
      p_end,                                                          
      NULL                                                            
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
 8001808:	5c 2e 00 45 	bne r1,r14,800191c <rtems_bdpart_read+0x338>   <== NEVER TAKEN
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition begin */                                      
    tmp = p->begin + ebr;                                             
 800180c:	2b 86 00 40 	lw r6,(sp+64)                                  
 8001810:	28 c2 00 00 	lw r2,(r6+0)                                   
 8001814:	b5 82 08 00 	add r1,r12,r2                                  
    if (tmp > p->begin) {                                             
 8001818:	50 41 00 3f 	bgeu r2,r1,8001914 <rtems_bdpart_read+0x330>   <== NEVER TAKEN
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
 800181c:	28 c2 00 04 	lw r2,(r6+4)                                   
    }                                                                 
                                                                      
    /* Adjust partition begin */                                      
    tmp = p->begin + ebr;                                             
    if (tmp > p->begin) {                                             
      p->begin = tmp;                                                 
 8001820:	58 c1 00 00 	sw (r6+0),r1                                   
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
 8001824:	b5 82 60 00 	add r12,r12,r2                                 
    if (tmp > p->end) {                                               
 8001828:	50 4c 00 3b 	bgeu r2,r12,8001914 <rtems_bdpart_read+0x330>  <== NEVER TAKEN
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1                 
 800182c:	2b 82 00 44 	lw r2,(sp+68)                                  
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
    if (tmp > p->end) {                                               
      p->end = tmp;                                                   
 8001830:	58 cc 00 04 	sw (r6+4),r12                                  
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
 8001834:	34 01 00 00 	mvi r1,0                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1                 
 8001838:	28 42 00 1c 	lw r2,(r2+28)                                  
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
 800183c:	b8 40 20 00 	mv r4,r2                                       
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
 8001840:	34 88 ff fc 	addi r8,r4,-4                                  
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
 8001844:	34 42 01 ce 	addi r2,r2,462                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
 8001848:	b4 21 08 00 	add r1,r1,r1                                   
 800184c:	b4 21 08 00 	add r1,r1,r1                                   
 8001850:	b4 21 08 00 	add r1,r1,r1                                   
 8001854:	b4 21 08 00 	add r1,r1,r1                                   
 8001858:	b4 21 08 00 	add r1,r1,r1                                   
 800185c:	40 87 01 d9 	lbu r7,(r4+473)                                
 8001860:	b4 21 08 00 	add r1,r1,r1                                   
 8001864:	b4 21 08 00 	add r1,r1,r1                                   
 8001868:	b4 21 08 00 	add r1,r1,r1                                   
 800186c:	34 84 ff ff 	addi r4,r4,-1                                  
 8001870:	b4 27 08 00 	add r1,r1,r7                                   
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
 8001874:	5c 88 ff f5 	bne r4,r8,8001848 <rtems_bdpart_read+0x264>    
{                                                                     
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EXTENDED) {                            
 8001878:	40 42 00 04 	lbu r2,(r2+4)                                  
 800187c:	44 50 00 20 	be r2,r16,80018fc <rtems_bdpart_read+0x318>    
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  /* Return partition count */                                        
  *count = (size_t) (p - pt + 1);                                     
 8001880:	c8 cd 08 00 	sub r1,r6,r13                                  
 8001884:	14 21 00 01 	sri r1,r1,1                                    
 8001888:	34 02 00 10 	mvi r2,16                                      
 800188c:	14 21 00 01 	sri r1,r1,1                                    
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8001890:	34 10 00 00 	mvi r16,0                                      
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  /* Return partition count */                                        
  *count = (size_t) (p - pt + 1);                                     
 8001894:	14 21 00 01 	sri r1,r1,1                                    
 8001898:	14 21 00 01 	sri r1,r1,1                                    
 800189c:	b4 21 18 00 	add r3,r1,r1                                   
 80018a0:	b4 63 18 00 	add r3,r3,r3                                   
 80018a4:	b4 61 18 00 	add r3,r3,r1                                   
 80018a8:	b4 63 08 00 	add r1,r3,r3                                   
 80018ac:	b4 21 08 00 	add r1,r1,r1                                   
 80018b0:	b4 21 08 00 	add r1,r1,r1                                   
 80018b4:	b4 21 08 00 	add r1,r1,r1                                   
 80018b8:	b4 61 18 00 	add r3,r3,r1                                   
 80018bc:	b4 63 08 00 	add r1,r3,r3                                   
 80018c0:	b4 21 08 00 	add r1,r1,r1                                   
 80018c4:	b4 21 08 00 	add r1,r1,r1                                   
 80018c8:	b4 21 08 00 	add r1,r1,r1                                   
 80018cc:	b4 21 08 00 	add r1,r1,r1                                   
 80018d0:	b4 21 08 00 	add r1,r1,r1                                   
 80018d4:	b4 21 08 00 	add r1,r1,r1                                   
 80018d8:	b4 21 08 00 	add r1,r1,r1                                   
 80018dc:	b4 61 60 00 	add r12,r3,r1                                  
 80018e0:	b9 80 08 00 	mv r1,r12                                      
 80018e4:	f8 00 92 b9 	calli 80263c8 <__ashlsi3>                      
 80018e8:	b5 81 08 00 	add r1,r12,r1                                  
 80018ec:	c8 01 08 00 	sub r1,r0,r1                                   
 80018f0:	34 21 00 01 	addi r1,r1,1                                   
 80018f4:	59 61 00 00 	sw (r11+0),r1                                  
 80018f8:	e3 ff ff 7d 	bi 80016ec <rtems_bdpart_read+0x108>           
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1                 
    );                                                                
    if (ebr != 0) {                                                   
 80018fc:	44 20 ff e1 	be r1,r0,8001880 <rtems_bdpart_read+0x29c>     <== NEVER TAKEN
      /* Adjust partition EBR block index */                          
      tmp = ebr + ep_begin;                                           
 8001900:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 8001904:	b4 2c 60 00 	add r12,r1,r12                                 
      if (tmp > ebr) {                                                
 8001908:	50 2c 00 03 	bgeu r1,r12,8001914 <rtems_bdpart_read+0x330>  <== NEVER TAKEN
    }                                                                 
  }                                                                   
                                                                      
  /* Iterate through the logical partitions within the extended partition */
  ebr = ep_begin;                                                     
  while (ebr != 0) {                                                  
 800190c:	5d 80 ff b2 	bne r12,r0,80017d4 <rtems_bdpart_read+0x1f0>   <== ALWAYS TAKEN
 8001910:	e3 ff ff dc 	bi 8001880 <rtems_bdpart_read+0x29c>           <== NOT EXECUTED
      /* Adjust partition EBR block index */                          
      tmp = ebr + ep_begin;                                           
      if (tmp > ebr) {                                                
        ebr = tmp;                                                    
      } else {                                                        
        esc = RTEMS_IO_ERROR;                                         
 8001914:	34 10 00 1b 	mvi r16,27                                     <== NOT EXECUTED
 8001918:	e3 ff ff 75 	bi 80016ec <rtems_bdpart_read+0x108>           <== NOT EXECUTED
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read first partition entry */                                  
    sc = rtems_bdpart_read_mbr_partition(                             
 800191c:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
 8001920:	e3 ff ff 73 	bi 80016ec <rtems_bdpart_read+0x108>           <== NOT EXECUTED
  ebr = ep_begin;                                                     
  while (ebr != 0) {                                                  
    rtems_blkdev_bnum tmp = 0;                                        
                                                                      
    /* Read EBR */                                                    
    sc = rtems_bdpart_read_record( dd, ebr, &block);                  
 8001924:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
 8001928:	e3 ff ff 71 	bi 80016ec <rtems_bdpart_read+0x108>           <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  /* Iterate through the logical partitions within the extended partition */
  ebr = ep_begin;                                                     
  while (ebr != 0) {                                                  
 800192c:	2b 86 00 40 	lw r6,(sp+64)                                  <== NOT EXECUTED
 8001930:	e3 ff ff d4 	bi 8001880 <rtems_bdpart_read+0x29c>           <== NOT EXECUTED
                                                                      

08001394 <rtems_bdpart_read_mbr_partition>: const uint8_t *data, rtems_bdpart_partition **p, const rtems_bdpart_partition *p_end, rtems_blkdev_bnum *ep_begin ) {
 8001394:	37 9c ff f4 	addi sp,sp,-12                                 
 8001398:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800139c:	5b 8c 00 08 	sw (sp+8),r12                                  
 80013a0:	5b 9d 00 04 	sw (sp+4),ra                                   
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
 80013a4:	34 06 00 00 	mvi r6,0                                       
 80013a8:	b8 20 58 00 	mv r11,r1                                      
 80013ac:	b8 40 60 00 	mv r12,r2                                      
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80013b0:	b8 20 38 00 	mv r7,r1                                       
  } else {                                                            
    return 0;                                                         
  }                                                                   
}                                                                     
                                                                      
static rtems_status_code rtems_bdpart_read_mbr_partition(             
 80013b4:	34 29 ff fc 	addi r9,r1,-4                                  
 80013b8:	b8 20 40 00 	mv r8,r1                                       
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
 80013bc:	b4 c6 28 00 	add r5,r6,r6                                   
 80013c0:	b4 a5 28 00 	add r5,r5,r5                                   
 80013c4:	b4 a5 28 00 	add r5,r5,r5                                   
 80013c8:	b4 a5 28 00 	add r5,r5,r5                                   
 80013cc:	b4 a5 28 00 	add r5,r5,r5                                   
 80013d0:	41 06 00 0b 	lbu r6,(r8+11)                                 
 80013d4:	b4 a5 28 00 	add r5,r5,r5                                   
 80013d8:	b4 a5 28 00 	add r5,r5,r5                                   
 80013dc:	b4 a5 28 00 	add r5,r5,r5                                   
 80013e0:	35 08 ff ff 	addi r8,r8,-1                                  
 80013e4:	b4 a6 30 00 	add r6,r5,r6                                   
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
 80013e8:	5d 09 ff f5 	bne r8,r9,80013bc <rtems_bdpart_read_mbr_partition+0x28>
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
 80013ec:	34 05 00 00 	mvi r5,0                                       
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
 80013f0:	b4 a5 28 00 	add r5,r5,r5                                   
 80013f4:	b4 a5 28 00 	add r5,r5,r5                                   
 80013f8:	b4 a5 28 00 	add r5,r5,r5                                   
 80013fc:	b4 a5 28 00 	add r5,r5,r5                                   
 8001400:	b4 a5 28 00 	add r5,r5,r5                                   
 8001404:	40 e1 00 0f 	lbu r1,(r7+15)                                 
 8001408:	b4 a5 28 00 	add r5,r5,r5                                   
 800140c:	b4 a5 28 00 	add r5,r5,r5                                   
 8001410:	b4 a5 28 00 	add r5,r5,r5                                   
 8001414:	34 e7 ff ff 	addi r7,r7,-1                                  
 8001418:	b4 a1 28 00 	add r5,r5,r1                                   
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
 800141c:	5d 27 ff f5 	bne r9,r7,80013f0 <rtems_bdpart_read_mbr_partition+0x5c>
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
 8001420:	41 67 00 04 	lbu r7,(r11+4)                                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
 8001424:	34 01 00 00 	mvi r1,0                                       
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
 8001428:	44 e0 00 22 	be r7,r0,80014b0 <rtems_bdpart_read_mbr_partition+0x11c><== NEVER TAKEN
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
 800142c:	29 82 00 00 	lw r2,(r12+0)                                  
    return RTEMS_TOO_MANY;                                            
 8001430:	34 01 00 05 	mvi r1,5                                       
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
 8001434:	44 43 00 1f 	be r2,r3,80014b0 <rtems_bdpart_read_mbr_partition+0x11c><== NEVER TAKEN
{                                                                     
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
 8001438:	b4 a6 28 00 	add r5,r5,r6                                   
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
    return RTEMS_IO_ERROR;                                            
 800143c:	34 01 00 1b 	mvi r1,27                                      
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
 8001440:	50 c5 00 1c 	bgeu r6,r5,80014b0 <rtems_bdpart_read_mbr_partition+0x11c><== NEVER TAKEN
    return RTEMS_IO_ERROR;                                            
  } else if (type == RTEMS_BDPART_MBR_EXTENDED) {                     
 8001444:	34 01 00 05 	mvi r1,5                                       
 8001448:	44 e1 00 1f 	be r7,r1,80014c4 <rtems_bdpart_read_mbr_partition+0x130>
    if (ep_begin != NULL) {                                           
      *ep_begin = begin;                                              
    }                                                                 
  } else {                                                            
    /* Increment partition index */                                   
    ++(*p);                                                           
 800144c:	34 43 00 30 	addi r3,r2,48                                  
 8001450:	59 83 00 00 	sw (r12+0),r3                                  
                                                                      
    /* Clear partition */                                             
    memset( *p, 0, sizeof( rtems_bdpart_partition));                  
 8001454:	58 40 00 30 	sw (r2+48),r0                                  
 8001458:	58 60 00 04 	sw (r3+4),r0                                   
 800145c:	58 60 00 08 	sw (r3+8),r0                                   
 8001460:	58 60 00 0c 	sw (r3+12),r0                                  
 8001464:	58 60 00 10 	sw (r3+16),r0                                  
 8001468:	58 60 00 14 	sw (r3+20),r0                                  
 800146c:	58 60 00 18 	sw (r3+24),r0                                  
 8001470:	58 60 00 1c 	sw (r3+28),r0                                  
 8001474:	58 60 00 20 	sw (r3+32),r0                                  
 8001478:	58 60 00 24 	sw (r3+36),r0                                  
 800147c:	58 60 00 28 	sw (r3+40),r0                                  
 8001480:	58 60 00 2c 	sw (r3+44),r0                                  
                                                                      
    /* Set values */                                                  
    (*p)->begin = begin;                                              
 8001484:	29 82 00 00 	lw r2,(r12+0)                                  
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
 8001488:	b8 e0 08 00 	mv r1,r7                                       
                                                                      
    /* Clear partition */                                             
    memset( *p, 0, sizeof( rtems_bdpart_partition));                  
                                                                      
    /* Set values */                                                  
    (*p)->begin = begin;                                              
 800148c:	58 46 00 00 	sw (r2+0),r6                                   
    (*p)->end = end;                                                  
 8001490:	58 45 00 04 	sw (r2+4),r5                                   
    rtems_bdpart_to_partition_type( type, (*p)->type);                
 8001494:	34 42 00 08 	addi r2,r2,8                                   
 8001498:	fb ff ff 8c 	calli 80012c8 <rtems_bdpart_to_partition_type> 
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
 800149c:	29 82 00 00 	lw r2,(r12+0)                                  
 80014a0:	41 63 00 00 	lbu r3,(r11+0)                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80014a4:	34 01 00 00 	mvi r1,0                                       
                                                                      
    /* Set values */                                                  
    (*p)->begin = begin;                                              
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
 80014a8:	58 40 00 28 	sw (r2+40),r0                                  
 80014ac:	58 43 00 2c 	sw (r2+44),r3                                  
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80014b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80014b4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80014b8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80014bc:	37 9c 00 0c 	addi sp,sp,12                                  
 80014c0:	c3 a0 00 00 	ret                                            
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80014c4:	34 01 00 00 	mvi r1,0                                       
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
    return RTEMS_IO_ERROR;                                            
  } else if (type == RTEMS_BDPART_MBR_EXTENDED) {                     
    if (ep_begin != NULL) {                                           
 80014c8:	44 80 ff fa 	be r4,r0,80014b0 <rtems_bdpart_read_mbr_partition+0x11c><== NEVER TAKEN
      *ep_begin = begin;                                              
 80014cc:	58 86 00 00 	sw (r4+0),r6                                   
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80014d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80014d4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80014d8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80014dc:	37 9c 00 0c 	addi sp,sp,12                                  
 80014e0:	c3 a0 00 00 	ret                                            
                                                                      

08001230 <rtems_bdpart_read_record>: static rtems_status_code rtems_bdpart_read_record( rtems_disk_device *dd, rtems_blkdev_bnum index, rtems_bdbuf_buffer **block ) {
 8001230:	37 9c ff f0 	addi sp,sp,-16                                 
 8001234:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001238:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800123c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001240:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001244:	b8 60 58 00 	mv r11,r3                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  /* Release previous block if necessary */                           
  if (*block != NULL) {                                               
 8001248:	28 63 00 00 	lw r3,(r3+0)                                   
static rtems_status_code rtems_bdpart_read_record(                    
  rtems_disk_device *dd,                                              
  rtems_blkdev_bnum index,                                            
  rtems_bdbuf_buffer **block                                          
)                                                                     
{                                                                     
 800124c:	b8 20 68 00 	mv r13,r1                                      
 8001250:	b8 40 60 00 	mv r12,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  /* Release previous block if necessary */                           
  if (*block != NULL) {                                               
 8001254:	44 60 00 04 	be r3,r0,8001264 <rtems_bdpart_read_record+0x34>
    sc = rtems_bdbuf_release( *block);                                
 8001258:	b8 60 08 00 	mv r1,r3                                       
 800125c:	f8 00 33 22 	calli 800dee4 <rtems_bdbuf_release>            
    if (sc != RTEMS_SUCCESSFUL) {                                     
 8001260:	5c 20 00 0d 	bne r1,r0,8001294 <rtems_bdpart_read_record+0x64><== NEVER TAKEN
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  /* Read the record block */                                         
  sc = rtems_bdbuf_read( dd, index, block);                           
 8001264:	b9 a0 08 00 	mv r1,r13                                      
 8001268:	b9 80 10 00 	mv r2,r12                                      
 800126c:	b9 60 18 00 	mv r3,r11                                      
 8001270:	f8 00 32 8c 	calli 800dca0 <rtems_bdbuf_read>               
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001274:	5c 20 00 08 	bne r1,r0,8001294 <rtems_bdpart_read_record+0x64><== NEVER TAKEN
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
 8001278:	29 62 00 00 	lw r2,(r11+0)                                  
 800127c:	44 41 00 11 	be r2,r1,80012c0 <rtems_bdpart_read_record+0x90><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
 8001280:	28 42 00 1c 	lw r2,(r2+28)                                  
                                                                      
static bool rtems_bdpart_is_valid_record( const uint8_t *data)        
{                                                                     
  return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]                   
      == RTEMS_BDPART_MBR_SIGNATURE_0                                 
    && data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]                     
 8001284:	34 03 00 55 	mvi r3,85                                      
 8001288:	40 44 01 fe 	lbu r4,(r2+510)                                
 800128c:	44 83 00 08 	be r4,r3,80012ac <rtems_bdpart_read_record+0x7c><== ALWAYS TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    return RTEMS_IO_ERROR;                                            
 8001290:	34 01 00 1b 	mvi r1,27                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001294:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001298:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800129c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80012a0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80012a4:	37 9c 00 10 	addi sp,sp,16                                  
 80012a8:	c3 a0 00 00 	ret                                            
                                                                      
static bool rtems_bdpart_is_valid_record( const uint8_t *data)        
{                                                                     
  return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]                   
      == RTEMS_BDPART_MBR_SIGNATURE_0                                 
    && data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]                     
 80012ac:	40 43 01 ff 	lbu r3,(r2+511)                                
 80012b0:	34 02 00 aa 	mvi r2,170                                     
 80012b4:	44 62 ff f8 	be r3,r2,8001294 <rtems_bdpart_read_record+0x64><== ALWAYS TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    return RTEMS_IO_ERROR;                                            
 80012b8:	34 01 00 1b 	mvi r1,27                                      <== NOT EXECUTED
 80012bc:	e3 ff ff f6 	bi 8001294 <rtems_bdpart_read_record+0x64>     <== NOT EXECUTED
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
    return RTEMS_INVALID_ADDRESS;                                     
 80012c0:	34 01 00 09 	mvi r1,9                                       <== NOT EXECUTED
 80012c4:	e3 ff ff f4 	bi 8001294 <rtems_bdpart_read_record+0x64>     <== NOT EXECUTED
                                                                      

08001934 <rtems_bdpart_register>: rtems_status_code rtems_bdpart_register( const char *disk_name, const rtems_bdpart_partition *pt, size_t count ) {
 8001934:	37 9c ff c8 	addi sp,sp,-56                                 
 8001938:	5b 8b 00 2c 	sw (sp+44),r11                                 
 800193c:	5b 8c 00 28 	sw (sp+40),r12                                 
 8001940:	5b 8d 00 24 	sw (sp+36),r13                                 
 8001944:	5b 8e 00 20 	sw (sp+32),r14                                 
 8001948:	5b 8f 00 1c 	sw (sp+28),r15                                 
 800194c:	5b 90 00 18 	sw (sp+24),r16                                 
 8001950:	5b 91 00 14 	sw (sp+20),r17                                 
 8001954:	5b 92 00 10 	sw (sp+16),r18                                 
 8001958:	5b 93 00 0c 	sw (sp+12),r19                                 
 800195c:	5b 94 00 08 	sw (sp+8),r20                                  
 8001960:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001964:	b8 20 80 00 	mv r16,r1                                      
 8001968:	b8 40 58 00 	mv r11,r2                                      
 800196c:	b8 60 88 00 	mv r17,r3                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
 8001970:	5b 80 00 38 	sw (sp+56),r0                                  
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
 8001974:	f8 00 50 98 	calli 8015bd4 <strlen>                         
  size_t i = 0;                                                       
  int fd = -1;                                                        
 8001978:	34 05 ff ff 	mvi r5,-1                                      
  rtems_blkdev_bnum disk_end = 0;                                     
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
 800197c:	b8 20 98 00 	mv r19,r1                                      
  size_t i = 0;                                                       
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001980:	37 82 00 34 	addi r2,sp,52                                  
 8001984:	ba 00 08 00 	mv r1,r16                                      
 8001988:	37 83 00 30 	addi r3,sp,48                                  
 800198c:	37 84 00 38 	addi r4,sp,56                                  
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
  size_t i = 0;                                                       
  int fd = -1;                                                        
 8001990:	5b 85 00 34 	sw (sp+52),r5                                  
  rtems_disk_device *dd = NULL;                                       
 8001994:	5b 80 00 30 	sw (sp+48),r0                                  
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001998:	fb ff fe e0 	calli 8001518 <rtems_bdpart_get_disk_data>     
 800199c:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 80019a0:	44 20 00 0f 	be r1,r0,80019dc <rtems_bdpart_register+0xa8>  <== ALWAYS TAKEN
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
                                                                      
  return esc;                                                         
}                                                                     
 80019a4:	b9 80 08 00 	mv r1,r12                                      
 80019a8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80019ac:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 80019b0:	2b 8c 00 28 	lw r12,(sp+40)                                 
 80019b4:	2b 8d 00 24 	lw r13,(sp+36)                                 
 80019b8:	2b 8e 00 20 	lw r14,(sp+32)                                 
 80019bc:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 80019c0:	2b 90 00 18 	lw r16,(sp+24)                                 
 80019c4:	2b 91 00 14 	lw r17,(sp+20)                                 
 80019c8:	2b 92 00 10 	lw r18,(sp+16)                                 
 80019cc:	2b 93 00 0c 	lw r19,(sp+12)                                 
 80019d0:	2b 94 00 08 	lw r20,(sp+8)                                  
 80019d4:	37 9c 00 38 	addi sp,sp,56                                  
 80019d8:	c3 a0 00 00 	ret                                            
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80019dc:	2b 82 00 30 	lw r2,(sp+48)                                  
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
 80019e0:	2b 81 00 34 	lw r1,(sp+52)                                  
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80019e4:	28 52 00 04 	lw r18,(r2+4)                                  
 80019e8:	28 4f 00 00 	lw r15,(r2+0)                                  
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
 80019ec:	f8 00 0a 00 	calli 80041ec <close>                          
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create logical disk name */                                      
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
 80019f0:	36 61 00 04 	addi r1,r19,4                                  
 80019f4:	f8 00 0c 21 	calli 8004a78 <malloc>                         
 80019f8:	b8 20 70 00 	mv r14,r1                                      
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
  return temp.__overlay.minor;                                        
 80019fc:	ba 40 68 00 	mv r13,r18                                     
  if (logical_disk_name == NULL) {                                    
 8001a00:	44 2c 00 29 	be r1,r12,8001aa4 <rtems_bdpart_register+0x170><== NEVER TAKEN
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
 8001a04:	ba 60 18 00 	mv r3,r19                                      
 8001a08:	ba 00 10 00 	mv r2,r16                                      
 8001a0c:	f8 00 50 ee 	calli 8015dc4 <strncpy>                        
  logical_disk_marker = logical_disk_name + disk_name_size;           
 8001a10:	b5 d3 98 00 	add r19,r14,r19                                
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
 8001a14:	46 20 00 19 	be r17,r0,8001a78 <rtems_bdpart_register+0x144><== NEVER TAKEN
 8001a18:	78 10 08 02 	mvhi r16,0x802                                 
 8001a1c:	3a 10 73 94 	ori r16,r16,0x7394                             
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 8001a20:	34 14 00 03 	mvi r20,3                                      
                                                                      
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
 8001a24:	35 8c 00 01 	addi r12,r12,1                                 
 8001a28:	34 02 00 04 	mvi r2,4                                       
 8001a2c:	ba 00 18 00 	mv r3,r16                                      
 8001a30:	b9 80 20 00 	mv r4,r12                                      
 8001a34:	ba 60 08 00 	mv r1,r19                                      
 8001a38:	f8 00 4e f2 	calli 8015600 <snprintf>                       
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
    int rv = 0;                                                       
                                                                      
    /* New minor number */                                            
    ++minor;                                                          
 8001a3c:	35 ad 00 01 	addi r13,r13,1                                 
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
 8001a40:	b9 a0 10 00 	mv r2,r13                                      
 8001a44:	b9 e0 18 00 	mv r3,r15                                      
 8001a48:	ba 40 20 00 	mv r4,r18                                      
 8001a4c:	b9 c0 38 00 	mv r7,r14                                      
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 8001a50:	48 34 00 0d 	bg r1,r20,8001a84 <rtems_bdpart_register+0x150><== NEVER TAKEN
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
      logical_disk,                                                   
      disk,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
 8001a54:	29 65 00 00 	lw r5,(r11+0)                                  
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
 8001a58:	29 66 00 04 	lw r6,(r11+4)                                  
 8001a5c:	b9 e0 08 00 	mv r1,r15                                      
 8001a60:	c8 c5 30 00 	sub r6,r6,r5                                   
 8001a64:	f8 00 03 e5 	calli 80029f8 <rtems_disk_create_log>          
      disk,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
      logical_disk_name                                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
 8001a68:	5c 20 00 0b 	bne r1,r0,8001a94 <rtems_bdpart_register+0x160><== NEVER TAKEN
 8001a6c:	35 6b 00 30 	addi r11,r11,48                                
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
  logical_disk_marker = logical_disk_name + disk_name_size;           
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
 8001a70:	56 2c ff ed 	bgu r17,r12,8001a24 <rtems_bdpart_register+0xf0>
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8001a74:	34 0c 00 00 	mvi r12,0                                      
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 8001a78:	b9 c0 08 00 	mv r1,r14                                      
 8001a7c:	f8 00 0a 0b 	calli 80042a8 <free>                           
                                                                      
  return esc;                                                         
 8001a80:	e3 ff ff c9 	bi 80019a4 <rtems_bdpart_register+0x70>        
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 8001a84:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
      esc = RTEMS_INVALID_NAME;                                       
 8001a88:	34 0c 00 03 	mvi r12,3                                      <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 8001a8c:	f8 00 0a 07 	calli 80042a8 <free>                           <== NOT EXECUTED
 8001a90:	e3 ff ff c5 	bi 80019a4 <rtems_bdpart_register+0x70>        <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
 8001a94:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
 8001a98:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8001a9c:	f8 00 0a 03 	calli 80042a8 <free>                           <== NOT EXECUTED
 8001aa0:	e3 ff ff c1 	bi 80019a4 <rtems_bdpart_register+0x70>        <== NOT EXECUTED
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create logical disk name */                                      
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (logical_disk_name == NULL) {                                    
    return RTEMS_NO_MEMORY;                                           
 8001aa4:	34 0c 00 1a 	mvi r12,26                                     <== NOT EXECUTED
 8001aa8:	e3 ff ff bf 	bi 80019a4 <rtems_bdpart_register+0x70>        <== NOT EXECUTED
                                                                      

08001aac <rtems_bdpart_register_from_disk>: return esc; } rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name) {
 8001aac:	37 9c fc dc 	addi sp,sp,-804                                
 8001ab0:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8001ab4:	5b 8c 00 08 	sw (sp+8),r12                                  
 8001ab8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_bdpart_format format;                                         
  rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];     
  size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;                  
                                                                      
  /* Read partitions */                                               
  sc = rtems_bdpart_read( disk_name, &format, pt, &count);            
 8001abc:	37 8b 00 10 	addi r11,sp,16                                 
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_bdpart_format format;                                         
  rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];     
  size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;                  
 8001ac0:	34 05 00 10 	mvi r5,16                                      
                                                                      
  /* Read partitions */                                               
  sc = rtems_bdpart_read( disk_name, &format, pt, &count);            
 8001ac4:	37 82 03 10 	addi r2,sp,784                                 
 8001ac8:	b9 60 18 00 	mv r3,r11                                      
 8001acc:	37 84 03 24 	addi r4,sp,804                                 
                                                                      
  return esc;                                                         
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_register_from_disk( const char *disk_name)
{                                                                     
 8001ad0:	b8 20 60 00 	mv r12,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_bdpart_format format;                                         
  rtems_bdpart_partition pt [RTEMS_BDPART_PARTITION_NUMBER_HINT];     
  size_t count = RTEMS_BDPART_PARTITION_NUMBER_HINT;                  
 8001ad4:	5b 85 03 24 	sw (sp+804),r5                                 
                                                                      
  /* Read partitions */                                               
  sc = rtems_bdpart_read( disk_name, &format, pt, &count);            
 8001ad8:	fb ff fe c3 	calli 80015e4 <rtems_bdpart_read>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001adc:	5c 20 00 05 	bne r1,r0,8001af0 <rtems_bdpart_register_from_disk+0x44><== NEVER TAKEN
    return sc;                                                        
  }                                                                   
                                                                      
  /* Register partitions */                                           
  return rtems_bdpart_register( disk_name, pt, count);                
 8001ae0:	2b 83 03 24 	lw r3,(sp+804)                                 
 8001ae4:	b9 80 08 00 	mv r1,r12                                      
 8001ae8:	b9 60 10 00 	mv r2,r11                                      
 8001aec:	fb ff ff 92 	calli 8001934 <rtems_bdpart_register>          
}                                                                     
 8001af0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001af4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001af8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001afc:	37 9c 03 24 	addi sp,sp,804                                 
 8001b00:	c3 a0 00 00 	ret                                            
                                                                      

08022524 <rtems_bdpart_unmount>: const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count, const char *mount_base ) {
 8022524:	37 9c ff dc 	addi sp,sp,-36                                 <== NOT EXECUTED
 8022528:	5b 8b 00 24 	sw (sp+36),r11                                 <== NOT EXECUTED
 802252c:	5b 8c 00 20 	sw (sp+32),r12                                 <== NOT EXECUTED
 8022530:	5b 8d 00 1c 	sw (sp+28),r13                                 <== NOT EXECUTED
 8022534:	5b 8e 00 18 	sw (sp+24),r14                                 <== NOT EXECUTED
 8022538:	5b 8f 00 14 	sw (sp+20),r15                                 <== NOT EXECUTED
 802253c:	5b 90 00 10 	sw (sp+16),r16                                 <== NOT EXECUTED
 8022540:	5b 91 00 0c 	sw (sp+12),r17                                 <== NOT EXECUTED
 8022544:	5b 92 00 08 	sw (sp+8),r18                                  <== NOT EXECUTED
 8022548:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
 802254c:	34 02 00 2f 	mvi r2,47                                      <== NOT EXECUTED
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
 8022550:	b8 80 90 00 	mv r18,r4                                      <== NOT EXECUTED
 8022554:	b8 60 78 00 	mv r15,r3                                      <== NOT EXECUTED
 8022558:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
 802255c:	f8 00 8e f0 	calli 804611c <strrchr>                        <== NOT EXECUTED
 8022560:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  char *mount_point = NULL;                                           
  char *mount_marker = NULL;                                          
  size_t disk_file_name_size = 0;                                     
  size_t disk_name_size = strlen( disk_name);                         
 8022564:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8022568:	f8 00 8b 12 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 802256c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
 8022570:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
 8022574:	f8 00 8b 0f 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 8022578:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
 802257c:	45 80 00 05 	be r12,r0,8022590 <rtems_bdpart_unmount+0x6c>  <== NOT EXECUTED
    disk_file_name += 1;                                              
 8022580:	35 91 00 01 	addi r17,r12,1                                 <== NOT EXECUTED
    disk_file_name_size = strlen( disk_file_name);                    
 8022584:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8022588:	f8 00 8b 0a 	calli 80451b0 <strlen>                         <== NOT EXECUTED
 802258c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
 8022590:	b5 ab 80 00 	add r16,r13,r11                                <== NOT EXECUTED
 8022594:	36 01 00 05 	addi r1,r16,5                                  <== NOT EXECUTED
 8022598:	fb ff 7b de 	calli 8001510 <malloc>                         <== NOT EXECUTED
 802259c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
 80225a0:	34 0e 00 1a 	mvi r14,26                                     <== NOT EXECUTED
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (mount_point == NULL) {                                          
 80225a4:	44 20 00 22 	be r1,r0,802262c <rtems_bdpart_unmount+0x108>  <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
 80225a8:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 80225ac:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 80225b0:	f8 00 8b a3 	calli 804543c <strncpy>                        <== NOT EXECUTED
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 80225b4:	35 61 00 01 	addi r1,r11,1                                  <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
 80225b8:	34 04 00 2f 	mvi r4,47                                      <== NOT EXECUTED
 80225bc:	b5 8b 58 00 	add r11,r12,r11                                <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 80225c0:	b5 81 08 00 	add r1,r12,r1                                  <== NOT EXECUTED
 80225c4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 80225c8:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
 80225cc:	31 64 00 00 	sb (r11+0),r4                                  <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
 80225d0:	36 10 00 01 	addi r16,r16,1                                 <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
 80225d4:	f8 00 8b 9a 	calli 804543c <strncpy>                        <== NOT EXECUTED
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
 80225d8:	b5 90 80 00 	add r16,r12,r16                                <== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 80225dc:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
 80225e0:	45 e0 00 13 	be r15,r0,802262c <rtems_bdpart_unmount+0x108> <== NOT EXECUTED
 80225e4:	78 0e 08 06 	mvhi r14,0x806                                 <== NOT EXECUTED
 80225e8:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 80225ec:	39 ce 60 cc 	ori r14,r14,0x60cc                             <== NOT EXECUTED
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 80225f0:	34 11 00 03 	mvi r17,3                                      <== NOT EXECUTED
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
 80225f4:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
 80225f8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80225fc:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8022600:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 8022604:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8022608:	f8 00 87 78 	calli 80443e8 <snprintf>                       <== NOT EXECUTED
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
 802260c:	48 31 00 1a 	bg r1,r17,8022674 <rtems_bdpart_unmount+0x150> <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Unmount */                                                     
    rv = unmount( mount_point);                                       
 8022610:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8022614:	f8 00 15 1f 	calli 8027a90 <unmount>                        <== NOT EXECUTED
 8022618:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
    if (rv == 0) {                                                    
      /* Remove mount point */                                        
      rv = rmdir( mount_point);                                       
 802261c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Unmount */                                                     
    rv = unmount( mount_point);                                       
    if (rv == 0) {                                                    
 8022620:	45 a0 00 11 	be r13,r0,8022664 <rtems_bdpart_unmount+0x140> <== NOT EXECUTED
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
 8022624:	55 eb ff f4 	bgu r15,r11,80225f4 <rtems_bdpart_unmount+0xd0><== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8022628:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
 802262c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8022630:	fb ff 7a b6 	calli 8001108 <free>                           <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
 8022634:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8022638:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 802263c:	2b 8b 00 24 	lw r11,(sp+36)                                 <== NOT EXECUTED
 8022640:	2b 8c 00 20 	lw r12,(sp+32)                                 <== NOT EXECUTED
 8022644:	2b 8d 00 1c 	lw r13,(sp+28)                                 <== NOT EXECUTED
 8022648:	2b 8e 00 18 	lw r14,(sp+24)                                 <== NOT EXECUTED
 802264c:	2b 8f 00 14 	lw r15,(sp+20)                                 <== NOT EXECUTED
 8022650:	2b 90 00 10 	lw r16,(sp+16)                                 <== NOT EXECUTED
 8022654:	2b 91 00 0c 	lw r17,(sp+12)                                 <== NOT EXECUTED
 8022658:	2b 92 00 08 	lw r18,(sp+8)                                  <== NOT EXECUTED
 802265c:	37 9c 00 24 	addi sp,sp,36                                  <== NOT EXECUTED
 8022660:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
    /* Unmount */                                                     
    rv = unmount( mount_point);                                       
    if (rv == 0) {                                                    
      /* Remove mount point */                                        
      rv = rmdir( mount_point);                                       
 8022664:	f8 00 12 fd 	calli 8027258 <rmdir>                          <== NOT EXECUTED
      if (rv != 0) {                                                  
 8022668:	44 2d ff ef 	be r1,r13,8022624 <rtems_bdpart_unmount+0x100> <== NOT EXECUTED
        esc = RTEMS_IO_ERROR;                                         
 802266c:	34 0e 00 1b 	mvi r14,27                                     <== NOT EXECUTED
 8022670:	e3 ff ff ef 	bi 802262c <rtems_bdpart_unmount+0x108>        <== NOT EXECUTED
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
      esc = RTEMS_INVALID_NAME;                                       
 8022674:	34 0e 00 03 	mvi r14,3                                      <== NOT EXECUTED
 8022678:	e3 ff ff ed 	bi 802262c <rtems_bdpart_unmount+0x108>        <== NOT EXECUTED
                                                                      

08001b04 <rtems_bdpart_unregister>: rtems_status_code rtems_bdpart_unregister( const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count ) {
 8001b04:	37 9c ff dc 	addi sp,sp,-36                                 
 8001b08:	5b 8b 00 18 	sw (sp+24),r11                                 
 8001b0c:	5b 8c 00 14 	sw (sp+20),r12                                 
 8001b10:	5b 8d 00 10 	sw (sp+16),r13                                 
 8001b14:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8001b18:	5b 8f 00 08 	sw (sp+8),r15                                  
 8001b1c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  size_t i = 0;                                                       
  int fd = -1;                                                        
 8001b20:	34 05 ff ff 	mvi r5,-1                                      
rtems_status_code rtems_bdpart_unregister(                            
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count                                                        
)                                                                     
{                                                                     
 8001b24:	b8 60 70 00 	mv r14,r3                                      
  size_t i = 0;                                                       
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001b28:	37 82 00 20 	addi r2,sp,32                                  
 8001b2c:	37 83 00 1c 	addi r3,sp,28                                  
 8001b30:	37 84 00 24 	addi r4,sp,36                                  
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
 8001b34:	5b 80 00 24 	sw (sp+36),r0                                  
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  size_t i = 0;                                                       
  int fd = -1;                                                        
 8001b38:	5b 85 00 20 	sw (sp+32),r5                                  
  rtems_disk_device *dd = NULL;                                       
 8001b3c:	5b 80 00 1c 	sw (sp+28),r0                                  
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001b40:	fb ff fe 76 	calli 8001518 <rtems_bdpart_get_disk_data>     
 8001b44:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001b48:	44 20 00 0a 	be r1,r0,8001b70 <rtems_bdpart_unregister+0x6c><== ALWAYS TAKEN
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001b4c:	b9 60 08 00 	mv r1,r11                                      
 8001b50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001b54:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8001b58:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8001b5c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8001b60:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8001b64:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8001b68:	37 9c 00 24 	addi sp,sp,36                                  
 8001b6c:	c3 a0 00 00 	ret                                            
 8001b70:	2b 82 00 1c 	lw r2,(sp+28)                                  
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
 8001b74:	2b 81 00 20 	lw r1,(sp+32)                                  
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001b78:	28 4c 00 04 	lw r12,(r2+4)                                  
 8001b7c:	28 4f 00 00 	lw r15,(r2+0)                                  
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
 8001b80:	f8 00 09 9b 	calli 80041ec <close>                          
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
 8001b84:	45 cb ff f2 	be r14,r11,8001b4c <rtems_bdpart_unregister+0x48><== NEVER TAKEN
 8001b88:	34 0d 00 00 	mvi r13,0                                      
    /* New minor number */                                            
    ++minor;                                                          
 8001b8c:	35 8c 00 01 	addi r12,r12,1                                 
                                                                      
    /* Get the device identifier */                                   
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Delete logical disk */                                         
    sc = rtems_disk_delete( logical_disk);                            
 8001b90:	b9 e0 08 00 	mv r1,r15                                      
 8001b94:	b9 80 10 00 	mv r2,r12                                      
 8001b98:	f8 00 03 07 	calli 80027b4 <rtems_disk_delete>              
 8001b9c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
 8001ba0:	35 ad 00 01 	addi r13,r13,1                                 
    /* Get the device identifier */                                   
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Delete logical disk */                                         
    sc = rtems_disk_delete( logical_disk);                            
    if (sc != RTEMS_SUCCESSFUL) {                                     
 8001ba4:	5c 20 ff ea 	bne r1,r0,8001b4c <rtems_bdpart_unregister+0x48><== NEVER TAKEN
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
 8001ba8:	55 cd ff f9 	bgu r14,r13,8001b8c <rtems_bdpart_unregister+0x88>
 8001bac:	e3 ff ff e8 	bi 8001b4c <rtems_bdpart_unregister+0x48>      
                                                                      

08001cd4 <rtems_bdpart_write>: const char *disk_name, const rtems_bdpart_format *format, const rtems_bdpart_partition *pt, size_t count ) {
 8001cd4:	37 9c ff c0 	addi sp,sp,-64                                 
 8001cd8:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8001cdc:	5b 8c 00 28 	sw (sp+40),r12                                 
 8001ce0:	5b 8d 00 24 	sw (sp+36),r13                                 
 8001ce4:	5b 8e 00 20 	sw (sp+32),r14                                 
 8001ce8:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8001cec:	5b 90 00 18 	sw (sp+24),r16                                 
 8001cf0:	5b 91 00 14 	sw (sp+20),r17                                 
 8001cf4:	5b 92 00 10 	sw (sp+16),r18                                 
 8001cf8:	5b 93 00 0c 	sw (sp+12),r19                                 
 8001cfc:	5b 94 00 08 	sw (sp+8),r20                                  
 8001d00:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001d04:	b8 40 68 00 	mv r13,r2                                      
 8001d08:	b8 60 70 00 	mv r14,r3                                      
 8001d0c:	b8 80 58 00 	mv r11,r4                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
 8001d10:	44 40 00 03 	be r2,r0,8001d1c <rtems_bdpart_write+0x48>     <== NEVER TAKEN
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
 8001d14:	28 42 00 00 	lw r2,(r2+0)                                   
 8001d18:	44 40 00 1d 	be r2,r0,8001d8c <rtems_bdpart_write+0xb8>     <== ALWAYS TAKEN
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
 8001d1c:	5b 80 00 3c 	sw (sp+60),r0                                  <== NOT EXECUTED
  rtems_blkdev_bnum disk_end = 0;                                     
 8001d20:	5b 80 00 38 	sw (sp+56),r0                                  <== NOT EXECUTED
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
 8001d24:	34 10 00 00 	mvi r16,0                                      <== NOT EXECUTED
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum record_space =                                    
 8001d28:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
 8001d2c:	34 02 ff ff 	mvi r2,-1                                      
 8001d30:	5b 82 00 34 	sw (sp+52),r2                                  
  rtems_disk_device *dd = NULL;                                       
 8001d34:	5b 80 00 30 	sw (sp+48),r0                                  
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
 8001d38:	34 0c 00 00 	mvi r12,0                                      
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
 8001d3c:	45 60 00 06 	be r11,r0,8001d54 <rtems_bdpart_write+0x80>    <== NEVER TAKEN
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL) {                                 
 8001d40:	65 d1 00 00 	cmpei r17,r14,0                                
 8001d44:	65 a2 00 00 	cmpei r2,r13,0                                 
    return RTEMS_INVALID_ADDRESS;                                     
 8001d48:	34 0c 00 09 	mvi r12,9                                      
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL) {                                 
 8001d4c:	ba 22 88 00 	or r17,r17,r2                                  
 8001d50:	46 20 00 16 	be r17,r0,8001da8 <rtems_bdpart_write+0xd4>    <== ALWAYS TAKEN
  if (block != NULL) {                                                
    rtems_bdbuf_sync( block);                                         
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
 8001d54:	b9 80 08 00 	mv r1,r12                                      
 8001d58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d5c:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8001d60:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8001d64:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8001d68:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8001d6c:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8001d70:	2b 90 00 18 	lw r16,(sp+24)                                 
 8001d74:	2b 91 00 14 	lw r17,(sp+20)                                 
 8001d78:	2b 92 00 10 	lw r18,(sp+16)                                 
 8001d7c:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8001d80:	2b 94 00 08 	lw r20,(sp+8)                                  
 8001d84:	37 9c 00 40 	addi sp,sp,64                                  
 8001d88:	c3 a0 00 00 	ret                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
 8001d8c:	41 a3 00 08 	lbu r3,(r13+8)                                 
 8001d90:	44 62 ff e3 	be r3,r2,8001d1c <rtems_bdpart_write+0x48>     <== NEVER TAKEN
  rtems_bdbuf_buffer *block = NULL;                                   
 8001d94:	5b 80 00 3c 	sw (sp+60),r0                                  
  rtems_blkdev_bnum disk_end = 0;                                     
 8001d98:	5b 80 00 38 	sw (sp+56),r0                                  
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
 8001d9c:	34 10 00 01 	mvi r16,1                                      
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum record_space =                                    
 8001da0:	34 0f 00 3f 	mvi r15,63                                     
 8001da4:	e3 ff ff e2 	bi 8001d2c <rtems_bdpart_write+0x58>           
  if (format == NULL || pt == NULL) {                                 
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
 8001da8:	37 82 00 34 	addi r2,sp,52                                  
 8001dac:	37 83 00 30 	addi r3,sp,48                                  
 8001db0:	37 84 00 38 	addi r4,sp,56                                  
 8001db4:	fb ff fd d9 	calli 8001518 <rtems_bdpart_get_disk_data>     
 8001db8:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001dbc:	5c 31 ff e6 	bne r1,r17,8001d54 <rtems_bdpart_write+0x80>   <== NEVER TAKEN
    return sc;                                                        
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
 8001dc0:	5e 01 00 97 	bne r16,r1,800201c <rtems_bdpart_write+0x348>  
 8001dc4:	2b 81 00 38 	lw r1,(sp+56)                                  <== NOT EXECUTED
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check that begin and end are proper within the disk */         
    if (p->begin >= disk_end || p->end > disk_end) {                  
 8001dc8:	29 c3 00 00 	lw r3,(r14+0)                                  
      esc = RTEMS_INVALID_NUMBER;                                     
 8001dcc:	34 0c 00 0a 	mvi r12,10                                     
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check that begin and end are proper within the disk */         
    if (p->begin >= disk_end || p->end > disk_end) {                  
 8001dd0:	50 61 00 8c 	bgeu r3,r1,8002000 <rtems_bdpart_write+0x32c>  <== NEVER TAKEN
 8001dd4:	29 c2 00 04 	lw r2,(r14+4)                                  
 8001dd8:	54 41 00 8a 	bgu r2,r1,8002000 <rtems_bdpart_write+0x32c>   <== NEVER TAKEN
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that begin and end are valid */                          
    if (p->begin >= p->end) {                                         
 8001ddc:	50 62 00 89 	bgeu r3,r2,8002000 <rtems_bdpart_write+0x32c>  <== NEVER TAKEN
 8001de0:	b9 c0 88 00 	mv r17,r14                                     
 8001de4:	b9 c0 28 00 	mv r5,r14                                      
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
  }                                                                   
                                                                      
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
 8001de8:	34 06 00 00 	mvi r6,0                                       
 8001dec:	34 c6 00 01 	addi r6,r6,1                                   
 8001df0:	55 66 00 79 	bgu r11,r6,8001fd4 <rtems_bdpart_write+0x300>  
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
 8001df4:	29 a1 00 00 	lw r1,(r13+0)                                  
    esc = RTEMS_NOT_IMPLEMENTED;                                      
 8001df8:	34 0c 00 18 	mvi r12,24                                     
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
 8001dfc:	5c 20 00 81 	bne r1,r0,8002000 <rtems_bdpart_write+0x32c>   <== NEVER TAKEN
   * Set primary partition count.  If we have more than four partitions we need
   * an extended partition which will contain the partitions of number four and
   * above as logical partitions.  If we have four or less partitions we can
   * use the primary partition table.                                 
   */                                                                 
  ppc = count <= 4 ? count : 3;                                       
 8001e00:	34 01 00 04 	mvi r1,4                                       
 8001e04:	b9 60 90 00 	mv r18,r11                                     
 8001e08:	50 2b 00 02 	bgeu r1,r11,8001e10 <rtems_bdpart_write+0x13c> <== NEVER TAKEN
 8001e0c:	34 12 00 03 	mvi r18,3                                      
                                                                      
  /*                                                                  
   * Check that the first primary partition starts at head one and sector one
   * under the virtual one head and 63 sectors geometry if necessary. 
   */                                                                 
  if (dos_compatibility && pt [0].begin != RTEMS_BDPART_MBR_CYLINDER_SIZE) {
 8001e10:	46 00 00 04 	be r16,r0,8001e20 <rtems_bdpart_write+0x14c>   <== NEVER TAKEN
 8001e14:	34 01 00 3f 	mvi r1,63                                      
    esc = RTEMS_INVALID_NUMBER;                                       
 8001e18:	34 0c 00 0a 	mvi r12,10                                     
                                                                      
  /*                                                                  
   * Check that the first primary partition starts at head one and sector one
   * under the virtual one head and 63 sectors geometry if necessary. 
   */                                                                 
  if (dos_compatibility && pt [0].begin != RTEMS_BDPART_MBR_CYLINDER_SIZE) {
 8001e1c:	5c 61 00 79 	bne r3,r1,8002000 <rtems_bdpart_write+0x32c>   <== NEVER TAKEN
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
 8001e20:	52 4b 00 21 	bgeu r18,r11,8001ea4 <rtems_bdpart_write+0x1d0><== NEVER TAKEN
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
 8001e24:	36 41 ff ff 	addi r1,r18,-1                                 
 8001e28:	b6 52 10 00 	add r2,r18,r18                                 
 8001e2c:	b4 21 18 00 	add r3,r1,r1                                   
 8001e30:	b4 52 10 00 	add r2,r2,r18                                  
 8001e34:	b4 61 08 00 	add r1,r3,r1                                   
 8001e38:	b4 42 10 00 	add r2,r2,r2                                   
 8001e3c:	b4 21 08 00 	add r1,r1,r1                                   
 8001e40:	b4 42 10 00 	add r2,r2,r2                                   
 8001e44:	b4 21 08 00 	add r1,r1,r1                                   
 8001e48:	b4 42 10 00 	add r2,r2,r2                                   
 8001e4c:	b4 21 08 00 	add r1,r1,r1                                   
 8001e50:	b4 42 10 00 	add r2,r2,r2                                   
 8001e54:	b4 21 08 00 	add r1,r1,r1                                   
 8001e58:	b5 c2 10 00 	add r2,r14,r2                                  
 8001e5c:	b5 c1 08 00 	add r1,r14,r1                                  
 8001e60:	28 42 00 00 	lw r2,(r2+0)                                   
 8001e64:	28 21 00 04 	lw r1,(r1+4)                                   
      esc = RTEMS_INVALID_NUMBER;                                     
 8001e68:	34 0c 00 0a 	mvi r12,10                                     
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
 8001e6c:	c8 41 08 00 	sub r1,r2,r1                                   
 8001e70:	55 e1 00 64 	bgu r15,r1,8002000 <rtems_bdpart_write+0x32c>  <== NEVER TAKEN
 8001e74:	36 41 00 01 	addi r1,r18,1                                  
 8001e78:	b4 21 18 00 	add r3,r1,r1                                   
 8001e7c:	b4 61 18 00 	add r3,r3,r1                                   
 8001e80:	b4 63 18 00 	add r3,r3,r3                                   
 8001e84:	b4 63 18 00 	add r3,r3,r3                                   
 8001e88:	b4 63 18 00 	add r3,r3,r3                                   
 8001e8c:	b4 63 18 00 	add r3,r3,r3                                   
 8001e90:	b5 c3 18 00 	add r3,r14,r3                                  
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 8001e94:	ba 40 10 00 	mv r2,r18                                      
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
 8001e98:	34 42 00 01 	addi r2,r2,1                                   
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 8001e9c:	b8 60 20 00 	mv r4,r3                                       
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
 8001ea0:	55 62 00 7f 	bgu r11,r2,800209c <rtems_bdpart_write+0x3c8>  <== NEVER TAKEN
 8001ea4:	b9 c0 60 00 	mv r12,r14                                     
 8001ea8:	34 10 00 00 	mvi r16,0                                      
 8001eac:	37 93 00 43 	addi r19,sp,67                                 
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
 8001eb0:	34 14 00 ff 	mvi r20,255                                    
    uint8_t type = 0;                                                 
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
 8001eb4:	35 81 00 08 	addi r1,r12,8                                  
 8001eb8:	ba 60 10 00 	mv r2,r19                                      
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
    uint8_t type = 0;                                                 
 8001ebc:	33 80 00 43 	sb (sp+67),r0                                  
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
 8001ec0:	fb ff fd 89 	calli 80014e4 <rtems_bdpart_to_mbr_partition_type>
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
 8001ec4:	36 10 00 01 	addi r16,r16,1                                 
    uint8_t type = 0;                                                 
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
 8001ec8:	44 20 00 8a 	be r1,r0,80020f0 <rtems_bdpart_write+0x41c>    <== NEVER TAKEN
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
 8001ecc:	29 81 00 28 	lw r1,(r12+40)                                 
 8001ed0:	5c 20 00 88 	bne r1,r0,80020f0 <rtems_bdpart_write+0x41c>   <== NEVER TAKEN
 8001ed4:	29 81 00 2c 	lw r1,(r12+44)                                 
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
 8001ed8:	35 8c 00 30 	addi r12,r12,48                                
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
 8001edc:	54 34 00 85 	bgu r1,r20,80020f0 <rtems_bdpart_write+0x41c>  <== NEVER TAKEN
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
 8001ee0:	55 70 ff f5 	bgu r11,r16,8001eb4 <rtems_bdpart_write+0x1e0> 
    /* Check ID */                                                    
    /* TODO */                                                        
  }                                                                   
                                                                      
  /* New MBR */                                                       
  sc = rtems_bdpart_new_record( dd, 0, &block);                       
 8001ee4:	2b 81 00 30 	lw r1,(sp+48)                                  
 8001ee8:	37 93 00 3c 	addi r19,sp,60                                 
 8001eec:	34 02 00 00 	mvi r2,0                                       
 8001ef0:	ba 60 18 00 	mv r3,r19                                      
 8001ef4:	fb ff ff 4b 	calli 8001c20 <rtems_bdpart_new_record>        
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001ef8:	b8 20 60 00 	mv r12,r1                                      
 8001efc:	5c 20 00 41 	bne r1,r0,8002000 <rtems_bdpart_write+0x32c>   <== NEVER TAKEN
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Write disk ID */                                                 
  rtems_uint32_to_little_endian(                                      
 8001f00:	2b 81 00 3c 	lw r1,(sp+60)                                  
 8001f04:	29 a4 00 04 	lw r4,(r13+4)                                  
 8001f08:	28 22 00 1c 	lw r2,(r1+28)                                  
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 8001f0c:	34 43 00 04 	addi r3,r2,4                                   
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
 8001f10:	00 81 00 01 	srui r1,r4,1                                   
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    data [i] = (uint8_t) value;                                       
 8001f14:	30 44 01 b8 	sb (r2+440),r4                                 
    value >>= 8;                                                      
 8001f18:	00 21 00 01 	srui r1,r1,1                                   
 8001f1c:	34 42 00 01 	addi r2,r2,1                                   
 8001f20:	00 21 00 01 	srui r1,r1,1                                   
 8001f24:	00 21 00 01 	srui r1,r1,1                                   
 8001f28:	00 21 00 01 	srui r1,r1,1                                   
 8001f2c:	00 21 00 01 	srui r1,r1,1                                   
 8001f30:	00 21 00 01 	srui r1,r1,1                                   
 8001f34:	00 24 00 01 	srui r4,r1,1                                   
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
 8001f38:	5c 43 ff f6 	bne r2,r3,8001f10 <rtems_bdpart_write+0x23c>   
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
 8001f3c:	2b 81 00 3c 	lw r1,(sp+60)                                  
  for (i = 0; i < ppc; ++i) {                                         
 8001f40:	34 0d 00 00 	mvi r13,0                                      
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
 8001f44:	28 30 00 1c 	lw r16,(r1+28)                                 
 8001f48:	36 10 01 be 	addi r16,r16,446                               
 8001f4c:	ba 00 60 00 	mv r12,r16                                     
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
      data,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
 8001f50:	2a 22 00 00 	lw r2,(r17+0)                                  
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
 8001f54:	2a 26 00 04 	lw r6,(r17+4)                                  
 8001f58:	42 24 00 08 	lbu r4,(r17+8)                                 
 8001f5c:	42 25 00 2f 	lbu r5,(r17+47)                                
 8001f60:	b9 80 08 00 	mv r1,r12                                      
 8001f64:	c8 c2 18 00 	sub r3,r6,r2                                   
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
 8001f68:	35 ad 00 01 	addi r13,r13,1                                 
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
 8001f6c:	fb ff ff 11 	calli 8001bb0 <rtems_bdpart_write_mbr_partition>
      p->end - p->begin,                                              
      rtems_bdpart_mbr_partition_type( p->type),                      
      (uint8_t) p->flags                                              
    );                                                                
                                                                      
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
 8001f70:	35 8c 00 10 	addi r12,r12,16                                
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
 8001f74:	36 31 00 30 	addi r17,r17,48                                
 8001f78:	56 4d ff f6 	bgu r18,r13,8001f50 <rtems_bdpart_write+0x27c> 
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 8001f7c:	b6 52 08 00 	add r1,r18,r18                                 
 8001f80:	b4 21 08 00 	add r1,r1,r1                                   
 8001f84:	b4 21 08 00 	add r1,r1,r1                                   
 8001f88:	b4 21 08 00 	add r1,r1,r1                                   
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
 8001f8c:	b6 01 80 00 	add r16,r16,r1                                 
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8001f90:	34 0c 00 00 	mvi r12,0                                      
                                                                      
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
  }                                                                   
                                                                      
  /* Write extended partition with logical partitions if necessary */ 
  if (ppc != count) {                                                 
 8001f94:	46 4b 00 1b 	be r18,r11,8002000 <rtems_bdpart_write+0x32c>  <== NEVER TAKEN
    rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */ 
                                                                      
    /* Begin of extended partition */                                 
    rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;       
 8001f98:	34 02 00 30 	mvi r2,48                                      
 8001f9c:	ba 40 08 00 	mv r1,r18                                      
 8001fa0:	f8 00 91 7f 	calli 802659c <__mulsi3>                       
 8001fa4:	b5 c1 68 00 	add r13,r14,r1                                 
 8001fa8:	29 b1 00 00 	lw r17,(r13+0)                                 
                                                                      
    /* Write extended partition */                                    
    rtems_bdpart_write_mbr_partition(                                 
 8001fac:	2b 83 00 38 	lw r3,(sp+56)                                  
 8001fb0:	ba 00 08 00 	mv r1,r16                                      
  /* Write extended partition with logical partitions if necessary */ 
  if (ppc != count) {                                                 
    rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */ 
                                                                      
    /* Begin of extended partition */                                 
    rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;       
 8001fb4:	ca 2f 88 00 	sub r17,r17,r15                                
                                                                      
    /* Write extended partition */                                    
    rtems_bdpart_write_mbr_partition(                                 
 8001fb8:	ba 20 10 00 	mv r2,r17                                      
 8001fbc:	c8 71 18 00 	sub r3,r3,r17                                  
 8001fc0:	34 04 00 05 	mvi r4,5                                       
 8001fc4:	34 05 00 00 	mvi r5,0                                       
 8001fc8:	fb ff fe fa 	calli 8001bb0 <rtems_bdpart_write_mbr_partition>
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
 8001fcc:	55 72 00 1b 	bgu r11,r18,8002038 <rtems_bdpart_write+0x364> 
 8001fd0:	e0 00 00 0c 	bi 8002000 <rtems_bdpart_write+0x32c>          <== NOT EXECUTED
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check that begin and end are proper within the disk */         
    if (p->begin >= disk_end || p->end > disk_end) {                  
 8001fd4:	28 a7 00 30 	lw r7,(r5+48)                                  
 8001fd8:	50 e1 00 09 	bgeu r7,r1,8001ffc <rtems_bdpart_write+0x328>  <== NEVER TAKEN
 8001fdc:	28 a4 00 34 	lw r4,(r5+52)                                  
 8001fe0:	54 81 00 07 	bgu r4,r1,8001ffc <rtems_bdpart_write+0x328>   <== NEVER TAKEN
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that begin and end are valid */                          
    if (p->begin >= p->end) {                                         
 8001fe4:	50 e4 00 06 	bgeu r7,r4,8001ffc <rtems_bdpart_write+0x328>  <== NEVER TAKEN
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that partitions do not overlap */                        
    if (i > 0 && pt [i - 1].end > p->begin) {                         
 8001fe8:	44 c0 00 03 	be r6,r0,8001ff4 <rtems_bdpart_write+0x320>    <== NEVER TAKEN
 8001fec:	28 a2 00 04 	lw r2,(r5+4)                                   
 8001ff0:	54 47 00 03 	bgu r2,r7,8001ffc <rtems_bdpart_write+0x328>   <== NEVER TAKEN
 8001ff4:	34 a5 00 30 	addi r5,r5,48                                  
 8001ff8:	e3 ff ff 7d 	bi 8001dec <rtems_bdpart_write+0x118>          
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
      esc = RTEMS_INVALID_NUMBER;                                     
 8001ffc:	34 0c 00 0a 	mvi r12,10                                     <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  if (fd >= 0) {                                                      
 8002000:	2b 81 00 34 	lw r1,(sp+52)                                  
 8002004:	48 01 00 02 	bg r0,r1,800200c <rtems_bdpart_write+0x338>    <== NEVER TAKEN
    close( fd);                                                       
 8002008:	f8 00 08 79 	calli 80041ec <close>                          
  }                                                                   
                                                                      
  if (block != NULL) {                                                
 800200c:	2b 81 00 3c 	lw r1,(sp+60)                                  
 8002010:	44 20 ff 51 	be r1,r0,8001d54 <rtems_bdpart_write+0x80>     <== NEVER TAKEN
    rtems_bdbuf_sync( block);                                         
 8002014:	f8 00 30 10 	calli 800e054 <rtems_bdbuf_sync>               
 8002018:	e3 ff ff 4f 	bi 8001d54 <rtems_bdpart_write+0x80>           
    return sc;                                                        
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
 800201c:	2b 8c 00 38 	lw r12,(sp+56)                                 
 8002020:	b9 e0 10 00 	mv r2,r15                                      
 8002024:	b9 80 08 00 	mv r1,r12                                      
 8002028:	f8 00 91 d2 	calli 8026770 <__umodsi3>                      
 800202c:	c9 81 08 00 	sub r1,r12,r1                                  
 8002030:	5b 81 00 38 	sw (sp+56),r1                                  
 8002034:	e3 ff ff 65 	bi 8001dc8 <rtems_bdpart_write+0xf4>           
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 8002038:	36 41 00 01 	addi r1,r18,1                                  
 800203c:	34 02 00 30 	mvi r2,48                                      
 8002040:	f8 00 91 57 	calli 802659c <__mulsi3>                       
 8002044:	b5 c1 70 00 	add r14,r14,r1                                 
 8002048:	ba 40 80 00 	mv r16,r18                                     
          0                                                           
        );                                                            
      }                                                               
                                                                      
      /* New EBR */                                                   
      ebr = p->begin - record_space;                                  
 800204c:	29 a2 00 00 	lw r2,(r13+0)                                  
      sc = rtems_bdpart_new_record( dd, ebr, &block);                 
 8002050:	2b 81 00 30 	lw r1,(sp+48)                                  
 8002054:	ba 60 18 00 	mv r3,r19                                      
 8002058:	c8 4f 10 00 	sub r2,r2,r15                                  
 800205c:	fb ff fe f1 	calli 8001c20 <rtems_bdpart_new_record>        
        esc = sc;                                                     
        goto cleanup;                                                 
      }                                                               
                                                                      
      /* Write first partition entry */                               
      rtems_bdpart_write_mbr_partition(                               
 8002060:	b9 e0 10 00 	mv r2,r15                                      
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
 8002064:	36 10 00 01 	addi r16,r16,1                                 
      }                                                               
                                                                      
      /* New EBR */                                                   
      ebr = p->begin - record_space;                                  
      sc = rtems_bdpart_new_record( dd, ebr, &block);                 
      if (sc != RTEMS_SUCCESSFUL) {                                   
 8002068:	5c 20 00 24 	bne r1,r0,80020f8 <rtems_bdpart_write+0x424>   <== NEVER TAKEN
        esc = sc;                                                     
        goto cleanup;                                                 
      }                                                               
                                                                      
      /* Write first partition entry */                               
      rtems_bdpart_write_mbr_partition(                               
 800206c:	2b 81 00 3c 	lw r1,(sp+60)                                  
 8002070:	29 a7 00 04 	lw r7,(r13+4)                                  
 8002074:	29 a6 00 00 	lw r6,(r13+0)                                  
 8002078:	28 21 00 1c 	lw r1,(r1+28)                                  
 800207c:	41 a4 00 08 	lbu r4,(r13+8)                                 
 8002080:	41 a5 00 2f 	lbu r5,(r13+47)                                
 8002084:	34 21 01 be 	addi r1,r1,446                                 
 8002088:	c8 e6 18 00 	sub r3,r7,r6                                   
 800208c:	fb ff fe c9 	calli 8001bb0 <rtems_bdpart_write_mbr_partition>
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
 8002090:	55 70 00 09 	bgu r11,r16,80020b4 <rtems_bdpart_write+0x3e0> 
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
 8002094:	34 0c 00 00 	mvi r12,0                                      
 8002098:	e3 ff ff da 	bi 8002000 <rtems_bdpart_write+0x32c>          
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
 800209c:	28 85 00 00 	lw r5,(r4+0)                                   
 80020a0:	28 81 ff d4 	lw r1,(r4+-44)                                 
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
 80020a4:	34 63 00 30 	addi r3,r3,48                                  
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
 80020a8:	c8 a1 08 00 	sub r1,r5,r1                                   
 80020ac:	55 e1 ff d4 	bgu r15,r1,8001ffc <rtems_bdpart_write+0x328>  <== NEVER TAKEN
 80020b0:	e3 ff ff 7a 	bi 8001e98 <rtems_bdpart_write+0x1c4>          
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
 80020b4:	b9 c0 68 00 	mv r13,r14                                     
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
 80020b8:	52 50 00 0c 	bgeu r18,r16,80020e8 <rtems_bdpart_write+0x414><== NEVER TAKEN
        rtems_blkdev_bnum begin = p->begin - record_space;            
                                                                      
        rtems_bdpart_write_mbr_partition(                             
 80020bc:	2b 81 00 3c 	lw r1,(sp+60)                                  
    for (i = ppc; i < count; ++i) {                                   
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
 80020c0:	29 c3 00 00 	lw r3,(r14+0)                                  
                                                                      
        rtems_bdpart_write_mbr_partition(                             
 80020c4:	2b 84 00 38 	lw r4,(sp+56)                                  
 80020c8:	28 21 00 1c 	lw r1,(r1+28)                                  
    for (i = ppc; i < count; ++i) {                                   
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
 80020cc:	c8 6f 18 00 	sub r3,r3,r15                                  
                                                                      
        rtems_bdpart_write_mbr_partition(                             
 80020d0:	c8 71 10 00 	sub r2,r3,r17                                  
 80020d4:	34 21 01 ce 	addi r1,r1,462                                 
 80020d8:	c8 83 18 00 	sub r3,r4,r3                                   
 80020dc:	34 05 00 00 	mvi r5,0                                       
 80020e0:	34 04 00 05 	mvi r4,5                                       
 80020e4:	fb ff fe b3 	calli 8001bb0 <rtems_bdpart_write_mbr_partition>
 80020e8:	35 ce 00 30 	addi r14,r14,48                                
 80020ec:	e3 ff ff d8 	bi 800204c <rtems_bdpart_write+0x378>          
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
      esc = RTEMS_INVALID_ID;                                         
 80020f0:	34 0c 00 04 	mvi r12,4                                      <== NOT EXECUTED
 80020f4:	e3 ff ff c3 	bi 8002000 <rtems_bdpart_write+0x32c>          <== NOT EXECUTED
        );                                                            
      }                                                               
                                                                      
      /* New EBR */                                                   
      ebr = p->begin - record_space;                                  
      sc = rtems_bdpart_new_record( dd, ebr, &block);                 
 80020f8:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
 80020fc:	e3 ff ff c1 	bi 8002000 <rtems_bdpart_write+0x32c>          <== NOT EXECUTED
                                                                      

080018b4 <rtems_blkdev_create_partition>: const char *partition, const char *parent_block_device, rtems_blkdev_bnum media_block_begin, rtems_blkdev_bnum media_block_count ) {
 80018b4:	37 9c ff 94 	addi sp,sp,-108                                
 80018b8:	5b 8b 00 20 	sw (sp+32),r11                                 
 80018bc:	5b 8c 00 1c 	sw (sp+28),r12                                 
 80018c0:	5b 8d 00 18 	sw (sp+24),r13                                 
 80018c4:	5b 8e 00 14 	sw (sp+20),r14                                 
 80018c8:	5b 8f 00 10 	sw (sp+16),r15                                 
 80018cc:	5b 90 00 0c 	sw (sp+12),r16                                 
 80018d0:	5b 91 00 08 	sw (sp+8),r17                                  
 80018d4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80018d8:	b8 20 78 00 	mv r15,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int fd = open(parent_block_device, O_RDWR);                         
 80018dc:	b8 40 08 00 	mv r1,r2                                       
 80018e0:	34 02 00 02 	mvi r2,2                                       
  const char *partition,                                              
  const char *parent_block_device,                                    
  rtems_blkdev_bnum media_block_begin,                                
  rtems_blkdev_bnum media_block_count                                 
)                                                                     
{                                                                     
 80018e4:	b8 60 70 00 	mv r14,r3                                      
 80018e8:	b8 80 68 00 	mv r13,r4                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int fd = open(parent_block_device, O_RDWR);                         
 80018ec:	f8 00 0b 22 	calli 8004574 <open>                           
 80018f0:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    if (sc != RTEMS_SUCCESSFUL) {                                     
      close(fd);                                                      
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
 80018f4:	34 0b 00 04 	mvi r11,4                                      
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int fd = open(parent_block_device, O_RDWR);                         
                                                                      
  if (fd >= 0) {                                                      
 80018f8:	48 01 00 0b 	bg r0,r1,8001924 <rtems_blkdev_create_partition+0x70>
    int rv;                                                           
    struct stat st;                                                   
                                                                      
    rv = fstat(fd, &st);                                              
 80018fc:	37 82 00 24 	addi r2,sp,36                                  
 8001900:	f8 00 07 04 	calli 8003510 <fstat>                          
        }                                                             
      } else {                                                        
        sc = RTEMS_NOT_IMPLEMENTED;                                   
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_NODE;                                        
 8001904:	34 0b 00 15 	mvi r11,21                                     
  if (fd >= 0) {                                                      
    int rv;                                                           
    struct stat st;                                                   
                                                                      
    rv = fstat(fd, &st);                                              
    if (rv == 0 && S_ISBLK(st.st_mode)) {                             
 8001908:	5c 20 00 05 	bne r1,r0,800191c <rtems_blkdev_create_partition+0x68><== NEVER TAKEN
 800190c:	2b 82 00 30 	lw r2,(sp+48)                                  
 8001910:	34 01 60 00 	mvi r1,24576                                   
 8001914:	20 42 f0 00 	andi r2,r2,0xf000                              
 8001918:	44 41 00 0e 	be r2,r1,8001950 <rtems_blkdev_create_partition+0x9c>
    } else {                                                          
      sc = RTEMS_INVALID_NODE;                                        
    }                                                                 
                                                                      
    if (sc != RTEMS_SUCCESSFUL) {                                     
      close(fd);                                                      
 800191c:	b9 80 08 00 	mv r1,r12                                      
 8001920:	f8 00 06 9f 	calli 800339c <close>                          
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8001924:	b9 60 08 00 	mv r1,r11                                      
 8001928:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800192c:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8001930:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8001934:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8001938:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800193c:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8001940:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8001944:	2b 91 00 08 	lw r17,(sp+8)                                  
 8001948:	37 9c 00 6c 	addi sp,sp,108                                 
 800194c:	c3 a0 00 00 	ret                                            
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
 8001950:	78 01 08 01 	mvhi r1,0x801                                  
 8001954:	38 21 98 c0 	ori r1,r1,0x98c0                               
 8001958:	28 22 00 00 	lw r2,(r1+0)                                   
 800195c:	37 83 00 6c 	addi r3,sp,108                                 
 8001960:	b9 80 08 00 	mv r1,r12                                      
 8001964:	f8 00 07 5d 	calli 80036d8 <ioctl>                          
 8001968:	b8 20 80 00 	mv r16,r1                                      
          }                                                           
        } else {                                                      
          sc = RTEMS_NO_MEMORY;                                       
        }                                                             
      } else {                                                        
        sc = RTEMS_NOT_IMPLEMENTED;                                   
 800196c:	34 0b 00 18 	mvi r11,24                                     
    rv = fstat(fd, &st);                                              
    if (rv == 0 && S_ISBLK(st.st_mode)) {                             
      rtems_disk_device *phys_dd;                                     
                                                                      
      rv = rtems_disk_fd_get_disk_device(fd, &phys_dd);               
      if (rv == 0) {                                                  
 8001970:	5c 20 ff eb 	bne r1,r0,800191c <rtems_blkdev_create_partition+0x68>
        rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));        
 8001974:	34 01 00 80 	mvi r1,128                                     
 8001978:	f8 00 08 ac 	calli 8003c28 <malloc>                         
 800197c:	b8 20 88 00 	mv r17,r1                                      
                                                                      
        if (ctx != NULL) {                                            
 8001980:	44 30 00 16 	be r1,r16,80019d8 <rtems_blkdev_create_partition+0x124>
          sc = rtems_disk_init_log(                                   
 8001984:	2b 82 00 6c 	lw r2,(sp+108)                                 
 8001988:	b9 c0 18 00 	mv r3,r14                                      
 800198c:	b9 a0 20 00 	mv r4,r13                                      
 8001990:	f8 00 00 8f 	calli 8001bcc <rtems_disk_init_log>            
 8001994:	b8 20 58 00 	mv r11,r1                                      
            phys_dd,                                                  
            media_block_begin,                                        
            media_block_count                                         
          );                                                          
                                                                      
          if (sc == RTEMS_SUCCESSFUL) {                               
 8001998:	5c 20 00 0d 	bne r1,r0,80019cc <rtems_blkdev_create_partition+0x118>
            ctx->fd = fd;                                             
                                                                      
            rv = IMFS_make_generic_node(                              
 800199c:	78 03 08 01 	mvhi r3,0x801                                  
 80019a0:	b9 e0 08 00 	mv r1,r15                                      
 80019a4:	34 02 61 ff 	mvi r2,25087                                   
 80019a8:	38 63 9a 30 	ori r3,r3,0x9a30                               
 80019ac:	ba 20 20 00 	mv r4,r17                                      
            media_block_begin,                                        
            media_block_count                                         
          );                                                          
                                                                      
          if (sc == RTEMS_SUCCESSFUL) {                               
            ctx->fd = fd;                                             
 80019b0:	5a 2c 00 78 	sw (r17+120),r12                               
                                                                      
            rv = IMFS_make_generic_node(                              
 80019b4:	f8 00 04 93 	calli 8002c00 <IMFS_make_generic_node>         
              S_IFBLK | S_IRWXU | S_IRWXG | S_IRWXO,                  
              &rtems_blkdev_imfs_control,                             
              ctx                                                     
            );                                                        
                                                                      
            if (rv != 0) {                                            
 80019b8:	44 2b ff db 	be r1,r11,8001924 <rtems_blkdev_create_partition+0x70>
              free(ctx);                                              
 80019bc:	ba 20 08 00 	mv r1,r17                                      
 80019c0:	f8 00 06 a6 	calli 8003458 <free>                           
              sc = RTEMS_UNSATISFIED;                                 
 80019c4:	34 0b 00 0d 	mvi r11,13                                     
 80019c8:	e3 ff ff d5 	bi 800191c <rtems_blkdev_create_partition+0x68>
            }                                                         
          } else {                                                    
            free(ctx);                                                
 80019cc:	ba 20 08 00 	mv r1,r17                                      
 80019d0:	f8 00 06 a2 	calli 8003458 <free>                           
 80019d4:	e3 ff ff d2 	bi 800191c <rtems_blkdev_create_partition+0x68>
          }                                                           
        } else {                                                      
          sc = RTEMS_NO_MEMORY;                                       
 80019d8:	34 0b 00 1a 	mvi r11,26                                     
 80019dc:	e3 ff ff d0 	bi 800191c <rtems_blkdev_create_partition+0x68>
                                                                      

0800ca30 <rtems_blkdev_generic_ioctl>: rtems_device_driver rtems_blkdev_generic_ioctl( rtems_device_major_number major __attribute__((unused)), rtems_device_minor_number minor __attribute__((unused)), void * arg) {
 800ca30:	37 9c ff f8 	addi sp,sp,-8                                  
 800ca34:	5b 8b 00 08 	sw (sp+8),r11                                  
 800ca38:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_libio_ioctl_args_t *args = arg;                             
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
                                                                      
    if (args->command != RTEMS_BLKIO_REQUEST)                         
 800ca3c:	78 04 08 01 	mvhi r4,0x801                                  
 800ca40:	38 84 96 94 	ori r4,r4,0x9694                               
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_libio_ioctl_args_t *args = arg;                             
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800ca44:	28 61 00 00 	lw r1,(r3+0)                                   
rtems_device_driver                                                   
rtems_blkdev_generic_ioctl(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
 800ca48:	b8 60 58 00 	mv r11,r3                                      
    rtems_libio_ioctl_args_t *args = arg;                             
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
                                                                      
    if (args->command != RTEMS_BLKIO_REQUEST)                         
 800ca4c:	28 62 00 04 	lw r2,(r3+4)                                   
 800ca50:	28 83 00 00 	lw r3,(r4+0)                                   
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_libio_ioctl_args_t *args = arg;                             
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800ca54:	28 21 00 28 	lw r1,(r1+40)                                  
                                                                      
    if (args->command != RTEMS_BLKIO_REQUEST)                         
 800ca58:	5c 43 00 08 	bne r2,r3,800ca78 <rtems_blkdev_generic_ioctl+0x48><== ALWAYS TAKEN
    {                                                                 
        /*                                                            
         * It is not allowed to directly access the driver circumventing the
         * cache.                                                     
         */                                                           
        args->ioctl_return = -1;                                      
 800ca5c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800ca60:	59 61 00 0c 	sw (r11+12),r1                                 <== NOT EXECUTED
    }                                                                 
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 800ca64:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800ca68:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800ca6c:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800ca70:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800ca74:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
                                                                      
    if (args->command != RTEMS_BLKIO_REQUEST)                         
    {                                                                 
        args->ioctl_return = dd->ioctl(dd,                            
 800ca78:	28 24 00 38 	lw r4,(r1+56)                                  
 800ca7c:	29 63 00 08 	lw r3,(r11+8)                                  
 800ca80:	d8 80 00 00 	call r4                                        
 800ca84:	59 61 00 0c 	sw (r11+12),r1                                 
         */                                                           
        args->ioctl_return = -1;                                      
    }                                                                 
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 800ca88:	34 01 00 00 	mvi r1,0                                       
 800ca8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ca90:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800ca94:	37 9c 00 08 	addi sp,sp,8                                   
 800ca98:	c3 a0 00 00 	ret                                            
                                                                      

0800c7a0 <rtems_blkdev_generic_read>: rtems_device_driver rtems_blkdev_generic_read( rtems_device_major_number major __attribute__((unused)), rtems_device_minor_number minor __attribute__((unused)), void * arg) {
 800c7a0:	37 9c ff d8 	addi sp,sp,-40                                 
 800c7a4:	5b 8b 00 24 	sw (sp+36),r11                                 
 800c7a8:	5b 8c 00 20 	sw (sp+32),r12                                 
 800c7ac:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800c7b0:	5b 8e 00 18 	sw (sp+24),r14                                 
 800c7b4:	5b 8f 00 14 	sw (sp+20),r15                                 
 800c7b8:	5b 90 00 10 	sw (sp+16),r16                                 
 800c7bc:	5b 91 00 0c 	sw (sp+12),r17                                 
 800c7c0:	5b 92 00 08 	sw (sp+8),r18                                  
 800c7c4:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800c7c8:	28 61 00 00 	lw r1,(r3+0)                                   
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
 800c7cc:	28 6d 00 0c 	lw r13,(r3+12)                                 
rtems_device_driver                                                   
rtems_blkdev_generic_read(                                            
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
 800c7d0:	b8 60 60 00 	mv r12,r3                                      
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800c7d4:	28 32 00 28 	lw r18,(r1+40)                                 
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
 800c7d8:	28 6e 00 08 	lw r14,(r3+8)                                  
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
 800c7dc:	28 6b 00 04 	lw r11,(r3+4)                                  
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
 800c7e0:	2a 51 00 24 	lw r17,(r18+36)                                
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
 800c7e4:	58 60 00 14 	sw (r3+20),r0                                  
rtems_blkdev_generic_read(                                            
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
 800c7e8:	34 04 00 00 	mvi r4,0                                       
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
 800c7ec:	45 a0 00 25 	be r13,r0,800c880 <rtems_blkdev_generic_read+0xe0><== NEVER TAKEN
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
 800c7f0:	ba 20 10 00 	mv r2,r17                                      
 800c7f4:	b9 60 08 00 	mv r1,r11                                      
 800c7f8:	f8 00 2f aa 	calli 80186a0 <__udivsi3>                      
 800c7fc:	b8 20 80 00 	mv r16,r1                                      
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
 800c800:	ba 20 10 00 	mv r2,r17                                      
 800c804:	b9 60 08 00 	mv r1,r11                                      
 800c808:	f8 00 2f b6 	calli 80186e0 <__umodsi3>                      
 800c80c:	b8 20 78 00 	mv r15,r1                                      
 800c810:	e0 00 00 14 	bi 800c860 <rtems_blkdev_generic_read+0xc0>    
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
 800c814:	2b 84 00 28 	lw r4,(sp+40)                                  
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
 800c818:	51 ab 00 02 	bgeu r13,r11,800c820 <rtems_blkdev_generic_read+0x80><== ALWAYS TAKEN
 800c81c:	b9 a0 58 00 	mv r11,r13                                     <== NOT EXECUTED
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
 800c820:	28 84 00 1c 	lw r4,(r4+28)                                  
 800c824:	b9 60 18 00 	mv r3,r11                                      
        rc = rtems_bdbuf_release(diskbuf);                            
        args->bytes_moved += copy;                                    
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        count -= copy;                                                
 800c828:	c9 ab 68 00 	sub r13,r13,r11                                
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
 800c82c:	b4 8f 10 00 	add r2,r4,r15                                  
 800c830:	f8 00 1a 7d 	calli 8013224 <memcpy>                         
        rc = rtems_bdbuf_release(diskbuf);                            
 800c834:	2b 81 00 28 	lw r1,(sp+40)                                  
        args->bytes_moved += copy;                                    
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        count -= copy;                                                
        buf += copy;                                                  
 800c838:	b5 cb 70 00 	add r14,r14,r11                                
        blkofs = 0;                                                   
        block++;                                                      
 800c83c:	36 10 00 01 	addi r16,r16,1                                 
            break;                                                    
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
        rc = rtems_bdbuf_release(diskbuf);                            
 800c840:	fb ff fd 91 	calli 800be84 <rtems_bdbuf_release>            
 800c844:	b8 20 20 00 	mv r4,r1                                       
        args->bytes_moved += copy;                                    
 800c848:	29 81 00 14 	lw r1,(r12+20)                                 
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        count -= copy;                                                
        buf += copy;                                                  
        blkofs = 0;                                                   
 800c84c:	34 0f 00 00 	mvi r15,0                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
        rc = rtems_bdbuf_release(diskbuf);                            
        args->bytes_moved += copy;                                    
 800c850:	b4 2b 58 00 	add r11,r1,r11                                 
 800c854:	59 8b 00 14 	sw (r12+20),r11                                
        if (rc != RTEMS_SUCCESSFUL)                                   
 800c858:	5c 80 00 0a 	bne r4,r0,800c880 <rtems_blkdev_generic_read+0xe0><== NEVER TAKEN
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
 800c85c:	45 a4 00 09 	be r13,r4,800c880 <rtems_blkdev_generic_read+0xe0><== ALWAYS TAKEN
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
 800c860:	ba 00 10 00 	mv r2,r16                                      
 800c864:	37 83 00 28 	addi r3,sp,40                                  
 800c868:	ba 40 08 00 	mv r1,r18                                      
 800c86c:	fb ff fc f5 	calli 800bc40 <rtems_bdbuf_read>               
 800c870:	b8 20 20 00 	mv r4,r1                                       
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
 800c874:	ca 2f 58 00 	sub r11,r17,r15                                
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
 800c878:	b9 c0 08 00 	mv r1,r14                                      
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
 800c87c:	44 80 ff e6 	be r4,r0,800c814 <rtems_blkdev_generic_read+0x74><== ALWAYS TAKEN
        blkofs = 0;                                                   
        block++;                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c880:	b8 80 08 00 	mv r1,r4                                       
 800c884:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c888:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800c88c:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800c890:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800c894:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800c898:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800c89c:	2b 90 00 10 	lw r16,(sp+16)                                 
 800c8a0:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800c8a4:	2b 92 00 08 	lw r18,(sp+8)                                  
 800c8a8:	37 9c 00 28 	addi sp,sp,40                                  
 800c8ac:	c3 a0 00 00 	ret                                            
                                                                      

0800c8b0 <rtems_blkdev_generic_write>: rtems_device_driver rtems_blkdev_generic_write( rtems_device_major_number major __attribute__((unused)), rtems_device_minor_number minor __attribute__((unused)), void * arg) {
 800c8b0:	37 9c ff d8 	addi sp,sp,-40                                 
 800c8b4:	5b 8b 00 24 	sw (sp+36),r11                                 
 800c8b8:	5b 8c 00 20 	sw (sp+32),r12                                 
 800c8bc:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800c8c0:	5b 8e 00 18 	sw (sp+24),r14                                 
 800c8c4:	5b 8f 00 14 	sw (sp+20),r15                                 
 800c8c8:	5b 90 00 10 	sw (sp+16),r16                                 
 800c8cc:	5b 91 00 0c 	sw (sp+12),r17                                 
 800c8d0:	5b 92 00 08 	sw (sp+8),r18                                  
 800c8d4:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800c8d8:	28 61 00 00 	lw r1,(r3+0)                                   
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
 800c8dc:	28 6b 00 0c 	lw r11,(r3+12)                                 
rtems_device_driver                                                   
rtems_blkdev_generic_write(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
 800c8e0:	b8 60 68 00 	mv r13,r3                                      
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
 800c8e4:	28 32 00 28 	lw r18,(r1+40)                                 
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
 800c8e8:	28 70 00 08 	lw r16,(r3+8)                                  
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
 800c8ec:	28 6c 00 04 	lw r12,(r3+4)                                  
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
 800c8f0:	2a 51 00 24 	lw r17,(r18+36)                                
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
 800c8f4:	58 60 00 14 	sw (r3+20),r0                                  
rtems_blkdev_generic_write(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
 800c8f8:	34 01 00 00 	mvi r1,0                                       
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
 800c8fc:	45 60 00 2c 	be r11,r0,800c9ac <rtems_blkdev_generic_write+0xfc><== NEVER TAKEN
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
 800c900:	ba 20 10 00 	mv r2,r17                                      
 800c904:	b9 80 08 00 	mv r1,r12                                      
 800c908:	f8 00 2f 66 	calli 80186a0 <__udivsi3>                      
 800c90c:	b8 20 78 00 	mv r15,r1                                      
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
 800c910:	ba 20 10 00 	mv r2,r17                                      
 800c914:	b9 80 08 00 	mv r1,r12                                      
 800c918:	f8 00 2f 72 	calli 80186e0 <__umodsi3>                      
 800c91c:	b8 20 70 00 	mv r14,r1                                      
 800c920:	e0 00 00 17 	bi 800c97c <rtems_blkdev_generic_write+0xcc>   
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
 800c924:	fb ff fc 7d 	calli 800bb18 <rtems_bdbuf_get>                
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
 800c928:	ba 00 10 00 	mv r2,r16                                      
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
 800c92c:	ca 2e 60 00 	sub r12,r17,r14                                
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
 800c930:	5c 20 00 1f 	bne r1,r0,800c9ac <rtems_blkdev_generic_write+0xfc><== NEVER TAKEN
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
 800c934:	2b 81 00 28 	lw r1,(sp+40)                                  
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
 800c938:	51 6c 00 02 	bgeu r11,r12,800c940 <rtems_blkdev_generic_write+0x90><== ALWAYS TAKEN
 800c93c:	b9 60 60 00 	mv r12,r11                                     <== NOT EXECUTED
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
 800c940:	28 21 00 1c 	lw r1,(r1+28)                                  
 800c944:	b9 80 18 00 	mv r3,r12                                      
                                                                      
        rc = rtems_bdbuf_release_modified(diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        count -= copy;                                                
 800c948:	c9 6c 58 00 	sub r11,r11,r12                                
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
 800c94c:	b4 2e 08 00 	add r1,r1,r14                                  
 800c950:	f8 00 1a 35 	calli 8013224 <memcpy>                         
        args->bytes_moved += copy;                                    
 800c954:	29 a2 00 14 	lw r2,(r13+20)                                 
                                                                      
        rc = rtems_bdbuf_release_modified(diskbuf);                   
 800c958:	2b 81 00 28 	lw r1,(sp+40)                                  
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        count -= copy;                                                
        buf += copy;                                                  
 800c95c:	b6 0c 80 00 	add r16,r16,r12                                
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
        args->bytes_moved += copy;                                    
 800c960:	b4 4c 60 00 	add r12,r2,r12                                 
 800c964:	59 ac 00 14 	sw (r13+20),r12                                
            break;                                                    
                                                                      
        count -= copy;                                                
        buf += copy;                                                  
        blkofs = 0;                                                   
        block++;                                                      
 800c968:	35 ef 00 01 	addi r15,r15,1                                 
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
        args->bytes_moved += copy;                                    
                                                                      
        rc = rtems_bdbuf_release_modified(diskbuf);                   
 800c96c:	fb ff fd 81 	calli 800bf70 <rtems_bdbuf_release_modified>   
        if (rc != RTEMS_SUCCESSFUL)                                   
 800c970:	5c 20 00 0f 	bne r1,r0,800c9ac <rtems_blkdev_generic_write+0xfc><== NEVER TAKEN
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
 800c974:	45 61 00 0e 	be r11,r1,800c9ac <rtems_blkdev_generic_write+0xfc><== ALWAYS TAKEN
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        count -= copy;                                                
        buf += copy;                                                  
        blkofs = 0;                                                   
 800c978:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
    while (count > 0)                                                 
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
 800c97c:	65 c1 00 00 	cmpei r1,r14,0                                 
 800c980:	f1 71 20 00 	cmpgeu r4,r11,r17                              
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
 800c984:	b9 e0 10 00 	mv r2,r15                                      
    while (count > 0)                                                 
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
 800c988:	a0 81 20 00 	and r4,r4,r1                                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
 800c98c:	37 83 00 28 	addi r3,sp,40                                  
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
 800c990:	ba 40 08 00 	mv r1,r18                                      
    while (count > 0)                                                 
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
 800c994:	5c 80 ff e4 	bne r4,r0,800c924 <rtems_blkdev_generic_write+0x74><== ALWAYS TAKEN
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
 800c998:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
 800c99c:	fb ff fc a9 	calli 800bc40 <rtems_bdbuf_read>               <== NOT EXECUTED
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
 800c9a0:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
 800c9a4:	ca 2e 60 00 	sub r12,r17,r14                                <== NOT EXECUTED
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
 800c9a8:	44 20 ff e3 	be r1,r0,800c934 <rtems_blkdev_generic_write+0x84><== NOT EXECUTED
        blkofs = 0;                                                   
        block++;                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c9ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c9b0:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800c9b4:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800c9b8:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800c9bc:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800c9c0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800c9c4:	2b 90 00 10 	lw r16,(sp+16)                                 
 800c9c8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800c9cc:	2b 92 00 08 	lw r18,(sp+8)                                  
 800c9d0:	37 9c 00 28 	addi sp,sp,40                                  
 800c9d4:	c3 a0 00 00 	ret                                            
                                                                      

080013f4 <rtems_blkdev_imfs_fsync_or_fdatasync>: } static int rtems_blkdev_imfs_fsync_or_fdatasync( rtems_libio_t *iop ) {
 80013f4:	37 9c ff fc 	addi sp,sp,-4                                  
 80013f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 80013fc:	28 21 00 14 	lw r1,(r1+20)                                  
)                                                                     
{                                                                     
  int rv = 0;                                                         
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  rtems_status_code sc = rtems_bdbuf_syncdev(dd);                     
 8001400:	28 21 00 50 	lw r1,(r1+80)                                  
 8001404:	f8 00 2e e3 	calli 800cf90 <rtems_bdbuf_syncdev>            
                                                                      
static int rtems_blkdev_imfs_fsync_or_fdatasync(                      
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
  int rv = 0;                                                         
 8001408:	34 02 00 00 	mvi r2,0                                       
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  rtems_status_code sc = rtems_bdbuf_syncdev(dd);                     
                                                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 800140c:	5c 20 00 05 	bne r1,r0,8001420 <rtems_blkdev_imfs_fsync_or_fdatasync+0x2c><== NEVER TAKEN
    errno = EIO;                                                      
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001410:	b8 40 08 00 	mv r1,r2                                       
 8001414:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001418:	37 9c 00 04 	addi sp,sp,4                                   
 800141c:	c3 a0 00 00 	ret                                            
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  rtems_status_code sc = rtems_bdbuf_syncdev(dd);                     
                                                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
    errno = EIO;                                                      
 8001420:	f8 00 46 8a 	calli 8012e48 <__errno>                        <== NOT EXECUTED
 8001424:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8001428:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 800142c:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8001430:	e3 ff ff f8 	bi 8001410 <rtems_blkdev_imfs_fsync_or_fdatasync+0x1c><== NOT EXECUTED
                                                                      

08001434 <rtems_blkdev_imfs_ioctl>: static int rtems_blkdev_imfs_ioctl( rtems_libio_t *iop, uint32_t request, void *buffer ) {
 8001434:	37 9c ff fc 	addi sp,sp,-4                                  
 8001438:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
                                                                      
  if (request != RTEMS_BLKIO_REQUEST) {                               
 800143c:	78 05 08 01 	mvhi r5,0x801                                  
 8001440:	38 a5 9a 28 	ori r5,r5,0x9a28                               
 8001444:	28 a4 00 00 	lw r4,(r5+0)                                   
 8001448:	44 44 00 08 	be r2,r4,8001468 <rtems_blkdev_imfs_ioctl+0x34><== NEVER TAKEN
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 800144c:	28 21 00 14 	lw r1,(r1+20)                                  
)                                                                     
{                                                                     
  int rv = 0;                                                         
                                                                      
  if (request != RTEMS_BLKIO_REQUEST) {                               
    rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
 8001450:	28 21 00 50 	lw r1,(r1+80)                                  
    rtems_disk_device *dd = &ctx->dd;                                 
                                                                      
    rv = (*dd->ioctl)(dd, request, buffer);                           
 8001454:	28 24 00 38 	lw r4,(r1+56)                                  
 8001458:	d8 80 00 00 	call r4                                        
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 800145c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001460:	37 9c 00 04 	addi sp,sp,4                                   
 8001464:	c3 a0 00 00 	ret                                            
    rv = (*dd->ioctl)(dd, request, buffer);                           
  } else {                                                            
    /*                                                                
     * It is not allowed to directly access the driver circumventing the cache.
     */                                                               
    errno = EINVAL;                                                   
 8001468:	f8 00 46 78 	calli 8012e48 <__errno>                        <== NOT EXECUTED
 800146c:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8001470:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 8001474:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8001478:	e3 ff ff f9 	bi 800145c <rtems_blkdev_imfs_ioctl+0x28>      <== NOT EXECUTED
                                                                      

08001600 <rtems_blkdev_imfs_read>: static ssize_t rtems_blkdev_imfs_read( rtems_libio_t *iop, void *buffer, size_t count ) {
 8001600:	37 9c ff d4 	addi sp,sp,-44                                 
 8001604:	5b 8b 00 28 	sw (sp+40),r11                                 
 8001608:	5b 8c 00 24 	sw (sp+36),r12                                 
 800160c:	5b 8d 00 20 	sw (sp+32),r13                                 
 8001610:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8001614:	5b 8f 00 18 	sw (sp+24),r15                                 
 8001618:	5b 90 00 14 	sw (sp+20),r16                                 
 800161c:	5b 91 00 10 	sw (sp+16),r17                                 
 8001620:	5b 92 00 0c 	sw (sp+12),r18                                 
 8001624:	5b 93 00 08 	sw (sp+8),r19                                  
 8001628:	5b 9d 00 04 	sw (sp+4),ra                                   
 800162c:	b8 20 80 00 	mv r16,r1                                      
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8001630:	28 21 00 14 	lw r1,(r1+20)                                  
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
 8001634:	2a 0b 00 04 	lw r11,(r16+4)                                 
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
 8001638:	b8 40 70 00 	mv r14,r2                                      
  void *buffer,                                                       
  size_t count                                                        
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
 800163c:	28 32 00 50 	lw r18,(r1+80)                                 
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
 8001640:	b9 60 08 00 	mv r1,r11                                      
static ssize_t rtems_blkdev_imfs_read(                                
  rtems_libio_t *iop,                                                 
  void *buffer,                                                       
  size_t count                                                        
)                                                                     
{                                                                     
 8001644:	b8 60 98 00 	mv r19,r3                                      
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
 8001648:	2a 51 00 24 	lw r17,(r18+36)                                
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
 800164c:	b8 60 60 00 	mv r12,r3                                      
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
 8001650:	ba 20 10 00 	mv r2,r17                                      
 8001654:	f8 00 5e 17 	calli 8018eb0 <__divsi3>                       
 8001658:	b8 20 68 00 	mv r13,r1                                      
  ssize_t block_offset = (ssize_t) (offset % block_size);             
 800165c:	ba 20 10 00 	mv r2,r17                                      
 8001660:	b9 60 08 00 	mv r1,r11                                      
 8001664:	f8 00 5e 43 	calli 8018f70 <__modsi3>                       
 8001668:	b8 20 78 00 	mv r15,r1                                      
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
 800166c:	b9 a0 10 00 	mv r2,r13                                      
 8001670:	37 83 00 2c 	addi r3,sp,44                                  
 8001674:	ba 40 08 00 	mv r1,r18                                      
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
 8001678:	49 80 00 12 	bg r12,r0,80016c0 <rtems_blkdev_imfs_read+0xc0>
    } else {                                                          
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
 800167c:	5d 80 00 13 	bne r12,r0,80016c8 <rtems_blkdev_imfs_read+0xc8><== NEVER TAKEN
    iop->offset += count;                                             
 8001680:	2a 02 00 04 	lw r2,(r16+4)                                  
    rv = (ssize_t) count;                                             
 8001684:	ba 60 08 00 	mv r1,r19                                      
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
 8001688:	b4 53 98 00 	add r19,r2,r19                                 
 800168c:	5a 13 00 04 	sw (r16+4),r19                                 
    errno = EIO;                                                      
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001690:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001694:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8001698:	2b 8c 00 24 	lw r12,(sp+36)                                 
 800169c:	2b 8d 00 20 	lw r13,(sp+32)                                 
 80016a0:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 80016a4:	2b 8f 00 18 	lw r15,(sp+24)                                 
 80016a8:	2b 90 00 14 	lw r16,(sp+20)                                 
 80016ac:	2b 91 00 10 	lw r17,(sp+16)                                 
 80016b0:	2b 92 00 0c 	lw r18,(sp+12)                                 
 80016b4:	2b 93 00 08 	lw r19,(sp+8)                                  
 80016b8:	37 9c 00 2c 	addi sp,sp,44                                  
 80016bc:	c3 a0 00 00 	ret                                            
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
 80016c0:	f8 00 2c e2 	calli 800ca48 <rtems_bdbuf_read>               
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
 80016c4:	44 20 00 06 	be r1,r0,80016dc <rtems_blkdev_imfs_read+0xdc> <== ALWAYS TAKEN
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
    rv = (ssize_t) count;                                             
  } else {                                                            
    errno = EIO;                                                      
 80016c8:	f8 00 45 e0 	calli 8012e48 <__errno>                        <== NOT EXECUTED
 80016cc:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 80016d0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 80016d4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80016d8:	e3 ff ff ee 	bi 8001690 <rtems_blkdev_imfs_read+0x90>       <== NOT EXECUTED
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
 80016dc:	ca 2f 58 00 	sub r11,r17,r15                                
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
 80016e0:	2b 82 00 2c 	lw r2,(sp+44)                                  
 80016e4:	b9 c0 08 00 	mv r1,r14                                      
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
 80016e8:	4d 8b 00 02 	bge r12,r11,80016f0 <rtems_blkdev_imfs_read+0xf0>
 80016ec:	b9 80 58 00 	mv r11,r12                                     
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
 80016f0:	28 42 00 1c 	lw r2,(r2+28)                                  
 80016f4:	b9 60 18 00 	mv r3,r11                                      
                                                                      
      sc = rtems_bdbuf_release(bd);                                   
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
 80016f8:	c9 8b 60 00 	sub r12,r12,r11                                
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
 80016fc:	b4 4f 10 00 	add r2,r2,r15                                  
 8001700:	f8 00 48 cb 	calli 8013a2c <memcpy>                         
                                                                      
      sc = rtems_bdbuf_release(bd);                                   
 8001704:	2b 81 00 2c 	lw r1,(sp+44)                                  
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
        dst += copy;                                                  
 8001708:	b5 cb 70 00 	add r14,r14,r11                                
        ++block;                                                      
 800170c:	35 ad 00 01 	addi r13,r13,1                                 
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
                                                                      
      sc = rtems_bdbuf_release(bd);                                   
 8001710:	f8 00 2d 5f 	calli 800cc8c <rtems_bdbuf_release>            
      if (sc == RTEMS_SUCCESSFUL) {                                   
 8001714:	5c 20 ff ed 	bne r1,r0,80016c8 <rtems_blkdev_imfs_read+0xc8><== NEVER TAKEN
        block_offset = 0;                                             
 8001718:	34 0f 00 00 	mvi r15,0                                      
 800171c:	e3 ff ff d4 	bi 800166c <rtems_blkdev_imfs_read+0x6c>       
                                                                      

080014bc <rtems_blkdev_imfs_write>: static ssize_t rtems_blkdev_imfs_write( rtems_libio_t *iop, const void *buffer, size_t count ) {
 80014bc:	37 9c ff d4 	addi sp,sp,-44                                 
 80014c0:	5b 8b 00 28 	sw (sp+40),r11                                 
 80014c4:	5b 8c 00 24 	sw (sp+36),r12                                 
 80014c8:	5b 8d 00 20 	sw (sp+32),r13                                 
 80014cc:	5b 8e 00 1c 	sw (sp+28),r14                                 
 80014d0:	5b 8f 00 18 	sw (sp+24),r15                                 
 80014d4:	5b 90 00 14 	sw (sp+20),r16                                 
 80014d8:	5b 91 00 10 	sw (sp+16),r17                                 
 80014dc:	5b 92 00 0c 	sw (sp+12),r18                                 
 80014e0:	5b 93 00 08 	sw (sp+8),r19                                  
 80014e4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80014e8:	b8 20 90 00 	mv r18,r1                                      
  } else {                                                            
    sc = RTEMS_INVALID_ID;                                            
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 80014ec:	28 21 00 14 	lw r1,(r1+20)                                  
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
 80014f0:	2a 4e 00 04 	lw r14,(r18+4)                                 
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  const char *src = buffer;                                           
 80014f4:	b8 40 88 00 	mv r17,r2                                      
  const void *buffer,                                                 
  size_t count                                                        
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
 80014f8:	28 2d 00 50 	lw r13,(r1+80)                                 
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
 80014fc:	b9 c0 08 00 	mv r1,r14                                      
static ssize_t rtems_blkdev_imfs_write(                               
  rtems_libio_t *iop,                                                 
  const void *buffer,                                                 
  size_t count                                                        
)                                                                     
{                                                                     
 8001500:	b8 60 98 00 	mv r19,r3                                      
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
 8001504:	29 b0 00 24 	lw r16,(r13+36)                                
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
 8001508:	b8 60 58 00 	mv r11,r3                                      
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
 800150c:	ba 00 10 00 	mv r2,r16                                      
 8001510:	f8 00 5e 68 	calli 8018eb0 <__divsi3>                       
 8001514:	b8 20 60 00 	mv r12,r1                                      
  ssize_t block_offset = (ssize_t) (offset % block_size);             
 8001518:	ba 00 10 00 	mv r2,r16                                      
 800151c:	b9 c0 08 00 	mv r1,r14                                      
 8001520:	f8 00 5e 94 	calli 8018f70 <__modsi3>                       
 8001524:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  while (remaining > 0) {                                             
    rtems_status_code sc;                                             
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
 8001528:	65 e1 00 00 	cmpei r1,r15,0                                 
 800152c:	ed 70 20 00 	cmpge r4,r11,r16                               
       sc = rtems_bdbuf_get(dd, block, &bd);                          
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
 8001530:	b9 80 10 00 	mv r2,r12                                      
                                                                      
  while (remaining > 0) {                                             
    rtems_status_code sc;                                             
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
 8001534:	a0 81 20 00 	and r4,r4,r1                                   
       sc = rtems_bdbuf_get(dd, block, &bd);                          
 8001538:	37 83 00 2c 	addi r3,sp,44                                  
 800153c:	b9 a0 08 00 	mv r1,r13                                      
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  const char *src = buffer;                                           
                                                                      
  while (remaining > 0) {                                             
 8001540:	49 60 00 12 	bg r11,r0,8001588 <rtems_blkdev_imfs_write+0xcc>
    } else {                                                          
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
 8001544:	5d 60 00 15 	bne r11,r0,8001598 <rtems_blkdev_imfs_write+0xdc><== NEVER TAKEN
    iop->offset += count;                                             
 8001548:	2a 42 00 04 	lw r2,(r18+4)                                  
    rv = (ssize_t) count;                                             
 800154c:	ba 60 08 00 	mv r1,r19                                      
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
 8001550:	b4 53 98 00 	add r19,r2,r19                                 
 8001554:	5a 53 00 04 	sw (r18+4),r19                                 
    errno = EIO;                                                      
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001558:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800155c:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8001560:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8001564:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8001568:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 800156c:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8001570:	2b 90 00 14 	lw r16,(sp+20)                                 
 8001574:	2b 91 00 10 	lw r17,(sp+16)                                 
 8001578:	2b 92 00 0c 	lw r18,(sp+12)                                 
 800157c:	2b 93 00 08 	lw r19,(sp+8)                                  
 8001580:	37 9c 00 2c 	addi sp,sp,44                                  
 8001584:	c3 a0 00 00 	ret                                            
                                                                      
  while (remaining > 0) {                                             
    rtems_status_code sc;                                             
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
 8001588:	44 80 00 09 	be r4,r0,80015ac <rtems_blkdev_imfs_write+0xf0>
       sc = rtems_bdbuf_get(dd, block, &bd);                          
 800158c:	b9 80 10 00 	mv r2,r12                                      
 8001590:	f8 00 2c e4 	calli 800c920 <rtems_bdbuf_get>                
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
 8001594:	44 20 00 0a 	be r1,r0,80015bc <rtems_blkdev_imfs_write+0x100><== ALWAYS TAKEN
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
    rv = (ssize_t) count;                                             
  } else {                                                            
    errno = EIO;                                                      
 8001598:	f8 00 46 2c 	calli 8012e48 <__errno>                        <== NOT EXECUTED
 800159c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 80015a0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    rv = -1;                                                          
 80015a4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80015a8:	e3 ff ff ec 	bi 8001558 <rtems_blkdev_imfs_write+0x9c>      <== NOT EXECUTED
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
       sc = rtems_bdbuf_get(dd, block, &bd);                          
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
 80015ac:	37 83 00 2c 	addi r3,sp,44                                  
 80015b0:	b9 a0 08 00 	mv r1,r13                                      
 80015b4:	f8 00 2d 25 	calli 800ca48 <rtems_bdbuf_read>               
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
 80015b8:	5c 20 ff f8 	bne r1,r0,8001598 <rtems_blkdev_imfs_write+0xdc><== NEVER TAKEN
      ssize_t copy = block_size - block_offset;                       
 80015bc:	ca 0f 70 00 	sub r14,r16,r15                                
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
 80015c0:	2b 81 00 2c 	lw r1,(sp+44)                                  
 80015c4:	ba 20 10 00 	mv r2,r17                                      
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
 80015c8:	4d 6e 00 02 	bge r11,r14,80015d0 <rtems_blkdev_imfs_write+0x114>
 80015cc:	b9 60 70 00 	mv r14,r11                                     
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
 80015d0:	28 21 00 1c 	lw r1,(r1+28)                                  
 80015d4:	b9 c0 18 00 	mv r3,r14                                      
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
 80015d8:	c9 6e 58 00 	sub r11,r11,r14                                
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
 80015dc:	b4 2f 08 00 	add r1,r1,r15                                  
 80015e0:	f8 00 49 13 	calli 8013a2c <memcpy>                         
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
 80015e4:	2b 81 00 2c 	lw r1,(sp+44)                                  
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
        src += copy;                                                  
 80015e8:	b6 2e 88 00 	add r17,r17,r14                                
        ++block;                                                      
 80015ec:	35 8c 00 01 	addi r12,r12,1                                 
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
 80015f0:	f8 00 2d e2 	calli 800cd78 <rtems_bdbuf_release_modified>   
      if (sc == RTEMS_SUCCESSFUL) {                                   
 80015f4:	5c 20 ff e9 	bne r1,r0,8001598 <rtems_blkdev_imfs_write+0xdc><== NEVER TAKEN
        block_offset = 0;                                             
 80015f8:	34 0f 00 00 	mvi r15,0                                      
 80015fc:	e3 ff ff cb 	bi 8001528 <rtems_blkdev_imfs_write+0x6c>      
                                                                      

0800c5e8 <rtems_blkdev_ioctl>: #include <rtems/blkdev.h> #include <rtems/bdbuf.h> int rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) {
 800c5e8:	37 9c ff fc 	addi sp,sp,-4                                  
 800c5ec:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
 800c5f0:	78 04 08 01 	mvhi r4,0x801                                  
 800c5f4:	38 84 91 80 	ori r4,r4,0x9180                               
 800c5f8:	28 85 00 00 	lw r5,(r4+0)                                   
#include <rtems/blkdev.h>                                             
#include <rtems/bdbuf.h>                                              
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
 800c5fc:	b8 20 20 00 	mv r4,r1                                       
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
 800c600:	44 45 00 61 	be r2,r5,800c784 <rtems_blkdev_ioctl+0x19c>    
 800c604:	54 45 00 12 	bgu r2,r5,800c64c <rtems_blkdev_ioctl+0x64>    
 800c608:	78 06 08 01 	mvhi r6,0x801                                  
 800c60c:	38 c6 97 54 	ori r6,r6,0x9754                               
 800c610:	28 c5 00 00 	lw r5,(r6+0)                                   
 800c614:	44 45 00 56 	be r2,r5,800c76c <rtems_blkdev_ioctl+0x184>    
 800c618:	54 45 00 2c 	bgu r2,r5,800c6c8 <rtems_blkdev_ioctl+0xe0>    
 800c61c:	78 04 08 01 	mvhi r4,0x801                                  
 800c620:	38 84 91 90 	ori r4,r4,0x9190                               
 800c624:	28 83 00 00 	lw r3,(r4+0)                                   
 800c628:	5c 43 00 12 	bne r2,r3,800c670 <rtems_blkdev_ioctl+0x88>    
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SYNCDEV:                                     
            sc = rtems_bdbuf_syncdev(dd);                             
 800c62c:	fb ff fe d7 	calli 800c188 <rtems_bdbuf_syncdev>            
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c630:	34 04 00 00 	mvi r4,0                                       
            *(rtems_blkdev_bnum *) argp = dd->size;                   
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SYNCDEV:                                     
            sc = rtems_bdbuf_syncdev(dd);                             
            if (sc != RTEMS_SUCCESSFUL) {                             
 800c634:	44 20 00 13 	be r1,r0,800c680 <rtems_blkdev_ioctl+0x98>     <== ALWAYS TAKEN
                errno = EIO;                                          
 800c638:	f8 00 18 23 	calli 80126c4 <__errno>                        <== NOT EXECUTED
 800c63c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 800c640:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
                rc = -1;                                              
 800c644:	34 04 ff ff 	mvi r4,-1                                      <== NOT EXECUTED
 800c648:	e0 00 00 0e 	bi 800c680 <rtems_blkdev_ioctl+0x98>           <== NOT EXECUTED
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
 800c64c:	78 06 08 01 	mvhi r6,0x801                                  
 800c650:	38 c6 91 8c 	ori r6,r6,0x918c                               
 800c654:	28 c5 00 00 	lw r5,(r6+0)                                   
 800c658:	44 45 00 2b 	be r2,r5,800c704 <rtems_blkdev_ioctl+0x11c>    
 800c65c:	54 45 00 0d 	bgu r2,r5,800c690 <rtems_blkdev_ioctl+0xa8>    
 800c660:	78 05 08 01 	mvhi r5,0x801                                  
 800c664:	38 a5 91 88 	ori r5,r5,0x9188                               
 800c668:	28 a1 00 00 	lw r1,(r5+0)                                   
 800c66c:	44 41 00 2c 	be r2,r1,800c71c <rtems_blkdev_ioctl+0x134>    <== ALWAYS TAKEN
        case RTEMS_BLKIO_RESETDEVSTATS:                               
            rtems_bdbuf_reset_device_stats(dd);                       
            break;                                                    
                                                                      
        default:                                                      
            errno = EINVAL;                                           
 800c670:	f8 00 18 15 	calli 80126c4 <__errno>                        
 800c674:	34 02 00 16 	mvi r2,22                                      
 800c678:	58 22 00 00 	sw (r1+0),r2                                   
            rc = -1;                                                  
 800c67c:	34 04 ff ff 	mvi r4,-1                                      
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c680:	b8 80 08 00 	mv r1,r4                                       
 800c684:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c688:	37 9c 00 04 	addi sp,sp,4                                   
 800c68c:	c3 a0 00 00 	ret                                            
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
 800c690:	78 06 08 01 	mvhi r6,0x801                                  
 800c694:	38 c6 97 5c 	ori r6,r6,0x975c                               
 800c698:	28 c4 00 00 	lw r4,(r6+0)                                   
 800c69c:	44 44 00 2d 	be r2,r4,800c750 <rtems_blkdev_ioctl+0x168>    
 800c6a0:	78 05 08 01 	mvhi r5,0x801                                  
 800c6a4:	38 a5 91 84 	ori r5,r5,0x9184                               
 800c6a8:	28 a4 00 00 	lw r4,(r5+0)                                   
 800c6ac:	5c 44 ff f1 	bne r2,r4,800c670 <rtems_blkdev_ioctl+0x88>    <== NEVER TAKEN
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SETBLKSIZE:                                  
            sc = rtems_bdbuf_set_block_size(dd, *(uint32_t *) argp, true);
 800c6b0:	28 62 00 00 	lw r2,(r3+0)                                   
 800c6b4:	34 03 00 01 	mvi r3,1                                       
 800c6b8:	fb ff ff 4f 	calli 800c3f4 <rtems_bdbuf_set_block_size>     
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c6bc:	34 04 00 00 	mvi r4,0                                       
            *(uint32_t *) argp = dd->block_size;                      
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SETBLKSIZE:                                  
            sc = rtems_bdbuf_set_block_size(dd, *(uint32_t *) argp, true);
            if (sc != RTEMS_SUCCESSFUL) {                             
 800c6c0:	44 20 ff f0 	be r1,r0,800c680 <rtems_blkdev_ioctl+0x98>     <== ALWAYS TAKEN
 800c6c4:	e3 ff ff dd 	bi 800c638 <rtems_blkdev_ioctl+0x50>           <== NOT EXECUTED
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
 800c6c8:	78 06 08 01 	mvhi r6,0x801                                  
 800c6cc:	38 c6 97 58 	ori r6,r6,0x9758                               
 800c6d0:	28 c5 00 00 	lw r5,(r6+0)                                   
 800c6d4:	44 45 00 19 	be r2,r5,800c738 <rtems_blkdev_ioctl+0x150>    
 800c6d8:	78 05 08 01 	mvhi r5,0x801                                  
 800c6dc:	38 a5 91 7c 	ori r5,r5,0x917c                               
 800c6e0:	28 a1 00 00 	lw r1,(r5+0)                                   
 800c6e4:	5c 41 ff e3 	bne r2,r1,800c670 <rtems_blkdev_ioctl+0x88>    <== NEVER TAKEN
    {                                                                 
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
 800c6e8:	28 81 00 20 	lw r1,(r4+32)                                  
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c6ec:	34 04 00 00 	mvi r4,0                                       
                                                                      
    switch (req)                                                      
    {                                                                 
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
 800c6f0:	58 61 00 00 	sw (r3+0),r1                                   
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c6f4:	b8 80 08 00 	mv r1,r4                                       
 800c6f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c6fc:	37 9c 00 04 	addi sp,sp,4                                   
 800c700:	c3 a0 00 00 	ret                                            
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c704:	34 04 00 00 	mvi r4,0                                       
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETDISKDEV:                                  
            *(rtems_disk_device **) argp = dd;                        
 800c708:	58 61 00 00 	sw (r3+0),r1                                   
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c70c:	b8 80 08 00 	mv r1,r4                                       
 800c710:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c714:	37 9c 00 04 	addi sp,sp,4                                   
 800c718:	c3 a0 00 00 	ret                                            
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
 800c71c:	28 81 00 1c 	lw r1,(r4+28)                                  
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c720:	34 04 00 00 	mvi r4,0                                       
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
 800c724:	58 61 00 00 	sw (r3+0),r1                                   
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c728:	b8 80 08 00 	mv r1,r4                                       
 800c72c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c730:	37 9c 00 04 	addi sp,sp,4                                   
 800c734:	c3 a0 00 00 	ret                                            
        case RTEMS_BLKIO_GETDEVSTATS:                                 
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
            break;                                                    
                                                                      
        case RTEMS_BLKIO_RESETDEVSTATS:                               
            rtems_bdbuf_reset_device_stats(dd);                       
 800c738:	fb ff ff 99 	calli 800c59c <rtems_bdbuf_reset_device_stats> 
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c73c:	34 04 00 00 	mvi r4,0                                       
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c740:	b8 80 08 00 	mv r1,r4                                       
 800c744:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c748:	37 9c 00 04 	addi sp,sp,4                                   
 800c74c:	c3 a0 00 00 	ret                                            
        case RTEMS_BLKIO_PURGEDEV:                                    
            rtems_bdbuf_purge_dev(dd);                                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETDEVSTATS:                                 
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
 800c750:	b8 60 10 00 	mv r2,r3                                       
 800c754:	fb ff ff 75 	calli 800c528 <rtems_bdbuf_get_device_stats>   
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c758:	34 04 00 00 	mvi r4,0                                       
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c75c:	b8 80 08 00 	mv r1,r4                                       
 800c760:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c764:	37 9c 00 04 	addi sp,sp,4                                   
 800c768:	c3 a0 00 00 	ret                                            
        case RTEMS_BLKIO_GETDISKDEV:                                  
            *(rtems_disk_device **) argp = dd;                        
            break;                                                    
                                                                      
        case RTEMS_BLKIO_PURGEDEV:                                    
            rtems_bdbuf_purge_dev(dd);                                
 800c76c:	fb ff fe 9f 	calli 800c1e8 <rtems_bdbuf_purge_dev>          
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c770:	34 04 00 00 	mvi r4,0                                       
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c774:	b8 80 08 00 	mv r1,r4                                       
 800c778:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c77c:	37 9c 00 04 	addi sp,sp,4                                   
 800c780:	c3 a0 00 00 	ret                                            
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
 800c784:	28 21 00 24 	lw r1,(r1+36)                                  
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
 800c788:	34 04 00 00 	mvi r4,0                                       
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
 800c78c:	58 61 00 00 	sw (r3+0),r1                                   
            rc = -1;                                                  
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
 800c790:	b8 80 08 00 	mv r1,r4                                       
 800c794:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c798:	37 9c 00 04 	addi sp,sp,4                                   
 800c79c:	c3 a0 00 00 	ret                                            
                                                                      

0802354c <rtems_blkstats>: #include <fcntl.h> #include <unistd.h> #include <errno.h> void rtems_blkstats(FILE *output, const char *device, bool reset) {
 802354c:	37 9c ff 84 	addi sp,sp,-124                                <== NOT EXECUTED
 8023550:	5b 8b 00 14 	sw (sp+20),r11                                 <== NOT EXECUTED
 8023554:	5b 8c 00 10 	sw (sp+16),r12                                 <== NOT EXECUTED
 8023558:	5b 8d 00 0c 	sw (sp+12),r13                                 <== NOT EXECUTED
 802355c:	5b 8e 00 08 	sw (sp+8),r14                                  <== NOT EXECUTED
 8023560:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8023564:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  int fd = open(device, O_RDONLY);                                    
 8023568:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 802356c:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
#include <fcntl.h>                                                    
#include <unistd.h>                                                   
#include <errno.h>                                                    
                                                                      
void rtems_blkstats(FILE *output, const char *device, bool reset)     
{                                                                     
 8023570:	20 6d 00 ff 	andi r13,r3,0xff                               <== NOT EXECUTED
  int fd = open(device, O_RDONLY);                                    
 8023574:	fb ff 7a 3a 	calli 8001e5c <open>                           <== NOT EXECUTED
 8023578:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
                                                                      
  if (fd >= 0) {                                                      
 802357c:	48 01 00 27 	bg r0,r1,8023618 <rtems_blkstats+0xcc>         <== NOT EXECUTED
    struct stat st;                                                   
    int rv;                                                           
                                                                      
    rv = fstat(fd, &st);                                              
 8023580:	37 82 00 18 	addi r2,sp,24                                  <== NOT EXECUTED
 8023584:	f8 00 09 33 	calli 8025a50 <fstat>                          <== NOT EXECUTED
    if (rv == 0) {                                                    
 8023588:	5c 20 00 42 	bne r1,r0,8023690 <rtems_blkstats+0x144>       <== NOT EXECUTED
      if (S_ISBLK(st.st_mode)) {                                      
 802358c:	2b 82 00 24 	lw r2,(sp+36)                                  <== NOT EXECUTED
 8023590:	34 01 60 00 	mvi r1,24576                                   <== NOT EXECUTED
 8023594:	20 42 f0 00 	andi r2,r2,0xf000                              <== NOT EXECUTED
 8023598:	44 41 00 11 	be r2,r1,80235dc <rtems_blkstats+0x90>         <== NOT EXECUTED
          } else {                                                    
            fprintf(output, "error: get stats: %s\n", strerror(errno));
          }                                                           
        }                                                             
      } else {                                                        
        fprintf(output, "error: not a block device\n");               
 802359c:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 80235a0:	38 21 41 48 	ori r1,r1,0x4148                               <== NOT EXECUTED
 80235a4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80235a8:	34 03 00 1a 	mvi r3,26                                      <== NOT EXECUTED
 80235ac:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 80235b0:	f8 00 71 1a 	calli 803fa18 <fwrite>                         <== NOT EXECUTED
      }                                                               
    } else {                                                          
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
    }                                                                 
                                                                      
    rv = close(fd);                                                   
 80235b4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80235b8:	f8 00 07 cc 	calli 80254e8 <close>                          <== NOT EXECUTED
    if (rv != 0) {                                                    
 80235bc:	5c 20 00 26 	bne r1,r0,8023654 <rtems_blkstats+0x108>       <== NOT EXECUTED
      fprintf(output, "error: close device: %s\n", strerror(errno));  
    }                                                                 
  } else {                                                            
    fprintf(output, "error: open device: %s\n", strerror(errno));     
  }                                                                   
}                                                                     
 80235c0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80235c4:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 80235c8:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 80235cc:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 80235d0:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 80235d4:	37 9c 00 7c 	addi sp,sp,124                                 <== NOT EXECUTED
 80235d8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    int rv;                                                           
                                                                      
    rv = fstat(fd, &st);                                              
    if (rv == 0) {                                                    
      if (S_ISBLK(st.st_mode)) {                                      
        if (reset) {                                                  
 80235dc:	5d a0 00 36 	bne r13,r0,80236b4 <rtems_blkstats+0x168>      <== NOT EXECUTED
static inline int rtems_disk_fd_get_device_stats(                     
  int fd,                                                             
  rtems_blkdev_stats *stats                                           
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDEVSTATS, stats);                   
 80235e0:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 80235e4:	38 21 41 b8 	ori r1,r1,0x41b8                               <== NOT EXECUTED
 80235e8:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
            fprintf(output, "error: reset stats: %s\n", strerror(errno));
          }                                                           
        } else {                                                      
          rtems_blkdev_stats stats;                                   
                                                                      
          rv = rtems_disk_fd_get_device_stats(fd, &stats);            
 80235ec:	37 8e 00 60 	addi r14,sp,96                                 <== NOT EXECUTED
 80235f0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80235f4:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 80235f8:	f8 00 0c 7f 	calli 80267f4 <ioctl>                          <== NOT EXECUTED
          if (rv == 0) {                                              
 80235fc:	5c 2d 00 3d 	bne r1,r13,80236f0 <rtems_blkstats+0x1a4>      <== NOT EXECUTED
            rtems_blkdev_print_stats(                                 
 8023600:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 8023604:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8023608:	38 42 e5 94 	ori r2,r2,0xe594                               <== NOT EXECUTED
 802360c:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 8023610:	f8 00 00 41 	calli 8023714 <rtems_blkdev_print_stats>       <== NOT EXECUTED
 8023614:	e3 ff ff e8 	bi 80235b4 <rtems_blkstats+0x68>               <== NOT EXECUTED
    rv = close(fd);                                                   
    if (rv != 0) {                                                    
      fprintf(output, "error: close device: %s\n", strerror(errno));  
    }                                                                 
  } else {                                                            
    fprintf(output, "error: open device: %s\n", strerror(errno));     
 8023618:	f8 00 68 81 	calli 803d81c <__errno>                        <== NOT EXECUTED
 802361c:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8023620:	f8 00 86 c3 	calli 804512c <strerror>                       <== NOT EXECUTED
 8023624:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 8023628:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 802362c:	38 42 41 9c 	ori r2,r2,0x419c                               <== NOT EXECUTED
 8023630:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8023634:	f8 00 6b d8 	calli 803e594 <fprintf>                        <== NOT EXECUTED
  }                                                                   
}                                                                     
 8023638:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 802363c:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8023640:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8023644:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8023648:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 802364c:	37 9c 00 7c 	addi sp,sp,124                                 <== NOT EXECUTED
 8023650:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
    }                                                                 
                                                                      
    rv = close(fd);                                                   
    if (rv != 0) {                                                    
      fprintf(output, "error: close device: %s\n", strerror(errno));  
 8023654:	f8 00 68 72 	calli 803d81c <__errno>                        <== NOT EXECUTED
 8023658:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 802365c:	f8 00 86 b4 	calli 804512c <strerror>                       <== NOT EXECUTED
 8023660:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 8023664:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8023668:	38 42 41 80 	ori r2,r2,0x4180                               <== NOT EXECUTED
 802366c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8023670:	f8 00 6b c9 	calli 803e594 <fprintf>                        <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    fprintf(output, "error: open device: %s\n", strerror(errno));     
  }                                                                   
}                                                                     
 8023674:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8023678:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 802367c:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8023680:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8023684:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8023688:	37 9c 00 7c 	addi sp,sp,124                                 <== NOT EXECUTED
 802368c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
        }                                                             
      } else {                                                        
        fprintf(output, "error: not a block device\n");               
      }                                                               
    } else {                                                          
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
 8023690:	f8 00 68 63 	calli 803d81c <__errno>                        <== NOT EXECUTED
 8023694:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8023698:	f8 00 86 a5 	calli 804512c <strerror>                       <== NOT EXECUTED
 802369c:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 80236a0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80236a4:	38 42 41 64 	ori r2,r2,0x4164                               <== NOT EXECUTED
 80236a8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80236ac:	f8 00 6b ba 	calli 803e594 <fprintf>                        <== NOT EXECUTED
 80236b0:	e3 ff ff c1 	bi 80235b4 <rtems_blkstats+0x68>               <== NOT EXECUTED
}                                                                     
                                                                      
static inline int rtems_disk_fd_reset_device_stats(int fd)            
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_RESETDEVSTATS);                        
 80236b4:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 80236b8:	38 21 41 b4 	ori r1,r1,0x41b4                               <== NOT EXECUTED
 80236bc:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 80236c0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80236c4:	f8 00 0c 4c 	calli 80267f4 <ioctl>                          <== NOT EXECUTED
    rv = fstat(fd, &st);                                              
    if (rv == 0) {                                                    
      if (S_ISBLK(st.st_mode)) {                                      
        if (reset) {                                                  
          rv = rtems_disk_fd_reset_device_stats(fd);                  
          if (rv != 0) {                                              
 80236c8:	44 20 ff bb 	be r1,r0,80235b4 <rtems_blkstats+0x68>         <== NOT EXECUTED
            fprintf(output, "error: reset stats: %s\n", strerror(errno));
 80236cc:	f8 00 68 54 	calli 803d81c <__errno>                        <== NOT EXECUTED
 80236d0:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 80236d4:	f8 00 86 96 	calli 804512c <strerror>                       <== NOT EXECUTED
 80236d8:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 80236dc:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80236e0:	38 42 41 18 	ori r2,r2,0x4118                               <== NOT EXECUTED
 80236e4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80236e8:	f8 00 6b ab 	calli 803e594 <fprintf>                        <== NOT EXECUTED
 80236ec:	e3 ff ff b2 	bi 80235b4 <rtems_blkstats+0x68>               <== NOT EXECUTED
              &stats,                                                 
              (rtems_printk_plugin_t) fprintf,                        
              output                                                  
            );                                                        
          } else {                                                    
            fprintf(output, "error: get stats: %s\n", strerror(errno));
 80236f0:	f8 00 68 4b 	calli 803d81c <__errno>                        <== NOT EXECUTED
 80236f4:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 80236f8:	f8 00 86 8d 	calli 804512c <strerror>                       <== NOT EXECUTED
 80236fc:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 8023700:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8023704:	38 42 41 30 	ori r2,r2,0x4130                               <== NOT EXECUTED
 8023708:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 802370c:	f8 00 6b a2 	calli 803e594 <fprintf>                        <== NOT EXECUTED
 8023710:	e3 ff ff a9 	bi 80235b4 <rtems_blkstats+0x68>               <== NOT EXECUTED
                                                                      

08000d10 <rtems_bsp_cmdline_get_param>: const char *rtems_bsp_cmdline_get_param( const char *name, char *value, size_t length ) {
 8000d10:	37 9c ff f4 	addi sp,sp,-12                                 
 8000d14:	5b 9d 00 04 	sw (sp+4),ra                                   
  const char *p;                                                      
                                                                      
  if ( !name )                                                        
 8000d18:	5c 20 00 06 	bne r1,r0,8000d30 <rtems_bsp_cmdline_get_param+0x20>
  value[0] = '\0';                                                    
                                                                      
  p = rtems_bsp_cmdline_get_param_raw( name );                        
                                                                      
  if ( !p )                                                           
    return NULL;                                                      
 8000d1c:	34 02 00 00 	mvi r2,0                                       
                                                                      
  copy_string( p, value, length );                                    
                                                                      
  return value;                                                       
}                                                                     
 8000d20:	b8 40 08 00 	mv r1,r2                                       
 8000d24:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8000d28:	37 9c 00 0c 	addi sp,sp,12                                  
 8000d2c:	c3 a0 00 00 	ret                                            
  const char *p;                                                      
                                                                      
  if ( !name )                                                        
    return NULL;                                                      
                                                                      
  if ( !value )                                                       
 8000d30:	44 40 ff fc 	be r2,r0,8000d20 <rtems_bsp_cmdline_get_param+0x10>
    return NULL;                                                      
                                                                      
  if ( !length )                                                      
 8000d34:	44 60 ff fa 	be r3,r0,8000d1c <rtems_bsp_cmdline_get_param+0xc>
    return NULL;                                                      
                                                                      
  value[0] = '\0';                                                    
 8000d38:	30 40 00 00 	sb (r2+0),r0                                   
                                                                      
  p = rtems_bsp_cmdline_get_param_raw( name );                        
 8000d3c:	5b 82 00 0c 	sw (sp+12),r2                                  
 8000d40:	5b 83 00 08 	sw (sp+8),r3                                   
 8000d44:	f8 00 00 1e 	calli 8000dbc <rtems_bsp_cmdline_get_param_raw>
                                                                      
  if ( !p )                                                           
 8000d48:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8000d4c:	2b 83 00 08 	lw r3,(sp+8)                                   
 8000d50:	44 20 ff f3 	be r1,r0,8000d1c <rtems_bsp_cmdline_get_param+0xc>
  int         i;                                                      
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
 8000d54:	40 25 00 00 	lbu r5,(r1+0)                                  
 8000d58:	44 a0 ff f2 	be r5,r0,8000d20 <rtems_bsp_cmdline_get_param+0x10><== NEVER TAKEN
 8000d5c:	34 63 ff ff 	addi r3,r3,-1                                  
 8000d60:	44 60 ff f0 	be r3,r0,8000d20 <rtems_bsp_cmdline_get_param+0x10><== NEVER TAKEN
 8000d64:	34 07 00 00 	mvi r7,0                                       
 8000d68:	34 04 00 00 	mvi r4,0                                       
 8000d6c:	34 06 00 00 	mvi r6,0                                       
    if ( *p == '\"' ) {                                               
 8000d70:	34 09 00 22 	mvi r9,34                                      
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
 8000d74:	34 0a 00 20 	mvi r10,32                                     
 8000d78:	20 c8 00 01 	andi r8,r6,0x1                                 
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
    if ( *p == '\"' ) {                                               
 8000d7c:	44 a9 00 0e 	be r5,r9,8000db4 <rtems_bsp_cmdline_get_param+0xa4>
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
 8000d80:	5d 00 00 02 	bne r8,r0,8000d88 <rtems_bsp_cmdline_get_param+0x78>
 8000d84:	44 aa ff e7 	be r5,r10,8000d20 <rtems_bsp_cmdline_get_param+0x10>
      break;                                                          
    value[i++] = *p++;                                                
 8000d88:	34 84 00 01 	addi r4,r4,1                                   
 8000d8c:	b4 47 38 00 	add r7,r2,r7                                   
 8000d90:	30 e5 00 00 	sb (r7+0),r5                                   
    value[i] = '\0';                                                  
  }                                                                   
                                                                      
}                                                                     
                                                                      
const char *rtems_bsp_cmdline_get_param(                              
 8000d94:	b4 44 28 00 	add r5,r2,r4                                   
    if ( *p == '\"' ) {                                               
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
      break;                                                          
    value[i++] = *p++;                                                
    value[i] = '\0';                                                  
 8000d98:	30 a0 00 00 	sb (r5+0),r0                                   
  }                                                                   
                                                                      
}                                                                     
                                                                      
const char *rtems_bsp_cmdline_get_param(                              
 8000d9c:	b4 24 28 00 	add r5,r1,r4                                   
  int         i;                                                      
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
 8000da0:	40 a5 00 00 	lbu r5,(r5+0)                                  
    if ( *p == '\"' ) {                                               
      quotes++;                                                       
    } else if ( ((quotes % 2) == 0) && *p == ' ' )                    
      break;                                                          
    value[i++] = *p++;                                                
 8000da4:	b8 80 38 00 	mv r7,r4                                       
  int         i;                                                      
  int         quotes;                                                 
  const char *p = start;                                              
                                                                      
  quotes=0;                                                           
  for (i=0 ; *p && i<length-1; ) {                                    
 8000da8:	44 a0 ff de 	be r5,r0,8000d20 <rtems_bsp_cmdline_get_param+0x10>
 8000dac:	54 64 ff f3 	bgu r3,r4,8000d78 <rtems_bsp_cmdline_get_param+0x68>
 8000db0:	e3 ff ff dc 	bi 8000d20 <rtems_bsp_cmdline_get_param+0x10>  
    if ( *p == '\"' ) {                                               
      quotes++;                                                       
 8000db4:	34 c6 00 01 	addi r6,r6,1                                   
 8000db8:	e3 ff ff f4 	bi 8000d88 <rtems_bsp_cmdline_get_param+0x78>  
                                                                      

080046f8 <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
 80046f8:	37 9c ff e4 	addi sp,sp,-28                                 
 80046fc:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004700:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004704:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004708:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800470c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004710:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004714:	b8 20 70 00 	mv r14,r1                                      
 8004718:	b8 40 68 00 	mv r13,r2                                      
 800471c:	b8 60 60 00 	mv r12,r3                                      
 8004720:	b8 80 78 00 	mv r15,r4                                      
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 8004724:	b9 c0 08 00 	mv r1,r14                                      
 8004728:	f8 00 01 a8 	calli 8004dc8 <_Chain_Get>                     
 800472c:	b8 20 58 00 	mv r11,r1                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8004730:	34 02 00 00 	mvi r2,0                                       
 8004734:	b9 a0 08 00 	mv r1,r13                                      
 8004738:	b9 80 18 00 	mv r3,r12                                      
 800473c:	37 84 00 1c 	addi r4,sp,28                                  
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8004740:	5d 60 00 0e 	bne r11,r0,8004778 <rtems_chain_get_with_wait+0x80>
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
 8004744:	fb ff fd 81 	calli 8003d48 <rtems_event_receive>            
 8004748:	b8 20 28 00 	mv r5,r1                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
 800474c:	44 2b ff f6 	be r1,r11,8004724 <rtems_chain_get_with_wait+0x2c><== NEVER TAKEN
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8004750:	b8 a0 08 00 	mv r1,r5                                       
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
 8004754:	59 eb 00 00 	sw (r15+0),r11                                 
                                                                      
  return sc;                                                          
}                                                                     
 8004758:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800475c:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004760:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004764:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004768:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800476c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004770:	37 9c 00 1c 	addi sp,sp,28                                  
 8004774:	c3 a0 00 00 	ret                                            
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
 8004778:	34 05 00 00 	mvi r5,0                                       
 800477c:	e3 ff ff f5 	bi 8004750 <rtems_chain_get_with_wait+0x58>    
                                                                      

080112dc <rtems_clock_set_nanoseconds_extension>: * error code - if unsuccessful */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ) {
 80112dc:	b8 20 18 00 	mv r3,r1                                       
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 80112e0:	34 01 00 09 	mvi r1,9                                       
 */                                                                   
rtems_status_code rtems_clock_set_nanoseconds_extension(              
  rtems_nanoseconds_extension_routine routine                         
)                                                                     
{                                                                     
  if ( !routine )                                                     
 80112e4:	44 60 00 05 	be r3,r0,80112f8 <rtems_clock_set_nanoseconds_extension+0x1c><== ALWAYS TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  _Watchdog_Nanoseconds_since_tick_handler = routine;                 
 80112e8:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 80112ec:	38 42 b1 c8 	ori r2,r2,0xb1c8                               <== NOT EXECUTED
 80112f0:	58 43 00 00 	sw (r2+0),r3                                   <== NOT EXECUTED
  return RTEMS_SUCCESSFUL;                                            
 80112f4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 80112f8:	c3 a0 00 00 	ret                                            
                                                                      

08001910 <rtems_cpu_usage_report_with_plugin>: */ void rtems_cpu_usage_report_with_plugin( void *context, rtems_printk_plugin_t print ) {
 8001910:	37 9c ff 84 	addi sp,sp,-124                                
 8001914:	5b 8b 00 44 	sw (sp+68),r11                                 
 8001918:	5b 8c 00 40 	sw (sp+64),r12                                 
 800191c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8001920:	5b 8e 00 38 	sw (sp+56),r14                                 
 8001924:	5b 8f 00 34 	sw (sp+52),r15                                 
 8001928:	5b 90 00 30 	sw (sp+48),r16                                 
 800192c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8001930:	5b 92 00 28 	sw (sp+40),r18                                 
 8001934:	5b 93 00 24 	sw (sp+36),r19                                 
 8001938:	5b 94 00 20 	sw (sp+32),r20                                 
 800193c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8001940:	5b 96 00 18 	sw (sp+24),r22                                 
 8001944:	5b 97 00 14 	sw (sp+20),r23                                 
 8001948:	5b 98 00 10 	sw (sp+16),r24                                 
 800194c:	5b 99 00 0c 	sw (sp+12),r25                                 
 8001950:	5b 9b 00 08 	sw (sp+8),fp                                   
 8001954:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001958:	b8 40 80 00 	mv r16,r2                                      
 800195c:	b8 20 88 00 	mv r17,r1                                      
    uint32_t seconds, nanoseconds;                                    
  #else                                                               
    uint32_t           total_units = 0;                               
  #endif                                                              
                                                                      
  if ( !print )                                                       
 8001960:	44 40 00 85 	be r2,r0,8001b74 <rtems_cpu_usage_report_with_plugin+0x264><== NEVER TAKEN
   *  the number of "ticks" we gave credit for to give the user a rough
   *  guideline as to what each number means proportionally.          
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Set_to_zero( &total );                                 
    uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;            
 8001964:	78 03 08 02 	mvhi r3,0x802                                  
 8001968:	38 63 32 a8 	ori r3,r3,0x32a8                               
 800196c:	28 64 00 00 	lw r4,(r3+0)                                   
 8001970:	28 63 00 04 	lw r3,(r3+4)                                   
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 8001974:	78 02 08 01 	mvhi r2,0x801                                  
 8001978:	38 42 fe 9c 	ori r2,r2,0xfe9c                               
                                                                      
static inline void _Timestamp64_implementation_Set_to_zero(           
  Timestamp64_Control *_time                                          
)                                                                     
{                                                                     
  *_time = 0;                                                         
 800197c:	5b 80 00 68 	sw (sp+104),r0                                 
 8001980:	5b 80 00 6c 	sw (sp+108),r0                                 
   *  the number of "ticks" we gave credit for to give the user a rough
   *  guideline as to what each number means proportionally.          
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Set_to_zero( &total );                                 
    uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;            
 8001984:	5b 84 00 48 	sw (sp+72),r4                                  
 8001988:	5b 83 00 4c 	sw (sp+76),r3                                  
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 800198c:	78 18 08 02 	mvhi r24,0x802                                 
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
                                                                      
        (*print)(                                                     
 8001990:	78 17 08 02 	mvhi r23,0x802                                 
    Thread_Control    *the_thread,                                    
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
 8001994:	78 0f 08 02 	mvhi r15,0x802                                 
           */                                                         
                                                                      
          seconds = _Timestamp_Get_seconds( &ran );                   
          nanoseconds = _Timestamp_Get_nanoseconds( &ran ) /          
            TOD_NANOSECONDS_PER_MICROSECOND;                          
          (*print)( context,                                          
 8001998:	78 16 08 02 	mvhi r22,0x802                                 
 */                                                                   
static inline void _TOD_Get_uptime(                                   
  Timestamp_Control *time                                             
)                                                                     
{                                                                     
  _TOD_Get_with_nanoseconds( time, &_TOD.uptime );                    
 800199c:	78 13 08 02 	mvhi r19,0x802                                 
        }                                                             
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  (*print)(                                                           
 80019a0:	da 00 00 00 	call r16                                       
 80019a4:	3b 18 2c f8 	ori r24,r24,0x2cf8                             
        the_thread = (Thread_Control *)information->local_table[ i ]; 
                                                                      
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 80019a8:	37 92 00 50 	addi r18,sp,80                                 
                                                                      
        (*print)(                                                     
 80019ac:	3a f7 00 10 	ori r23,r23,0x10                               
    Thread_Control    *the_thread,                                    
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
 80019b0:	39 ef 32 20 	ori r15,r15,0x3220                             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
          }                                                           
          _Timestamp_Subtract( &uptime_at_last_reset, &uptime, &total );
          _Timestamp_Divide( &ran, &total, &ival, &fval );            
 80019b4:	37 9b 00 78 	addi fp,sp,120                                 
           */                                                         
                                                                      
          seconds = _Timestamp_Get_seconds( &ran );                   
          nanoseconds = _Timestamp_Get_nanoseconds( &ran ) /          
            TOD_NANOSECONDS_PER_MICROSECOND;                          
          (*print)( context,                                          
 80019b8:	3a d6 00 24 	ori r22,r22,0x24                               
            Timestamp_Control used;                                   
            _TOD_Get_uptime( &uptime );                               
            _Timestamp_Subtract( &last, &uptime, &used );             
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
 80019bc:	37 99 00 70 	addi r25,sp,112                                
 80019c0:	3a 73 2c e0 	ori r19,r19,0x2ce0                             
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
 80019c4:	2b 01 00 00 	lw r1,(r24+0)                                  
 80019c8:	28 2e 00 04 	lw r14,(r1+4)                                  
    if ( information ) {                                              
 80019cc:	45 c0 00 4b 	be r14,r0,8001af8 <rtems_cpu_usage_report_with_plugin+0x1e8><== NEVER TAKEN
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 80019d0:	2d c5 00 10 	lhu r5,(r14+16)                                
 80019d4:	44 a0 00 49 	be r5,r0,8001af8 <rtems_cpu_usage_report_with_plugin+0x1e8>
 80019d8:	34 0d 00 04 	mvi r13,4                                      
 80019dc:	34 0c 00 01 	mvi r12,1                                      
        the_thread = (Thread_Control *)information->local_table[ i ]; 
 80019e0:	29 c6 00 1c 	lw r6,(r14+28)                                 
                                                                      
        if ( !the_thread )                                            
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 80019e4:	ba 40 18 00 	mv r3,r18                                      
 80019e8:	34 02 00 0d 	mvi r2,13                                      
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
        the_thread = (Thread_Control *)information->local_table[ i ]; 
 80019ec:	b4 cd 30 00 	add r6,r6,r13                                  
 80019f0:	28 cb 00 00 	lw r11,(r6+0)                                  
                                                                      
        if ( !the_thread )                                            
 80019f4:	45 60 00 3e 	be r11,r0,8001aec <rtems_cpu_usage_report_with_plugin+0x1dc><== NEVER TAKEN
          continue;                                                   
                                                                      
        rtems_object_get_name( the_thread->Object.id, sizeof(name), name );
 80019f8:	29 61 00 08 	lw r1,(r11+8)                                  
 80019fc:	f8 00 0e 2a 	calli 80052a4 <rtems_object_get_name>          
                                                                      
        (*print)(                                                     
 8001a00:	29 63 00 08 	lw r3,(r11+8)                                  
 8001a04:	ba e0 10 00 	mv r2,r23                                      
 8001a08:	ba 40 20 00 	mv r4,r18                                      
 8001a0c:	ba 20 08 00 	mv r1,r17                                      
 8001a10:	da 00 00 00 	call r16                                       
                                                                      
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
 8001a14:	29 62 00 80 	lw r2,(r11+128)                                
    Thread_Control    *the_thread,                                    
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
 8001a18:	29 e1 00 10 	lw r1,(r15+16)                                 
 8001a1c:	29 65 00 08 	lw r5,(r11+8)                                  
                                                                      
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
 8001a20:	5b 82 00 60 	sw (sp+96),r2                                  
 8001a24:	29 64 00 84 	lw r4,(r11+132)                                
    Thread_Control    *the_thread,                                    
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
 8001a28:	28 23 00 08 	lw r3,(r1+8)                                   
 8001a2c:	ba 60 10 00 	mv r2,r19                                      
                                                                      
          /*                                                          
           * If this is the currently executing thread, account for time
           * since the last context switch.                           
           */                                                         
          ran = the_thread->cpu_time_used;                            
 8001a30:	5b 84 00 64 	sw (sp+100),r4                                 
 8001a34:	bb 20 08 00 	mv r1,r25                                      
    Thread_Control    *the_thread,                                    
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
 8001a38:	44 a3 00 62 	be r5,r3,8001bc0 <rtems_cpu_usage_report_with_plugin+0x2b0>
 8001a3c:	f8 00 13 c2 	calli 8006944 <_TOD_Get_with_nanoseconds>      
 8001a40:	2b 85 00 74 	lw r5,(sp+116)                                 
 8001a44:	2b 86 00 70 	lw r6,(sp+112)                                 
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8001a48:	2b 82 00 4c 	lw r2,(sp+76)                                  
 8001a4c:	2b 83 00 48 	lw r3,(sp+72)                                  
            _Timestamp_Add_to( &ran, &used );                         
          } else {                                                    
            _TOD_Get_uptime( &uptime );                               
          }                                                           
          _Timestamp_Subtract( &uptime_at_last_reset, &uptime, &total );
          _Timestamp_Divide( &ran, &total, &ival, &fval );            
 8001a50:	37 81 00 60 	addi r1,sp,96                                  
 8001a54:	c8 a2 38 00 	sub r7,r5,r2                                   
 8001a58:	f4 e5 28 00 	cmpgu r5,r7,r5                                 
 8001a5c:	c8 c3 30 00 	sub r6,r6,r3                                   
 8001a60:	c8 c5 28 00 	sub r5,r6,r5                                   
 8001a64:	37 82 00 68 	addi r2,sp,104                                 
 8001a68:	37 83 00 7c 	addi r3,sp,124                                 
 8001a6c:	bb 60 20 00 	mv r4,fp                                       
 8001a70:	5b 85 00 68 	sw (sp+104),r5                                 
 8001a74:	5b 87 00 6c 	sw (sp+108),r7                                 
 8001a78:	f8 00 1e cd 	calli 80095ac <_Timestamp64_Divide>            
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_seconds(       
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time / 1000000000L);                           
 8001a7c:	78 01 08 02 	mvhi r1,0x802                                  
}                                                                     
                                                                      
void rtems_cpu_usage_report( void )                                   
{                                                                     
  rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );          
}                                                                     
 8001a80:	2b 95 00 60 	lw r21,(sp+96)                                 
 8001a84:	2b 94 00 64 	lw r20,(sp+100)                                
 8001a88:	38 21 01 28 	ori r1,r1,0x128                                
 8001a8c:	28 24 00 00 	lw r4,(r1+0)                                   
 8001a90:	34 03 00 00 	mvi r3,0                                       
 8001a94:	ba a0 08 00 	mv r1,r21                                      
 8001a98:	ba 80 10 00 	mv r2,r20                                      
 8001a9c:	f8 00 5d e4 	calli 801922c <__divdi3>                       
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_nanoseconds(   
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time % 1000000000L);                           
 8001aa0:	78 03 08 02 	mvhi r3,0x802                                  
 8001aa4:	38 63 01 28 	ori r3,r3,0x128                                
 8001aa8:	28 64 00 00 	lw r4,(r3+0)                                   
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_seconds(       
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time / 1000000000L);                           
 8001aac:	b8 40 58 00 	mv r11,r2                                      
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_nanoseconds(   
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time % 1000000000L);                           
 8001ab0:	34 03 00 00 	mvi r3,0                                       
 8001ab4:	ba a0 08 00 	mv r1,r21                                      
 8001ab8:	ba 80 10 00 	mv r2,r20                                      
 8001abc:	f8 00 5f de 	calli 8019a34 <__moddi3>                       
          /*                                                          
           * Print the information                                    
           */                                                         
                                                                      
          seconds = _Timestamp_Get_seconds( &ran );                   
          nanoseconds = _Timestamp_Get_nanoseconds( &ran ) /          
 8001ac0:	b8 40 08 00 	mv r1,r2                                       
 8001ac4:	34 02 03 e8 	mvi r2,1000                                    
 8001ac8:	f8 00 73 3f 	calli 801e7c4 <__udivsi3>                      
            TOD_NANOSECONDS_PER_MICROSECOND;                          
          (*print)( context,                                          
 8001acc:	2b 85 00 7c 	lw r5,(sp+124)                                 
 8001ad0:	2b 86 00 78 	lw r6,(sp+120)                                 
          /*                                                          
           * Print the information                                    
           */                                                         
                                                                      
          seconds = _Timestamp_Get_seconds( &ran );                   
          nanoseconds = _Timestamp_Get_nanoseconds( &ran ) /          
 8001ad4:	b8 20 20 00 	mv r4,r1                                       
            TOD_NANOSECONDS_PER_MICROSECOND;                          
          (*print)( context,                                          
 8001ad8:	ba c0 10 00 	mv r2,r22                                      
 8001adc:	ba 20 08 00 	mv r1,r17                                      
 8001ae0:	b9 60 18 00 	mv r3,r11                                      
 8001ae4:	da 00 00 00 	call r16                                       
 8001ae8:	2d c5 00 10 	lhu r5,(r14+16)                                
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 8001aec:	35 8c 00 01 	addi r12,r12,1                                 
 8001af0:	35 ad 00 04 	addi r13,r13,4                                 
 8001af4:	50 ac ff bb 	bgeu r5,r12,80019e0 <rtems_cpu_usage_report_with_plugin+0xd0>
       " ID         | NAME                                   | TICKS         | PERCENT\n"
     #endif                                                           
     "------------+----------------------------------------+---------------+---------\n"
  );                                                                  
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 8001af8:	78 04 08 02 	mvhi r4,0x802                                  
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( information ) {                                              
      for ( i=1 ; i <= information->maximum ; i++ ) {                 
 8001afc:	37 18 00 04 	addi r24,r24,4                                 
       " ID         | NAME                                   | TICKS         | PERCENT\n"
     #endif                                                           
     "------------+----------------------------------------+---------------+---------\n"
  );                                                                  
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 8001b00:	38 84 2d 04 	ori r4,r4,0x2d04                               
 8001b04:	5f 04 ff b0 	bne r24,r4,80019c4 <rtems_cpu_usage_report_with_plugin+0xb4>
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_seconds(       
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time / 1000000000L);                           
 8001b08:	78 01 08 02 	mvhi r1,0x802                                  
}                                                                     
                                                                      
void rtems_cpu_usage_report( void )                                   
{                                                                     
  rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );          
}                                                                     
 8001b0c:	2b 8b 00 6c 	lw r11,(sp+108)                                
 8001b10:	2b 8d 00 68 	lw r13,(sp+104)                                
 8001b14:	38 21 01 28 	ori r1,r1,0x128                                
 8001b18:	28 24 00 00 	lw r4,(r1+0)                                   
 8001b1c:	34 03 00 00 	mvi r3,0                                       
 8001b20:	b9 60 10 00 	mv r2,r11                                      
 8001b24:	b9 a0 08 00 	mv r1,r13                                      
 8001b28:	f8 00 5d c1 	calli 801922c <__divdi3>                       
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_nanoseconds(   
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time % 1000000000L);                           
 8001b2c:	78 03 08 02 	mvhi r3,0x802                                  
 8001b30:	38 63 01 28 	ori r3,r3,0x128                                
 8001b34:	28 64 00 00 	lw r4,(r3+0)                                   
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_seconds(       
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time / 1000000000L);                           
 8001b38:	b8 40 60 00 	mv r12,r2                                      
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_nanoseconds(   
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time % 1000000000L);                           
 8001b3c:	34 03 00 00 	mvi r3,0                                       
 8001b40:	b9 60 10 00 	mv r2,r11                                      
 8001b44:	b9 a0 08 00 	mv r1,r13                                      
 8001b48:	f8 00 5f bb 	calli 8019a34 <__moddi3>                       
    }                                                                 
  }                                                                   
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    seconds = _Timestamp_Get_seconds( &total );                       
    nanoseconds = _Timestamp_Get_nanoseconds( &total ) /              
 8001b4c:	b8 40 08 00 	mv r1,r2                                       
      TOD_NANOSECONDS_PER_MICROSECOND;                                
    (*print)(                                                         
 8001b50:	78 0b 08 02 	mvhi r11,0x802                                 
    }                                                                 
  }                                                                   
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    seconds = _Timestamp_Get_seconds( &total );                       
    nanoseconds = _Timestamp_Get_nanoseconds( &total ) /              
 8001b54:	34 02 03 e8 	mvi r2,1000                                    
 8001b58:	f8 00 73 1b 	calli 801e7c4 <__udivsi3>                      
      TOD_NANOSECONDS_PER_MICROSECOND;                                
    (*print)(                                                         
 8001b5c:	39 6b 00 3c 	ori r11,r11,0x3c                               
    }                                                                 
  }                                                                   
                                                                      
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    seconds = _Timestamp_Get_seconds( &total );                       
    nanoseconds = _Timestamp_Get_nanoseconds( &total ) /              
 8001b60:	b8 20 20 00 	mv r4,r1                                       
      TOD_NANOSECONDS_PER_MICROSECOND;                                
    (*print)(                                                         
 8001b64:	b9 60 10 00 	mv r2,r11                                      
 8001b68:	ba 20 08 00 	mv r1,r17                                      
 8001b6c:	b9 80 18 00 	mv r3,r12                                      
 8001b70:	da 00 00 00 	call r16                                       
       "-------------------------------------------------------------------------------\n",
       _Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,    
       total_units                                                    
    );                                                                
  #endif                                                              
}                                                                     
 8001b74:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001b78:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8001b7c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8001b80:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8001b84:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8001b88:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8001b8c:	2b 90 00 30 	lw r16,(sp+48)                                 
 8001b90:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8001b94:	2b 92 00 28 	lw r18,(sp+40)                                 
 8001b98:	2b 93 00 24 	lw r19,(sp+36)                                 
 8001b9c:	2b 94 00 20 	lw r20,(sp+32)                                 
 8001ba0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8001ba4:	2b 96 00 18 	lw r22,(sp+24)                                 
 8001ba8:	2b 97 00 14 	lw r23,(sp+20)                                 
 8001bac:	2b 98 00 10 	lw r24,(sp+16)                                 
 8001bb0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8001bb4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8001bb8:	37 9c 00 7c 	addi sp,sp,124                                 
 8001bbc:	c3 a0 00 00 	ret                                            
    Timestamp_Control *time_of_context_switch                         
  )                                                                   
  {                                                                   
    #ifndef RTEMS_SMP                                                 
      if ( _Thread_Executing->Object.id == the_thread->Object.id ) {  
        *time_of_context_switch = _Thread_Time_of_last_context_switch;
 8001bc0:	29 eb 00 20 	lw r11,(r15+32)                                
 8001bc4:	29 f4 00 24 	lw r20,(r15+36)                                
 8001bc8:	f8 00 13 5f 	calli 8006944 <_TOD_Get_with_nanoseconds>      
}                                                                     
                                                                      
void rtems_cpu_usage_report( void )                                   
{                                                                     
  rtems_cpu_usage_report_with_plugin( NULL, printk_plugin );          
}                                                                     
 8001bcc:	2b 85 00 74 	lw r5,(sp+116)                                 
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8001bd0:	2b 83 00 64 	lw r3,(sp+100)                                 
 8001bd4:	2b 82 00 60 	lw r2,(sp+96)                                  
 8001bd8:	2b 86 00 70 	lw r6,(sp+112)                                 
 8001bdc:	b4 a3 18 00 	add r3,r5,r3                                   
 8001be0:	f4 a3 20 00 	cmpgu r4,r5,r3                                 
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8001be4:	c8 74 08 00 	sub r1,r3,r20                                  
  const Timestamp64_Control *_start,                                  
  const Timestamp64_Control *_end,                                    
  Timestamp64_Control       *_result                                  
)                                                                     
{                                                                     
  *_result = *_end - *_start;                                         
 8001be8:	b4 c2 10 00 	add r2,r6,r2                                   
 8001bec:	b4 82 10 00 	add r2,r4,r2                                   
static inline void _Timestamp64_implementation_Add_to(                
  Timestamp64_Control       *_time,                                   
  const Timestamp64_Control *_add                                     
)                                                                     
{                                                                     
  *_time += *_add;                                                    
 8001bf0:	f4 23 18 00 	cmpgu r3,r1,r3                                 
 8001bf4:	c8 4b 10 00 	sub r2,r2,r11                                  
 8001bf8:	c8 43 18 00 	sub r3,r2,r3                                   
 8001bfc:	5b 83 00 60 	sw (sp+96),r3                                  
 8001c00:	5b 81 00 64 	sw (sp+100),r1                                 
 8001c04:	e3 ff ff 91 	bi 8001a48 <rtems_cpu_usage_report_with_plugin+0x138>
                                                                      

0800d118 <rtems_deviceio_errno>: [RTEMS_IO_ERROR] = EIO, [RTEMS_PROXY_BLOCKING] = EIO }; int rtems_deviceio_errno(rtems_status_code sc) {
 800d118:	37 9c ff f8 	addi sp,sp,-8                                  
 800d11c:	5b 8b 00 08 	sw (sp+8),r11                                  
 800d120:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
 800d124:	34 02 00 00 	mvi r2,0                                       
  [RTEMS_PROXY_BLOCKING]           = EIO                              
};                                                                    
                                                                      
int rtems_deviceio_errno(rtems_status_code sc)                        
{                                                                     
  if (sc == RTEMS_SUCCESSFUL) {                                       
 800d128:	5c 20 00 06 	bne r1,r0,800d140 <rtems_deviceio_errno+0x28>  
                                                                      
    errno = eno;                                                      
                                                                      
    return -1;                                                        
  }                                                                   
}                                                                     
 800d12c:	b8 40 08 00 	mv r1,r2                                       
 800d130:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800d134:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800d138:	37 9c 00 08 	addi sp,sp,8                                   
 800d13c:	c3 a0 00 00 	ret                                            
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
  } else {                                                            
    int eno = EINVAL;                                                 
                                                                      
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                   
 800d140:	34 02 00 1c 	mvi r2,28                                      
int rtems_deviceio_errno(rtems_status_code sc)                        
{                                                                     
  if (sc == RTEMS_SUCCESSFUL) {                                       
    return 0;                                                         
  } else {                                                            
    int eno = EINVAL;                                                 
 800d144:	34 0b 00 16 	mvi r11,22                                     
                                                                      
    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {                   
 800d148:	54 22 00 07 	bgu r1,r2,800d164 <rtems_deviceio_errno+0x4c>  <== NEVER TAKEN
      eno = status_code_to_errno [sc];                                
 800d14c:	78 02 08 01 	mvhi r2,0x801                                  
 800d150:	b4 21 08 00 	add r1,r1,r1                                   
 800d154:	38 42 e0 2c 	ori r2,r2,0xe02c                               
 800d158:	b4 21 08 00 	add r1,r1,r1                                   
 800d15c:	b4 41 08 00 	add r1,r2,r1                                   
 800d160:	28 2b 00 00 	lw r11,(r1+0)                                  
    }                                                                 
                                                                      
    errno = eno;                                                      
 800d164:	f8 00 00 44 	calli 800d274 <__errno>                        
 800d168:	58 2b 00 00 	sw (r1+0),r11                                  
                                                                      
    return -1;                                                        
 800d16c:	34 02 ff ff 	mvi r2,-1                                      
 800d170:	e3 ff ff ef 	bi 800d12c <rtems_deviceio_errno+0x14>         
                                                                      

080018f8 <rtems_disk_create_log>: dev_t phys, rtems_blkdev_bnum block_begin, rtems_blkdev_bnum block_count, const char *name ) {
 80018f8:	37 9c ff d4 	addi sp,sp,-44                                 
 80018fc:	5b 8b 00 24 	sw (sp+36),r11                                 
 8001900:	5b 8c 00 20 	sw (sp+32),r12                                 
 8001904:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8001908:	5b 8e 00 18 	sw (sp+24),r14                                 
 800190c:	5b 8f 00 14 	sw (sp+20),r15                                 
 8001910:	5b 90 00 10 	sw (sp+16),r16                                 
 8001914:	5b 91 00 0c 	sw (sp+12),r17                                 
 8001918:	5b 92 00 08 	sw (sp+8),r18                                  
 800191c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001920:	b8 20 60 00 	mv r12,r1                                      
 8001924:	b8 40 68 00 	mv r13,r2                                      
 8001928:	b8 60 78 00 	mv r15,r3                                      
 800192c:	b8 80 70 00 	mv r14,r4                                      
 8001930:	b8 a0 90 00 	mv r18,r5                                      
 8001934:	b8 c0 88 00 	mv r17,r6                                      
 8001938:	b8 e0 80 00 	mv r16,r7                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *phys_dd = NULL;                                  
  rtems_disk_device *dd = NULL;                                       
 800193c:	5b 80 00 2c 	sw (sp+44),r0                                  
  char *alloc_name = NULL;                                            
 8001940:	5b 80 00 28 	sw (sp+40),r0                                  
                                                                      
  sc = disk_lock();                                                   
 8001944:	fb ff fe a9 	calli 80013e8 <disk_lock>                      
 8001948:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 800194c:	44 20 00 0d 	be r1,r0,8001980 <rtems_disk_create_log+0x88>  <== ALWAYS TAKEN
  }                                                                   
                                                                      
  disk_unlock();                                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001950:	b9 60 08 00 	mv r1,r11                                      
 8001954:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001958:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800195c:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8001960:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8001964:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8001968:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800196c:	2b 90 00 10 	lw r16,(sp+16)                                 
 8001970:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8001974:	2b 92 00 08 	lw r18,(sp+8)                                  
 8001978:	37 9c 00 2c 	addi sp,sp,44                                  
 800197c:	c3 a0 00 00 	ret                                            
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  phys_dd = get_disk_entry(phys, true);                               
 8001980:	b9 c0 10 00 	mv r2,r14                                      
 8001984:	b9 e0 08 00 	mv r1,r15                                      
 8001988:	34 03 00 01 	mvi r3,1                                       
 800198c:	fb ff fe 5c 	calli 80012fc <get_disk_entry>                 
 8001990:	b8 20 70 00 	mv r14,r1                                      
  if (phys_dd == NULL) {                                              
 8001994:	44 2b 00 22 	be r1,r11,8001a1c <rtems_disk_create_log+0x124>
    disk_unlock();                                                    
                                                                      
    return RTEMS_INVALID_ID;                                          
  }                                                                   
                                                                      
  sc = create_disk(dev, name, &dd, &alloc_name);                      
 8001998:	b9 80 08 00 	mv r1,r12                                      
 800199c:	b9 a0 10 00 	mv r2,r13                                      
 80019a0:	ba 00 18 00 	mv r3,r16                                      
 80019a4:	37 84 00 2c 	addi r4,sp,44                                  
 80019a8:	37 85 00 28 	addi r5,sp,40                                  
 80019ac:	fb ff fe b3 	calli 8001478 <create_disk>                    
 80019b0:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 80019b4:	5c 20 00 18 	bne r1,r0,8001a14 <rtems_disk_create_log+0x11c>
    disk_unlock();                                                    
                                                                      
    return sc;                                                        
  }                                                                   
                                                                      
  sc = rtems_disk_init_log(                                           
 80019b8:	2b 81 00 2c 	lw r1,(sp+44)                                  
 80019bc:	b9 c0 10 00 	mv r2,r14                                      
 80019c0:	ba 40 18 00 	mv r3,r18                                      
 80019c4:	ba 20 20 00 	mv r4,r17                                      
 80019c8:	f8 00 2c cb 	calli 800ccf4 <rtems_disk_init_log>            
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
  dd->name = alloc_name;                                              
                                                                      
  ++phys_dd->uses;                                                    
 80019cc:	29 c2 00 14 	lw r2,(r14+20)                                 
    disk_unlock();                                                    
                                                                      
    return sc;                                                        
  }                                                                   
                                                                      
  sc = rtems_disk_init_log(                                           
 80019d0:	b8 20 58 00 	mv r11,r1                                      
    block_begin,                                                      
    block_count                                                       
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
  dd->name = alloc_name;                                              
 80019d4:	2b 83 00 28 	lw r3,(sp+40)                                  
    phys_dd,                                                          
    block_begin,                                                      
    block_count                                                       
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
 80019d8:	2b 81 00 2c 	lw r1,(sp+44)                                  
  dd->name = alloc_name;                                              
                                                                      
  ++phys_dd->uses;                                                    
 80019dc:	34 42 00 01 	addi r2,r2,1                                   
 80019e0:	59 c2 00 14 	sw (r14+20),r2                                 
    phys_dd,                                                          
    block_begin,                                                      
    block_count                                                       
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
 80019e4:	58 2c 00 00 	sw (r1+0),r12                                  
 80019e8:	58 2d 00 04 	sw (r1+4),r13                                  
  dd->name = alloc_name;                                              
 80019ec:	58 23 00 10 	sw (r1+16),r3                                  
                                                                      
  ++phys_dd->uses;                                                    
                                                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 80019f0:	45 60 00 09 	be r11,r0,8001a14 <rtems_disk_create_log+0x11c>
    dd->ioctl = null_handler;                                         
 80019f4:	78 03 08 00 	mvhi r3,0x800                                  
 80019f8:	38 63 13 80 	ori r3,r3,0x1380                               
 80019fc:	58 23 00 38 	sw (r1+56),r3                                  
    rtems_disk_delete(dev);                                           
 8001a00:	b9 a0 10 00 	mv r2,r13                                      
 8001a04:	b9 80 08 00 	mv r1,r12                                      
 8001a08:	fb ff ff 2b 	calli 80016b4 <rtems_disk_delete>              
    disk_unlock();                                                    
 8001a0c:	fb ff fe 8a 	calli 8001434 <disk_unlock>                    
                                                                      
    return sc;                                                        
 8001a10:	e3 ff ff d0 	bi 8001950 <rtems_disk_create_log+0x58>        
  }                                                                   
                                                                      
  disk_unlock();                                                      
 8001a14:	fb ff fe 88 	calli 8001434 <disk_unlock>                    
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8001a18:	e3 ff ff ce 	bi 8001950 <rtems_disk_create_log+0x58>        
    return sc;                                                        
  }                                                                   
                                                                      
  phys_dd = get_disk_entry(phys, true);                               
  if (phys_dd == NULL) {                                              
    disk_unlock();                                                    
 8001a1c:	fb ff fe 86 	calli 8001434 <disk_unlock>                    
                                                                      
    return RTEMS_INVALID_ID;                                          
 8001a20:	34 0b 00 04 	mvi r11,4                                      
 8001a24:	e3 ff ff cb 	bi 8001950 <rtems_disk_create_log+0x58>        
                                                                      

08001a28 <rtems_disk_create_phys>: rtems_blkdev_bnum block_count, rtems_block_device_ioctl handler, void *driver_data, const char *name ) {
 8001a28:	37 9c ff d4 	addi sp,sp,-44                                 
 8001a2c:	5b 8b 00 24 	sw (sp+36),r11                                 
 8001a30:	5b 8c 00 20 	sw (sp+32),r12                                 
 8001a34:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8001a38:	5b 8e 00 18 	sw (sp+24),r14                                 
 8001a3c:	5b 8f 00 14 	sw (sp+20),r15                                 
 8001a40:	5b 90 00 10 	sw (sp+16),r16                                 
 8001a44:	5b 91 00 0c 	sw (sp+12),r17                                 
 8001a48:	5b 92 00 08 	sw (sp+8),r18                                  
 8001a4c:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_disk_device *dd = NULL;                                       
 8001a50:	5b 80 00 2c 	sw (sp+44),r0                                  
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  char *alloc_name = NULL;                                            
 8001a54:	5b 80 00 28 	sw (sp+40),r0                                  
  rtems_blkdev_bnum block_count,                                      
  rtems_block_device_ioctl handler,                                   
  void *driver_data,                                                  
  const char *name                                                    
)                                                                     
{                                                                     
 8001a58:	b8 a0 70 00 	mv r14,r5                                      
 8001a5c:	b8 20 60 00 	mv r12,r1                                      
 8001a60:	b8 40 68 00 	mv r13,r2                                      
 8001a64:	b8 60 90 00 	mv r18,r3                                      
 8001a68:	b8 80 88 00 	mv r17,r4                                      
 8001a6c:	b8 c0 80 00 	mv r16,r6                                      
 8001a70:	b8 e0 78 00 	mv r15,r7                                      
  rtems_disk_device *dd = NULL;                                       
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  char *alloc_name = NULL;                                            
                                                                      
  if (handler == NULL) {                                              
    return RTEMS_INVALID_ADDRESS;                                     
 8001a74:	34 0b 00 09 	mvi r11,9                                      
{                                                                     
  rtems_disk_device *dd = NULL;                                       
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  char *alloc_name = NULL;                                            
                                                                      
  if (handler == NULL) {                                              
 8001a78:	44 a0 00 04 	be r5,r0,8001a88 <rtems_disk_create_phys+0x60> 
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  sc = disk_lock();                                                   
 8001a7c:	fb ff fe 5b 	calli 80013e8 <disk_lock>                      
 8001a80:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001a84:	44 20 00 0d 	be r1,r0,8001ab8 <rtems_disk_create_phys+0x90> <== ALWAYS TAKEN
  }                                                                   
                                                                      
  disk_unlock();                                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001a88:	b9 60 08 00 	mv r1,r11                                      
 8001a8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001a90:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8001a94:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8001a98:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8001a9c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8001aa0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8001aa4:	2b 90 00 10 	lw r16,(sp+16)                                 
 8001aa8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8001aac:	2b 92 00 08 	lw r18,(sp+8)                                  
 8001ab0:	37 9c 00 2c 	addi sp,sp,44                                  
 8001ab4:	c3 a0 00 00 	ret                                            
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  sc = create_disk(dev, name, &dd, &alloc_name);                      
 8001ab8:	b9 80 08 00 	mv r1,r12                                      
 8001abc:	b9 a0 10 00 	mv r2,r13                                      
 8001ac0:	b9 e0 18 00 	mv r3,r15                                      
 8001ac4:	37 84 00 2c 	addi r4,sp,44                                  
 8001ac8:	37 85 00 28 	addi r5,sp,40                                  
 8001acc:	fb ff fe 6b 	calli 8001478 <create_disk>                    
 8001ad0:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001ad4:	5c 20 00 16 	bne r1,r0,8001b2c <rtems_disk_create_phys+0x104>
    disk_unlock();                                                    
                                                                      
    return sc;                                                        
  }                                                                   
                                                                      
  sc = rtems_disk_init_phys(                                          
 8001ad8:	2b 81 00 2c 	lw r1,(sp+44)                                  
 8001adc:	ba 40 10 00 	mv r2,r18                                      
 8001ae0:	ba 20 18 00 	mv r3,r17                                      
 8001ae4:	b9 c0 20 00 	mv r4,r14                                      
 8001ae8:	ba 00 28 00 	mv r5,r16                                      
 8001aec:	f8 00 2c 54 	calli 800cc3c <rtems_disk_init_phys>           
 8001af0:	b8 20 58 00 	mv r11,r1                                      
    handler,                                                          
    driver_data                                                       
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
  dd->name = alloc_name;                                              
 8001af4:	2b 82 00 28 	lw r2,(sp+40)                                  
    block_count,                                                      
    handler,                                                          
    driver_data                                                       
  );                                                                  
                                                                      
  dd->dev = dev;                                                      
 8001af8:	2b 81 00 2c 	lw r1,(sp+44)                                  
 8001afc:	58 2c 00 00 	sw (r1+0),r12                                  
 8001b00:	58 2d 00 04 	sw (r1+4),r13                                  
  dd->name = alloc_name;                                              
 8001b04:	58 22 00 10 	sw (r1+16),r2                                  
                                                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001b08:	45 60 00 09 	be r11,r0,8001b2c <rtems_disk_create_phys+0x104>
    dd->ioctl = null_handler;                                         
 8001b0c:	78 03 08 00 	mvhi r3,0x800                                  
 8001b10:	38 63 13 80 	ori r3,r3,0x1380                               
 8001b14:	58 23 00 38 	sw (r1+56),r3                                  
    rtems_disk_delete(dev);                                           
 8001b18:	b9 a0 10 00 	mv r2,r13                                      
 8001b1c:	b9 80 08 00 	mv r1,r12                                      
 8001b20:	fb ff fe e5 	calli 80016b4 <rtems_disk_delete>              
    disk_unlock();                                                    
 8001b24:	fb ff fe 44 	calli 8001434 <disk_unlock>                    
                                                                      
    return sc;                                                        
 8001b28:	e3 ff ff d8 	bi 8001a88 <rtems_disk_create_phys+0x60>       
  }                                                                   
                                                                      
  disk_unlock();                                                      
 8001b2c:	fb ff fe 42 	calli 8001434 <disk_unlock>                    
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8001b30:	e3 ff ff d6 	bi 8001a88 <rtems_disk_create_phys+0x60>       
                                                                      

080016b4 <rtems_disk_delete>: } } rtems_status_code rtems_disk_delete(dev_t dev) {
 80016b4:	37 9c ff c8 	addi sp,sp,-56                                 
 80016b8:	5b 8b 00 38 	sw (sp+56),r11                                 
 80016bc:	5b 8c 00 34 	sw (sp+52),r12                                 
 80016c0:	5b 8d 00 30 	sw (sp+48),r13                                 
 80016c4:	5b 8e 00 2c 	sw (sp+44),r14                                 
 80016c8:	5b 8f 00 28 	sw (sp+40),r15                                 
 80016cc:	5b 90 00 24 	sw (sp+36),r16                                 
 80016d0:	5b 91 00 20 	sw (sp+32),r17                                 
 80016d4:	5b 92 00 1c 	sw (sp+28),r18                                 
 80016d8:	5b 93 00 18 	sw (sp+24),r19                                 
 80016dc:	5b 94 00 14 	sw (sp+20),r20                                 
 80016e0:	5b 95 00 10 	sw (sp+16),r21                                 
 80016e4:	5b 96 00 0c 	sw (sp+12),r22                                 
 80016e8:	5b 97 00 08 	sw (sp+8),r23                                  
 80016ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 80016f0:	b8 20 60 00 	mv r12,r1                                      
 80016f4:	b8 40 58 00 	mv r11,r2                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
                                                                      
  sc = disk_lock();                                                   
 80016f8:	fb ff ff 3c 	calli 80013e8 <disk_lock>                      
 80016fc:	b8 20 a0 00 	mv r20,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001700:	44 20 00 12 	be r1,r0,8001748 <rtems_disk_delete+0x94>      <== ALWAYS TAKEN
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001704:	ba 80 08 00 	mv r1,r20                                      
 8001708:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800170c:	2b 8b 00 38 	lw r11,(sp+56)                                 
 8001710:	2b 8c 00 34 	lw r12,(sp+52)                                 
 8001714:	2b 8d 00 30 	lw r13,(sp+48)                                 
 8001718:	2b 8e 00 2c 	lw r14,(sp+44)                                 
 800171c:	2b 8f 00 28 	lw r15,(sp+40)                                 
 8001720:	2b 90 00 24 	lw r16,(sp+36)                                 
 8001724:	2b 91 00 20 	lw r17,(sp+32)                                 
 8001728:	2b 92 00 1c 	lw r18,(sp+28)                                 
 800172c:	2b 93 00 18 	lw r19,(sp+24)                                 
 8001730:	2b 94 00 14 	lw r20,(sp+20)                                 
 8001734:	2b 95 00 10 	lw r21,(sp+16)                                 
 8001738:	2b 96 00 0c 	lw r22,(sp+12)                                 
 800173c:	2b 97 00 08 	lw r23,(sp+8)                                  
 8001740:	37 9c 00 38 	addi sp,sp,56                                  
 8001744:	c3 a0 00 00 	ret                                            
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  dd = get_disk_entry(dev, true);                                     
 8001748:	b9 80 08 00 	mv r1,r12                                      
 800174c:	b9 60 10 00 	mv r2,r11                                      
 8001750:	34 03 00 01 	mvi r3,1                                       
 8001754:	fb ff fe ea 	calli 80012fc <get_disk_entry>                 
  if (dd == NULL) {                                                   
 8001758:	44 34 00 53 	be r1,r20,80018a4 <rtems_disk_delete+0x1f0>    <== NEVER TAKEN
}                                                                     
                                                                      
static void                                                           
rtems_disk_cleanup(rtems_disk_device *disk_to_remove)                 
{                                                                     
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
 800175c:	28 2e 00 08 	lw r14,(r1+8)                                  
    disk_unlock();                                                    
                                                                      
    return RTEMS_INVALID_ID;                                          
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
 8001760:	34 03 00 01 	mvi r3,1                                       
 8001764:	30 23 00 40 	sb (r1+64),r3                                  
{                                                                     
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (physical_disk->deleted) {                                       
 8001768:	41 c3 00 40 	lbu r3,(r14+64)                                
 800176c:	44 60 00 32 	be r3,r0,8001834 <rtems_disk_delete+0x180>     
    dev_t dev = physical_disk->dev;                                   
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
 8001770:	78 15 08 01 	mvhi r21,0x801                                 
 8001774:	3a b5 a7 54 	ori r21,r21,0xa754                             
 8001778:	2a a1 00 00 	lw r1,(r21+0)                                  
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
 800177c:	29 cf 00 00 	lw r15,(r14+0)                                 
 8001780:	29 d0 00 04 	lw r16,(r14+4)                                 
    unsigned deleted_count = 0;                                       
 8001784:	34 13 00 00 	mvi r19,0                                      
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
 8001788:	44 20 00 25 	be r1,r0,800181c <rtems_disk_delete+0x168>     <== NEVER TAKEN
 800178c:	78 16 08 01 	mvhi r22,0x801                                 
 8001790:	34 12 00 00 	mvi r18,0                                      
 8001794:	ba 80 98 00 	mv r19,r20                                     
 8001798:	34 11 00 00 	mvi r17,0                                      
 800179c:	3a d6 a7 50 	ori r22,r22,0xa750                             
          if (dd->uses == 0) {                                        
            ++deleted_count;                                          
            dtab->minor [minor] = NULL;                               
            free_disk_device(dd);                                     
          } else {                                                    
            dd->deleted = true;                                       
 80017a0:	34 17 00 01 	mvi r23,1                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
      rtems_disk_device_table *dtab = disktab + major;                
 80017a4:	2a cd 00 00 	lw r13,(r22+0)                                 
 80017a8:	b5 b2 68 00 	add r13,r13,r18                                
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
 80017ac:	29 a4 00 04 	lw r4,(r13+4)                                  
 80017b0:	44 80 00 17 	be r4,r0,800180c <rtems_disk_delete+0x158>     
 80017b4:	34 0c 00 00 	mvi r12,0                                      
 80017b8:	34 0b 00 00 	mvi r11,0                                      
        rtems_disk_device *dd = dtab->minor [minor];                  
 80017bc:	29 a3 00 00 	lw r3,(r13+0)                                  
 80017c0:	b4 6c 18 00 	add r3,r3,r12                                  
 80017c4:	28 62 00 00 	lw r2,(r3+0)                                   
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
 80017c8:	fd c2 28 00 	cmpne r5,r14,r2                                
 80017cc:	44 40 00 0d 	be r2,r0,8001800 <rtems_disk_delete+0x14c>     
 80017d0:	28 46 00 08 	lw r6,(r2+8)                                   
 80017d4:	28 c7 00 00 	lw r7,(r6+0)                                   
 80017d8:	28 c6 00 04 	lw r6,(r6+4)                                   
 80017dc:	98 ef 38 00 	xor r7,r7,r15                                  
 80017e0:	98 d0 30 00 	xor r6,r6,r16                                  
 80017e4:	b8 e6 30 00 	or r6,r7,r6                                    
 80017e8:	64 c6 00 00 	cmpei r6,r6,0                                  
 80017ec:	a0 a6 28 00 	and r5,r5,r6                                   
 80017f0:	44 a0 00 04 	be r5,r0,8001800 <rtems_disk_delete+0x14c>     
          if (dd->uses == 0) {                                        
 80017f4:	28 45 00 14 	lw r5,(r2+20)                                  
 80017f8:	44 a0 00 25 	be r5,r0,800188c <rtems_disk_delete+0x1d8>     
            ++deleted_count;                                          
            dtab->minor [minor] = NULL;                               
            free_disk_device(dd);                                     
          } else {                                                    
            dd->deleted = true;                                       
 80017fc:	30 57 00 40 	sb (r2+64),r23                                 
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
      rtems_disk_device_table *dtab = disktab + major;                
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
 8001800:	35 6b 00 01 	addi r11,r11,1                                 
 8001804:	35 8c 00 04 	addi r12,r12,4                                 
 8001808:	54 8b ff ed 	bgu r4,r11,80017bc <rtems_disk_delete+0x108>   
                                                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
 800180c:	2a a1 00 00 	lw r1,(r21+0)                                  
 8001810:	36 31 00 01 	addi r17,r17,1                                 
 8001814:	36 52 00 08 	addi r18,r18,8                                 
 8001818:	54 31 ff e3 	bgu r1,r17,80017a4 <rtems_disk_delete+0xf0>    
          }                                                           
        }                                                             
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
 800181c:	29 c1 00 14 	lw r1,(r14+20)                                 
 8001820:	c8 33 98 00 	sub r19,r1,r19                                 
 8001824:	59 d3 00 14 	sw (r14+20),r19                                
    if (physical_disk->uses == 0) {                                   
 8001828:	46 60 00 22 	be r19,r0,80018b0 <rtems_disk_delete+0x1fc>    
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
 800182c:	fb ff ff 02 	calli 8001434 <disk_unlock>                    
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8001830:	e3 ff ff b5 	bi 8001704 <rtems_disk_delete+0x50>            
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
      disktab [major].minor [minor] = NULL;                           
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
 8001834:	28 23 00 14 	lw r3,(r1+20)                                  
 8001838:	5c 60 ff fd 	bne r3,r0,800182c <rtems_disk_delete+0x178>    <== NEVER TAKEN
      --physical_disk->uses;                                          
 800183c:	29 c4 00 14 	lw r4,(r14+20)                                 
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
      disktab [major].minor [minor] = NULL;                           
 8001840:	78 03 08 01 	mvhi r3,0x801                                  
 8001844:	38 63 a7 50 	ori r3,r3,0xa750                               
      disktab [major].minor [minor] = NULL;                           
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
      --physical_disk->uses;                                          
 8001848:	34 84 ff ff 	addi r4,r4,-1                                  
 800184c:	59 c4 00 14 	sw (r14+20),r4                                 
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
 8001850:	28 24 00 00 	lw r4,(r1+0)                                   
      disktab [major].minor [minor] = NULL;                           
 8001854:	28 65 00 00 	lw r5,(r3+0)                                   
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
      --physical_disk->uses;                                          
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
 8001858:	28 23 00 04 	lw r3,(r1+4)                                   
      disktab [major].minor [minor] = NULL;                           
 800185c:	b4 84 10 00 	add r2,r4,r4                                   
 8001860:	b4 42 10 00 	add r2,r2,r2                                   
 8001864:	b4 42 10 00 	add r2,r2,r2                                   
 8001868:	b4 a2 10 00 	add r2,r5,r2                                   
 800186c:	28 44 00 00 	lw r4,(r2+0)                                   
 8001870:	b4 63 10 00 	add r2,r3,r3                                   
 8001874:	b4 42 10 00 	add r2,r2,r2                                   
 8001878:	b4 82 10 00 	add r2,r4,r2                                   
 800187c:	58 40 00 00 	sw (r2+0),r0                                   
      free_disk_device(disk_to_remove);                               
 8001880:	fb ff fe c2 	calli 8001388 <free_disk_device>               
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
 8001884:	fb ff fe ec 	calli 8001434 <disk_unlock>                    
 8001888:	e3 ff ff 9f 	bi 8001704 <rtems_disk_delete+0x50>            
        rtems_disk_device *dd = dtab->minor [minor];                  
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
          if (dd->uses == 0) {                                        
            ++deleted_count;                                          
            dtab->minor [minor] = NULL;                               
 800188c:	58 60 00 00 	sw (r3+0),r0                                   
            free_disk_device(dd);                                     
 8001890:	b8 40 08 00 	mv r1,r2                                       
 8001894:	fb ff fe bd 	calli 8001388 <free_disk_device>               
      for (minor = 0; minor < dtab->size; ++minor) {                  
        rtems_disk_device *dd = dtab->minor [minor];                  
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
          if (dd->uses == 0) {                                        
            ++deleted_count;                                          
 8001898:	36 73 00 01 	addi r19,r19,1                                 
 800189c:	29 a4 00 04 	lw r4,(r13+4)                                  
 80018a0:	e3 ff ff d8 	bi 8001800 <rtems_disk_delete+0x14c>           
    return sc;                                                        
  }                                                                   
                                                                      
  dd = get_disk_entry(dev, true);                                     
  if (dd == NULL) {                                                   
    disk_unlock();                                                    
 80018a4:	fb ff fe e4 	calli 8001434 <disk_unlock>                    <== NOT EXECUTED
                                                                      
    return RTEMS_INVALID_ID;                                          
 80018a8:	34 14 00 04 	mvi r20,4                                      <== NOT EXECUTED
 80018ac:	e3 ff ff 96 	bi 8001704 <rtems_disk_delete+0x50>            <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    if (physical_disk->uses == 0) {                                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
 80018b0:	29 c1 00 00 	lw r1,(r14+0)                                  
      disktab [major].minor [minor] = NULL;                           
 80018b4:	78 02 08 01 	mvhi r2,0x801                                  
 80018b8:	38 42 a7 50 	ori r2,r2,0xa750                               
 80018bc:	28 42 00 00 	lw r2,(r2+0)                                   
 80018c0:	b4 21 08 00 	add r1,r1,r1                                   
 80018c4:	b4 21 08 00 	add r1,r1,r1                                   
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    if (physical_disk->uses == 0) {                                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
 80018c8:	29 c3 00 04 	lw r3,(r14+4)                                  
      disktab [major].minor [minor] = NULL;                           
 80018cc:	b4 21 08 00 	add r1,r1,r1                                   
 80018d0:	b4 41 08 00 	add r1,r2,r1                                   
 80018d4:	28 22 00 00 	lw r2,(r1+0)                                   
 80018d8:	b4 63 08 00 	add r1,r3,r3                                   
 80018dc:	b4 21 08 00 	add r1,r1,r1                                   
 80018e0:	b4 41 08 00 	add r1,r2,r1                                   
 80018e4:	58 20 00 00 	sw (r1+0),r0                                   
      free_disk_device(physical_disk);                                
 80018e8:	b9 c0 08 00 	mv r1,r14                                      
 80018ec:	fb ff fe a7 	calli 8001388 <free_disk_device>               
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
 80018f0:	fb ff fe d1 	calli 8001434 <disk_unlock>                    
 80018f4:	e3 ff ff 84 	bi 8001704 <rtems_disk_delete+0x50>            
                                                                      

08001e74 <rtems_disk_io_done>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_disk_io_done(void) {
 8001e74:	37 9c ff e0 	addi sp,sp,-32                                 
 8001e78:	5b 8b 00 20 	sw (sp+32),r11                                 
 8001e7c:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8001e80:	5b 8d 00 18 	sw (sp+24),r13                                 
 8001e84:	5b 8e 00 14 	sw (sp+20),r14                                 
 8001e88:	5b 8f 00 10 	sw (sp+16),r15                                 
 8001e8c:	5b 90 00 0c 	sw (sp+12),r16                                 
 8001e90:	5b 91 00 08 	sw (sp+8),r17                                  
 8001e94:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
 8001e98:	78 10 08 01 	mvhi r16,0x801                                 
 8001e9c:	3a 10 a7 54 	ori r16,r16,0xa754                             
 8001ea0:	2a 01 00 00 	lw r1,(r16+0)                                  
 8001ea4:	44 20 00 33 	be r1,r0,8001f70 <rtems_disk_io_done+0xfc>     <== NEVER TAKEN
 8001ea8:	78 11 08 01 	mvhi r17,0x801                                 
 8001eac:	3a 31 a7 50 	ori r17,r17,0xa750                             
 8001eb0:	2a 2b 00 00 	lw r11,(r17+0)                                 
 8001eb4:	34 0f 00 00 	mvi r15,0                                      
 8001eb8:	34 0e 00 00 	mvi r14,0                                      
    rtems_disk_device_table *dtab = disktab + major;                  
 8001ebc:	b5 6f 68 00 	add r13,r11,r15                                
                                                                      
    for (minor = 0; minor < dtab->size; ++minor) {                    
 8001ec0:	29 a4 00 04 	lw r4,(r13+4)                                  
 8001ec4:	44 80 00 29 	be r4,r0,8001f68 <rtems_disk_io_done+0xf4>     
 8001ec8:	29 a3 00 00 	lw r3,(r13+0)                                  
 8001ecc:	34 0c 00 00 	mvi r12,0                                      
 8001ed0:	34 0b 00 00 	mvi r11,0                                      
      rtems_disk_device *dd = dtab->minor [minor];                    
 8001ed4:	b4 6c 08 00 	add r1,r3,r12                                  
 8001ed8:	28 22 00 00 	lw r2,(r1+0)                                   
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
    rtems_disk_device_table *dtab = disktab + major;                  
                                                                      
    for (minor = 0; minor < dtab->size; ++minor) {                    
 8001edc:	35 6b 00 01 	addi r11,r11,1                                 
 8001ee0:	35 8c 00 04 	addi r12,r12,4                                 
      rtems_disk_device *dd = dtab->minor [minor];                    
                                                                      
      if (dd != NULL) {                                               
        free_disk_device(dd);                                         
 8001ee4:	b8 40 08 00 	mv r1,r2                                       
    rtems_disk_device_table *dtab = disktab + major;                  
                                                                      
    for (minor = 0; minor < dtab->size; ++minor) {                    
      rtems_disk_device *dd = dtab->minor [minor];                    
                                                                      
      if (dd != NULL) {                                               
 8001ee8:	44 40 00 04 	be r2,r0,8001ef8 <rtems_disk_io_done+0x84>     
        free_disk_device(dd);                                         
 8001eec:	fb ff fd 27 	calli 8001388 <free_disk_device>               
 8001ef0:	29 a4 00 04 	lw r4,(r13+4)                                  
 8001ef4:	29 a3 00 00 	lw r3,(r13+0)                                  
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
    rtems_disk_device_table *dtab = disktab + major;                  
                                                                      
    for (minor = 0; minor < dtab->size; ++minor) {                    
 8001ef8:	54 8b ff f7 	bgu r4,r11,8001ed4 <rtems_disk_io_done+0x60>   
 8001efc:	2a 2b 00 00 	lw r11,(r17+0)                                 
                                                                      
      if (dd != NULL) {                                               
        free_disk_device(dd);                                         
      }                                                               
    }                                                                 
    free(dtab->minor);                                                
 8001f00:	b8 60 08 00 	mv r1,r3                                       
 8001f04:	f8 00 02 6e 	calli 80028bc <free>                           
rtems_disk_io_done(void)                                              
{                                                                     
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
 8001f08:	2a 01 00 00 	lw r1,(r16+0)                                  
 8001f0c:	35 ce 00 01 	addi r14,r14,1                                 
 8001f10:	35 ef 00 08 	addi r15,r15,8                                 
 8001f14:	54 2e ff ea 	bgu r1,r14,8001ebc <rtems_disk_io_done+0x48>   
        free_disk_device(dd);                                         
      }                                                               
    }                                                                 
    free(dtab->minor);                                                
  }                                                                   
  free(disktab);                                                      
 8001f18:	b9 60 08 00 	mv r1,r11                                      
                                                                      
  rtems_semaphore_delete(diskdevs_mutex);                             
 8001f1c:	78 0b 08 01 	mvhi r11,0x801                                 
        free_disk_device(dd);                                         
      }                                                               
    }                                                                 
    free(dtab->minor);                                                
  }                                                                   
  free(disktab);                                                      
 8001f20:	f8 00 02 67 	calli 80028bc <free>                           
                                                                      
  rtems_semaphore_delete(diskdevs_mutex);                             
 8001f24:	39 6b a7 58 	ori r11,r11,0xa758                             
 8001f28:	29 61 00 00 	lw r1,(r11+0)                                  
 8001f2c:	f8 00 0c b3 	calli 80051f8 <rtems_semaphore_delete>         
  diskdevs_mutex = RTEMS_ID_NONE;                                     
  disktab = NULL;                                                     
  disktab_size = 0;                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001f30:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
  free(disktab);                                                      
                                                                      
  rtems_semaphore_delete(diskdevs_mutex);                             
                                                                      
  diskdevs_mutex = RTEMS_ID_NONE;                                     
 8001f34:	59 60 00 00 	sw (r11+0),r0                                  
  disktab = NULL;                                                     
 8001f38:	5a 20 00 00 	sw (r17+0),r0                                  
  disktab_size = 0;                                                   
 8001f3c:	5a 00 00 00 	sw (r16+0),r0                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001f40:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001f44:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8001f48:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8001f4c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8001f50:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8001f54:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8001f58:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8001f5c:	2b 91 00 08 	lw r17,(sp+8)                                  
 8001f60:	37 9c 00 20 	addi sp,sp,32                                  
 8001f64:	c3 a0 00 00 	ret                                            
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
    rtems_disk_device_table *dtab = disktab + major;                  
                                                                      
    for (minor = 0; minor < dtab->size; ++minor) {                    
 8001f68:	29 a3 00 00 	lw r3,(r13+0)                                  
 8001f6c:	e3 ff ff e5 	bi 8001f00 <rtems_disk_io_done+0x8c>           
rtems_disk_io_done(void)                                              
{                                                                     
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  for (major = 0; major < disktab_size; ++major) {                    
 8001f70:	78 11 08 01 	mvhi r17,0x801                                 <== NOT EXECUTED
 8001f74:	3a 31 a7 50 	ori r17,r17,0xa750                             <== NOT EXECUTED
 8001f78:	2a 2b 00 00 	lw r11,(r17+0)                                 <== NOT EXECUTED
 8001f7c:	e3 ff ff e7 	bi 8001f18 <rtems_disk_io_done+0xa4>           <== NOT EXECUTED
                                                                      

08001d90 <rtems_disk_io_initialize>: } } rtems_status_code rtems_disk_io_initialize(void) {
 8001d90:	37 9c ff e8 	addi sp,sp,-24                                 
 8001d94:	5b 8b 00 18 	sw (sp+24),r11                                 
 8001d98:	5b 8c 00 14 	sw (sp+20),r12                                 
 8001d9c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8001da0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8001da4:	5b 8f 00 08 	sw (sp+8),r15                                  
 8001da8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number size = DISKTAB_INITIAL_SIZE;              
                                                                      
  if (disktab_size > 0) {                                             
 8001dac:	78 0b 08 01 	mvhi r11,0x801                                 
 8001db0:	39 6b a7 54 	ori r11,r11,0xa754                             
 8001db4:	29 6e 00 00 	lw r14,(r11+0)                                 
    return RTEMS_SUCCESSFUL;                                          
 8001db8:	34 0c 00 00 	mvi r12,0                                      
rtems_disk_io_initialize(void)                                        
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number size = DISKTAB_INITIAL_SIZE;              
                                                                      
  if (disktab_size > 0) {                                             
 8001dbc:	45 c0 00 0a 	be r14,r0,8001de4 <rtems_disk_io_initialize+0x54>
  }                                                                   
                                                                      
  disktab_size = size;                                                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8001dc0:	b9 80 08 00 	mv r1,r12                                      
 8001dc4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001dc8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8001dcc:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8001dd0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8001dd4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8001dd8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8001ddc:	37 9c 00 18 	addi sp,sp,24                                  
 8001de0:	c3 a0 00 00 	ret                                            
                                                                      
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
 8001de4:	34 01 00 08 	mvi r1,8                                       
 8001de8:	34 02 00 08 	mvi r2,8                                       
 8001dec:	78 0d 08 01 	mvhi r13,0x801                                 
 8001df0:	f8 00 02 65 	calli 8002784 <calloc>                         
 8001df4:	39 ad a7 50 	ori r13,r13,0xa750                             
 8001df8:	59 a1 00 00 	sw (r13+0),r1                                  
  if (disktab == NULL) {                                              
    return RTEMS_NO_MEMORY;                                           
 8001dfc:	34 0c 00 1a 	mvi r12,26                                     
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
  if (disktab == NULL) {                                              
 8001e00:	44 2e ff f0 	be r1,r14,8001dc0 <rtems_disk_io_initialize+0x30><== NEVER TAKEN
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  diskdevs_protected = false;                                         
  sc = rtems_semaphore_create(                                        
 8001e04:	78 02 08 01 	mvhi r2,0x801                                  
 8001e08:	38 42 92 c0 	ori r2,r2,0x92c0                               
 8001e0c:	28 41 00 00 	lw r1,(r2+0)                                   
 8001e10:	78 0e 08 01 	mvhi r14,0x801                                 
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
  if (disktab == NULL) {                                              
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  diskdevs_protected = false;                                         
 8001e14:	78 06 08 01 	mvhi r6,0x801                                  
 8001e18:	38 c6 a7 5c 	ori r6,r6,0xa75c                               
  sc = rtems_semaphore_create(                                        
 8001e1c:	39 ce a7 58 	ori r14,r14,0xa758                             
 8001e20:	34 02 00 01 	mvi r2,1                                       
 8001e24:	34 03 00 10 	mvi r3,16                                      
 8001e28:	34 04 00 00 	mvi r4,0                                       
 8001e2c:	b9 c0 28 00 	mv r5,r14                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
  if (disktab == NULL) {                                              
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  diskdevs_protected = false;                                         
 8001e30:	30 c0 00 00 	sb (r6+0),r0                                   
  sc = rtems_semaphore_create(                                        
 8001e34:	f8 00 0c 6d 	calli 8004fe8 <rtems_semaphore_create>         
 8001e38:	b8 20 78 00 	mv r15,r1                                      
    RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY   
      | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL,                      
    0,                                                                
    &diskdevs_mutex                                                   
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001e3c:	44 20 00 04 	be r1,r0,8001e4c <rtems_disk_io_initialize+0xbc><== ALWAYS TAKEN
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
  if (sc != RTEMS_SUCCESSFUL) {                                       
    rtems_semaphore_delete(diskdevs_mutex);                           
    free(disktab);                                                    
 8001e40:	29 a1 00 00 	lw r1,(r13+0)                                  <== NOT EXECUTED
 8001e44:	f8 00 02 9e 	calli 80028bc <free>                           <== NOT EXECUTED
                                                                      
    return RTEMS_UNSATISFIED;                                         
 8001e48:	e3 ff ff de 	bi 8001dc0 <rtems_disk_io_initialize+0x30>     <== NOT EXECUTED
    free(disktab);                                                    
                                                                      
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
 8001e4c:	f8 00 26 0c 	calli 800b67c <rtems_bdbuf_init>               
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001e50:	5c 2f 00 05 	bne r1,r15,8001e64 <rtems_disk_io_initialize+0xd4><== NEVER TAKEN
    free(disktab);                                                    
                                                                      
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  disktab_size = size;                                                
 8001e54:	34 01 00 08 	mvi r1,8                                       
 8001e58:	59 61 00 00 	sw (r11+0),r1                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8001e5c:	34 0c 00 00 	mvi r12,0                                      
 8001e60:	e3 ff ff d8 	bi 8001dc0 <rtems_disk_io_initialize+0x30>     
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
  if (sc != RTEMS_SUCCESSFUL) {                                       
    rtems_semaphore_delete(diskdevs_mutex);                           
 8001e64:	29 c1 00 00 	lw r1,(r14+0)                                  <== NOT EXECUTED
    free(disktab);                                                    
                                                                      
    return RTEMS_UNSATISFIED;                                         
 8001e68:	34 0c 00 0d 	mvi r12,13                                     <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
  if (sc != RTEMS_SUCCESSFUL) {                                       
    rtems_semaphore_delete(diskdevs_mutex);                           
 8001e6c:	f8 00 0c e3 	calli 80051f8 <rtems_semaphore_delete>         <== NOT EXECUTED
 8001e70:	e3 ff ff f4 	bi 8001e40 <rtems_disk_io_initialize+0xb0>     <== NOT EXECUTED
                                                                      

08001c34 <rtems_disk_next>: rtems_disk_device * rtems_disk_next(dev_t dev) {
 8001c34:	37 9c ff ec 	addi sp,sp,-20                                 
 8001c38:	5b 8b 00 14 	sw (sp+20),r11                                 
 8001c3c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8001c40:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8001c44:	5b 8e 00 08 	sw (sp+8),r14                                  
 8001c48:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (dev != (dev_t) -1) {                                            
 8001c4c:	34 03 ff ff 	mvi r3,-1                                      
 8001c50:	44 23 00 4c 	be r1,r3,8001d80 <rtems_disk_next+0x14c>       
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
    /* If minor wraps around */                                       
    if ((minor + 1) < minor) {                                        
 8001c54:	34 4b 00 01 	addi r11,r2,1                                  
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
  return temp.__overlay.major;                                        
 8001c58:	b8 20 68 00 	mv r13,r1                                      
 8001c5c:	51 62 00 06 	bgeu r11,r2,8001c74 <rtems_disk_next+0x40>     <== ALWAYS TAKEN
      /* If major wraps around */                                     
      if ((major + 1) < major) {                                      
 8001c60:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
        return NULL;                                                  
 8001c64:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
    /* If minor wraps around */                                       
    if ((minor + 1) < minor) {                                        
      /* If major wraps around */                                     
      if ((major + 1) < major) {                                      
 8001c68:	55 a1 00 0b 	bgu r13,r1,8001c94 <rtems_disk_next+0x60>      <== NOT EXECUTED
 8001c6c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
        return NULL;                                                  
      }                                                               
      ++major;                                                        
      minor = 0;                                                      
 8001c70:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
    } else {                                                          
      ++minor;                                                        
    }                                                                 
  }                                                                   
                                                                      
  sc = disk_lock();                                                   
 8001c74:	fb ff fd dd 	calli 80013e8 <disk_lock>                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return NULL;                                                      
 8001c78:	34 0c 00 00 	mvi r12,0                                      
      ++minor;                                                        
    }                                                                 
  }                                                                   
                                                                      
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8001c7c:	5c 20 00 06 	bne r1,r0,8001c94 <rtems_disk_next+0x60>       <== NEVER TAKEN
    return NULL;                                                      
  }                                                                   
                                                                      
  if (major >= disktab_size) {                                        
 8001c80:	78 01 08 01 	mvhi r1,0x801                                  
 8001c84:	38 21 a7 54 	ori r1,r1,0xa754                               
 8001c88:	28 24 00 00 	lw r4,(r1+0)                                   
 8001c8c:	54 8d 00 0a 	bgu r4,r13,8001cb4 <rtems_disk_next+0x80>      <== ALWAYS TAKEN
    disk_unlock();                                                    
 8001c90:	fb ff fd e9 	calli 8001434 <disk_unlock>                    <== NOT EXECUTED
      disk_unlock();                                                  
                                                                      
      return dtab->minor [minor];                                     
    }                                                                 
  }                                                                   
}                                                                     
 8001c94:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8001c98:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8001c9c:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8001ca0:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8001ca4:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8001ca8:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8001cac:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8001cb0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    disk_unlock();                                                    
                                                                      
    return NULL;                                                      
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
 8001cb4:	78 01 08 01 	mvhi r1,0x801                                  
 8001cb8:	38 21 a7 50 	ori r1,r1,0xa750                               
 8001cbc:	28 25 00 00 	lw r5,(r1+0)                                   
 8001cc0:	b5 ad 70 00 	add r14,r13,r13                                
 8001cc4:	b5 ce 70 00 	add r14,r14,r14                                
 8001cc8:	b5 ce 70 00 	add r14,r14,r14                                
 8001ccc:	b4 ae 70 00 	add r14,r5,r14                                 
 8001cd0:	29 c1 00 00 	lw r1,(r14+0)                                  
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    } else if (dtab->minor [minor] == NULL) {                         
 8001cd4:	b5 6b 60 00 	add r12,r11,r11                                
 8001cd8:	b5 8c 60 00 	add r12,r12,r12                                
 8001cdc:	b4 2c 10 00 	add r2,r1,r12                                  
    return NULL;                                                      
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
 8001ce0:	44 20 00 03 	be r1,r0,8001cec <rtems_disk_next+0xb8>        
 8001ce4:	29 c3 00 04 	lw r3,(r14+4)                                  
 8001ce8:	54 6b 00 14 	bgu r3,r11,8001d38 <rtems_disk_next+0x104>     
       minor = 0;                                                     
       ++major;                                                       
 8001cec:	35 ad 00 01 	addi r13,r13,1                                 
       if (major >= disktab_size) {                                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
 8001cf0:	b5 ad 10 00 	add r2,r13,r13                                 
 8001cf4:	b4 42 10 00 	add r2,r2,r2                                   
 8001cf8:	b4 42 10 00 	add r2,r2,r2                                   
 8001cfc:	b4 a2 70 00 	add r14,r5,r2                                  
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
       minor = 0;                                                     
       ++major;                                                       
       if (major >= disktab_size) {                                   
 8001d00:	54 8d 00 0b 	bgu r4,r13,8001d2c <rtems_disk_next+0xf8>      
         disk_unlock();                                               
 8001d04:	fb ff fd cc 	calli 8001434 <disk_unlock>                    
                                                                      
         return NULL;                                                 
 8001d08:	34 0c 00 00 	mvi r12,0                                      
      disk_unlock();                                                  
                                                                      
      return dtab->minor [minor];                                     
    }                                                                 
  }                                                                   
}                                                                     
 8001d0c:	b9 80 08 00 	mv r1,r12                                      
 8001d10:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d14:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001d18:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001d1c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001d20:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001d24:	37 9c 00 14 	addi sp,sp,20                                  
 8001d28:	c3 a0 00 00 	ret                                            
       if (major >= disktab_size) {                                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
 8001d2c:	29 c1 00 00 	lw r1,(r14+0)                                  
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
       minor = 0;                                                     
 8001d30:	34 0b 00 00 	mvi r11,0                                      
       if (major >= disktab_size) {                                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
 8001d34:	e3 ff ff e8 	bi 8001cd4 <rtems_disk_next+0xa0>              
    } else if (dtab->minor [minor] == NULL) {                         
 8001d38:	28 42 00 00 	lw r2,(r2+0)                                   
      ++minor;                                                        
 8001d3c:	35 6b 00 01 	addi r11,r11,1                                 
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    } else if (dtab->minor [minor] == NULL) {                         
 8001d40:	44 40 ff e5 	be r2,r0,8001cd4 <rtems_disk_next+0xa0>        
      ++minor;                                                        
    } else {                                                          
      ++dtab->minor [minor]->uses;                                    
 8001d44:	28 41 00 14 	lw r1,(r2+20)                                  
 8001d48:	34 21 00 01 	addi r1,r1,1                                   
 8001d4c:	58 41 00 14 	sw (r2+20),r1                                  
      disk_unlock();                                                  
 8001d50:	fb ff fd b9 	calli 8001434 <disk_unlock>                    
                                                                      
      return dtab->minor [minor];                                     
 8001d54:	29 c1 00 00 	lw r1,(r14+0)                                  
 8001d58:	b4 2c 60 00 	add r12,r1,r12                                 
 8001d5c:	29 8c 00 00 	lw r12,(r12+0)                                 
    }                                                                 
  }                                                                   
}                                                                     
 8001d60:	b9 80 08 00 	mv r1,r12                                      
 8001d64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d68:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8001d6c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8001d70:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8001d74:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8001d78:	37 9c 00 14 	addi sp,sp,20                                  
 8001d7c:	c3 a0 00 00 	ret                                            
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (dev != (dev_t) -1) {                                            
 8001d80:	5c 41 ff b5 	bne r2,r1,8001c54 <rtems_disk_next+0x20>       <== NEVER TAKEN
rtems_disk_next(dev_t dev)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
 8001d84:	34 0b 00 00 	mvi r11,0                                      
rtems_disk_device *                                                   
rtems_disk_next(dev_t dev)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
 8001d88:	34 0d 00 00 	mvi r13,0                                      
 8001d8c:	e3 ff ff ba 	bi 8001c74 <rtems_disk_next+0x40>              
                                                                      

08001b34 <rtems_disk_obtain>: return RTEMS_SUCCESSFUL; } rtems_disk_device * rtems_disk_obtain(dev_t dev) {
 8001b34:	37 9c ff ec 	addi sp,sp,-20                                 
 8001b38:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001b3c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001b40:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001b44:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001b48:	b8 20 68 00 	mv r13,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable(level);                                     
 8001b4c:	90 00 60 00 	rcsr r12,IE                                    
 8001b50:	34 01 ff fe 	mvi r1,-2                                      
 8001b54:	a1 81 08 00 	and r1,r12,r1                                  
 8001b58:	d0 01 00 00 	wcsr IE,r1                                     
  if (!diskdevs_protected) {                                          
 8001b5c:	78 03 08 01 	mvhi r3,0x801                                  
 8001b60:	38 63 a7 5c 	ori r3,r3,0xa75c                               
 8001b64:	40 61 00 00 	lbu r1,(r3+0)                                  
 8001b68:	20 21 00 ff 	andi r1,r1,0xff                                
 8001b6c:	5c 20 00 0d 	bne r1,r0,8001ba0 <rtems_disk_obtain+0x6c>     <== NEVER TAKEN
    /* Frequent and quickest case */                                  
    dd = get_disk_entry(dev, false);                                  
 8001b70:	b9 a0 08 00 	mv r1,r13                                      
 8001b74:	34 03 00 00 	mvi r3,0                                       
 8001b78:	fb ff fd e1 	calli 80012fc <get_disk_entry>                 
 8001b7c:	b8 20 58 00 	mv r11,r1                                      
    rtems_interrupt_enable(level);                                    
 8001b80:	d0 0c 00 00 	wcsr IE,r12                                    
      disk_unlock();                                                  
    }                                                                 
  }                                                                   
                                                                      
  return dd;                                                          
}                                                                     
 8001b84:	b9 60 08 00 	mv r1,r11                                      
 8001b88:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001b8c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001b90:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8001b94:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001b98:	37 9c 00 14 	addi sp,sp,20                                  
 8001b9c:	c3 a0 00 00 	ret                                            
  if (!diskdevs_protected) {                                          
    /* Frequent and quickest case */                                  
    dd = get_disk_entry(dev, false);                                  
    rtems_interrupt_enable(level);                                    
  } else {                                                            
    rtems_interrupt_enable(level);                                    
 8001ba0:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
                                                                      
    sc = disk_lock();                                                 
 8001ba4:	5b 82 00 14 	sw (sp+20),r2                                  <== NOT EXECUTED
 8001ba8:	fb ff fe 10 	calli 80013e8 <disk_lock>                      <== NOT EXECUTED
                                                                      
rtems_disk_device *                                                   
rtems_disk_obtain(dev_t dev)                                          
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
 8001bac:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
  } else {                                                            
    rtems_interrupt_enable(level);                                    
                                                                      
    sc = disk_lock();                                                 
    if (sc == RTEMS_SUCCESSFUL) {                                     
 8001bb0:	2b 82 00 14 	lw r2,(sp+20)                                  <== NOT EXECUTED
 8001bb4:	5c 20 ff f4 	bne r1,r0,8001b84 <rtems_disk_obtain+0x50>     <== NOT EXECUTED
      dd = get_disk_entry(dev, false);                                
 8001bb8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8001bbc:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8001bc0:	fb ff fd cf 	calli 80012fc <get_disk_entry>                 <== NOT EXECUTED
 8001bc4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
      disk_unlock();                                                  
 8001bc8:	fb ff fe 1b 	calli 8001434 <disk_unlock>                    <== NOT EXECUTED
 8001bcc:	e3 ff ff ee 	bi 8001b84 <rtems_disk_obtain+0x50>            <== NOT EXECUTED
                                                                      

0800f248 <rtems_event_system_receive>: rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) {
 800f248:	37 9c ff f8 	addi sp,sp,-8                                  
 800f24c:	5b 8b 00 08 	sw (sp+8),r11                                  
 800f250:	5b 9d 00 04 	sw (sp+4),ra                                   
    } else {                                                          
      *event_out = event->pending_events;                             
      sc = RTEMS_SUCCESSFUL;                                          
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
 800f254:	34 05 00 09 	mvi r5,9                                       
  rtems_event_set *event_out                                          
)                                                                     
{                                                                     
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
 800f258:	44 80 00 09 	be r4,r0,800f27c <rtems_event_system_receive+0x34><== NEVER TAKEN
    Thread_Control    *executing = _Thread_Executing;                 
 800f25c:	78 05 08 01 	mvhi r5,0x801                                  
 800f260:	38 a5 ae 00 	ori r5,r5,0xae00                               
 800f264:	28 ab 00 10 	lw r11,(r5+16)                                 
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
 800f268:	29 66 01 18 	lw r6,(r11+280)                                
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
 800f26c:	5c 20 00 09 	bne r1,r0,800f290 <rtems_event_system_receive+0x48><== ALWAYS TAKEN
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
 800f270:	28 c1 00 04 	lw r1,(r6+4)                                   <== NOT EXECUTED
      sc = RTEMS_SUCCESSFUL;                                          
 800f274:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
 800f278:	58 81 00 00 	sw (r4+0),r1                                   <== NOT EXECUTED
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 800f27c:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 800f280:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800f284:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 800f288:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 800f28c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800f290:	78 05 08 01 	mvhi r5,0x801                                  
 800f294:	38 a5 a9 78 	ori r5,r5,0xa978                               
 800f298:	28 a7 00 00 	lw r7,(r5+0)                                   
                                                                      
    ++level;                                                          
 800f29c:	34 e7 00 01 	addi r7,r7,1                                   
    _Thread_Dispatch_disable_level = level;                           
 800f2a0:	58 a7 00 00 	sw (r5+0),r7                                   
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
      _Thread_Disable_dispatch();                                     
      _Event_Seize(                                                   
 800f2a4:	78 07 08 01 	mvhi r7,0x801                                  
 800f2a8:	b9 60 28 00 	mv r5,r11                                      
 800f2ac:	34 c6 00 04 	addi r6,r6,4                                   
 800f2b0:	38 e7 b2 28 	ori r7,r7,0xb228                               
 800f2b4:	78 08 00 04 	mvhi r8,0x4                                    
 800f2b8:	fb ff fe 79 	calli 800ec9c <_Event_Seize>                   
        executing,                                                    
        event,                                                        
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
 800f2bc:	fb ff e2 c1 	calli 8007dc0 <_Thread_Enable_dispatch>        
                                                                      
      sc = executing->Wait.return_code;                               
 800f2c0:	29 65 00 34 	lw r5,(r11+52)                                 
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 800f2c4:	b8 a0 08 00 	mv r1,r5                                       
 800f2c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f2cc:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800f2d0:	37 9c 00 08 	addi sp,sp,8                                   
 800f2d4:	c3 a0 00 00 	ret                                            
                                                                      

08003eb0 <rtems_event_system_send>: rtems_status_code rtems_event_system_send( rtems_id id, rtems_event_set event_in ) {
 8003eb0:	37 9c ff f4 	addi sp,sp,-12                                 
 8003eb4:	5b 8b 00 08 	sw (sp+8),r11                                  
 8003eb8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003ebc:	b8 40 58 00 	mv r11,r2                                      
  rtems_status_code  sc;                                              
  Thread_Control    *thread;                                          
  Objects_Locations  location;                                        
  RTEMS_API_Control *api;                                             
                                                                      
  thread = _Thread_Get( id, &location );                              
 8003ec0:	37 82 00 0c 	addi r2,sp,12                                  
 8003ec4:	f8 00 0b 68 	calli 8006c64 <_Thread_Get>                    
  switch ( location ) {                                               
 8003ec8:	2b 82 00 0c 	lw r2,(sp+12)                                  
 8003ecc:	44 40 00 06 	be r2,r0,8003ee4 <rtems_event_system_send+0x34><== ALWAYS TAKEN
    case OBJECTS_REMOTE:                                              
      sc = RTEMS_ILLEGAL_ON_REMOTE_OBJECT;                            
      break;                                                          
#endif                                                                
    default:                                                          
      sc = RTEMS_INVALID_ID;                                          
 8003ed0:	34 01 00 04 	mvi r1,4                                       <== NOT EXECUTED
      break;                                                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003ed4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003ed8:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8003edc:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8003ee0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  thread = _Thread_Get( id, &location );                              
  switch ( location ) {                                               
    case OBJECTS_LOCAL:                                               
      api = thread->API_Extensions[ THREAD_API_RTEMS ];               
      _Event_Surrender(                                               
 8003ee4:	28 23 01 18 	lw r3,(r1+280)                                 
 8003ee8:	78 04 08 02 	mvhi r4,0x802                                  
 8003eec:	b9 60 10 00 	mv r2,r11                                      
 8003ef0:	34 63 00 04 	addi r3,r3,4                                   
 8003ef4:	38 84 12 08 	ori r4,r4,0x1208                               
 8003ef8:	78 05 00 04 	mvhi r5,0x4                                    
 8003efc:	f8 00 19 41 	calli 800a400 <_Event_Surrender>               
        event_in,                                                     
        &api->System_event,                                           
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
 8003f00:	f8 00 0b 4d 	calli 8006c34 <_Thread_Enable_dispatch>        
      sc = RTEMS_SUCCESSFUL;                                          
 8003f04:	34 01 00 00 	mvi r1,0                                       
      sc = RTEMS_INVALID_ID;                                          
      break;                                                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003f08:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003f0c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8003f10:	37 9c 00 0c 	addi sp,sp,12                                  
 8003f14:	c3 a0 00 00 	ret                                            
                                                                      

080038b8 <rtems_fdisk_abort>: * @param format The format string. See printf for details. * @param ... The arguments for the format text. */ static void rtems_fdisk_abort (const char *format, ...) {
 80038b8:	37 9c ff d4 	addi sp,sp,-44                                 <== NOT EXECUTED
 80038bc:	5b 8b 00 0c 	sw (sp+12),r11                                 <== NOT EXECUTED
 80038c0:	5b 8c 00 08 	sw (sp+8),r12                                  <== NOT EXECUTED
 80038c4:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:abort:");                                   
 80038c8:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 80038cc:	39 6b e2 90 	ori r11,r11,0xe290                             <== NOT EXECUTED
 80038d0:	29 69 00 00 	lw r9,(r11+0)                                  <== NOT EXECUTED
 * @param format The format string. See printf for details.           
 * @param ... The arguments for the format text.                      
 */                                                                   
static void                                                           
rtems_fdisk_abort (const char *format, ...)                           
{                                                                     
 80038d4:	5b 86 00 24 	sw (sp+36),r6                                  <== NOT EXECUTED
 80038d8:	5b 87 00 28 	sw (sp+40),r7                                  <== NOT EXECUTED
 80038dc:	5b 88 00 2c 	sw (sp+44),r8                                  <== NOT EXECUTED
 80038e0:	5b 85 00 20 	sw (sp+32),r5                                  <== NOT EXECUTED
 80038e4:	5b 81 00 10 	sw (sp+16),r1                                  <== NOT EXECUTED
 80038e8:	5b 82 00 14 	sw (sp+20),r2                                  <== NOT EXECUTED
 80038ec:	5b 83 00 18 	sw (sp+24),r3                                  <== NOT EXECUTED
 80038f0:	5b 84 00 1c 	sw (sp+28),r4                                  <== NOT EXECUTED
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:abort:");                                   
 80038f4:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 80038f8:	29 24 00 0c 	lw r4,(r9+12)                                  <== NOT EXECUTED
 * @param format The format string. See printf for details.           
 * @param ... The arguments for the format text.                      
 */                                                                   
static void                                                           
rtems_fdisk_abort (const char *format, ...)                           
{                                                                     
 80038fc:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:abort:");                                   
 8003900:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 8003904:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003908:	34 03 00 0c 	mvi r3,12                                      <== NOT EXECUTED
 800390c:	38 21 83 6c 	ori r1,r1,0x836c                               <== NOT EXECUTED
 8003910:	f8 00 83 6e 	calli 80246c8 <fwrite>                         <== NOT EXECUTED
  vfprintf (stderr, format, args);                                    
 8003914:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003918:	37 83 00 14 	addi r3,sp,20                                  <== NOT EXECUTED
 800391c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8003920:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 8003924:	f8 00 a2 de 	calli 802c49c <vfprintf>                       <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
 8003928:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
 800392c:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8003930:	28 42 00 0c 	lw r2,(r2+12)                                  <== NOT EXECUTED
 8003934:	f8 00 82 a2 	calli 80243bc <fputc>                          <== NOT EXECUTED
  fflush (stderr);                                                    
 8003938:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800393c:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 8003940:	f8 00 81 11 	calli 8023d84 <fflush>                         <== NOT EXECUTED
  va_end (args);                                                      
  exit (1);                                                           
 8003944:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8003948:	f8 00 80 03 	calli 8023954 <exit>                           <== NOT EXECUTED
                                                                      

08004134 <rtems_fdisk_compact>: * used segments that will fit. The used queue is sorted on the least * number of active pages. */ static int rtems_fdisk_compact (rtems_flashdisk* fd) {
 8004134:	37 9c ff c8 	addi sp,sp,-56                                 
 8004138:	5b 8b 00 34 	sw (sp+52),r11                                 
 800413c:	5b 8c 00 30 	sw (sp+48),r12                                 
 8004140:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8004144:	5b 8e 00 28 	sw (sp+40),r14                                 
 8004148:	5b 8f 00 24 	sw (sp+36),r15                                 
 800414c:	5b 90 00 20 	sw (sp+32),r16                                 
 8004150:	5b 91 00 1c 	sw (sp+28),r17                                 
 8004154:	5b 92 00 18 	sw (sp+24),r18                                 
 8004158:	5b 93 00 14 	sw (sp+20),r19                                 
 800415c:	5b 94 00 10 	sw (sp+16),r20                                 
 8004160:	5b 95 00 0c 	sw (sp+12),r21                                 
 8004164:	5b 96 00 08 	sw (sp+8),r22                                  
 8004168:	5b 9d 00 04 	sw (sp+4),ra                                   
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
 800416c:	28 23 00 28 	lw r3,(r1+40)                                  
 8004170:	28 22 00 24 	lw r2,(r1+36)                                  
 * used segments that will fit. The used queue is sorted on the least 
 * number of active pages.                                            
 */                                                                   
static int                                                            
rtems_fdisk_compact (rtems_flashdisk* fd)                             
{                                                                     
 8004174:	b8 20 58 00 	mv r11,r1                                      
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
 8004178:	50 62 00 19 	bgeu r3,r2,80041dc <rtems_fdisk_compact+0xa8>  
    fd->starvations++;                                                
 800417c:	28 23 00 70 	lw r3,(r1+112)                                 
  uint32_t pages;                                                     
                                                                      
  if (rtems_fdisk_is_erased_blocks_starvation (fd))                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " resolve starvation");                   
 8004180:	78 02 08 03 	mvhi r2,0x803                                  
 8004184:	38 42 85 3c 	ori r2,r2,0x853c                               
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
    fd->starvations++;                                                
 8004188:	34 63 00 01 	addi r3,r3,1                                   
 800418c:	58 23 00 70 	sw (r1+112),r3                                 
  uint32_t pages;                                                     
                                                                      
  if (rtems_fdisk_is_erased_blocks_starvation (fd))                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " resolve starvation");                   
 8004190:	fb ff fb ad 	calli 8003044 <rtems_fdisk_printf>             
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8004194:	29 6c 00 40 	lw r12,(r11+64)                                
 8004198:	45 80 00 8d 	be r12,r0,80043cc <rtems_fdisk_compact+0x298>  <== NEVER TAKEN
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
 800419c:	29 81 00 00 	lw r1,(r12+0)                                  
 80041a0:	59 61 00 40 	sw (r11+64),r1                                 
    if (!queue->head)                                                 
 80041a4:	44 20 00 ac 	be r1,r0,8004454 <rtems_fdisk_compact+0x320>   <== NEVER TAKEN
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 80041a8:	29 62 00 48 	lw r2,(r11+72)                                 
                                                                      
    sc->next = 0;                                                     
 80041ac:	29 61 00 34 	lw r1,(r11+52)                                 
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 80041b0:	34 42 ff ff 	addi r2,r2,-1                                  
 80041b4:	59 62 00 48 	sw (r11+72),r2                                 
                                                                      
    sc->next = 0;                                                     
 80041b8:	59 80 00 00 	sw (r12+0),r0                                  
    if (!ssc)                                                         
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->available);      
                                                                      
    if (ssc)                                                          
    {                                                                 
      dsc = rtems_fdisk_seg_most_available (&fd->available);          
 80041bc:	fb ff fd e4 	calli 800394c <rtems_fdisk_seg_most_available.clone.12>
 80041c0:	b8 20 18 00 	mv r3,r1                                       
      if (dsc)                                                        
 80041c4:	44 20 00 8c 	be r1,r0,80043f4 <rtems_fdisk_compact+0x2c0>   <== NEVER TAKEN
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
 80041c8:	b9 60 08 00 	mv r1,r11                                      
 80041cc:	b9 80 10 00 	mv r2,r12                                      
 80041d0:	37 84 00 38 	addi r4,sp,56                                  
 80041d4:	fb ff fe b9 	calli 8003cb8 <rtems_fdisk_recycle_segment>    
        if (ret)                                                      
 80041d8:	5c 20 00 51 	bne r1,r0,800431c <rtems_fdisk_compact+0x1e8>  <== NEVER TAKEN
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 80041dc:	29 64 00 40 	lw r4,(r11+64)                                 
  {                                                                   
    uint32_t                 dst_pages;                               
    uint32_t                 segments;                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
 80041e0:	78 0f 08 03 	mvhi r15,0x803                                 
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
 80041e4:	78 10 08 03 	mvhi r16,0x803                                 
#endif                                                                
      break;                                                          
    }                                                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",       
 80041e8:	78 11 08 03 	mvhi r17,0x803                                 
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
  {                                                                   
    if (sc == it)                                                     
 80041ec:	34 0e 00 00 	mvi r14,0                                      
  {                                                                   
    uint32_t                 dst_pages;                               
    uint32_t                 segments;                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
 80041f0:	39 ef 85 68 	ori r15,r15,0x8568                             
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
 80041f4:	3a 10 85 a8 	ori r16,r16,0x85a8                             
     * We need a source segment and have pages to copy and            
     * compacting one segment to another is silly. Compaction needs   
     * to free at least one more segment.                             
     */                                                               
                                                                      
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
 80041f8:	34 16 00 01 	mvi r22,1                                      
#endif                                                                
      break;                                                          
    }                                                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",       
 80041fc:	3a 31 85 dc 	ori r17,r17,0x85dc                             
      rtems_fdisk_error ("compacting: nothing to recycle");           
      return EIO;                                                     
    }                                                                 
  }                                                                   
                                                                      
  while (fd->used.head)                                               
 8004200:	44 80 00 93 	be r4,r0,800444c <rtems_fdisk_compact+0x318>   
  {                                                                   
    uint32_t                 dst_pages;                               
    uint32_t                 segments;                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
 8004204:	b9 e0 10 00 	mv r2,r15                                      
 8004208:	b9 60 08 00 	mv r1,r11                                      
 800420c:	fb ff fb 8e 	calli 8003044 <rtems_fdisk_printf>             
#endif                                                                
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
 8004210:	29 61 00 34 	lw r1,(r11+52)                                 
 8004214:	fb ff fd ce 	calli 800394c <rtems_fdisk_seg_most_available.clone.12>
 8004218:	b8 20 68 00 	mv r13,r1                                      
                                                                      
    if (dsc == 0)                                                     
 800421c:	44 20 00 87 	be r1,r0,8004438 <rtems_fdisk_compact+0x304>   <== NEVER TAKEN
    {                                                                 
      rtems_fdisk_error ("compacting: no available segments to compact too");
      return EIO;                                                     
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
 8004220:	29 6c 00 40 	lw r12,(r11+64)                                
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
 8004224:	28 23 00 08 	lw r3,(r1+8)                                   
 8004228:	28 24 00 0c 	lw r4,(r1+12)                                  
 800422c:	ba 00 10 00 	mv r2,r16                                      
 8004230:	b9 60 08 00 	mv r1,r11                                      
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8004234:	29 b5 00 14 	lw r21,(r13+20)                                
 8004238:	29 b3 00 1c 	lw r19,(r13+28)                                
 800423c:	29 b4 00 20 	lw r20,(r13+32)                                
 8004240:	29 b2 00 24 	lw r18,(r13+36)                                
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
 8004244:	5b 80 00 38 	sw (sp+56),r0                                  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
 8004248:	fb ff fb 7f 	calli 8003044 <rtems_fdisk_printf>             
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
 800424c:	45 80 00 4c 	be r12,r0,800437c <rtems_fdisk_compact+0x248>  <== NEVER TAKEN
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004250:	2b 81 00 38 	lw r1,(sp+56)                                  
 8004254:	29 85 00 1c 	lw r5,(r12+28)                                 
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8004258:	ca b4 20 00 	sub r4,r21,r20                                 
 800425c:	c8 93 20 00 	sub r4,r4,r19                                  
 8004260:	c8 92 20 00 	sub r4,r4,r18                                  
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004264:	b4 25 28 00 	add r5,r1,r5                                   
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
 8004268:	50 a4 00 6f 	bgeu r5,r4,8004424 <rtems_fdisk_compact+0x2f0> 
           ((pages + ssc->pages_active) < dst_pages) &&               
           ((compacted_segs + segments) < fd->compact_segs))          
 800426c:	29 67 00 0c 	lw r7,(r11+12)                                 
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004270:	51 c7 00 6d 	bgeu r14,r7,8004424 <rtems_fdisk_compact+0x2f0><== NEVER TAKEN
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
      ssc = ssc->next;                                                
 8004274:	29 8c 00 00 	lw r12,(r12+0)                                 
      return EIO;                                                     
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
 8004278:	34 06 00 00 	mvi r6,0                                       
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
 800427c:	34 c6 00 01 	addi r6,r6,1                                   
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004280:	b4 ce 18 00 	add r3,r6,r14                                  
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
 8004284:	45 80 00 3d 	be r12,r0,8004378 <rtems_fdisk_compact+0x244>  
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004288:	29 81 00 1c 	lw r1,(r12+28)                                 
 800428c:	b4 a1 08 00 	add r1,r5,r1                                   
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
 8004290:	54 81 00 32 	bgu r4,r1,8004358 <rtems_fdisk_compact+0x224>  
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004294:	5b 85 00 38 	sw (sp+56),r5                                  
     * We need a source segment and have pages to copy and            
     * compacting one segment to another is silly. Compaction needs   
     * to free at least one more segment.                             
     */                                                               
                                                                      
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
 8004298:	44 a0 00 39 	be r5,r0,800437c <rtems_fdisk_compact+0x248>   
 800429c:	b5 c6 70 00 	add r14,r14,r6                                 
 80042a0:	45 d6 00 37 	be r14,r22,800437c <rtems_fdisk_compact+0x248> 
#endif                                                                
      break;                                                          
    }                                                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",       
 80042a4:	29 83 00 08 	lw r3,(r12+8)                                  
 80042a8:	29 84 00 0c 	lw r4,(r12+12)                                 
 80042ac:	b9 60 08 00 	mv r1,r11                                      
 80042b0:	ba 20 10 00 	mv r2,r17                                      
 80042b4:	fb ff fb 64 	calli 8003044 <rtems_fdisk_printf>             
static void                                                           
rtems_fdisk_segment_queue_remove (rtems_fdisk_segment_ctl_queue* queue,
                                  rtems_fdisk_segment_ctl*       sc)  
{                                                                     
  rtems_fdisk_segment_ctl* prev = 0;                                  
  rtems_fdisk_segment_ctl* it = queue->head;                          
 80042b8:	29 63 00 34 	lw r3,(r11+52)                                 
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80042bc:	44 60 00 07 	be r3,r0,80042d8 <rtems_fdisk_compact+0x1a4>   <== NEVER TAKEN
  {                                                                   
    if (sc == it)                                                     
 80042c0:	5d a3 00 04 	bne r13,r3,80042d0 <rtems_fdisk_compact+0x19c> <== NEVER TAKEN
 80042c4:	e0 00 00 51 	bi 8004408 <rtems_fdisk_compact+0x2d4>         
 80042c8:	45 a1 00 35 	be r13,r1,800439c <rtems_fdisk_compact+0x268>  <== NOT EXECUTED
 80042cc:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
      queue->count--;                                                 
      break;                                                          
    }                                                                 
                                                                      
    prev = it;                                                        
    it = it->next;                                                    
 80042d0:	28 61 00 00 	lw r1,(r3+0)                                   <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80042d4:	5c 20 ff fd 	bne r1,r0,80042c8 <rtems_fdisk_compact+0x194>  <== NOT EXECUTED
                                                                      
    /*                                                                
     * We now copy the pages to the new segment.                      
     */                                                               
                                                                      
    while (pages)                                                     
 80042d8:	2b 81 00 38 	lw r1,(sp+56)                                  
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
        if (ret)                                                      
 80042dc:	29 64 00 40 	lw r4,(r11+64)                                 
                                                                      
    /*                                                                
     * We now copy the pages to the new segment.                      
     */                                                               
                                                                      
    while (pages)                                                     
 80042e0:	44 20 ff c8 	be r1,r0,8004200 <rtems_fdisk_compact+0xcc>    
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 80042e4:	44 80 00 00 	be r4,r0,80042e4 <rtems_fdisk_compact+0x1b0>   <== NEVER TAKEN
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
 80042e8:	28 81 00 00 	lw r1,(r4+0)                                   
 80042ec:	59 61 00 40 	sw (r11+64),r1                                 
    if (!queue->head)                                                 
 80042f0:	44 20 00 29 	be r1,r0,8004394 <rtems_fdisk_compact+0x260>   <== NEVER TAKEN
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 80042f4:	29 63 00 48 	lw r3,(r11+72)                                 
    {                                                                 
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
 80042f8:	b8 80 10 00 	mv r2,r4                                       
 80042fc:	b9 60 08 00 	mv r1,r11                                      
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 8004300:	34 63 ff ff 	addi r3,r3,-1                                  
 8004304:	59 63 00 48 	sw (r11+72),r3                                 
                                                                      
    sc->next = 0;                                                     
 8004308:	58 80 00 00 	sw (r4+0),r0                                   
    {                                                                 
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
 800430c:	b9 a0 18 00 	mv r3,r13                                      
 8004310:	37 84 00 38 	addi r4,sp,56                                  
 8004314:	fb ff fe 69 	calli 8003cb8 <rtems_fdisk_recycle_segment>    
        if (ret)                                                      
 8004318:	44 20 ff f0 	be r1,r0,80042d8 <rtems_fdisk_compact+0x1a4>   <== ALWAYS TAKEN
                                                                      
    compacted_segs += segments;                                       
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800431c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004320:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8004324:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8004328:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 800432c:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8004330:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8004334:	2b 90 00 20 	lw r16,(sp+32)                                 
 8004338:	2b 91 00 1c 	lw r17,(sp+28)                                 
 800433c:	2b 92 00 18 	lw r18,(sp+24)                                 
 8004340:	2b 93 00 14 	lw r19,(sp+20)                                 
 8004344:	2b 94 00 10 	lw r20,(sp+16)                                 
 8004348:	2b 95 00 0c 	lw r21,(sp+12)                                 
 800434c:	2b 96 00 08 	lw r22,(sp+8)                                  
 8004350:	37 9c 00 38 	addi sp,sp,56                                  
 8004354:	c3 a0 00 00 	ret                                            
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004358:	54 e3 00 03 	bgu r7,r3,8004364 <rtems_fdisk_compact+0x230>  <== ALWAYS TAKEN
 800435c:	5b 85 00 38 	sw (sp+56),r5                                  <== NOT EXECUTED
 8004360:	e3 ff ff ce 	bi 8004298 <rtems_fdisk_compact+0x164>         <== NOT EXECUTED
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
      ssc = ssc->next;                                                
 8004364:	29 8c 00 00 	lw r12,(r12+0)                                 
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
 8004368:	34 c6 00 01 	addi r6,r6,1                                   
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 800436c:	b8 20 28 00 	mv r5,r1                                       
 8004370:	b4 ce 18 00 	add r3,r6,r14                                  
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
 8004374:	5d 80 ff c5 	bne r12,r0,8004288 <rtems_fdisk_compact+0x154> <== ALWAYS TAKEN
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004378:	5b 85 00 38 	sw (sp+56),r5                                  
     */                                                               
                                                                      
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_printf (fd, " nothing to compact");                 
 800437c:	78 02 08 03 	mvhi r2,0x803                                  
 8004380:	b9 60 08 00 	mv r1,r11                                      
 8004384:	38 42 85 c8 	ori r2,r2,0x85c8                               
 8004388:	fb ff fb 2f 	calli 8003044 <rtems_fdisk_printf>             
    }                                                                 
                                                                      
    compacted_segs += segments;                                       
  }                                                                   
                                                                      
  return 0;                                                           
 800438c:	34 01 00 00 	mvi r1,0                                       
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_printf (fd, " nothing to compact");                 
#endif                                                                
      break;                                                          
 8004390:	e3 ff ff e3 	bi 800431c <rtems_fdisk_compact+0x1e8>         
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
 8004394:	59 60 00 44 	sw (r11+68),r0                                 <== NOT EXECUTED
 8004398:	e3 ff ff d7 	bi 80042f4 <rtems_fdisk_compact+0x1c0>         <== NOT EXECUTED
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 800439c:	29 a2 00 00 	lw r2,(r13+0)                                  <== NOT EXECUTED
        if (queue->tail == sc)                                        
 80043a0:	29 61 00 38 	lw r1,(r11+56)                                 <== NOT EXECUTED
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 80043a4:	58 62 00 00 	sw (r3+0),r2                                   <== NOT EXECUTED
        if (queue->tail == sc)                                        
 80043a8:	45 a1 00 1d 	be r13,r1,800441c <rtems_fdisk_compact+0x2e8>  <== NOT EXECUTED
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
      queue->count--;                                                 
 80043ac:	29 61 00 3c 	lw r1,(r11+60)                                 
      {                                                               
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
 80043b0:	59 a0 00 00 	sw (r13+0),r0                                  
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
        if (ret)                                                      
 80043b4:	29 64 00 40 	lw r4,(r11+64)                                 
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
      queue->count--;                                                 
 80043b8:	34 21 ff ff 	addi r1,r1,-1                                  
 80043bc:	59 61 00 3c 	sw (r11+60),r1                                 
                                                                      
    /*                                                                
     * We now copy the pages to the new segment.                      
     */                                                               
                                                                      
    while (pages)                                                     
 80043c0:	2b 81 00 38 	lw r1,(sp+56)                                  
 80043c4:	5c 20 ff c8 	bne r1,r0,80042e4 <rtems_fdisk_compact+0x1b0>  <== ALWAYS TAKEN
 80043c8:	e3 ff ff 8e 	bi 8004200 <rtems_fdisk_compact+0xcc>          <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 80043cc:	29 6c 00 34 	lw r12,(r11+52)                                <== NOT EXECUTED
 80043d0:	45 80 00 23 	be r12,r0,800445c <rtems_fdisk_compact+0x328>  <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
 80043d4:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80043d8:	59 61 00 34 	sw (r11+52),r1                                 <== NOT EXECUTED
    if (!queue->head)                                                 
 80043dc:	44 20 00 15 	be r1,r0,8004430 <rtems_fdisk_compact+0x2fc>   <== NOT EXECUTED
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 80043e0:	29 62 00 3c 	lw r2,(r11+60)                                 <== NOT EXECUTED
 80043e4:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
 80043e8:	59 62 00 3c 	sw (r11+60),r2                                 <== NOT EXECUTED
                                                                      
    sc->next = 0;                                                     
 80043ec:	59 80 00 00 	sw (r12+0),r0                                  <== NOT EXECUTED
 80043f0:	e3 ff ff 73 	bi 80041bc <rtems_fdisk_compact+0x88>          <== NOT EXECUTED
        if (ret)                                                      
          return ret;                                                 
      }                                                               
      else                                                            
      {                                                               
        rtems_fdisk_error ("compacting: starvation");                 
 80043f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80043f8:	38 21 85 50 	ori r1,r1,0x8550                               <== NOT EXECUTED
 80043fc:	fb ff fb ab 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
        return EIO;                                                   
 8004400:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
 8004404:	e3 ff ff c6 	bi 800431c <rtems_fdisk_compact+0x1e8>         <== NOT EXECUTED
  {                                                                   
    if (sc == it)                                                     
    {                                                                 
      if (prev == 0)                                                  
      {                                                               
        queue->head = sc->next;                                       
 8004408:	29 a1 00 00 	lw r1,(r13+0)                                  
 800440c:	59 61 00 34 	sw (r11+52),r1                                 
        if (queue->head == 0)                                         
 8004410:	5c 20 ff e7 	bne r1,r0,80043ac <rtems_fdisk_compact+0x278>  <== NEVER TAKEN
          queue->tail = 0;                                            
 8004414:	59 60 00 38 	sw (r11+56),r0                                 
 8004418:	e3 ff ff e5 	bi 80043ac <rtems_fdisk_compact+0x278>         
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
 800441c:	59 63 00 38 	sw (r11+56),r3                                 <== NOT EXECUTED
 8004420:	e3 ff ff e3 	bi 80043ac <rtems_fdisk_compact+0x278>         <== NOT EXECUTED
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
 8004424:	b8 20 28 00 	mv r5,r1                                       
      return EIO;                                                     
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
 8004428:	34 06 00 00 	mvi r6,0                                       
 800442c:	e3 ff ff 9b 	bi 8004298 <rtems_fdisk_compact+0x164>         
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
 8004430:	59 60 00 38 	sw (r11+56),r0                                 <== NOT EXECUTED
 8004434:	e3 ff ff eb 	bi 80043e0 <rtems_fdisk_compact+0x2ac>         <== NOT EXECUTED
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
                                                                      
    if (dsc == 0)                                                     
    {                                                                 
      rtems_fdisk_error ("compacting: no available segments to compact too");
 8004438:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800443c:	38 21 85 74 	ori r1,r1,0x8574                               <== NOT EXECUTED
 8004440:	fb ff fb 9a 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      return EIO;                                                     
 8004444:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
 8004448:	e3 ff ff b5 	bi 800431c <rtems_fdisk_compact+0x1e8>         <== NOT EXECUTED
    }                                                                 
                                                                      
    compacted_segs += segments;                                       
  }                                                                   
                                                                      
  return 0;                                                           
 800444c:	34 01 00 00 	mvi r1,0                                       
 8004450:	e3 ff ff b3 	bi 800431c <rtems_fdisk_compact+0x1e8>         
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
 8004454:	59 60 00 44 	sw (r11+68),r0                                 <== NOT EXECUTED
 8004458:	e3 ff ff 54 	bi 80041a8 <rtems_fdisk_compact+0x74>          <== NOT EXECUTED
        return EIO;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      rtems_fdisk_error ("compacting: nothing to recycle");           
 800445c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8004460:	38 21 86 00 	ori r1,r1,0x8600                               <== NOT EXECUTED
 8004464:	fb ff fb 91 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      return EIO;                                                     
 8004468:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
 800446c:	e3 ff ff ac 	bi 800431c <rtems_fdisk_compact+0x1e8>         <== NOT EXECUTED
                                                                      

08003350 <rtems_fdisk_erase_segment>: /** * Erase the segment. */ static int rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc) {
 8003350:	37 9c ff e8 	addi sp,sp,-24                                 
 8003354:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003358:	5b 8c 00 14 	sw (sp+20),r12                                 
 800335c:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003360:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003364:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003368:	5b 9d 00 04 	sw (sp+4),ra                                   
 800336c:	b8 40 58 00 	mv r11,r2                                      
  int                                ret;                             
  uint32_t                           device;                          
  uint32_t                           segment;                         
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
 8003370:	28 42 00 08 	lw r2,(r2+8)                                   
/**                                                                   
 * Erase the segment.                                                 
 */                                                                   
static int                                                            
rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
 8003374:	b8 20 60 00 	mv r12,r1                                      
  uint32_t                           device;                          
  uint32_t                           segment;                         
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
 8003378:	29 63 00 0c 	lw r3,(r11+12)                                 
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 800337c:	b4 42 08 00 	add r1,r2,r2                                   
 8003380:	b4 22 08 00 	add r1,r1,r2                                   
 8003384:	29 84 00 2c 	lw r4,(r12+44)                                 
 8003388:	b4 21 08 00 	add r1,r1,r1                                   
 800338c:	b4 21 08 00 	add r1,r1,r1                                   
 8003390:	b4 81 20 00 	add r4,r4,r1                                   
 8003394:	b4 63 08 00 	add r1,r3,r3                                   
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
 8003398:	28 86 00 08 	lw r6,(r4+8)                                   
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 800339c:	b4 23 08 00 	add r1,r1,r3                                   
 80033a0:	b4 21 08 00 	add r1,r1,r1                                   
 80033a4:	28 85 00 00 	lw r5,(r4+0)                                   
 80033a8:	b4 21 08 00 	add r1,r1,r1                                   
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
  ret = ops->erase (sd, device, segment);                             
 80033ac:	28 c4 00 08 	lw r4,(r6+8)                                   
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80033b0:	b4 21 08 00 	add r1,r1,r1                                   
 80033b4:	b4 21 08 00 	add r1,r1,r1                                   
 80033b8:	b4 a1 08 00 	add r1,r5,r1                                   
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
  ret = ops->erase (sd, device, segment);                             
 80033bc:	28 84 00 10 	lw r4,(r4+16)                                  
 80033c0:	28 21 00 04 	lw r1,(r1+4)                                   
 80033c4:	d8 80 00 00 	call r4                                        
 80033c8:	b8 20 68 00 	mv r13,r1                                      
  if (ret)                                                            
 80033cc:	44 20 00 22 	be r1,r0,8003454 <rtems_fdisk_erase_segment+0x104><== ALWAYS TAKEN
  {                                                                   
    rtems_fdisk_error (" erase-segment:%02d-%03d: "      \            
 80033d0:	29 6f 00 08 	lw r15,(r11+8)                                 <== NOT EXECUTED
 80033d4:	29 6e 00 0c 	lw r14,(r11+12)                                <== NOT EXECUTED
 80033d8:	f8 00 8a eb 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80033dc:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 80033e0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80033e4:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 80033e8:	38 21 82 ec 	ori r1,r1,0x82ec                               <== NOT EXECUTED
 80033ec:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 80033f0:	b9 a0 28 00 	mv r5,r13                                      <== NOT EXECUTED
 80033f4:	fb ff ff ad 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80033f8:	29 82 00 58 	lw r2,(r12+88)                                 <== NOT EXECUTED
  if (ret)                                                            
  {                                                                   
    rtems_fdisk_error (" erase-segment:%02d-%03d: "      \            
                       "segment erase failed: %s (%d)",               
                       sc->device, sc->segment, strerror (ret), ret); 
    sc->failed = true;                                                
 80033fc:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8003400:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8003404:	44 40 00 33 	be r2,r0,80034d0 <rtems_fdisk_erase_segment+0x180><== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
 8003408:	45 62 00 0a 	be r11,r2,8003430 <rtems_fdisk_erase_segment+0xe0><== NOT EXECUTED
      return true;                                                    
    it = it->next;                                                    
 800340c:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8003410:	5c 40 ff fe 	bne r2,r0,8003408 <rtems_fdisk_erase_segment+0xb8><== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003414:	29 81 00 5c 	lw r1,(r12+92)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003418:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 800341c:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
      queue->tail       = sc;                                         
 8003420:	59 8b 00 5c 	sw (r12+92),r11                                <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003424:	29 81 00 60 	lw r1,(r12+96)                                 <== NOT EXECUTED
 8003428:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 800342c:	59 81 00 60 	sw (r12+96),r1                                 <== NOT EXECUTED
   * segment will now get a go.                                       
   */                                                                 
  rtems_fdisk_segment_queue_push_tail (&fd->available, sc);           
                                                                      
  return 0;                                                           
}                                                                     
 8003430:	b9 a0 08 00 	mv r1,r13                                      
 8003434:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003438:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800343c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003440:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003444:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003448:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800344c:	37 9c 00 18 	addi sp,sp,24                                  
 8003450:	c3 a0 00 00 	ret                                            
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
 8003454:	29 84 00 28 	lw r4,(r12+40)                                 
 8003458:	29 61 00 14 	lw r1,(r11+20)                                 
  sc->erased++;                                                       
 800345c:	29 63 00 2c 	lw r3,(r11+44)                                 
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
 8003460:	29 62 00 18 	lw r2,(r11+24)                                 
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
 8003464:	b4 81 20 00 	add r4,r4,r1                                   
  sc->erased++;                                                       
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
 8003468:	29 81 00 14 	lw r1,(r12+20)                                 
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
 800346c:	59 84 00 28 	sw (r12+40),r4                                 
  sc->erased++;                                                       
 8003470:	34 63 00 01 	addi r3,r3,1                                   
 8003474:	59 63 00 2c 	sw (r11+44),r3                                 
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
 8003478:	fb ff f8 d3 	calli 80017c4 <__mulsi3>                       
 800347c:	b8 20 18 00 	mv r3,r1                                       
 8003480:	29 61 00 10 	lw r1,(r11+16)                                 
 8003484:	34 02 00 ff 	mvi r2,255                                     
 8003488:	f8 00 85 68 	calli 8024a28 <memset>                         
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
 800348c:	29 81 00 34 	lw r1,(r12+52)                                 
  fd->erased_blocks += sc->pages;                                     
  sc->erased++;                                                       
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
                                                                      
  sc->pages_active = 0;                                               
 8003490:	59 60 00 1c 	sw (r11+28),r0                                 
  sc->pages_used   = 0;                                               
 8003494:	59 60 00 20 	sw (r11+32),r0                                 
  sc->pages_bad    = 0;                                               
 8003498:	59 60 00 24 	sw (r11+36),r0                                 
                                                                      
  sc->failed = false;                                                 
 800349c:	59 60 00 28 	sw (r11+40),r0                                 
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 80034a0:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
    if (queue->head)                                                  
 80034a4:	44 2d 00 08 	be r1,r13,80034c4 <rtems_fdisk_erase_segment+0x174>
    {                                                                 
      queue->tail->next = sc;                                         
 80034a8:	29 81 00 38 	lw r1,(r12+56)                                 
 80034ac:	58 2b 00 00 	sw (r1+0),r11                                  
      queue->tail       = sc;                                         
 80034b0:	59 8b 00 38 	sw (r12+56),r11                                
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 80034b4:	29 81 00 3c 	lw r1,(r12+60)                                 
 80034b8:	34 21 00 01 	addi r1,r1,1                                   
 80034bc:	59 81 00 3c 	sw (r12+60),r1                                 
 80034c0:	e3 ff ff dc 	bi 8003430 <rtems_fdisk_erase_segment+0xe0>    
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
 80034c4:	59 8b 00 38 	sw (r12+56),r11                                
 80034c8:	59 8b 00 34 	sw (r12+52),r11                                
 80034cc:	e3 ff ff fa 	bi 80034b4 <rtems_fdisk_erase_segment+0x164>   
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 80034d0:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
 80034d4:	59 8b 00 5c 	sw (r12+92),r11                                <== NOT EXECUTED
 80034d8:	59 8b 00 58 	sw (r12+88),r11                                <== NOT EXECUTED
 80034dc:	e3 ff ff d2 	bi 8003424 <rtems_fdisk_erase_segment+0xd4>    <== NOT EXECUTED
                                                                      

080032a8 <rtems_fdisk_error>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_error (const char *format, ...) {
 80032a8:	37 9c ff d4 	addi sp,sp,-44                                 <== NOT EXECUTED
 80032ac:	5b 8b 00 0c 	sw (sp+12),r11                                 <== NOT EXECUTED
 80032b0:	5b 8c 00 08 	sw (sp+8),r12                                  <== NOT EXECUTED
 80032b4:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
 80032b8:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 80032bc:	39 6b e2 90 	ori r11,r11,0xe290                             <== NOT EXECUTED
 80032c0:	29 69 00 00 	lw r9,(r11+0)                                  <== NOT EXECUTED
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_error (const char *format, ...)                           
{                                                                     
 80032c4:	5b 86 00 24 	sw (sp+36),r6                                  <== NOT EXECUTED
 80032c8:	5b 87 00 28 	sw (sp+40),r7                                  <== NOT EXECUTED
 80032cc:	5b 88 00 2c 	sw (sp+44),r8                                  <== NOT EXECUTED
 80032d0:	5b 85 00 20 	sw (sp+32),r5                                  <== NOT EXECUTED
 80032d4:	5b 81 00 10 	sw (sp+16),r1                                  <== NOT EXECUTED
 80032d8:	5b 82 00 14 	sw (sp+20),r2                                  <== NOT EXECUTED
 80032dc:	5b 83 00 18 	sw (sp+24),r3                                  <== NOT EXECUTED
 80032e0:	5b 84 00 1c 	sw (sp+28),r4                                  <== NOT EXECUTED
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
 80032e4:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 80032e8:	29 24 00 0c 	lw r4,(r9+12)                                  <== NOT EXECUTED
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_error (const char *format, ...)                           
{                                                                     
 80032ec:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
 80032f0:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 80032f4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80032f8:	34 03 00 0c 	mvi r3,12                                      <== NOT EXECUTED
 80032fc:	38 21 82 dc 	ori r1,r1,0x82dc                               <== NOT EXECUTED
 8003300:	f8 00 84 f2 	calli 80246c8 <fwrite>                         <== NOT EXECUTED
  ret =  vfprintf (stderr, format, args);                             
 8003304:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003308:	37 83 00 14 	addi r3,sp,20                                  <== NOT EXECUTED
 800330c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8003310:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 8003314:	f8 00 a4 62 	calli 802c49c <vfprintf>                       <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
 8003318:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
{                                                                     
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
  ret =  vfprintf (stderr, format, args);                             
 800331c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
 8003320:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8003324:	28 42 00 0c 	lw r2,(r2+12)                                  <== NOT EXECUTED
 8003328:	f8 00 84 25 	calli 80243bc <fputc>                          <== NOT EXECUTED
  fflush (stderr);                                                    
 800332c:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003330:	28 21 00 0c 	lw r1,(r1+12)                                  <== NOT EXECUTED
 8003334:	f8 00 82 94 	calli 8023d84 <fflush>                         <== NOT EXECUTED
  va_end (args);                                                      
  return ret;                                                         
}                                                                     
 8003338:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800333c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003340:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8003344:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8003348:	37 9c 00 2c 	addi sp,sp,44                                  <== NOT EXECUTED
 800334c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08002f90 <rtems_fdisk_info>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...) {
 8002f90:	37 9c ff d4 	addi sp,sp,-44                                 
 8002f94:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002f98:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002f9c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002fa0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002fa4:	5b 82 00 14 	sw (sp+20),r2                                  
 8002fa8:	5b 83 00 18 	sw (sp+24),r3                                  
 8002fac:	5b 84 00 1c 	sw (sp+28),r4                                  
 8002fb0:	5b 85 00 20 	sw (sp+32),r5                                  
 8002fb4:	5b 86 00 24 	sw (sp+36),r6                                  
 8002fb8:	5b 87 00 28 	sw (sp+40),r7                                  
 8002fbc:	5b 88 00 2c 	sw (sp+44),r8                                  
  int ret = 0;                                                        
  if (fd->info_level >= 2)                                            
 8002fc0:	28 21 00 6c 	lw r1,(r1+108)                                 
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...) 
{                                                                     
 8002fc4:	b8 40 68 00 	mv r13,r2                                      
  int ret = 0;                                                        
  if (fd->info_level >= 2)                                            
 8002fc8:	34 02 00 01 	mvi r2,1                                       
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...) 
{                                                                     
  int ret = 0;                                                        
 8002fcc:	34 0c 00 00 	mvi r12,0                                      
  if (fd->info_level >= 2)                                            
 8002fd0:	50 41 00 16 	bgeu r2,r1,8003028 <rtems_fdisk_info+0x98>     
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:");                                       
 8002fd4:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 8002fd8:	39 6b e2 90 	ori r11,r11,0xe290                             <== NOT EXECUTED
 8002fdc:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8002fe0:	34 03 00 06 	mvi r3,6                                       <== NOT EXECUTED
 8002fe4:	28 24 00 08 	lw r4,(r1+8)                                   <== NOT EXECUTED
 8002fe8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8002fec:	38 21 82 a0 	ori r1,r1,0x82a0                               <== NOT EXECUTED
 8002ff0:	f8 00 85 b6 	calli 80246c8 <fwrite>                         <== NOT EXECUTED
    ret =  vfprintf (stdout, format, args);                           
 8002ff4:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8002ff8:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8002ffc:	37 83 00 18 	addi r3,sp,24                                  <== NOT EXECUTED
 8003000:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 8003004:	f8 00 a5 26 	calli 802c49c <vfprintf>                       <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
 8003008:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
  if (fd->info_level >= 2)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:");                                       
    ret =  vfprintf (stdout, format, args);                           
 800300c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
 8003010:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8003014:	28 42 00 08 	lw r2,(r2+8)                                   <== NOT EXECUTED
 8003018:	f8 00 84 e9 	calli 80243bc <fputc>                          <== NOT EXECUTED
    fflush (stdout);                                                  
 800301c:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003020:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 8003024:	f8 00 83 58 	calli 8023d84 <fflush>                         <== NOT EXECUTED
    va_end (args);                                                    
  }                                                                   
  return ret;                                                         
}                                                                     
 8003028:	b9 80 08 00 	mv r1,r12                                      
 800302c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003030:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003034:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003038:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800303c:	37 9c 00 2c 	addi sp,sp,44                                  
 8003040:	c3 a0 00 00 	ret                                            
                                                                      

08005c68 <rtems_fdisk_initialize>: */ rtems_device_driver rtems_fdisk_initialize (rtems_device_major_number major, rtems_device_minor_number minor, void* arg __attribute__((unused))) {
 8005c68:	37 9c ff a4 	addi sp,sp,-92                                 
 8005c6c:	5b 8b 00 44 	sw (sp+68),r11                                 
 8005c70:	5b 8c 00 40 	sw (sp+64),r12                                 
 8005c74:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8005c78:	5b 8e 00 38 	sw (sp+56),r14                                 
 8005c7c:	5b 8f 00 34 	sw (sp+52),r15                                 
 8005c80:	5b 90 00 30 	sw (sp+48),r16                                 
 8005c84:	5b 91 00 2c 	sw (sp+44),r17                                 
 8005c88:	5b 92 00 28 	sw (sp+40),r18                                 
 8005c8c:	5b 93 00 24 	sw (sp+36),r19                                 
 8005c90:	5b 94 00 20 	sw (sp+32),r20                                 
 8005c94:	5b 95 00 1c 	sw (sp+28),r21                                 
 8005c98:	5b 96 00 18 	sw (sp+24),r22                                 
 8005c9c:	5b 97 00 14 	sw (sp+20),r23                                 
 8005ca0:	5b 98 00 10 	sw (sp+16),r24                                 
 8005ca4:	5b 99 00 0c 	sw (sp+12),r25                                 
 8005ca8:	5b 9b 00 08 	sw (sp+8),fp                                   
 8005cac:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005cb0:	b8 20 c8 00 	mv r25,r1                                      
  const rtems_flashdisk_config* c = rtems_flashdisk_configuration;    
  rtems_flashdisk*              fd;                                   
  rtems_status_code             sc;                                   
                                                                      
  sc = rtems_disk_io_initialize ();                                   
 8005cb4:	fb ff f4 03 	calli 8002cc0 <rtems_disk_io_initialize>       
 8005cb8:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8005cbc:	b8 20 10 00 	mv r2,r1                                       
 8005cc0:	44 20 00 15 	be r1,r0,8005d14 <rtems_fdisk_initialize+0xac> <== ALWAYS TAKEN
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8005cc4:	b8 40 08 00 	mv r1,r2                                       
 8005cc8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005ccc:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8005cd0:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8005cd4:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8005cd8:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8005cdc:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8005ce0:	2b 90 00 30 	lw r16,(sp+48)                                 
 8005ce4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8005ce8:	2b 92 00 28 	lw r18,(sp+40)                                 
 8005cec:	2b 93 00 24 	lw r19,(sp+36)                                 
 8005cf0:	2b 94 00 20 	lw r20,(sp+32)                                 
 8005cf4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8005cf8:	2b 96 00 18 	lw r22,(sp+24)                                 
 8005cfc:	2b 97 00 14 	lw r23,(sp+20)                                 
 8005d00:	2b 98 00 10 	lw r24,(sp+16)                                 
 8005d04:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8005d08:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8005d0c:	37 9c 00 5c 	addi sp,sp,92                                  
 8005d10:	c3 a0 00 00 	ret                                            
static rtems_status_code                                              
rtems_fdisk_crc16_gen_factors (uint16_t pattern)                      
{                                                                     
  uint32_t b;                                                         
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
 8005d14:	34 01 02 00 	mvi r1,512                                     
 8005d18:	f8 00 05 b3 	calli 80073e4 <malloc>                         
 8005d1c:	78 02 08 04 	mvhi r2,0x804                                  
 8005d20:	38 42 e7 e0 	ori r2,r2,0xe7e0                               
 8005d24:	58 41 00 00 	sw (r2+0),r1                                   
  if (!rtems_fdisk_crc16_factor)                                      
    return RTEMS_NO_MEMORY;                                           
 8005d28:	34 02 00 1a 	mvi r2,26                                      
rtems_fdisk_crc16_gen_factors (uint16_t pattern)                      
{                                                                     
  uint32_t b;                                                         
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
 8005d2c:	44 2b ff e6 	be r1,r11,8005cc4 <rtems_fdisk_initialize+0x5c><== NEVER TAKEN
 8005d30:	b8 20 38 00 	mv r7,r1                                       
 8005d34:	34 06 00 00 	mvi r6,0                                       
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
 8005d38:	34 08 01 00 	mvi r8,256                                     
rtems_fdisk_crc16_gen_factors (uint16_t pattern)                      
{                                                                     
  uint32_t b;                                                         
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
 8005d3c:	20 c2 ff ff 	andi r2,r6,0xffff                              
                                                                      
  for (b = 0; b < 256; b++)                                           
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    for (i = 8; i--;)                                                 
 8005d40:	34 03 00 07 	mvi r3,7                                       
      v = v & 1 ? (v >> 1) ^ pattern : v >> 1;                        
 8005d44:	20 44 00 01 	andi r4,r2,0x1                                 
 8005d48:	00 45 00 01 	srui r5,r2,1                                   
 8005d4c:	00 42 00 01 	srui r2,r2,1                                   
 8005d50:	44 80 00 02 	be r4,r0,8005d58 <rtems_fdisk_initialize+0xf0> 
 8005d54:	18 a2 84 08 	xori r2,r5,0x8408                              
                                                                      
  for (b = 0; b < 256; b++)                                           
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    for (i = 8; i--;)                                                 
 8005d58:	44 60 00 03 	be r3,r0,8005d64 <rtems_fdisk_initialize+0xfc> 
 8005d5c:	34 63 ff ff 	addi r3,r3,-1                                  
 8005d60:	e3 ff ff f9 	bi 8005d44 <rtems_fdisk_initialize+0xdc>       
      v = v & 1 ? (v >> 1) ^ pattern : v >> 1;                        
    rtems_fdisk_crc16_factor[b] = v & 0xffff;                         
 8005d64:	0c e2 00 00 	sh (r7+0),r2                                   
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
 8005d68:	34 c6 00 01 	addi r6,r6,1                                   
 8005d6c:	34 e7 00 02 	addi r7,r7,2                                   
 8005d70:	5c c8 ff f3 	bne r6,r8,8005d3c <rtems_fdisk_initialize+0xd4>
                                                                      
  sc = rtems_fdisk_crc16_gen_factors (0x8408);                        
  if (sc != RTEMS_SUCCESSFUL)                                         
      return sc;                                                      
                                                                      
  rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,      
 8005d74:	78 01 08 03 	mvhi r1,0x803                                  
 8005d78:	38 21 e0 04 	ori r1,r1,0xe004                               
 8005d7c:	28 2b 00 00 	lw r11,(r1+0)                                  
 8005d80:	5b 81 00 48 	sw (sp+72),r1                                  
 8005d84:	34 02 00 74 	mvi r2,116                                     
 8005d88:	78 1b 08 04 	mvhi fp,0x804                                  
 8005d8c:	b9 60 08 00 	mv r1,r11                                      
 8005d90:	f8 00 03 1f 	calli 8006a0c <calloc>                         
 8005d94:	3b 7b e7 d8 	ori fp,fp,0xe7d8                               
 8005d98:	5b 61 00 00 	sw (fp+0),r1                                   
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
 8005d9c:	34 02 00 1a 	mvi r2,26                                      
      return sc;                                                      
                                                                      
  rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,      
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
 8005da0:	44 20 ff c9 	be r1,r0,8005cc4 <rtems_fdisk_initialize+0x5c> <== NEVER TAKEN
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
 8005da4:	45 60 00 aa 	be r11,r0,800604c <rtems_fdisk_initialize+0x3e4><== NEVER TAKEN
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
 8005da8:	78 02 08 00 	mvhi r2,0x800                                  
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
 8005dac:	78 13 08 03 	mvhi r19,0x803                                 
 8005db0:	78 18 08 03 	mvhi r24,0x803                                 
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
 8005db4:	38 42 48 d4 	ori r2,r2,0x48d4                               
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
 8005db8:	5b 80 00 4c 	sw (sp+76),r0                                  
 8005dbc:	3a 73 7d 0c 	ori r19,r19,0x7d0c                             
 8005dc0:	34 16 00 00 	mvi r22,0                                      
 8005dc4:	3b 18 8d 9c 	ori r24,r24,0x8d9c                             
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
 8005dc8:	5b 82 00 50 	sw (sp+80),r2                                  
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
 8005dcc:	2f 01 00 08 	lhu r1,(r24+8)                                 
 8005dd0:	2b 02 00 00 	lw r2,(r24+0)                                  
 8005dd4:	2b 03 00 04 	lw r3,(r24+4)                                  
 8005dd8:	0f 81 00 5c 	sh (sp+92),r1                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
 8005ddc:	b6 c1 08 00 	add r1,r22,r1                                  
 8005de0:	33 81 00 5d 	sb (sp+93),r1                                  
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
 8005de4:	2b 70 00 00 	lw r16,(fp+0)                                  
 8005de8:	2b 81 00 4c 	lw r1,(sp+76)                                  
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
 8005dec:	5b 83 00 58 	sw (sp+88),r3                                  
 8005df0:	5b 82 00 54 	sw (sp+84),r2                                  
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
 8005df4:	b6 01 80 00 	add r16,r16,r1                                 
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
 8005df8:	5a 19 00 00 	sw (r16+0),r25                                 
    fd->minor              = minor;                                   
 8005dfc:	5a 16 00 04 	sw (r16+4),r22                                 
    fd->flags              = c->flags;                                
 8005e00:	2a 61 00 0c 	lw r1,(r19+12)                                 
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
 8005e04:	34 15 00 00 	mvi r21,0                                      
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    fd->minor              = minor;                                   
    fd->flags              = c->flags;                                
 8005e08:	5a 01 00 08 	sw (r16+8),r1                                  
    fd->compact_segs       = c->compact_segs;                         
 8005e0c:	2a 61 00 14 	lw r1,(r19+20)                                 
 8005e10:	5a 01 00 0c 	sw (r16+12),r1                                 
    fd->avail_compact_segs = c->avail_compact_segs;                   
 8005e14:	2a 61 00 18 	lw r1,(r19+24)                                 
 8005e18:	5a 01 00 10 	sw (r16+16),r1                                 
    fd->block_size         = c->block_size;                           
 8005e1c:	2a 6e 00 00 	lw r14,(r19+0)                                 
 8005e20:	5a 0e 00 14 	sw (r16+20),r14                                
    fd->unavail_blocks     = c->unavail_blocks;                       
 8005e24:	2a 61 00 10 	lw r1,(r19+16)                                 
 8005e28:	5a 01 00 20 	sw (r16+32),r1                                 
    fd->info_level         = c->info_level;                           
 8005e2c:	2a 61 00 1c 	lw r1,(r19+28)                                 
 8005e30:	5a 01 00 6c 	sw (r16+108),r1                                
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005e34:	2a 77 00 04 	lw r23,(r19+4)                                 
 8005e38:	46 e0 00 1e 	be r23,r0,8005eb0 <rtems_fdisk_initialize+0x248><== NEVER TAKEN
 8005e3c:	2a 72 00 08 	lw r18,(r19+8)                                 
 8005e40:	34 14 00 00 	mvi r20,0                                      
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8005e44:	2a 51 00 00 	lw r17,(r18+0)                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
 8005e48:	34 0d 00 00 	mvi r13,0                                      
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
 8005e4c:	46 20 00 15 	be r17,r0,8005ea0 <rtems_fdisk_initialize+0x238><== NEVER TAKEN
 8005e50:	2a 4b 00 04 	lw r11,(r18+4)                                 
 8005e54:	34 0c 00 00 	mvi r12,0                                      
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
 8005e58:	29 61 00 08 	lw r1,(r11+8)                                  
 8005e5c:	b9 c0 10 00 	mv r2,r14                                      
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
 8005e60:	35 8c 00 01 	addi r12,r12,1                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
 8005e64:	fb ff ee 64 	calli 80017f4 <__udivsi3>                      
static uint32_t                                                       
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
 8005e68:	b4 21 18 00 	add r3,r1,r1                                   
 8005e6c:	b4 63 18 00 	add r3,r3,r3                                   
 8005e70:	b4 63 18 00 	add r3,r3,r3                                   
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
 8005e74:	b8 20 30 00 	mv r6,r1                                       
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
  return ((bytes - 1) / page_size) + 1;                               
 8005e78:	b9 c0 10 00 	mv r2,r14                                      
 8005e7c:	34 61 ff ff 	addi r1,r3,-1                                  
 8005e80:	34 cf ff ff 	addi r15,r6,-1                                 
 8005e84:	fb ff ee 5c 	calli 80017f4 <__udivsi3>                      
  for (s = 0; s < dd->segment_count; s++)                             
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
      (rtems_fdisk_pages_in_segment (sd, page_size) -                 
       rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;      
 8005e88:	2d 62 00 00 	lhu r2,(r11+0)                                 
 8005e8c:	c9 e1 08 00 	sub r1,r15,r1                                  
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
 8005e90:	35 6b 00 0c 	addi r11,r11,12                                
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
      (rtems_fdisk_pages_in_segment (sd, page_size) -                 
       rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;      
 8005e94:	fb ff ee 4c 	calli 80017c4 <__mulsi3>                       
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
 8005e98:	b5 a1 68 00 	add r13,r13,r1                                 
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
 8005e9c:	56 2c ff ef 	bgu r17,r12,8005e58 <rtems_fdisk_initialize+0x1f0><== NEVER TAKEN
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005ea0:	36 94 00 01 	addi r20,r20,1                                 
      blocks += rtems_fdisk_blocks_in_device (&c->devices[device],    
 8005ea4:	b6 ad a8 00 	add r21,r21,r13                                
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005ea8:	36 52 00 0c 	addi r18,r18,12                                
 8005eac:	56 f4 ff e6 	bgu r23,r20,8005e44 <rtems_fdisk_initialize+0x1dc><== NEVER TAKEN
                                              c->block_size);         
                                                                      
    /*                                                                
     * One copy buffer of a page size.                                
     */                                                               
    fd->copy_buffer = malloc (c->block_size);                         
 8005eb0:	b9 c0 08 00 	mv r1,r14                                      
 8005eb4:	f8 00 05 4c 	calli 80073e4 <malloc>                         
 8005eb8:	5a 01 00 68 	sw (r16+104),r1                                
    if (!fd->copy_buffer)                                             
 8005ebc:	44 20 00 8c 	be r1,r0,80060ec <rtems_fdisk_initialize+0x484><== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));     
 8005ec0:	ba a0 08 00 	mv r1,r21                                      
 8005ec4:	34 02 00 08 	mvi r2,8                                       
 8005ec8:	f8 00 02 d1 	calli 8006a0c <calloc>                         
 8005ecc:	5a 01 00 18 	sw (r16+24),r1                                 
    if (!fd->blocks)                                                  
 8005ed0:	44 20 00 87 	be r1,r0,80060ec <rtems_fdisk_initialize+0x484><== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->block_count = blocks;                                         
 8005ed4:	5a 15 00 1c 	sw (r16+28),r21                                
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
 8005ed8:	ba e0 08 00 	mv r1,r23                                      
 8005edc:	34 02 00 0c 	mvi r2,12                                      
 8005ee0:	f8 00 02 cb 	calli 8006a0c <calloc>                         
 8005ee4:	5a 01 00 2c 	sw (r16+44),r1                                 
    if (!fd->devices)                                                 
 8005ee8:	44 20 00 81 	be r1,r0,80060ec <rtems_fdisk_initialize+0x484><== NEVER TAKEN
      return RTEMS_NO_MEMORY;                                         
                                                                      
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
 8005eec:	78 02 08 03 	mvhi r2,0x803                                  
 8005ef0:	38 42 8d b4 	ori r2,r2,0x8db4                               
 8005ef4:	28 41 00 00 	lw r1,(r2+0)                                   
 8005ef8:	34 03 00 54 	mvi r3,84                                      
 8005efc:	34 02 00 01 	mvi r2,1                                       
 8005f00:	34 04 00 00 	mvi r4,0                                       
 8005f04:	36 05 00 64 	addi r5,r16,100                                
 8005f08:	f8 00 0f 47 	calli 8009c24 <rtems_semaphore_create>         
 8005f0c:	b8 20 60 00 	mv r12,r1                                      
                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
    if (sc != RTEMS_SUCCESSFUL)                                       
 8005f10:	5c 20 00 79 	bne r1,r0,80060f4 <rtems_fdisk_initialize+0x48c><== NEVER TAKEN
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
 8005f14:	2a 04 00 20 	lw r4,(r16+32)                                 
 8005f18:	2a 63 00 00 	lw r3,(r19+0)                                  
 8005f1c:	2b 85 00 50 	lw r5,(sp+80)                                  
 8005f20:	bb 20 08 00 	mv r1,r25                                      
 8005f24:	ba c0 10 00 	mv r2,r22                                      
 8005f28:	ca a4 20 00 	sub r4,r21,r4                                  
 8005f2c:	34 06 00 00 	mvi r6,0                                       
 8005f30:	37 87 00 54 	addi r7,sp,84                                  
 8005f34:	fb ff f2 89 	calli 8002958 <rtems_disk_create_phys>         
 8005f38:	b8 20 58 00 	mv r11,r1                                      
                                blocks - fd->unavail_blocks,          
                                rtems_fdisk_ioctl, NULL, name);       
    if (sc != RTEMS_SUCCESSFUL)                                       
 8005f3c:	5c 2c 00 79 	bne r1,r12,8006120 <rtems_fdisk_initialize+0x4b8><== NEVER TAKEN
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005f40:	2a 71 00 04 	lw r17,(r19+4)                                 
 8005f44:	46 21 00 32 	be r17,r1,800600c <rtems_fdisk_initialize+0x3a4><== NEVER TAKEN
      rtems_disk_delete (dev);                                        
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
 8005f48:	2a 6e 00 08 	lw r14,(r19+8)                                 
 8005f4c:	2a 0f 00 2c 	lw r15,(r16+44)                                
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005f50:	34 0b 00 00 	mvi r11,0                                      
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8005f54:	29 cd 00 00 	lw r13,(r14+0)                                 
 * Count the segments for a device.                                   
 */                                                                   
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
 8005f58:	34 0c 00 00 	mvi r12,0                                      
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
 8005f5c:	45 a0 00 08 	be r13,r0,8005f7c <rtems_fdisk_initialize+0x314><== NEVER TAKEN
 8005f60:	29 c4 00 04 	lw r4,(r14+4)                                  
 8005f64:	34 03 00 00 	mvi r3,0                                       
    count += dd->segments[segment].count;                             
 8005f68:	2c 86 00 00 	lhu r6,(r4+0)                                  
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
 8005f6c:	34 63 00 01 	addi r3,r3,1                                   
 8005f70:	34 84 00 0c 	addi r4,r4,12                                  
    count += dd->segments[segment].count;                             
 8005f74:	b5 86 60 00 	add r12,r12,r6                                 
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
 8005f78:	55 a3 ff fc 	bgu r13,r3,8005f68 <rtems_fdisk_initialize+0x300><== NEVER TAKEN
      uint32_t                 segment_count;                         
      uint32_t                 segment;                               
                                                                      
      segment_count = rtems_fdisk_count_segments (&c->devices[device]);
                                                                      
      fd->devices[device].segments = calloc (segment_count,           
 8005f7c:	b9 80 08 00 	mv r1,r12                                      
 8005f80:	34 02 00 30 	mvi r2,48                                      
 8005f84:	f8 00 02 a2 	calli 8006a0c <calloc>                         
 8005f88:	59 e1 00 00 	sw (r15+0),r1                                  
 8005f8c:	b8 20 48 00 	mv r9,r1                                       
                                             sizeof (rtems_fdisk_segment_ctl));
      if (!fd->devices[device].segments)                              
 8005f90:	44 20 00 36 	be r1,r0,8006068 <rtems_fdisk_initialize+0x400><== NEVER TAKEN
        return RTEMS_NO_MEMORY;                                       
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
 8005f94:	45 a0 00 18 	be r13,r0,8005ff4 <rtems_fdisk_initialize+0x38c><== NEVER TAKEN
        rtems_disk_delete (dev);                                      
        rtems_semaphore_delete (fd->lock);                            
        free (fd->copy_buffer);                                       
        free (fd->blocks);                                            
        free (fd->devices);                                           
        return RTEMS_NO_MEMORY;                                       
 8005f98:	29 c8 00 04 	lw r8,(r14+4)                                  
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
 8005f9c:	34 0a 00 00 	mvi r10,0                                      
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
 8005fa0:	2d 06 00 00 	lhu r6,(r8+0)                                  
 8005fa4:	44 c0 00 11 	be r6,r0,8005fe8 <rtems_fdisk_initialize+0x380><== NEVER TAKEN
 8005fa8:	b9 20 18 00 	mv r3,r9                                       
 8005fac:	34 04 00 00 	mvi r4,0                                       
        {                                                             
          sc->descriptor = sd;                                        
          sc->device     = device;                                    
          sc->segment    = seg_segment;                               
 8005fb0:	58 64 00 0c 	sw (r3+12),r4                                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
        {                                                             
          sc->descriptor = sd;                                        
 8005fb4:	58 68 00 04 	sw (r3+4),r8                                   
          sc->device     = device;                                    
 8005fb8:	58 6b 00 08 	sw (r3+8),r11                                  
          sc->segment    = seg_segment;                               
          sc->erased     = 0;                                         
 8005fbc:	58 60 00 2c 	sw (r3+44),r0                                  
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
 8005fc0:	34 84 00 01 	addi r4,r4,1                                   
 8005fc4:	34 63 00 30 	addi r3,r3,48                                  
 8005fc8:	54 c4 ff fa 	bgu r6,r4,8005fb0 <rtems_fdisk_initialize+0x348>
 * @param major Flash disk major device number.                       
 * @param minor Minor device number, not applicable.                  
 * @param arg Initialization argument, not applicable.                
 */                                                                   
rtems_device_driver                                                   
rtems_fdisk_initialize (rtems_device_major_number major,              
 8005fcc:	b4 c6 18 00 	add r3,r6,r6                                   
 8005fd0:	b4 66 30 00 	add r6,r3,r6                                   
 8005fd4:	b4 c6 30 00 	add r6,r6,r6                                   
 8005fd8:	b4 c6 30 00 	add r6,r6,r6                                   
 8005fdc:	b4 c6 30 00 	add r6,r6,r6                                   
 8005fe0:	b4 c6 30 00 	add r6,r6,r6                                   
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
 8005fe4:	b5 26 48 00 	add r9,r9,r6                                   
        return RTEMS_NO_MEMORY;                                       
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
 8005fe8:	35 4a 00 01 	addi r10,r10,1                                 
 8005fec:	35 08 00 0c 	addi r8,r8,12                                  
 8005ff0:	55 aa ff ec 	bgu r13,r10,8005fa0 <rtems_fdisk_initialize+0x338><== NEVER TAKEN
          sc->erased     = 0;                                         
        }                                                             
      }                                                               
                                                                      
      fd->devices[device].segment_count = segment_count;              
      fd->devices[device].descriptor    = &c->devices[device];        
 8005ff4:	59 ee 00 08 	sw (r15+8),r14                                 
          sc->segment    = seg_segment;                               
          sc->erased     = 0;                                         
        }                                                             
      }                                                               
                                                                      
      fd->devices[device].segment_count = segment_count;              
 8005ff8:	59 ec 00 04 	sw (r15+4),r12                                 
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
 8005ffc:	35 6b 00 01 	addi r11,r11,1                                 
 8006000:	35 ce 00 0c 	addi r14,r14,12                                
 8006004:	35 ef 00 0c 	addi r15,r15,12                                
 8006008:	56 2b ff d3 	bgu r17,r11,8005f54 <rtems_fdisk_initialize+0x2ec><== NEVER TAKEN
                                                                      
      fd->devices[device].segment_count = segment_count;              
      fd->devices[device].descriptor    = &c->devices[device];        
    }                                                                 
                                                                      
    fd->device_count = c->device_count;                               
 800600c:	5a 11 00 30 	sw (r16+48),r17                                
                                                                      
    ret = rtems_fdisk_recover_block_mappings (fd);                    
 8006010:	ba 00 08 00 	mv r1,r16                                      
 8006014:	fb ff f9 17 	calli 8004470 <rtems_fdisk_recover_block_mappings>
 8006018:	b8 20 58 00 	mv r11,r1                                      
    if (ret)                                                          
 800601c:	5c 20 00 20 	bne r1,r0,800609c <rtems_fdisk_initialize+0x434><== NEVER TAKEN
      rtems_fdisk_error ("recovery of disk failed: %s (%d)",          
                         strerror (ret), ret);                        
      return ret;                                                     
    }                                                                 
                                                                      
    ret = rtems_fdisk_compact (fd);                                   
 8006020:	ba 00 08 00 	mv r1,r16                                      
 8006024:	fb ff f8 44 	calli 8004134 <rtems_fdisk_compact>            
 8006028:	b8 20 60 00 	mv r12,r1                                      
    if (ret)                                                          
 800602c:	5c 2b 00 4d 	bne r1,r11,8006160 <rtems_fdisk_initialize+0x4f8><== NEVER TAKEN
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
 8006030:	2b 81 00 48 	lw r1,(sp+72)                                  
 8006034:	2b 82 00 4c 	lw r2,(sp+76)                                  
 8006038:	36 d6 00 01 	addi r22,r22,1                                 
 800603c:	28 2b 00 00 	lw r11,(r1+0)                                  
 8006040:	34 42 00 74 	addi r2,r2,116                                 
 8006044:	5b 82 00 4c 	sw (sp+76),r2                                  
 8006048:	55 76 00 06 	bgu r11,r22,8006060 <rtems_fdisk_initialize+0x3f8><== NEVER TAKEN
                         strerror (ret), ret);                        
      return ret;                                                     
    }                                                                 
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
 800604c:	78 01 08 04 	mvhi r1,0x804                                  
 8006050:	38 21 e7 dc 	ori r1,r1,0xe7dc                               
 8006054:	58 2b 00 00 	sw (r1+0),r11                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 8006058:	34 02 00 00 	mvi r2,0                                       
 800605c:	e3 ff ff 1a 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
 8006060:	36 73 00 20 	addi r19,r19,32                                <== NOT EXECUTED
 8006064:	e3 ff ff 5a 	bi 8005dcc <rtems_fdisk_initialize+0x164>      <== NOT EXECUTED
                                                                      
      fd->devices[device].segments = calloc (segment_count,           
                                             sizeof (rtems_fdisk_segment_ctl));
      if (!fd->devices[device].segments)                              
      {                                                               
        rtems_disk_delete (dev);                                      
 8006068:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 800606c:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8006070:	fb ff f1 5d 	calli 80025e4 <rtems_disk_delete>              <== NOT EXECUTED
        rtems_semaphore_delete (fd->lock);                            
 8006074:	2a 01 00 64 	lw r1,(r16+100)                                <== NOT EXECUTED
 8006078:	f8 00 0f 6f 	calli 8009e34 <rtems_semaphore_delete>         <== NOT EXECUTED
        free (fd->copy_buffer);                                       
 800607c:	2a 01 00 68 	lw r1,(r16+104)                                <== NOT EXECUTED
 8006080:	f8 00 02 e5 	calli 8006c14 <free>                           <== NOT EXECUTED
        free (fd->blocks);                                            
 8006084:	2a 01 00 18 	lw r1,(r16+24)                                 <== NOT EXECUTED
 8006088:	f8 00 02 e3 	calli 8006c14 <free>                           <== NOT EXECUTED
        free (fd->devices);                                           
 800608c:	2a 01 00 2c 	lw r1,(r16+44)                                 <== NOT EXECUTED
 8006090:	f8 00 02 e1 	calli 8006c14 <free>                           <== NOT EXECUTED
        return RTEMS_NO_MEMORY;                                       
 8006094:	34 02 00 1a 	mvi r2,26                                      <== NOT EXECUTED
 8006098:	e3 ff ff 0b 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
    fd->device_count = c->device_count;                               
                                                                      
    ret = rtems_fdisk_recover_block_mappings (fd);                    
    if (ret)                                                          
    {                                                                 
      rtems_disk_delete (dev);                                        
 800609c:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 80060a0:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 80060a4:	fb ff f1 50 	calli 80025e4 <rtems_disk_delete>              <== NOT EXECUTED
      rtems_semaphore_delete (fd->lock);                              
 80060a8:	2a 01 00 64 	lw r1,(r16+100)                                <== NOT EXECUTED
 80060ac:	f8 00 0f 62 	calli 8009e34 <rtems_semaphore_delete>         <== NOT EXECUTED
      free (fd->copy_buffer);                                         
 80060b0:	2a 01 00 68 	lw r1,(r16+104)                                <== NOT EXECUTED
 80060b4:	f8 00 02 d8 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->blocks);                                              
 80060b8:	2a 01 00 18 	lw r1,(r16+24)                                 <== NOT EXECUTED
 80060bc:	f8 00 02 d6 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->devices);                                             
 80060c0:	2a 01 00 2c 	lw r1,(r16+44)                                 <== NOT EXECUTED
 80060c4:	f8 00 02 d4 	calli 8006c14 <free>                           <== NOT EXECUTED
      rtems_fdisk_error ("recovery of disk failed: %s (%d)",          
 80060c8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80060cc:	f8 00 7f ae 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80060d0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80060d4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80060d8:	38 21 8d 54 	ori r1,r1,0x8d54                               <== NOT EXECUTED
 80060dc:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 80060e0:	fb ff f4 72 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                         strerror (ret), ret);                        
      return ret;                                                     
 80060e4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80060e8:	e3 ff fe f7 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
                                                                      
    fd->block_count = blocks;                                         
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    if (!fd->devices)                                                 
      return RTEMS_NO_MEMORY;                                         
 80060ec:	34 02 00 1a 	mvi r2,26                                      <== NOT EXECUTED
 80060f0:	e3 ff fe f5 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
      rtems_fdisk_error ("disk lock create failed");                  
 80060f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80060f8:	38 21 8d 24 	ori r1,r1,0x8d24                               <== NOT EXECUTED
 80060fc:	fb ff f4 6b 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      free (fd->copy_buffer);                                         
 8006100:	2a 01 00 68 	lw r1,(r16+104)                                <== NOT EXECUTED
 8006104:	f8 00 02 c4 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->blocks);                                              
 8006108:	2a 01 00 18 	lw r1,(r16+24)                                 <== NOT EXECUTED
 800610c:	f8 00 02 c2 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->devices);                                             
 8006110:	2a 01 00 2c 	lw r1,(r16+44)                                 <== NOT EXECUTED
 8006114:	f8 00 02 c0 	calli 8006c14 <free>                           <== NOT EXECUTED
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    if (!fd->devices)                                                 
      return RTEMS_NO_MEMORY;                                         
                                                                      
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
 8006118:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
    {                                                                 
      rtems_fdisk_error ("disk lock create failed");                  
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
 800611c:	e3 ff fe ea 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
    sc = rtems_disk_create_phys(dev, c->block_size,                   
                                blocks - fd->unavail_blocks,          
                                rtems_fdisk_ioctl, NULL, name);       
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
      rtems_semaphore_delete (fd->lock);                              
 8006120:	2a 01 00 64 	lw r1,(r16+100)                                <== NOT EXECUTED
 8006124:	f8 00 0f 44 	calli 8009e34 <rtems_semaphore_delete>         <== NOT EXECUTED
      rtems_disk_delete (dev);                                        
 8006128:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 800612c:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8006130:	fb ff f1 2d 	calli 80025e4 <rtems_disk_delete>              <== NOT EXECUTED
      free (fd->copy_buffer);                                         
 8006134:	2a 01 00 68 	lw r1,(r16+104)                                <== NOT EXECUTED
 8006138:	f8 00 02 b7 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->blocks);                                              
 800613c:	2a 01 00 18 	lw r1,(r16+24)                                 <== NOT EXECUTED
 8006140:	f8 00 02 b5 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->devices);                                             
 8006144:	2a 01 00 2c 	lw r1,(r16+44)                                 <== NOT EXECUTED
 8006148:	f8 00 02 b3 	calli 8006c14 <free>                           <== NOT EXECUTED
      rtems_fdisk_error ("disk create phy failed");                   
 800614c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8006150:	38 21 8d 3c 	ori r1,r1,0x8d3c                               <== NOT EXECUTED
 8006154:	fb ff f4 55 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
 8006158:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
      rtems_disk_delete (dev);                                        
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
 800615c:	e3 ff fe da 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
    }                                                                 
                                                                      
    ret = rtems_fdisk_compact (fd);                                   
    if (ret)                                                          
    {                                                                 
      rtems_disk_delete (dev);                                        
 8006160:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 8006164:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8006168:	fb ff f1 1f 	calli 80025e4 <rtems_disk_delete>              <== NOT EXECUTED
      rtems_semaphore_delete (fd->lock);                              
 800616c:	2a 01 00 64 	lw r1,(r16+100)                                <== NOT EXECUTED
 8006170:	f8 00 0f 31 	calli 8009e34 <rtems_semaphore_delete>         <== NOT EXECUTED
      free (fd->copy_buffer);                                         
 8006174:	2a 01 00 68 	lw r1,(r16+104)                                <== NOT EXECUTED
 8006178:	f8 00 02 a7 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->blocks);                                              
 800617c:	2a 01 00 18 	lw r1,(r16+24)                                 <== NOT EXECUTED
 8006180:	f8 00 02 a5 	calli 8006c14 <free>                           <== NOT EXECUTED
      free (fd->devices);                                             
 8006184:	2a 01 00 2c 	lw r1,(r16+44)                                 <== NOT EXECUTED
 8006188:	f8 00 02 a3 	calli 8006c14 <free>                           <== NOT EXECUTED
      rtems_fdisk_error ("compacting of disk failed: %s (%d)",        
 800618c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8006190:	f8 00 7f 7d 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8006194:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8006198:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800619c:	38 21 8d 78 	ori r1,r1,0x8d78                               <== NOT EXECUTED
 80061a0:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 80061a4:	fb ff f4 41 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                         strerror (ret), ret);                        
      return ret;                                                     
 80061a8:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 80061ac:	e3 ff fe c6 	bi 8005cc4 <rtems_fdisk_initialize+0x5c>       <== NOT EXECUTED
                                                                      

080048d4 <rtems_fdisk_ioctl>: * @param argp IOCTL argument. * @retval The IOCTL return value */ static int rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp) {
 80048d4:	37 9c ff 58 	addi sp,sp,-168                                
 80048d8:	5b 8b 00 5c 	sw (sp+92),r11                                 
 80048dc:	5b 8c 00 58 	sw (sp+88),r12                                 
 80048e0:	5b 8d 00 54 	sw (sp+84),r13                                 
 80048e4:	5b 8e 00 50 	sw (sp+80),r14                                 
 80048e8:	5b 8f 00 4c 	sw (sp+76),r15                                 
 80048ec:	5b 90 00 48 	sw (sp+72),r16                                 
 80048f0:	5b 91 00 44 	sw (sp+68),r17                                 
 80048f4:	5b 92 00 40 	sw (sp+64),r18                                 
 80048f8:	5b 93 00 3c 	sw (sp+60),r19                                 
 80048fc:	5b 94 00 38 	sw (sp+56),r20                                 
 8004900:	5b 95 00 34 	sw (sp+52),r21                                 
 8004904:	5b 96 00 30 	sw (sp+48),r22                                 
 8004908:	5b 97 00 2c 	sw (sp+44),r23                                 
 800490c:	5b 98 00 28 	sw (sp+40),r24                                 
 8004910:	5b 99 00 24 	sw (sp+36),r25                                 
 8004914:	5b 9b 00 20 	sw (sp+32),fp                                  
 8004918:	5b 9d 00 1c 	sw (sp+28),ra                                  
  dev_t device                                                        
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
 800491c:	28 2c 00 04 	lw r12,(r1+4)                                  
 8004920:	b8 60 d8 00 	mv fp,r3                                       
 8004924:	b8 40 58 00 	mv r11,r2                                      
 8004928:	b8 20 68 00 	mv r13,r1                                      
  dev_t                     dev = rtems_disk_get_device_identifier (dd);
  rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
  rtems_blkdev_request*     r = argp;                                 
  rtems_status_code         sc;                                       
                                                                      
  errno = 0;                                                          
 800492c:	f8 00 7c 06 	calli 8023944 <__errno>                        
                                                                      
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
 8004930:	b5 8c 20 00 	add r4,r12,r12                                 
 8004934:	b4 84 20 00 	add r4,r4,r4                                   
 8004938:	b4 84 10 00 	add r2,r4,r4                                   
 800493c:	b4 42 10 00 	add r2,r2,r2                                   
 8004940:	b4 42 10 00 	add r2,r2,r2                                   
 8004944:	78 03 08 04 	mvhi r3,0x804                                  
 8004948:	38 63 e7 d8 	ori r3,r3,0xe7d8                               
 800494c:	c8 44 10 00 	sub r2,r2,r4                                   
 8004950:	b4 4c 10 00 	add r2,r2,r12                                  
 8004954:	28 64 00 00 	lw r4,(r3+0)                                   
 8004958:	b4 42 10 00 	add r2,r2,r2                                   
 800495c:	b4 42 10 00 	add r2,r2,r2                                   
 8004960:	5b 83 00 68 	sw (sp+104),r3                                 
 8004964:	5b 82 00 64 	sw (sp+100),r2                                 
 8004968:	b4 82 20 00 	add r4,r4,r2                                   
  dev_t                     dev = rtems_disk_get_device_identifier (dd);
  rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
  rtems_blkdev_request*     r = argp;                                 
  rtems_status_code         sc;                                       
                                                                      
  errno = 0;                                                          
 800496c:	58 20 00 00 	sw (r1+0),r0                                   
                                                                      
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
 8004970:	28 81 00 64 	lw r1,(r4+100)                                 
 8004974:	34 02 00 00 	mvi r2,0                                       
 8004978:	34 03 00 00 	mvi r3,0                                       
 800497c:	f8 00 15 65 	calli 8009f10 <rtems_semaphore_obtain>         
  if (sc != RTEMS_SUCCESSFUL)                                         
 8004980:	5c 20 00 7e 	bne r1,r0,8004b78 <rtems_fdisk_ioctl+0x2a4>    <== NEVER TAKEN
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
 8004984:	f8 00 7b f0 	calli 8023944 <__errno>                        
    switch (req)                                                      
 8004988:	78 03 08 03 	mvhi r3,0x803                                  
 800498c:	38 63 8d a8 	ori r3,r3,0x8da8                               
 8004990:	28 62 00 00 	lw r2,(r3+0)                                   
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
 8004994:	58 20 00 00 	sw (r1+0),r0                                   
    switch (req)                                                      
 8004998:	45 62 00 10 	be r11,r2,80049d8 <rtems_fdisk_ioctl+0x104>    <== NEVER TAKEN
 800499c:	55 62 00 91 	bgu r11,r2,8004be0 <rtems_fdisk_ioctl+0x30c>   
 80049a0:	78 01 08 03 	mvhi r1,0x803                                  
 80049a4:	38 21 8d ac 	ori r1,r1,0x8dac                               
 80049a8:	28 22 00 00 	lw r2,(r1+0)                                   
 80049ac:	45 62 00 fc 	be r11,r2,8004d9c <rtems_fdisk_ioctl+0x4c8>    <== NEVER TAKEN
 80049b0:	55 62 00 a7 	bgu r11,r2,8004c4c <rtems_fdisk_ioctl+0x378>   <== NEVER TAKEN
 80049b4:	78 02 08 03 	mvhi r2,0x803                                  
 80049b8:	38 42 8d b0 	ori r2,r2,0x8db0                               
 80049bc:	28 44 00 00 	lw r4,(r2+0)                                   
 80049c0:	45 64 00 c6 	be r11,r4,8004cd8 <rtems_fdisk_ioctl+0x404>    <== NEVER TAKEN
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
        break;                                                        
                                                                      
      default:                                                        
        rtems_blkdev_ioctl (dd, req, argp);                           
 80049c4:	b9 a0 08 00 	mv r1,r13                                      
 80049c8:	b9 60 10 00 	mv r2,r11                                      
 80049cc:	bb 60 18 00 	mv r3,fp                                       
 80049d0:	f8 00 42 76 	calli 80153a8 <rtems_blkdev_ioctl>             
        break;                                                        
 80049d4:	e0 00 00 62 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
 80049d8:	f8 00 7b db 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80049dc:	2b 83 00 68 	lw r3,(sp+104)                                 <== NOT EXECUTED
 80049e0:	b8 20 b8 00 	mv r23,r1                                      <== NOT EXECUTED
 80049e4:	2b 81 00 64 	lw r1,(sp+100)                                 <== NOT EXECUTED
 80049e8:	28 65 00 00 	lw r5,(r3+0)                                   <== NOT EXECUTED
 80049ec:	b4 a1 28 00 	add r5,r5,r1                                   <== NOT EXECUTED
                             rtems_fdisk_monitor_data* data)          
{                                                                     
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
 80049f0:	28 a7 00 14 	lw r7,(r5+20)                                  <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
 80049f4:	28 a6 00 1c 	lw r6,(r5+28)                                  <== NOT EXECUTED
  data->unavail_blocks = fd->unavail_blocks;                          
 80049f8:	28 a4 00 20 	lw r4,(r5+32)                                  <== NOT EXECUTED
  data->device_count   = fd->device_count;                            
 80049fc:	28 b6 00 30 	lw r22,(r5+48)                                 <== NOT EXECUTED
                             rtems_fdisk_monitor_data* data)          
{                                                                     
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
 8004a00:	5b 67 00 00 	sw (fp+0),r7                                   <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
 8004a04:	5b 66 00 04 	sw (fp+4),r6                                   <== NOT EXECUTED
  data->unavail_blocks = fd->unavail_blocks;                          
 8004a08:	5b 64 00 08 	sw (fp+8),r4                                   <== NOT EXECUTED
  data->device_count   = fd->device_count;                            
 8004a0c:	5b 76 00 0c 	sw (fp+12),r22                                 <== NOT EXECUTED
                                                                      
  data->blocks_used = 0;                                              
 8004a10:	5b 60 00 18 	sw (fp+24),r0                                  <== NOT EXECUTED
  for (i = 0; i < fd->block_count; i++)                               
 8004a14:	44 c0 00 0b 	be r6,r0,8004a40 <rtems_fdisk_ioctl+0x16c>     <== NOT EXECUTED
 8004a18:	28 a4 00 18 	lw r4,(r5+24)                                  <== NOT EXECUTED
 8004a1c:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
 8004a20:	28 81 00 00 	lw r1,(r4+0)                                   <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
                                                                      
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
 8004a24:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
 8004a28:	34 84 00 08 	addi r4,r4,8                                   <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
 8004a2c:	44 20 00 04 	be r1,r0,8004a3c <rtems_fdisk_ioctl+0x168>     <== NOT EXECUTED
      data->blocks_used++;                                            
 8004a30:	2b 61 00 18 	lw r1,(fp+24)                                  <== NOT EXECUTED
 8004a34:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 8004a38:	5b 61 00 18 	sw (fp+24),r1                                  <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
                                                                      
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
 8004a3c:	54 c2 ff f9 	bgu r6,r2,8004a20 <rtems_fdisk_ioctl+0x14c>    <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004a40:	28 a2 00 34 	lw r2,(r5+52)                                  <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004a44:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
                                                                      
  while (sc)                                                          
 8004a48:	44 40 00 04 	be r2,r0,8004a58 <rtems_fdisk_ioctl+0x184>     <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004a4c:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004a50:	34 84 00 01 	addi r4,r4,1                                   <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004a54:	5c 40 ff fe 	bne r2,r0,8004a4c <rtems_fdisk_ioctl+0x178>    <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004a58:	28 a2 00 40 	lw r2,(r5+64)                                  <== NOT EXECUTED
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
 8004a5c:	5b 64 00 1c 	sw (fp+28),r4                                  <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004a60:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
                                                                      
  while (sc)                                                          
 8004a64:	44 40 00 04 	be r2,r0,8004a74 <rtems_fdisk_ioctl+0x1a0>     <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004a68:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004a6c:	34 84 00 01 	addi r4,r4,1                                   <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004a70:	5c 40 ff fe 	bne r2,r0,8004a68 <rtems_fdisk_ioctl+0x194>    <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004a74:	28 a2 00 58 	lw r2,(r5+88)                                  <== NOT EXECUTED
  for (i = 0; i < fd->block_count; i++)                               
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
  data->segs_used      = rtems_fdisk_segment_count_queue (&fd->used); 
 8004a78:	5b 64 00 20 	sw (fp+32),r4                                  <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004a7c:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
                                                                      
  while (sc)                                                          
 8004a80:	44 40 00 04 	be r2,r0,8004a90 <rtems_fdisk_ioctl+0x1bc>     <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004a84:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004a88:	34 84 00 01 	addi r4,r4,1                                   <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004a8c:	5c 40 ff fe 	bne r2,r0,8004a84 <rtems_fdisk_ioctl+0x1b0>    <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
  data->segs_used      = rtems_fdisk_segment_count_queue (&fd->used); 
  data->segs_failed    = rtems_fdisk_segment_count_queue (&fd->failed);
 8004a90:	5b 64 00 24 	sw (fp+36),r4                                  <== NOT EXECUTED
                                                                      
  data->segment_count = 0;                                            
 8004a94:	5b 60 00 10 	sw (fp+16),r0                                  <== NOT EXECUTED
  data->page_count    = 0;                                            
 8004a98:	5b 60 00 14 	sw (fp+20),r0                                  <== NOT EXECUTED
  data->pages_desc    = 0;                                            
 8004a9c:	5b 60 00 2c 	sw (fp+44),r0                                  <== NOT EXECUTED
  data->pages_active  = 0;                                            
 8004aa0:	5b 60 00 30 	sw (fp+48),r0                                  <== NOT EXECUTED
  data->pages_used    = 0;                                            
 8004aa4:	5b 60 00 34 	sw (fp+52),r0                                  <== NOT EXECUTED
  data->pages_bad     = 0;                                            
 8004aa8:	5b 60 00 38 	sw (fp+56),r0                                  <== NOT EXECUTED
  data->seg_erases    = 0;                                            
 8004aac:	5b 60 00 28 	sw (fp+40),r0                                  <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
 8004ab0:	46 c0 00 28 	be r22,r0,8004b50 <rtems_fdisk_ioctl+0x27c>    <== NOT EXECUTED
 8004ab4:	28 b3 00 2c 	lw r19,(r5+44)                                 <== NOT EXECUTED
 8004ab8:	34 14 00 00 	mvi r20,0                                      <== NOT EXECUTED
 8004abc:	34 15 00 00 	mvi r21,0                                      <== NOT EXECUTED
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
 8004ac0:	2a 6a 00 04 	lw r10,(r19+4)                                 <== NOT EXECUTED
 8004ac4:	b6 8a a0 00 	add r20,r20,r10                                <== NOT EXECUTED
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
 8004ac8:	45 40 00 1e 	be r10,r0,8004b40 <rtems_fdisk_ioctl+0x26c>    <== NOT EXECUTED
 8004acc:	2b 69 00 14 	lw r9,(fp+20)                                  <== NOT EXECUTED
 8004ad0:	2b 68 00 2c 	lw r8,(fp+44)                                  <== NOT EXECUTED
 8004ad4:	2b 67 00 30 	lw r7,(fp+48)                                  <== NOT EXECUTED
 8004ad8:	2b 66 00 34 	lw r6,(fp+52)                                  <== NOT EXECUTED
 8004adc:	2b 64 00 38 	lw r4,(fp+56)                                  <== NOT EXECUTED
 8004ae0:	2b 63 00 28 	lw r3,(fp+40)                                  <== NOT EXECUTED
 8004ae4:	2a 61 00 00 	lw r1,(r19+0)                                  <== NOT EXECUTED
 8004ae8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[i].segments[j];      
                                                                      
      data->page_count   += sc->pages;                                
 8004aec:	28 30 00 14 	lw r16,(r1+20)                                 <== NOT EXECUTED
      data->pages_desc   += sc->pages_desc;                           
 8004af0:	28 2f 00 18 	lw r15,(r1+24)                                 <== NOT EXECUTED
      data->pages_active += sc->pages_active;                         
 8004af4:	28 2e 00 1c 	lw r14,(r1+28)                                 <== NOT EXECUTED
      data->pages_used   += sc->pages_used;                           
 8004af8:	28 2d 00 20 	lw r13,(r1+32)                                 <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
 8004afc:	28 2c 00 24 	lw r12,(r1+36)                                 <== NOT EXECUTED
      data->seg_erases   += sc->erased;                               
 8004b00:	28 2b 00 2c 	lw r11,(r1+44)                                 <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
 8004b04:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[i].segments[j];      
                                                                      
      data->page_count   += sc->pages;                                
 8004b08:	b5 30 48 00 	add r9,r9,r16                                  <== NOT EXECUTED
      data->pages_desc   += sc->pages_desc;                           
 8004b0c:	b5 0f 40 00 	add r8,r8,r15                                  <== NOT EXECUTED
      data->pages_active += sc->pages_active;                         
 8004b10:	b4 ee 38 00 	add r7,r7,r14                                  <== NOT EXECUTED
      data->pages_used   += sc->pages_used;                           
 8004b14:	b4 cd 30 00 	add r6,r6,r13                                  <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
 8004b18:	b4 8c 20 00 	add r4,r4,r12                                  <== NOT EXECUTED
      data->seg_erases   += sc->erased;                               
 8004b1c:	b4 6b 18 00 	add r3,r3,r11                                  <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
 8004b20:	34 21 00 30 	addi r1,r1,48                                  <== NOT EXECUTED
 8004b24:	55 42 ff f2 	bgu r10,r2,8004aec <rtems_fdisk_ioctl+0x218>   <== NOT EXECUTED
 8004b28:	5b 69 00 14 	sw (fp+20),r9                                  <== NOT EXECUTED
 8004b2c:	5b 68 00 2c 	sw (fp+44),r8                                  <== NOT EXECUTED
 8004b30:	5b 67 00 30 	sw (fp+48),r7                                  <== NOT EXECUTED
 8004b34:	5b 66 00 34 	sw (fp+52),r6                                  <== NOT EXECUTED
 8004b38:	5b 64 00 38 	sw (fp+56),r4                                  <== NOT EXECUTED
 8004b3c:	5b 63 00 28 	sw (fp+40),r3                                  <== NOT EXECUTED
  data->pages_active  = 0;                                            
  data->pages_used    = 0;                                            
  data->pages_bad     = 0;                                            
  data->seg_erases    = 0;                                            
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
 8004b40:	36 b5 00 01 	addi r21,r21,1                                 <== NOT EXECUTED
 8004b44:	36 73 00 0c 	addi r19,r19,12                                <== NOT EXECUTED
 8004b48:	56 d5 ff de 	bgu r22,r21,8004ac0 <rtems_fdisk_ioctl+0x1ec>  <== NOT EXECUTED
 8004b4c:	5b 74 00 10 	sw (fp+16),r20                                 <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
      data->seg_erases   += sc->erased;                               
    }                                                                 
  }                                                                   
                                                                      
  data->info_level = fd->info_level;                                  
 8004b50:	28 a4 00 6c 	lw r4,(r5+108)                                 <== NOT EXECUTED
 8004b54:	5b 64 00 3c 	sw (fp+60),r4                                  <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
 8004b58:	5a e0 00 00 	sw (r23+0),r0                                  <== NOT EXECUTED
      default:                                                        
        rtems_blkdev_ioctl (dd, req, argp);                           
        break;                                                        
    }                                                                 
                                                                      
    sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);      
 8004b5c:	2b 82 00 68 	lw r2,(sp+104)                                 
 8004b60:	2b 83 00 64 	lw r3,(sp+100)                                 
 8004b64:	28 41 00 00 	lw r1,(r2+0)                                   
 8004b68:	b4 23 08 00 	add r1,r1,r3                                   
 8004b6c:	28 21 00 64 	lw r1,(r1+100)                                 
 8004b70:	f8 00 15 44 	calli 800a080 <rtems_semaphore_release>        
    if (sc != RTEMS_SUCCESSFUL)                                       
 8004b74:	44 20 00 04 	be r1,r0,8004b84 <rtems_fdisk_ioctl+0x2b0>     <== ALWAYS TAKEN
      errno = EIO;                                                    
 8004b78:	f8 00 7b 73 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8004b7c:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8004b80:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
  }                                                                   
                                                                      
  return errno == 0 ? 0 : -1;                                         
 8004b84:	f8 00 7b 70 	calli 8023944 <__errno>                        
 8004b88:	28 21 00 00 	lw r1,(r1+0)                                   
 8004b8c:	7c 21 00 00 	cmpnei r1,r1,0                                 
}                                                                     
 8004b90:	c8 01 08 00 	sub r1,r0,r1                                   
 8004b94:	2b 9d 00 1c 	lw ra,(sp+28)                                  
 8004b98:	2b 8b 00 5c 	lw r11,(sp+92)                                 
 8004b9c:	2b 8c 00 58 	lw r12,(sp+88)                                 
 8004ba0:	2b 8d 00 54 	lw r13,(sp+84)                                 
 8004ba4:	2b 8e 00 50 	lw r14,(sp+80)                                 
 8004ba8:	2b 8f 00 4c 	lw r15,(sp+76)                                 
 8004bac:	2b 90 00 48 	lw r16,(sp+72)                                 
 8004bb0:	2b 91 00 44 	lw r17,(sp+68)                                 
 8004bb4:	2b 92 00 40 	lw r18,(sp+64)                                 
 8004bb8:	2b 93 00 3c 	lw r19,(sp+60)                                 
 8004bbc:	2b 94 00 38 	lw r20,(sp+56)                                 
 8004bc0:	2b 95 00 34 	lw r21,(sp+52)                                 
 8004bc4:	2b 96 00 30 	lw r22,(sp+48)                                 
 8004bc8:	2b 97 00 2c 	lw r23,(sp+44)                                 
 8004bcc:	2b 98 00 28 	lw r24,(sp+40)                                 
 8004bd0:	2b 99 00 24 	lw r25,(sp+36)                                 
 8004bd4:	2b 9b 00 20 	lw fp,(sp+32)                                  
 8004bd8:	37 9c 00 a8 	addi sp,sp,168                                 
 8004bdc:	c3 a0 00 00 	ret                                            
  if (sc != RTEMS_SUCCESSFUL)                                         
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
    switch (req)                                                      
 8004be0:	78 03 08 03 	mvhi r3,0x803                                  
 8004be4:	38 63 7d 08 	ori r3,r3,0x7d08                               
 8004be8:	28 62 00 00 	lw r2,(r3+0)                                   
 8004bec:	45 62 00 75 	be r11,r2,8004dc0 <rtems_fdisk_ioctl+0x4ec>    
 8004bf0:	54 4b 00 30 	bgu r2,r11,8004cb0 <rtems_fdisk_ioctl+0x3dc>   <== NEVER TAKEN
 8004bf4:	78 01 08 03 	mvhi r1,0x803                                  
 8004bf8:	38 21 82 90 	ori r1,r1,0x8290                               
 8004bfc:	28 24 00 00 	lw r4,(r1+0)                                   
 8004c00:	5d 64 ff 71 	bne r11,r4,80049c4 <rtems_fdisk_ioctl+0xf0>    
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
 8004c04:	78 02 08 04 	mvhi r2,0x804                                  
 8004c08:	38 42 e7 dc 	ori r2,r2,0xe7dc                               
 8004c0c:	28 44 00 00 	lw r4,(r2+0)                                   
 8004c10:	51 84 01 8c 	bgeu r12,r4,8005240 <rtems_fdisk_ioctl+0x96c>  <== NEVER TAKEN
            (rtems_flashdisks[minor].device_count == 0))              
 8004c14:	2b 82 00 68 	lw r2,(sp+104)                                 
 8004c18:	2b 83 00 64 	lw r3,(sp+100)                                 
 8004c1c:	28 44 00 00 	lw r4,(r2+0)                                   
 8004c20:	b4 83 20 00 	add r4,r4,r3                                   
  {                                                                   
    errno = 0;                                                        
    switch (req)                                                      
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
 8004c24:	28 84 00 30 	lw r4,(r4+48)                                  
 8004c28:	44 80 01 86 	be r4,r0,8005240 <rtems_fdisk_ioctl+0x96c>     <== NEVER TAKEN
        {                                                             
          errno = ENODEV;                                             
        }                                                             
        else                                                          
        {                                                             
          switch (r->req)                                             
 8004c2c:	2b 62 00 00 	lw r2,(fp+0)                                   
 8004c30:	44 40 01 8b 	be r2,r0,800525c <rtems_fdisk_ioctl+0x988>     <== NEVER TAKEN
 8004c34:	34 04 00 01 	mvi r4,1                                       
 8004c38:	44 44 02 62 	be r2,r4,80055c0 <rtems_fdisk_ioctl+0xcec>     
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
              break;                                                  
                                                                      
            default:                                                  
              errno = EINVAL;                                         
 8004c3c:	f8 00 7b 42 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8004c40:	34 03 00 16 	mvi r3,22                                      <== NOT EXECUTED
 8004c44:	58 23 00 00 	sw (r1+0),r3                                   <== NOT EXECUTED
              break;                                                  
 8004c48:	e3 ff ff c5 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
 8004c4c:	f8 00 7b 3e 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8004c50:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 8004c54:	2b 81 00 68 	lw r1,(sp+104)                                 <== NOT EXECUTED
 8004c58:	2b 82 00 64 	lw r2,(sp+100)                                 <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_used (rtems_flashdisk* fd)                          
{                                                                     
  rtems_fdisk_segment_ctl* sc;                                        
  int                      latched_ret = 0;                           
 8004c5c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
 8004c60:	28 2b 00 00 	lw r11,(r1+0)                                  <== NOT EXECUTED
 8004c64:	b5 62 58 00 	add r11,r11,r2                                 <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8004c68:	29 63 00 4c 	lw r3,(r11+76)                                 <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
 8004c6c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004c70:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8004c74:	44 60 00 15 	be r3,r0,8004cc8 <rtems_fdisk_ioctl+0x3f4>     <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
 8004c78:	28 64 00 00 	lw r4,(r3+0)                                   <== NOT EXECUTED
 8004c7c:	59 64 00 4c 	sw (r11+76),r4                                 <== NOT EXECUTED
    if (!queue->head)                                                 
 8004c80:	44 80 00 14 	be r4,r0,8004cd0 <rtems_fdisk_ioctl+0x3fc>     <== NOT EXECUTED
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 8004c84:	29 64 00 54 	lw r4,(r11+84)                                 <== NOT EXECUTED
 8004c88:	34 84 ff ff 	addi r4,r4,-1                                  <== NOT EXECUTED
 8004c8c:	59 64 00 54 	sw (r11+84),r4                                 <== NOT EXECUTED
                                                                      
    sc->next = 0;                                                     
 8004c90:	58 60 00 00 	sw (r3+0),r0                                   <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
 8004c94:	fb ff f9 af 	calli 8003350 <rtems_fdisk_erase_segment>      <== NOT EXECUTED
    if (ret && !latched_ret)                                          
 8004c98:	65 82 00 00 	cmpei r2,r12,0                                 <== NOT EXECUTED
 8004c9c:	7c 23 00 00 	cmpnei r3,r1,0                                 <== NOT EXECUTED
 8004ca0:	a0 62 10 00 	and r2,r3,r2                                   <== NOT EXECUTED
 8004ca4:	44 40 ff f1 	be r2,r0,8004c68 <rtems_fdisk_ioctl+0x394>     <== NOT EXECUTED
 8004ca8:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
 8004cac:	e3 ff ff ef 	bi 8004c68 <rtems_fdisk_ioctl+0x394>           <== NOT EXECUTED
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
                                             (rtems_fdisk_monitor_data*) argp);
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
 8004cb0:	2b 82 00 68 	lw r2,(sp+104)                                 <== NOT EXECUTED
 8004cb4:	2b 83 00 64 	lw r3,(sp+100)                                 <== NOT EXECUTED
 8004cb8:	28 44 00 00 	lw r4,(r2+0)                                   <== NOT EXECUTED
 8004cbc:	b4 83 20 00 	add r4,r4,r3                                   <== NOT EXECUTED
 8004cc0:	58 9b 00 6c 	sw (r4+108),fp                                 <== NOT EXECUTED
        break;                                                        
 8004cc4:	e3 ff ff a6 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
 8004cc8:	59 ac 00 00 	sw (r13+0),r12                                 <== NOT EXECUTED
        break;                                                        
 8004ccc:	e3 ff ff a4 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
 8004cd0:	59 60 00 50 	sw (r11+80),r0                                 <== NOT EXECUTED
 8004cd4:	e3 ff ff ec 	bi 8004c84 <rtems_fdisk_ioctl+0x3b0>           <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
 8004cd8:	f8 00 7b 1b 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8004cdc:	2b 83 00 68 	lw r3,(sp+104)                                 <== NOT EXECUTED
 8004ce0:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
 8004ce4:	2b 81 00 64 	lw r1,(sp+100)                                 <== NOT EXECUTED
 8004ce8:	28 6b 00 00 	lw r11,(r3+0)                                  <== NOT EXECUTED
{                                                                     
  uint32_t device;                                                    
  int      ret;                                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "erase-disk");                                
 8004cec:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 8004cf0:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
 8004cf4:	b5 61 58 00 	add r11,r11,r1                                 <== NOT EXECUTED
{                                                                     
  uint32_t device;                                                    
  int      ret;                                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "erase-disk");                                
 8004cf8:	38 42 8b 3c 	ori r2,r2,0x8b3c                               <== NOT EXECUTED
 8004cfc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004d00:	fb ff f8 a4 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)                   
{                                                                     
  uint32_t device;                                                    
  for (device = 0; device < fd->device_count; device++)               
 8004d04:	29 63 00 30 	lw r3,(r11+48)                                 <== NOT EXECUTED
 8004d08:	44 60 00 1e 	be r3,r0,8004d80 <rtems_fdisk_ioctl+0x4ac>     <== NOT EXECUTED
 8004d0c:	78 0f 08 03 	mvhi r15,0x803                                 <== NOT EXECUTED
 8004d10:	78 0e 08 03 	mvhi r14,0x803                                 <== NOT EXECUTED
 8004d14:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 8004d18:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 8004d1c:	39 ef 8b 48 	ori r15,r15,0x8b48                             <== NOT EXECUTED
 8004d20:	39 ce 8b 5c 	ori r14,r14,0x8b5c                             <== NOT EXECUTED
  {                                                                   
    int ret;                                                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " erase-flash:%02d", device);               
 8004d24:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 8004d28:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8004d2c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8004d30:	fb ff f8 98 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device) 
{                                                                     
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
 8004d34:	29 61 00 2c 	lw r1,(r11+44)                                 <== NOT EXECUTED
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
 8004d38:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 8004d3c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device) 
{                                                                     
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
 8004d40:	b4 2d 08 00 	add r1,r1,r13                                  <== NOT EXECUTED
 8004d44:	28 24 00 08 	lw r4,(r1+8)                                   <== NOT EXECUTED
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
 8004d48:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device) 
{                                                                     
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
 8004d4c:	28 91 00 08 	lw r17,(r4+8)                                  <== NOT EXECUTED
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
 8004d50:	fb ff f8 bd 	calli 8003044 <rtems_fdisk_printf>             <== NOT EXECUTED
#endif                                                                
  return ops->erase_device (fd->devices[device].descriptor, device);  
 8004d54:	29 61 00 2c 	lw r1,(r11+44)                                 <== NOT EXECUTED
 8004d58:	2a 23 00 14 	lw r3,(r17+20)                                 <== NOT EXECUTED
 8004d5c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8004d60:	b4 2d 08 00 	add r1,r1,r13                                  <== NOT EXECUTED
 8004d64:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)                   
{                                                                     
  uint32_t device;                                                    
  for (device = 0; device < fd->device_count; device++)               
 8004d68:	35 8c 00 01 	addi r12,r12,1                                 <== NOT EXECUTED
 8004d6c:	35 ad 00 0c 	addi r13,r13,12                                <== NOT EXECUTED
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
#endif                                                                
  return ops->erase_device (fd->devices[device].descriptor, device);  
 8004d70:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
    rtems_fdisk_info (fd, " erase-flash:%02d", device);               
#endif                                                                
                                                                      
    ret = rtems_fdisk_device_erase (fd, device);                      
                                                                      
    if (ret != 0)                                                     
 8004d74:	5c 20 00 08 	bne r1,r0,8004d94 <rtems_fdisk_ioctl+0x4c0>    <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)                   
{                                                                     
  uint32_t device;                                                    
  for (device = 0; device < fd->device_count; device++)               
 8004d78:	29 63 00 30 	lw r3,(r11+48)                                 <== NOT EXECUTED
 8004d7c:	54 6c ff ea 	bgu r3,r12,8004d24 <rtems_fdisk_ioctl+0x450>   <== NOT EXECUTED
 8004d80:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 8004d84:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
    for (device = 0; device < fd->device_count; device++)             
    {                                                                 
      if (!fd->devices[device].segments)                              
        return ENOMEM;                                                
                                                                      
      ret = rtems_fdisk_recover_block_mappings (fd);                  
 8004d88:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
                                                                      
  ret = rtems_fdisk_erase_flash (fd);                                 
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
 8004d8c:	54 6c 02 03 	bgu r3,r12,8005598 <rtems_fdisk_ioctl+0xcc4>   <== NOT EXECUTED
 8004d90:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
 8004d94:	5a 01 00 00 	sw (r16+0),r1                                  <== NOT EXECUTED
        break;                                                        
 8004d98:	e3 ff ff 71 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
                                                                      
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
 8004d9c:	f8 00 7a ea 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8004da0:	2b 82 00 68 	lw r2,(sp+104)                                 <== NOT EXECUTED
 8004da4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
 8004da8:	2b 83 00 64 	lw r3,(sp+100)                                 <== NOT EXECUTED
 8004dac:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8004db0:	b4 23 08 00 	add r1,r1,r3                                   <== NOT EXECUTED
 8004db4:	fb ff fc e0 	calli 8004134 <rtems_fdisk_compact>            <== NOT EXECUTED
 8004db8:	59 61 00 00 	sw (r11+0),r1                                  <== NOT EXECUTED
        break;                                                        
 8004dbc:	e3 ff ff 68 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
 8004dc0:	f8 00 7a e1 	calli 8023944 <__errno>                        
 8004dc4:	5b 81 00 74 	sw (sp+116),r1                                 
 8004dc8:	2b 81 00 68 	lw r1,(sp+104)                                 
 8004dcc:	2b 82 00 64 	lw r2,(sp+100)                                 
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
                                                                      
  rtems_fdisk_printf (fd,                                             
 8004dd0:	78 05 08 03 	mvhi r5,0x803                                  
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
 8004dd4:	28 2d 00 00 	lw r13,(r1+0)                                  
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004dd8:	34 0b 00 00 	mvi r11,0                                      
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
 8004ddc:	b5 a2 68 00 	add r13,r13,r2                                 
 */                                                                   
static int                                                            
rtems_fdisk_print_status (rtems_flashdisk* fd)                        
{                                                                     
#if RTEMS_FDISK_TRACE                                                 
  uint32_t current_info_level = fd->info_level;                       
 8004de0:	29 a1 00 6c 	lw r1,(r13+108)                                
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
                                                                      
  rtems_fdisk_printf (fd,                                             
 8004de4:	29 a4 00 04 	lw r4,(r13+4)                                  
 8004de8:	29 a3 00 00 	lw r3,(r13+0)                                  
 8004dec:	b8 a0 10 00 	mv r2,r5                                       
  uint32_t current_info_level = fd->info_level;                       
  uint32_t total;                                                     
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
 8004df0:	34 05 00 03 	mvi r5,3                                       
 8004df4:	59 a5 00 6c 	sw (r13+108),r5                                
 */                                                                   
static int                                                            
rtems_fdisk_print_status (rtems_flashdisk* fd)                        
{                                                                     
#if RTEMS_FDISK_TRACE                                                 
  uint32_t current_info_level = fd->info_level;                       
 8004df8:	5b 81 00 78 	sw (sp+120),r1                                 
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
                                                                      
  rtems_fdisk_printf (fd,                                             
 8004dfc:	38 42 8b 70 	ori r2,r2,0x8b70                               
 8004e00:	b9 a0 08 00 	mv r1,r13                                      
 8004e04:	fb ff f8 90 	calli 8003044 <rtems_fdisk_printf>             
                      "Flash Disk Driver Status : %d.%d", fd->major, fd->minor);
                                                                      
  rtems_fdisk_printf (fd, "Block count\t%d", fd->block_count);        
 8004e08:	78 04 08 03 	mvhi r4,0x803                                  
 8004e0c:	29 a3 00 1c 	lw r3,(r13+28)                                 
 8004e10:	b8 80 10 00 	mv r2,r4                                       
 8004e14:	38 42 8b 94 	ori r2,r2,0x8b94                               
 8004e18:	b9 a0 08 00 	mv r1,r13                                      
 8004e1c:	fb ff f8 8a 	calli 8003044 <rtems_fdisk_printf>             
  rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);  
 8004e20:	78 04 08 03 	mvhi r4,0x803                                  
 8004e24:	29 a3 00 20 	lw r3,(r13+32)                                 
 8004e28:	b8 80 10 00 	mv r2,r4                                       
 8004e2c:	38 42 8b a4 	ori r2,r2,0x8ba4                               
 8004e30:	b9 a0 08 00 	mv r1,r13                                      
 8004e34:	fb ff f8 84 	calli 8003044 <rtems_fdisk_printf>             
  rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
 8004e38:	78 04 08 03 	mvhi r4,0x803                                  
 8004e3c:	29 a3 00 24 	lw r3,(r13+36)                                 
 8004e40:	b8 80 10 00 	mv r2,r4                                       
 8004e44:	38 42 8b b8 	ori r2,r2,0x8bb8                               
 8004e48:	b9 a0 08 00 	mv r1,r13                                      
 8004e4c:	fb ff f8 7e 	calli 8003044 <rtems_fdisk_printf>             
  rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);        
 8004e50:	78 04 08 03 	mvhi r4,0x803                                  
 8004e54:	29 a3 00 70 	lw r3,(r13+112)                                
 8004e58:	b8 80 10 00 	mv r2,r4                                       
 8004e5c:	38 42 8b d0 	ori r2,r2,0x8bd0                               
 8004e60:	b9 a0 08 00 	mv r1,r13                                      
 8004e64:	fb ff f8 78 	calli 8003044 <rtems_fdisk_printf>             
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004e68:	29 a2 00 34 	lw r2,(r13+52)                                 
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004e6c:	44 40 00 04 	be r2,r0,8004e7c <rtems_fdisk_ioctl+0x5a8>     <== NEVER TAKEN
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004e70:	28 42 00 00 	lw r2,(r2+0)                                   
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004e74:	35 6b 00 01 	addi r11,r11,1                                 
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004e78:	5c 40 ff fe 	bne r2,r0,8004e70 <rtems_fdisk_ioctl+0x59c>    <== NEVER TAKEN
  rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);  
  rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
  rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);        
  count = rtems_fdisk_segment_count_queue (&fd->available);           
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
 8004e7c:	78 03 08 03 	mvhi r3,0x803                                  
 8004e80:	29 a4 00 3c 	lw r4,(r13+60)                                 
 8004e84:	b8 60 10 00 	mv r2,r3                                       
 8004e88:	38 42 8b e0 	ori r2,r2,0x8be0                               
 8004e8c:	b9 a0 08 00 	mv r1,r13                                      
 8004e90:	b9 60 18 00 	mv r3,r11                                      
 8004e94:	fb ff f8 6c 	calli 8003044 <rtems_fdisk_printf>             
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004e98:	29 a2 00 40 	lw r2,(r13+64)                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004e9c:	34 05 00 00 	mvi r5,0                                       
                                                                      
  while (sc)                                                          
 8004ea0:	44 40 00 04 	be r2,r0,8004eb0 <rtems_fdisk_ioctl+0x5dc>     <== NEVER TAKEN
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004ea4:	28 42 00 00 	lw r2,(r2+0)                                   
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004ea8:	34 a5 00 01 	addi r5,r5,1                                   
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004eac:	5c 40 ff fe 	bne r2,r0,8004ea4 <rtems_fdisk_ioctl+0x5d0>    
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
                      count, rtems_fdisk_segment_queue_count (&fd->available));
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
 8004eb0:	78 03 08 03 	mvhi r3,0x803                                  
 8004eb4:	29 a4 00 48 	lw r4,(r13+72)                                 
 8004eb8:	b8 60 10 00 	mv r2,r3                                       
 8004ebc:	38 42 8b fc 	ori r2,r2,0x8bfc                               
 8004ec0:	b8 a0 18 00 	mv r3,r5                                       
 8004ec4:	b9 a0 08 00 	mv r1,r13                                      
  count = rtems_fdisk_segment_count_queue (&fd->available);           
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
                      count, rtems_fdisk_segment_queue_count (&fd->available));
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
 8004ec8:	b4 ab 58 00 	add r11,r5,r11                                 
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
 8004ecc:	fb ff f8 5e 	calli 8003044 <rtems_fdisk_printf>             
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004ed0:	29 a2 00 4c 	lw r2,(r13+76)                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004ed4:	34 05 00 00 	mvi r5,0                                       
                                                                      
  while (sc)                                                          
 8004ed8:	44 40 00 04 	be r2,r0,8004ee8 <rtems_fdisk_ioctl+0x614>     <== ALWAYS TAKEN
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004edc:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004ee0:	34 a5 00 01 	addi r5,r5,1                                   <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004ee4:	5c 40 ff fe 	bne r2,r0,8004edc <rtems_fdisk_ioctl+0x608>    <== NOT EXECUTED
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
                      count, rtems_fdisk_segment_queue_count (&fd->used));
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
 8004ee8:	78 03 08 03 	mvhi r3,0x803                                  
 8004eec:	29 a4 00 54 	lw r4,(r13+84)                                 
 8004ef0:	b8 60 10 00 	mv r2,r3                                       
 8004ef4:	38 42 8c 14 	ori r2,r2,0x8c14                               
 8004ef8:	b8 a0 18 00 	mv r3,r5                                       
 8004efc:	b9 a0 08 00 	mv r1,r13                                      
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
                      count, rtems_fdisk_segment_queue_count (&fd->used));
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
 8004f00:	b5 65 58 00 	add r11,r11,r5                                 
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
 8004f04:	fb ff f8 50 	calli 8003044 <rtems_fdisk_printf>             
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004f08:	29 a2 00 58 	lw r2,(r13+88)                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
 8004f0c:	34 05 00 00 	mvi r5,0                                       
                                                                      
  while (sc)                                                          
 8004f10:	44 40 00 04 	be r2,r0,8004f20 <rtems_fdisk_ioctl+0x64c>     <== ALWAYS TAKEN
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8004f14:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8004f18:	34 a5 00 01 	addi r5,r5,1                                   <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8004f1c:	5c 40 ff fe 	bne r2,r0,8004f14 <rtems_fdisk_ioctl+0x640>    <== NOT EXECUTED
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
                      count, rtems_fdisk_segment_queue_count (&fd->erase));
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
 8004f20:	29 a4 00 60 	lw r4,(r13+96)                                 
 8004f24:	78 03 08 03 	mvhi r3,0x803                                  
 8004f28:	b8 60 10 00 	mv r2,r3                                       
 8004f2c:	b9 a0 08 00 	mv r1,r13                                      
 8004f30:	b8 a0 18 00 	mv r3,r5                                       
 8004f34:	38 42 8c 2c 	ori r2,r2,0x8c2c                               
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
                      count, rtems_fdisk_segment_queue_count (&fd->erase));
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
 8004f38:	b5 65 58 00 	add r11,r11,r5                                 
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
 8004f3c:	fb ff f8 42 	calli 8003044 <rtems_fdisk_printf>             
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
 8004f40:	29 a3 00 30 	lw r3,(r13+48)                                 
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
 8004f44:	34 04 00 00 	mvi r4,0                                       
  for (device = 0; device < fd->device_count; device++)               
 8004f48:	44 60 00 08 	be r3,r0,8004f68 <rtems_fdisk_ioctl+0x694>     <== NEVER TAKEN
 8004f4c:	29 a6 00 2c 	lw r6,(r13+44)                                 
 8004f50:	34 02 00 00 	mvi r2,0                                       
    count += fd->devices[device].segment_count;                       
 8004f54:	28 c1 00 04 	lw r1,(r6+4)                                   
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
 8004f58:	34 42 00 01 	addi r2,r2,1                                   
 8004f5c:	34 c6 00 0c 	addi r6,r6,12                                  
    count += fd->devices[device].segment_count;                       
 8004f60:	b4 81 20 00 	add r4,r4,r1                                   
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
 8004f64:	54 62 ff fc 	bgu r3,r2,8004f54 <rtems_fdisk_ioctl+0x680>    <== NEVER TAKEN
    count += fd->devices[device].segment_count;                       
                                                                      
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
 8004f68:	78 05 08 03 	mvhi r5,0x803                                  
 8004f6c:	38 a5 87 4c 	ori r5,r5,0x874c                               
 8004f70:	45 64 00 b8 	be r11,r4,8005250 <rtems_fdisk_ioctl+0x97c>    
 8004f74:	78 03 08 03 	mvhi r3,0x803                                  
 8004f78:	b8 60 10 00 	mv r2,r3                                       
 8004f7c:	38 42 8c 44 	ori r2,r2,0x8c44                               
 8004f80:	b9 60 18 00 	mv r3,r11                                      
 8004f84:	b9 a0 08 00 	mv r1,r13                                      
 8004f88:	fb ff f8 2f 	calli 8003044 <rtems_fdisk_printf>             
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
 8004f8c:	29 a3 00 30 	lw r3,(r13+48)                                 
 8004f90:	78 04 08 03 	mvhi r4,0x803                                  
 8004f94:	b8 80 10 00 	mv r2,r4                                       
 8004f98:	b9 a0 08 00 	mv r1,r13                                      
 8004f9c:	38 42 8c 60 	ori r2,r2,0x8c60                               
 8004fa0:	fb ff f8 29 	calli 8003044 <rtems_fdisk_printf>             
                                                                      
  for (device = 0; device < fd->device_count; device++)               
 8004fa4:	29 a3 00 30 	lw r3,(r13+48)                                 
 8004fa8:	44 60 00 77 	be r3,r0,8005184 <rtems_fdisk_ioctl+0x8b0>     <== NEVER TAKEN
 8004fac:	78 03 08 03 	mvhi r3,0x803                                  
 8004fb0:	78 02 08 03 	mvhi r2,0x803                                  
 8004fb4:	5b 83 00 70 	sw (sp+112),r3                                 
 8004fb8:	38 42 8c 70 	ori r2,r2,0x8c70                               
 8004fbc:	5b 82 00 6c 	sw (sp+108),r2                                 
 8004fc0:	2b 82 00 70 	lw r2,(sp+112)                                 
 8004fc4:	78 01 08 03 	mvhi r1,0x803                                  
                                                                      
        for (block = 0; block < fd->block_count; block++)             
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
              (fd->blocks[block].page == page) && !is_active)         
            rtems_fdisk_printf (fd,                                   
 8004fc8:	78 18 08 03 	mvhi r24,0x803                                 
 8004fcc:	3b 18 8c 94 	ori r24,r24,0x8c94                             
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
                                                                      
  for (device = 0; device < fd->device_count; device++)               
 8004fd0:	34 03 00 00 	mvi r3,0                                       
 8004fd4:	38 42 8c 80 	ori r2,r2,0x8c80                               
 8004fd8:	38 21 8c c4 	ori r1,r1,0x8cc4                               
                                                                      
        for (block = 0; block < fd->block_count; block++)             
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
              (fd->blocks[block].page == page) && !is_active)         
            rtems_fdisk_printf (fd,                                   
 8004fdc:	5b 98 00 7c 	sw (sp+124),r24                                
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
                                                                      
  for (device = 0; device < fd->device_count; device++)               
 8004fe0:	34 19 00 00 	mvi r25,0                                      
 8004fe4:	5b 82 00 70 	sw (sp+112),r2                                 
 8004fe8:	37 9b 00 a4 	addi fp,sp,164                                 
 8004fec:	5b 81 00 60 	sw (sp+96),r1                                  
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8004ff0:	34 13 ff ff 	mvi r19,-1                                     
                                                                      
        for (block = 0; block < fd->block_count; block++)             
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
              (fd->blocks[block].page == page) && !is_active)         
            rtems_fdisk_printf (fd,                                   
 8004ff4:	b8 60 c0 00 	mv r24,r3                                      
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t block;                                                   
    uint32_t seg;                                                     
                                                                      
    rtems_fdisk_printf (fd, " Device\t\t%ld", device);                
 8004ff8:	2b 82 00 6c 	lw r2,(sp+108)                                 
 8004ffc:	bb 00 18 00 	mv r3,r24                                      
 8005000:	b9 a0 08 00 	mv r1,r13                                      
 8005004:	fb ff f8 10 	calli 8003044 <rtems_fdisk_printf>             
    rtems_fdisk_printf (fd, "  Segment count\t%ld",                   
 8005008:	29 a3 00 2c 	lw r3,(r13+44)                                 
 800500c:	2b 82 00 70 	lw r2,(sp+112)                                 
 8005010:	b9 a0 08 00 	mv r1,r13                                      
 8005014:	b4 79 18 00 	add r3,r3,r25                                  
 8005018:	28 63 00 04 	lw r3,(r3+4)                                   
 800501c:	fb ff f8 0a 	calli 8003044 <rtems_fdisk_printf>             
                        fd->devices[device].segment_count);           
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
 8005020:	29 a1 00 2c 	lw r1,(r13+44)                                 
 8005024:	b4 39 08 00 	add r1,r1,r25                                  
 8005028:	28 23 00 04 	lw r3,(r1+4)                                   
 800502c:	44 60 00 52 	be r3,r0,8005174 <rtems_fdisk_ioctl+0x8a0>     <== NEVER TAKEN
 8005030:	5b 98 00 80 	sw (sp+128),r24                                
 8005034:	2b 98 00 7c 	lw r24,(sp+124)                                
 8005038:	34 17 00 00 	mvi r23,0                                      
 800503c:	34 16 00 00 	mvi r22,0                                      
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
 8005040:	28 2e 00 00 	lw r14,(r1+0)                                  
      uint32_t                 active = 0;                            
      uint32_t                 used = 0;                              
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
 8005044:	bb 60 18 00 	mv r3,fp                                       
 8005048:	b9 a0 08 00 	mv r1,r13                                      
    rtems_fdisk_printf (fd, "  Segment count\t%ld",                   
                        fd->devices[device].segment_count);           
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
 800504c:	b5 d7 70 00 	add r14,r14,r23                                
      uint32_t                 active = 0;                            
      uint32_t                 used = 0;                              
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
 8005050:	b9 c0 10 00 	mv r2,r14                                      
 8005054:	fb ff f7 97 	calli 8002eb0 <rtems_fdisk_queue_status>       
                                                                      
      for (page = 0; page < sc->pages; page++)                        
 8005058:	29 c5 00 14 	lw r5,(r14+20)                                 
 800505c:	44 a0 00 74 	be r5,r0,800522c <rtems_fdisk_ioctl+0x958>     <== NEVER TAKEN
 8005060:	29 a4 00 1c 	lw r4,(r13+28)                                 
 8005064:	34 10 00 00 	mvi r16,0                                      
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
      uint32_t                 used = 0;                              
      bool                     is_active = false;                     
 8005068:	34 14 00 00 	mvi r20,0                                      
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
 800506c:	b8 80 08 00 	mv r1,r4                                       
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
 8005070:	34 11 00 00 	mvi r17,0                                      
      uint32_t                 used = 0;                              
 8005074:	34 12 00 00 	mvi r18,0                                      
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
 8005078:	34 15 00 00 	mvi r21,0                                      
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
 800507c:	34 0f 00 00 	mvi r15,0                                      
 8005080:	b8 80 30 00 	mv r6,r4                                       
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
 8005084:	29 c4 00 10 	lw r4,(r14+16)                                 
 8005088:	b4 90 20 00 	add r4,r4,r16                                  
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 800508c:	28 83 00 00 	lw r3,(r4+0)                                   
 8005090:	44 73 00 60 	be r3,r19,8005210 <rtems_fdisk_ioctl+0x93c>    
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8005094:	2c 84 00 02 	lhu r4,(r4+2)                                  
                                                                      
      for (page = 0; page < sc->pages; page++)                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
          erased++;                                                   
        else if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
 8005098:	20 83 00 01 	andi r3,r4,0x1                                 
 800509c:	5c 60 00 05 	bne r3,r0,80050b0 <rtems_fdisk_ioctl+0x7dc>    <== NEVER TAKEN
                                                  RTEMS_FDISK_PAGE_ACTIVE))
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
 80050a0:	20 84 00 02 	andi r4,r4,0x2                                 
 80050a4:	20 84 ff ff 	andi r4,r4,0xffff                              
 80050a8:	5c 83 00 5e 	bne r4,r3,8005220 <rtems_fdisk_ioctl+0x94c>    
                                               RTEMS_FDISK_PAGE_USED))
            used++;                                                   
 80050ac:	36 52 00 01 	addi r18,r18,1                                 
            active++;                                                 
            is_active = true;                                         
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
 80050b0:	44 c0 00 0c 	be r6,r0,80050e0 <rtems_fdisk_ioctl+0x80c>     <== NEVER TAKEN
 80050b4:	34 0c 00 00 	mvi r12,0                                      
 80050b8:	34 0b 00 00 	mvi r11,0                                      
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
 80050bc:	29 a5 00 18 	lw r5,(r13+24)                                 
 80050c0:	b4 ac 28 00 	add r5,r5,r12                                  
 80050c4:	28 a1 00 00 	lw r1,(r5+0)                                   
            active++;                                                 
            is_active = true;                                         
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
 80050c8:	35 8c 00 08 	addi r12,r12,8                                 
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
 80050cc:	45 c1 00 47 	be r14,r1,80051e8 <rtems_fdisk_ioctl+0x914>    
            active++;                                                 
            is_active = true;                                         
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
 80050d0:	35 6b 00 01 	addi r11,r11,1                                 
 80050d4:	b8 c0 08 00 	mv r1,r6                                       
 80050d8:	54 cb ff f9 	bgu r6,r11,80050bc <rtems_fdisk_ioctl+0x7e8>   
 80050dc:	29 c5 00 14 	lw r5,(r14+20)                                 
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
 80050e0:	35 ef 00 01 	addi r15,r15,1                                 
 80050e4:	36 10 00 08 	addi r16,r16,8                                 
 80050e8:	54 af ff e7 	bgu r5,r15,8005084 <rtems_fdisk_ioctl+0x7b0>   
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
 80050ec:	34 09 00 00 	mvi r9,0                                       
 80050f0:	44 20 00 09 	be r1,r0,8005114 <rtems_fdisk_ioctl+0x840>     <== NEVER TAKEN
 80050f4:	29 a6 00 18 	lw r6,(r13+24)                                 
 80050f8:	34 04 00 00 	mvi r4,0                                       
      {                                                               
        if (fd->blocks[block].segment == sc)                          
 80050fc:	28 c2 00 00 	lw r2,(r6+0)                                   
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
 8005100:	34 84 00 01 	addi r4,r4,1                                   
 8005104:	34 c6 00 08 	addi r6,r6,8                                   
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
 8005108:	e5 c2 10 00 	cmpe r2,r14,r2                                 
 800510c:	b5 22 48 00 	add r9,r9,r2                                   
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
 8005110:	54 24 ff fb 	bgu r1,r4,80050fc <rtems_fdisk_ioctl+0x828>    
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
                          " u:%3ld/%3ld e:%3ld/%3ld br:%ld",          
                          seg, queues,                                
                          sc->pages, sc->pages_active, active,        
                          sc->pages_used, used, erased,               
                          sc->pages - (sc->pages_active +             
 8005114:	29 c6 00 1c 	lw r6,(r14+28)                                 
                                       sc->pages_used + sc->pages_bad),
 8005118:	29 c8 00 20 	lw r8,(r14+32)                                 
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
      }                                                               
                                                                      
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
 800511c:	5b 92 00 04 	sw (sp+4),r18                                  
 8005120:	5b 95 00 08 	sw (sp+8),r21                                  
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 8005124:	29 ca 00 24 	lw r10,(r14+36)                                
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
      }                                                               
                                                                      
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
 8005128:	2b 82 00 60 	lw r2,(sp+96)                                  
 800512c:	ba c0 18 00 	mv r3,r22                                      
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 8005130:	c8 0a 50 00 	sub r10,r0,r10                                 
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
                          " u:%3ld/%3ld e:%3ld/%3ld br:%ld",          
                          seg, queues,                                
                          sc->pages, sc->pages_active, active,        
                          sc->pages_used, used, erased,               
                          sc->pages - (sc->pages_active +             
 8005134:	c9 46 50 00 	sub r10,r10,r6                                 
                                       sc->pages_used + sc->pages_bad),
 8005138:	c9 48 50 00 	sub r10,r10,r8                                 
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
      }                                                               
                                                                      
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
 800513c:	b5 45 50 00 	add r10,r10,r5                                 
 8005140:	b9 a0 08 00 	mv r1,r13                                      
 8005144:	bb 60 20 00 	mv r4,fp                                       
 8005148:	ba 20 38 00 	mv r7,r17                                      
 800514c:	5b 8a 00 0c 	sw (sp+12),r10                                 
 8005150:	5b 89 00 10 	sw (sp+16),r9                                  
 8005154:	fb ff f7 bc 	calli 8003044 <rtems_fdisk_printf>             
                                                                      
    rtems_fdisk_printf (fd, " Device\t\t%ld", device);                
    rtems_fdisk_printf (fd, "  Segment count\t%ld",                   
                        fd->devices[device].segment_count);           
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
 8005158:	29 a1 00 2c 	lw r1,(r13+44)                                 
 800515c:	36 d6 00 01 	addi r22,r22,1                                 
 8005160:	36 f7 00 30 	addi r23,r23,48                                
 8005164:	b4 39 08 00 	add r1,r1,r25                                  
 8005168:	28 23 00 04 	lw r3,(r1+4)                                   
 800516c:	54 76 ff b5 	bgu r3,r22,8005040 <rtems_fdisk_ioctl+0x76c>   
 8005170:	2b 98 00 80 	lw r24,(sp+128)                                
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
                                                                      
  for (device = 0; device < fd->device_count; device++)               
 8005174:	29 a1 00 30 	lw r1,(r13+48)                                 
 8005178:	37 18 00 01 	addi r24,r24,1                                 
 800517c:	37 39 00 0c 	addi r25,r25,12                                
 8005180:	54 38 ff 9e 	bgu r1,r24,8004ff8 <rtems_fdisk_ioctl+0x724>   <== NEVER TAKEN
                          count);                                     
    }                                                                 
  }                                                                   
                                                                      
  {                                                                   
    rtems_fdisk_segment_ctl* sc = fd->used.head;                      
 8005184:	29 ab 00 40 	lw r11,(r13+64)                                
    int count = 0;                                                    
    rtems_fdisk_printf (fd, "Used List:");                            
 8005188:	78 03 08 03 	mvhi r3,0x803                                  
 800518c:	b8 60 10 00 	mv r2,r3                                       
 8005190:	b9 a0 08 00 	mv r1,r13                                      
 8005194:	38 42 8d 00 	ori r2,r2,0x8d00                               
 8005198:	fb ff f7 ab 	calli 8003044 <rtems_fdisk_printf>             
    while (sc)                                                        
 800519c:	45 60 00 0e 	be r11,r0,80051d4 <rtems_fdisk_ioctl+0x900>    <== NEVER TAKEN
 80051a0:	78 0c 08 03 	mvhi r12,0x803                                 
 80051a4:	34 0e 00 00 	mvi r14,0                                      
 80051a8:	39 8c 8d 0c 	ori r12,r12,0x8d0c                             
    {                                                                 
      rtems_fdisk_printf (fd, "  %3d %02d:%03d u:%3ld",               
 80051ac:	29 64 00 08 	lw r4,(r11+8)                                  
 80051b0:	29 65 00 0c 	lw r5,(r11+12)                                 
 80051b4:	29 66 00 20 	lw r6,(r11+32)                                 
 80051b8:	b9 c0 18 00 	mv r3,r14                                      
 80051bc:	b9 a0 08 00 	mv r1,r13                                      
 80051c0:	b9 80 10 00 	mv r2,r12                                      
 80051c4:	fb ff f7 a0 	calli 8003044 <rtems_fdisk_printf>             
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
 80051c8:	29 6b 00 00 	lw r11,(r11+0)                                 
      count++;                                                        
 80051cc:	35 ce 00 01 	addi r14,r14,1                                 
                                                                      
  {                                                                   
    rtems_fdisk_segment_ctl* sc = fd->used.head;                      
    int count = 0;                                                    
    rtems_fdisk_printf (fd, "Used List:");                            
    while (sc)                                                        
 80051d0:	5d 60 ff f7 	bne r11,r0,80051ac <rtems_fdisk_ioctl+0x8d8>   
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
      count++;                                                        
    }                                                                 
  }                                                                   
  fd->info_level = current_info_level;                                
 80051d4:	2b 83 00 78 	lw r3,(sp+120)                                 
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
 80051d8:	2b 81 00 74 	lw r1,(sp+116)                                 
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
      count++;                                                        
    }                                                                 
  }                                                                   
  fd->info_level = current_info_level;                                
 80051dc:	59 a3 00 6c 	sw (r13+108),r3                                
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
 80051e0:	58 20 00 00 	sw (r1+0),r0                                   
        break;                                                        
 80051e4:	e3 ff fe 5e 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
 80051e8:	28 a1 00 04 	lw r1,(r5+4)                                   
 80051ec:	5d e1 ff b9 	bne r15,r1,80050d0 <rtems_fdisk_ioctl+0x7fc>   
              (fd->blocks[block].page == page) && !is_active)         
 80051f0:	5e 80 ff b8 	bne r20,r0,80050d0 <rtems_fdisk_ioctl+0x7fc>   <== ALWAYS TAKEN
            rtems_fdisk_printf (fd,                                   
 80051f4:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 80051f8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80051fc:	bb 00 10 00 	mv r2,r24                                      <== NOT EXECUTED
 8005200:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 8005204:	fb ff f7 90 	calli 8003044 <rtems_fdisk_printf>             <== NOT EXECUTED
 8005208:	29 a6 00 1c 	lw r6,(r13+28)                                 <== NOT EXECUTED
 800520c:	e3 ff ff b1 	bi 80050d0 <rtems_fdisk_ioctl+0x7fc>           <== NOT EXECUTED
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8005210:	28 83 00 04 	lw r3,(r4+4)                                   
 8005214:	5c 73 ff a0 	bne r3,r19,8005094 <rtems_fdisk_ioctl+0x7c0>   <== NEVER TAKEN
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
          erased++;                                                   
 8005218:	36 b5 00 01 	addi r21,r21,1                                 
 800521c:	e3 ff ff a5 	bi 80050b0 <rtems_fdisk_ioctl+0x7dc>           
          if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
                                               RTEMS_FDISK_PAGE_USED))
            used++;                                                   
          else                                                        
          {                                                           
            active++;                                                 
 8005220:	36 31 00 01 	addi r17,r17,1                                 
            is_active = true;                                         
 8005224:	34 14 00 01 	mvi r20,1                                      
 8005228:	e3 ff ff a2 	bi 80050b0 <rtems_fdisk_ioctl+0x7dc>           
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
 800522c:	29 a1 00 1c 	lw r1,(r13+28)                                 <== NOT EXECUTED
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
 8005230:	34 11 00 00 	mvi r17,0                                      <== NOT EXECUTED
      uint32_t                 used = 0;                              
 8005234:	34 12 00 00 	mvi r18,0                                      <== NOT EXECUTED
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
 8005238:	34 15 00 00 	mvi r21,0                                      <== NOT EXECUTED
 800523c:	e3 ff ff ac 	bi 80050ec <rtems_fdisk_ioctl+0x818>           <== NOT EXECUTED
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
            (rtems_flashdisks[minor].device_count == 0))              
        {                                                             
          errno = ENODEV;                                             
 8005240:	f8 00 79 c1 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8005244:	34 03 00 13 	mvi r3,19                                      <== NOT EXECUTED
 8005248:	58 23 00 00 	sw (r1+0),r3                                   <== NOT EXECUTED
 800524c:	e3 ff fe 44 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
    count += fd->devices[device].segment_count;                       
                                                                      
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
 8005250:	78 05 08 03 	mvhi r5,0x803                                  
 8005254:	38 a5 87 48 	ori r5,r5,0x8748                               
 8005258:	e3 ff ff 47 	bi 8004f74 <rtems_fdisk_ioctl+0x6a0>           
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
 800525c:	f8 00 79 ba 	calli 8023944 <__errno>                        
 8005260:	5b 81 00 78 	sw (sp+120),r1                                 
 8005264:	2b 81 00 68 	lw r1,(sp+104)                                 
 8005268:	78 02 08 03 	mvhi r2,0x803                                  
 800526c:	5b 82 00 6c 	sw (sp+108),r2                                 
 8005270:	28 24 00 00 	lw r4,(r1+0)                                   
 8005274:	2b 82 00 64 	lw r2,(sp+100)                                 
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 8005278:	78 03 08 03 	mvhi r3,0x803                                  
 800527c:	78 01 08 03 	mvhi r1,0x803                                  
 8005280:	5b 83 00 70 	sw (sp+112),r3                                 
 8005284:	5b 81 00 74 	sw (sp+116),r1                                 
 8005288:	2b 83 00 6c 	lw r3,(sp+108)                                 
 800528c:	2b 81 00 70 	lw r1,(sp+112)                                 
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
 8005290:	b4 82 98 00 	add r19,r4,r2                                  
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 8005294:	2b 82 00 74 	lw r2,(sp+116)                                 
  bc = &fd->blocks[block];                                            
                                                                      
  if (!bc->segment)                                                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, "read-block: no segment mapping: %d", block);
 8005298:	78 17 08 03 	mvhi r23,0x803                                 
 800529c:	2b 6b 00 10 	lw r11,(fp+16)                                 
 80052a0:	38 63 87 54 	ori r3,r3,0x8754                               
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 80052a4:	38 21 83 30 	ori r1,r1,0x8330                               
 80052a8:	38 42 87 ac 	ori r2,r2,0x87ac                               
  bc = &fd->blocks[block];                                            
                                                                      
  if (!bc->segment)                                                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, "read-block: no segment mapping: %d", block);
 80052ac:	3a f7 87 88 	ori r23,r23,0x8788                             
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80052b0:	78 19 08 04 	mvhi r25,0x804                                 
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 80052b4:	78 18 08 03 	mvhi r24,0x803                                 
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
 80052b8:	34 12 00 00 	mvi r18,0                                      
 80052bc:	5b 83 00 6c 	sw (sp+108),r3                                 
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 80052c0:	5b 81 00 70 	sw (sp+112),r1                                 
 80052c4:	5b 82 00 74 	sw (sp+116),r2                                 
 80052c8:	5b 97 00 7c 	sw (sp+124),r23                                
 * @retval 0 Always.  The request done callback contains the status.  
 */                                                                   
static int                                                            
rtems_fdisk_read (rtems_flashdisk* fd, rtems_blkdev_request* req)     
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
 80052cc:	37 76 00 18 	addi r22,fp,24                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80052d0:	3b 39 e7 e0 	ori r25,r25,0xe7e0                             
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 80052d4:	3b 18 83 2c 	ori r24,r24,0x832c                             
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
 80052d8:	55 72 00 03 	bgu r11,r18,80052e4 <rtems_fdisk_ioctl+0xa10>  <== ALWAYS TAKEN
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
 80052dc:	34 02 00 00 	mvi r2,0                                       
 80052e0:	e0 00 00 1d 	bi 8005354 <rtems_fdisk_ioctl+0xa80>           
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
 80052e4:	2a c1 00 04 	lw r1,(r22+4)                                  
 80052e8:	2a 62 00 14 	lw r2,(r19+20)                                 
 80052ec:	fb ff f1 42 	calli 80017f4 <__udivsi3>                      
 80052f0:	b8 20 b8 00 	mv r23,r1                                      
    data = sg->buffer;                                                
 80052f4:	2a c3 00 08 	lw r3,(r22+8)                                  
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 80052f8:	44 20 00 a4 	be r1,r0,8005588 <rtems_fdisk_ioctl+0xcb4>     <== NEVER TAKEN
 80052fc:	34 11 00 00 	mvi r17,0                                      
 8005300:	5b 9b 00 60 	sw (sp+96),fp                                  
 8005304:	ba 40 d8 00 	mv fp,r18                                      
 8005308:	ba 20 90 00 	mv r18,r17                                     
 800530c:	b8 60 88 00 	mv r17,r3                                      
    {                                                                 
      ret = rtems_fdisk_read_block (fd, sg->block + b, data);         
 8005310:	2a c3 00 00 	lw r3,(r22+0)                                  
  rtems_fdisk_block_ctl*   bc;                                        
  rtems_fdisk_segment_ctl* sc;                                        
  rtems_fdisk_page_desc*   pd;                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "read-block:%d", block);                      
 8005314:	2b 82 00 6c 	lw r2,(sp+108)                                 
 8005318:	ba 60 08 00 	mv r1,r19                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    {                                                                 
      ret = rtems_fdisk_read_block (fd, sg->block + b, data);         
 800531c:	b6 43 a0 00 	add r20,r18,r3                                 
  rtems_fdisk_block_ctl*   bc;                                        
  rtems_fdisk_segment_ctl* sc;                                        
  rtems_fdisk_page_desc*   pd;                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "read-block:%d", block);                      
 8005320:	ba 80 18 00 	mv r3,r20                                      
 8005324:	fb ff f7 1b 	calli 8002f90 <rtems_fdisk_info>               
                                                                      
  /*                                                                  
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
 8005328:	2a 66 00 1c 	lw r6,(r19+28)                                 
 800532c:	2a 64 00 20 	lw r4,(r19+32)                                 
 8005330:	c8 c4 20 00 	sub r4,r6,r4                                   
 8005334:	54 94 00 0e 	bgu r4,r20,800536c <rtems_fdisk_ioctl+0xa98>   <== ALWAYS TAKEN
  {                                                                   
    rtems_fdisk_error ("read-block: block out of range: %d", block);  
 8005338:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 800533c:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 8005340:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 8005344:	38 21 87 64 	ori r1,r1,0x8764                               <== NOT EXECUTED
 8005348:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 800534c:	fb ff f7 d7 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
 8005350:	34 02 00 1b 	mvi r2,27                                      <== NOT EXECUTED
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
 8005354:	2b 64 00 04 	lw r4,(fp+4)                                   
 8005358:	bb 60 08 00 	mv r1,fp                                       
 800535c:	d8 80 00 00 	call r4                                        
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
 8005360:	2b 81 00 78 	lw r1,(sp+120)                                 
 8005364:	58 20 00 00 	sw (r1+0),r0                                   
              break;                                                  
 8005368:	e3 ff fd fd 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           
  {                                                                   
    rtems_fdisk_error ("read-block: block out of range: %d", block);  
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
 800536c:	b6 94 20 00 	add r4,r20,r20                                 
 8005370:	2a 66 00 18 	lw r6,(r19+24)                                 
 8005374:	b4 84 20 00 	add r4,r4,r4                                   
 8005378:	b4 84 20 00 	add r4,r4,r4                                   
 800537c:	b4 c4 a8 00 	add r21,r6,r4                                  
                                                                      
  if (!bc->segment)                                                   
 8005380:	2a b0 00 00 	lw r16,(r21+0)                                 
 8005384:	46 00 00 61 	be r16,r0,8005508 <rtems_fdisk_ioctl+0xc34>    
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
 8005388:	2a a6 00 04 	lw r6,(r21+4)                                  
 800538c:	2a 07 00 10 	lw r7,(r16+16)                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 8005390:	2a 0a 00 00 	lw r10,(r16+0)                                 
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
 8005394:	b4 c6 20 00 	add r4,r6,r6                                   
 8005398:	b4 84 20 00 	add r4,r4,r4                                   
 800539c:	b4 84 20 00 	add r4,r4,r4                                   
 80053a0:	b4 e4 78 00 	add r15,r7,r4                                  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
 80053a4:	2a 05 00 0c 	lw r5,(r16+12)                                 
 80053a8:	2a 04 00 08 	lw r4,(r16+8)                                  
 80053ac:	2a 07 00 14 	lw r7,(r16+20)                                 
 80053b0:	2a 08 00 1c 	lw r8,(r16+28)                                 
 80053b4:	2a 03 00 20 	lw r3,(r16+32)                                 
 80053b8:	2a 01 00 24 	lw r1,(r16+36)                                 
 80053bc:	2b 89 00 70 	lw r9,(sp+112)                                 
 80053c0:	45 40 00 02 	be r10,r0,80053c8 <rtems_fdisk_ioctl+0xaf4>    
 80053c4:	bb 00 48 00 	mv r9,r24                                      
 80053c8:	5b 83 00 04 	sw (sp+4),r3                                   
 80053cc:	5b 81 00 08 	sw (sp+8),r1                                   
 80053d0:	5b 89 00 0c 	sw (sp+12),r9                                  
 80053d4:	2d e9 00 02 	lhu r9,(r15+2)                                 
 80053d8:	2b 82 00 74 	lw r2,(sp+116)                                 
 80053dc:	ba 60 08 00 	mv r1,r19                                      
 80053e0:	5b 89 00 10 	sw (sp+16),r9                                  
 80053e4:	2d e9 00 00 	lhu r9,(r15+0)                                 
 80053e8:	ba 80 18 00 	mv r3,r20                                      
 80053ec:	5b 89 00 14 	sw (sp+20),r9                                  
 80053f0:	29 e9 00 04 	lw r9,(r15+4)                                  
 80053f4:	5b 89 00 18 	sw (sp+24),r9                                  
 80053f8:	fb ff f6 e6 	calli 8002f90 <rtems_fdisk_info>               
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80053fc:	2d e6 00 02 	lhu r6,(r15+2)                                 
                    sc->pages, sc->pages_active, sc->pages_used, sc->pages_bad,
                    sc->next ? "set" : "null",                        
                    pd->flags, pd->crc, pd->block);                   
#endif                                                                
                                                                      
  if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))  
 8005400:	20 c7 00 01 	andi r7,r6,0x1                                 
 8005404:	5c e0 00 0e 	bne r7,r0,800543c <rtems_fdisk_ioctl+0xb68>    <== NEVER TAKEN
 * only set a flag by changing it from 1 to 0.                        
 */                                                                   
static bool                                                           
rtems_fdisk_page_desc_flags_clear (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  return (pd->flags & flags) == flags ? true : false;                 
 8005408:	20 c6 00 02 	andi r6,r6,0x2                                 
                    pd->flags, pd->crc, pd->block);                   
#endif                                                                
                                                                      
  if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))  
  {                                                                   
    if (rtems_fdisk_page_desc_flags_clear (pd, RTEMS_FDISK_PAGE_USED))
 800540c:	34 03 00 02 	mvi r3,2                                       
 8005410:	44 c3 00 15 	be r6,r3,8005464 <rtems_fdisk_ioctl+0xb90>     <== ALWAYS TAKEN
      rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
                         block, cs, pd->crc);                         
    }                                                                 
    else                                                              
    {                                                                 
      rtems_fdisk_error ("read-block: block points to used page: %d: %d-%d-%d",
 8005414:	78 06 08 03 	mvhi r6,0x803                                  <== NOT EXECUTED
 8005418:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 800541c:	2a 03 00 08 	lw r3,(r16+8)                                  <== NOT EXECUTED
 8005420:	2a 04 00 0c 	lw r4,(r16+12)                                 <== NOT EXECUTED
 8005424:	2a a5 00 04 	lw r5,(r21+4)                                  <== NOT EXECUTED
 8005428:	b8 c0 08 00 	mv r1,r6                                       <== NOT EXECUTED
 800542c:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 8005430:	38 21 88 60 	ori r1,r1,0x8860                               <== NOT EXECUTED
 8005434:	fb ff f7 9d 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 8005438:	e3 ff ff c6 	bi 8005350 <rtems_fdisk_ioctl+0xa7c>           <== NOT EXECUTED
                         block, sc->device, sc->segment, bc->page);   
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    rtems_fdisk_error ("read-block: block page not active: %d: %d-%d-%d",
 800543c:	78 06 08 03 	mvhi r6,0x803                                  <== NOT EXECUTED
 8005440:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 8005444:	2a 03 00 08 	lw r3,(r16+8)                                  <== NOT EXECUTED
 8005448:	2a 04 00 0c 	lw r4,(r16+12)                                 <== NOT EXECUTED
 800544c:	2a a5 00 04 	lw r5,(r21+4)                                  <== NOT EXECUTED
 8005450:	b8 c0 08 00 	mv r1,r6                                       <== NOT EXECUTED
 8005454:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 8005458:	38 21 88 94 	ori r1,r1,0x8894                               <== NOT EXECUTED
 800545c:	fb ff f7 93 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 8005460:	e3 ff ff bc 	bi 8005350 <rtems_fdisk_ioctl+0xa7c>           <== NOT EXECUTED
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
 8005464:	2a a6 00 04 	lw r6,(r21+4)                                  
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
                               page * fd->block_size, buffer, fd->block_size);
 8005468:	2a 6b 00 14 	lw r11,(r19+20)                                
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
 800546c:	2a 07 00 18 	lw r7,(r16+24)                                 
rtems_fdisk_seg_read_page (const rtems_flashdisk*   fd,               
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
 8005470:	2a 0d 00 08 	lw r13,(r16+8)                                 
 8005474:	2a 0c 00 0c 	lw r12,(r16+12)                                
 8005478:	b4 e6 08 00 	add r1,r7,r6                                   
 800547c:	b9 60 10 00 	mv r2,r11                                      
 8005480:	fb ff f0 d1 	calli 80017c4 <__mulsi3>                       
 8005484:	b8 20 20 00 	mv r4,r1                                       
 8005488:	b9 a0 10 00 	mv r2,r13                                      
 800548c:	ba 60 08 00 	mv r1,r19                                      
 8005490:	b9 80 18 00 	mv r3,r12                                      
 8005494:	ba 20 28 00 	mv r5,r17                                      
 8005498:	b9 60 30 00 	mv r6,r11                                      
 800549c:	fb ff f9 46 	calli 80039b4 <rtems_fdisk_seg_read.clone.14>  
 80054a0:	b8 20 70 00 	mv r14,r1                                      
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
                                           bc->page + sc->pages_desc, buffer);
                                                                      
      if (ret)                                                        
 80054a4:	5c 20 00 26 	bne r1,r0,800553c <rtems_fdisk_ioctl+0xc68>    <== NEVER TAKEN
                          strerror (ret), ret);                       
#endif                                                                
        return ret;                                                   
      }                                                               
                                                                      
      cs = rtems_fdisk_page_checksum (buffer, fd->block_size);        
 80054a8:	2a 67 00 14 	lw r7,(r19+20)                                 
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
 80054ac:	38 06 ff ff 	mvu r6,0xffff                                  
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80054b0:	44 e1 00 0c 	be r7,r1,80054e0 <rtems_fdisk_ioctl+0xc0c>     <== NEVER TAKEN
 80054b4:	2b 29 00 00 	lw r9,(r25+0)                                  
 80054b8:	34 08 00 00 	mvi r8,0                                       
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 80054bc:	b6 28 08 00 	add r1,r17,r8                                  
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
 80054c0:	40 21 00 00 	lbu r1,(r1+0)                                  
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80054c4:	35 08 00 01 	addi r8,r8,1                                   
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
 80054c8:	98 c1 08 00 	xor r1,r6,r1                                   
 80054cc:	20 21 00 ff 	andi r1,r1,0xff                                
 80054d0:	b4 21 08 00 	add r1,r1,r1                                   
 80054d4:	b5 21 08 00 	add r1,r9,r1                                   
 80054d8:	2c 26 00 00 	lhu r6,(r1+0)                                  
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80054dc:	54 e8 ff f8 	bgu r7,r8,80054bc <rtems_fdisk_ioctl+0xbe8>    
        return ret;                                                   
      }                                                               
                                                                      
      cs = rtems_fdisk_page_checksum (buffer, fd->block_size);        
                                                                      
      if (cs == pd->crc)                                              
 80054e0:	2d e4 00 00 	lhu r4,(r15+0)                                 
 80054e4:	44 c4 00 12 	be r6,r4,800552c <rtems_fdisk_ioctl+0xc58>     <== ALWAYS TAKEN
        return 0;                                                     
                                                                      
      rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
 80054e8:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 80054ec:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 80054f0:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 80054f4:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 80054f8:	b8 c0 18 00 	mv r3,r6                                       <== NOT EXECUTED
 80054fc:	38 21 88 2c 	ori r1,r1,0x882c                               <== NOT EXECUTED
 8005500:	fb ff f7 6a 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 8005504:	e3 ff ff 93 	bi 8005350 <rtems_fdisk_ioctl+0xa7c>           <== NOT EXECUTED
  bc = &fd->blocks[block];                                            
                                                                      
  if (!bc->segment)                                                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, "read-block: no segment mapping: %d", block);
 8005508:	2b 82 00 7c 	lw r2,(sp+124)                                 
 800550c:	ba 80 18 00 	mv r3,r20                                      
 8005510:	ba 60 08 00 	mv r1,r19                                      
 8005514:	fb ff f6 9f 	calli 8002f90 <rtems_fdisk_info>               
#endif                                                                
    memset (buffer, 0xff, fd->block_size);                            
 8005518:	2a 63 00 14 	lw r3,(r19+20)                                 
 800551c:	ba 20 08 00 	mv r1,r17                                      
 8005520:	34 02 00 ff 	mvi r2,255                                     
 8005524:	f8 00 7d 41 	calli 8024a28 <memset>                         
 8005528:	2a 67 00 14 	lw r7,(r19+20)                                 
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 800552c:	36 52 00 01 	addi r18,r18,1                                 
 8005530:	52 57 00 13 	bgeu r18,r23,800557c <rtems_fdisk_ioctl+0xca8> <== ALWAYS TAKEN
 8005534:	b6 27 88 00 	add r17,r17,r7                                 <== NOT EXECUTED
 8005538:	e3 ff ff 76 	bi 8005310 <rtems_fdisk_ioctl+0xa3c>           <== NOT EXECUTED
 800553c:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
                                           bc->page + sc->pages_desc, buffer);
                                                                      
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd,                                         
 8005540:	2a 0d 00 08 	lw r13,(r16+8)                                 <== NOT EXECUTED
 8005544:	2a 0c 00 0c 	lw r12,(r16+12)                                <== NOT EXECUTED
 8005548:	2a ab 00 04 	lw r11,(r21+4)                                 <== NOT EXECUTED
 800554c:	f8 00 82 8e 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8005550:	78 07 08 03 	mvhi r7,0x803                                  <== NOT EXECUTED
 8005554:	b8 e0 10 00 	mv r2,r7                                       <== NOT EXECUTED
 8005558:	b8 20 30 00 	mv r6,r1                                       <== NOT EXECUTED
 800555c:	38 42 87 f4 	ori r2,r2,0x87f4                               <== NOT EXECUTED
 8005560:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 8005564:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 8005568:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 800556c:	b9 60 28 00 	mv r5,r11                                      <== NOT EXECUTED
 8005570:	b9 c0 38 00 	mv r7,r14                                      <== NOT EXECUTED
 8005574:	fb ff f6 87 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
 8005578:	e3 ff ff 76 	bi 8005350 <rtems_fdisk_ioctl+0xa7c>           <== NOT EXECUTED
 800557c:	bb 60 90 00 	mv r18,fp                                      
 8005580:	2b 9b 00 60 	lw fp,(sp+96)                                  
 8005584:	2b 6b 00 10 	lw r11,(fp+16)                                 
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
 8005588:	36 52 00 01 	addi r18,r18,1                                 
 800558c:	36 d6 00 10 	addi r22,r22,16                                
 8005590:	55 72 ff 55 	bgu r11,r18,80052e4 <rtems_fdisk_ioctl+0xa10>  <== NEVER TAKEN
 8005594:	e3 ff ff 52 	bi 80052dc <rtems_fdisk_ioctl+0xa08>           
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    {                                                                 
      if (!fd->devices[device].segments)                              
 8005598:	29 62 00 2c 	lw r2,(r11+44)                                 <== NOT EXECUTED
                                                                      
  ret = rtems_fdisk_erase_flash (fd);                                 
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
 800559c:	35 8c 00 01 	addi r12,r12,1                                 <== NOT EXECUTED
    {                                                                 
      if (!fd->devices[device].segments)                              
 80055a0:	b4 4d 10 00 	add r2,r2,r13                                  <== NOT EXECUTED
 80055a4:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
        return ENOMEM;                                                
                                                                      
      ret = rtems_fdisk_recover_block_mappings (fd);                  
 80055a8:	35 ad 00 0c 	addi r13,r13,12                                <== NOT EXECUTED
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    {                                                                 
      if (!fd->devices[device].segments)                              
 80055ac:	44 40 01 ac 	be r2,r0,8005c5c <rtems_fdisk_ioctl+0x1388>    <== NOT EXECUTED
        return ENOMEM;                                                
                                                                      
      ret = rtems_fdisk_recover_block_mappings (fd);                  
 80055b0:	fb ff fb b0 	calli 8004470 <rtems_fdisk_recover_block_mappings><== NOT EXECUTED
      if (ret)                                                        
 80055b4:	5c 20 fd f8 	bne r1,r0,8004d94 <rtems_fdisk_ioctl+0x4c0>    <== NOT EXECUTED
 80055b8:	29 63 00 30 	lw r3,(r11+48)                                 <== NOT EXECUTED
 80055bc:	e3 ff fd f3 	bi 8004d88 <rtems_fdisk_ioctl+0x4b4>           <== NOT EXECUTED
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
 80055c0:	f8 00 78 e1 	calli 8023944 <__errno>                        
 80055c4:	2b 82 00 68 	lw r2,(sp+104)                                 
 80055c8:	5b 81 00 a0 	sw (sp+160),r1                                 
 80055cc:	78 03 08 03 	mvhi r3,0x803                                  
 80055d0:	28 44 00 00 	lw r4,(r2+0)                                   
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 80055d4:	78 02 08 03 	mvhi r2,0x803                                  
 80055d8:	5b 82 00 78 	sw (sp+120),r2                                 
 80055dc:	78 02 08 03 	mvhi r2,0x803                                  
 80055e0:	5b 82 00 84 	sw (sp+132),r2                                 
 80055e4:	78 01 08 03 	mvhi r1,0x803                                  
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 80055e8:	78 02 08 03 	mvhi r2,0x803                                  
 80055ec:	5b 83 00 70 	sw (sp+112),r3                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 80055f0:	5b 81 00 74 	sw (sp+116),r1                                 
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 80055f4:	5b 82 00 90 	sw (sp+144),r2                                 
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 80055f8:	78 03 08 03 	mvhi r3,0x803                                  
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
 80055fc:	2b 82 00 64 	lw r2,(sp+100)                                 
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 8005600:	78 01 08 03 	mvhi r1,0x803                                  
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005604:	5b 83 00 7c 	sw (sp+124),r3                                 
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 8005608:	5b 81 00 80 	sw (sp+128),r1                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 800560c:	78 03 08 04 	mvhi r3,0x804                                  
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 8005610:	78 01 08 03 	mvhi r1,0x803                                  
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 8005614:	5b 83 00 88 	sw (sp+136),r3                                 
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 8005618:	5b 81 00 8c 	sw (sp+140),r1                                 
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 800561c:	78 03 08 03 	mvhi r3,0x803                                  
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 8005620:	78 01 08 03 	mvhi r1,0x803                                  
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 8005624:	5b 83 00 94 	sw (sp+148),r3                                 
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 8005628:	5b 81 00 98 	sw (sp+152),r1                                 
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 800562c:	34 03 00 01 	mvi r3,1                                       
 8005630:	2b 81 00 70 	lw r1,(sp+112)                                 
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
 8005634:	b4 82 c8 00 	add r25,r4,r2                                  
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 8005638:	2b 82 00 74 	lw r2,(sp+116)                                 
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 800563c:	5b 83 00 6c 	sw (sp+108),r3                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 8005640:	2b 83 00 78 	lw r3,(sp+120)                                 
 8005644:	38 21 88 c4 	ori r1,r1,0x88c4                               
 8005648:	38 42 83 30 	ori r2,r2,0x8330                               
 800564c:	5b 81 00 70 	sw (sp+112),r1                                 
 8005650:	5b 82 00 74 	sw (sp+116),r2                                 
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005654:	2b 81 00 7c 	lw r1,(sp+124)                                 
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 8005658:	2b 82 00 80 	lw r2,(sp+128)                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 800565c:	38 63 8a 44 	ori r3,r3,0x8a44                               
 8005660:	5b 83 00 78 	sw (sp+120),r3                                 
 8005664:	2b 83 00 84 	lw r3,(sp+132)                                 
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005668:	38 21 8a cc 	ori r1,r1,0x8acc                               
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 800566c:	38 42 8a 94 	ori r2,r2,0x8a94                               
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005670:	5b 81 00 7c 	sw (sp+124),r1                                 
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 8005674:	5b 82 00 80 	sw (sp+128),r2                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 8005678:	2b 81 00 88 	lw r1,(sp+136)                                 
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 800567c:	2b 82 00 8c 	lw r2,(sp+140)                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 8005680:	38 63 83 2c 	ori r3,r3,0x832c                               
 8005684:	5b 83 00 84 	sw (sp+132),r3                                 
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 8005688:	2b 83 00 90 	lw r3,(sp+144)                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 800568c:	38 21 e7 e0 	ori r1,r1,0xe7e0                               
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 8005690:	38 42 8a 1c 	ori r2,r2,0x8a1c                               
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 8005694:	5b 81 00 88 	sw (sp+136),r1                                 
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 8005698:	5b 82 00 8c 	sw (sp+140),r2                                 
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 800569c:	38 63 88 f8 	ori r3,r3,0x88f8                               
 80056a0:	2b 6b 00 10 	lw r11,(fp+16)                                 
 80056a4:	5b 83 00 90 	sw (sp+144),r3                                 
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 80056a8:	2b 81 00 94 	lw r1,(sp+148)                                 
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 80056ac:	2b 82 00 98 	lw r2,(sp+152)                                 
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 80056b0:	37 77 00 28 	addi r23,fp,40                                 
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 80056b4:	38 21 89 1c 	ori r1,r1,0x891c                               
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 80056b8:	38 42 89 c0 	ori r2,r2,0x89c0                               
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 80056bc:	5b 81 00 94 	sw (sp+148),r1                                 
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 80056c0:	5b 82 00 98 	sw (sp+152),r2                                 
 80056c4:	5b 9b 00 60 	sw (sp+96),fp                                  
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
 80056c8:	2b 81 00 6c 	lw r1,(sp+108)                                 
 80056cc:	34 23 ff ff 	addi r3,r1,-1                                  
 80056d0:	55 63 00 04 	bgu r11,r3,80056e0 <rtems_fdisk_ioctl+0xe0c>   
 80056d4:	2b 9b 00 60 	lw fp,(sp+96)                                  
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
 80056d8:	34 02 00 00 	mvi r2,0                                       
 80056dc:	e0 00 00 1c 	bi 800574c <rtems_fdisk_ioctl+0xe78>           
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
 80056e0:	2a e1 ff f4 	lw r1,(r23+-12)                                
 80056e4:	2b 22 00 14 	lw r2,(r25+20)                                 
 80056e8:	fb ff f0 43 	calli 80017f4 <__udivsi3>                      
 80056ec:	5b 81 00 9c 	sw (sp+156),r1                                 
    data = sg->buffer;                                                
 80056f0:	2a e3 ff f8 	lw r3,(r23+-8)                                 
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 80056f4:	44 20 01 48 	be r1,r0,8005c14 <rtems_fdisk_ioctl+0x1340>    <== NEVER TAKEN
                                &flash_flags, sizeof (flash_flags));  
    if (ret)                                                          
      return ret;                                                     
    if ((flash_flags & page_desc->flags) != page_desc->flags)         
    {                                                                 
      rtems_fdisk_error ("  seg-write-page-flags: %02d-%03d-%03d: "   
 80056f8:	78 1b 08 03 	mvhi fp,0x803                                  
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
 80056fc:	b8 60 b0 00 	mv r22,r3                                      
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 8005700:	34 18 00 00 	mvi r24,0                                      
                                &flash_flags, sizeof (flash_flags));  
    if (ret)                                                          
      return ret;                                                     
    if ((flash_flags & page_desc->flags) != page_desc->flags)         
    {                                                                 
      rtems_fdisk_error ("  seg-write-page-flags: %02d-%03d-%03d: "   
 8005704:	3b 7b 89 74 	ori fp,fp,0x8974                               
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    {                                                                 
      ret = rtems_fdisk_write_block (fd, sg->block + b, data);        
 8005708:	2a e3 ff f0 	lw r3,(r23+-16)                                
  rtems_fdisk_page_desc*   pd;                                        
  uint32_t                 page;                                      
  int                      ret;                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "write-block:%d", block);                     
 800570c:	2b 82 00 70 	lw r2,(sp+112)                                 
 8005710:	bb 20 08 00 	mv r1,r25                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    {                                                                 
      ret = rtems_fdisk_write_block (fd, sg->block + b, data);        
 8005714:	b7 03 a8 00 	add r21,r24,r3                                 
  rtems_fdisk_page_desc*   pd;                                        
  uint32_t                 page;                                      
  int                      ret;                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "write-block:%d", block);                     
 8005718:	ba a0 18 00 	mv r3,r21                                      
 800571c:	fb ff f6 1d 	calli 8002f90 <rtems_fdisk_info>               
                                                                      
  /*                                                                  
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
 8005720:	2b 27 00 1c 	lw r7,(r25+28)                                 
 8005724:	2b 26 00 20 	lw r6,(r25+32)                                 
 8005728:	c8 e6 30 00 	sub r6,r7,r6                                   
 800572c:	54 d5 00 0e 	bgu r6,r21,8005764 <rtems_fdisk_ioctl+0xe90>   <== ALWAYS TAKEN
  {                                                                   
    rtems_fdisk_error ("write-block: block out of range: %d", block); 
 8005730:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8005734:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 8005738:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 800573c:	38 21 88 d4 	ori r1,r1,0x88d4                               <== NOT EXECUTED
 8005740:	ba a0 10 00 	mv r2,r21                                      <== NOT EXECUTED
 8005744:	fb ff f6 d9 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
 8005748:	34 02 00 1b 	mvi r2,27                                      <== NOT EXECUTED
 800574c:	2b 64 00 04 	lw r4,(fp+4)                                   
 8005750:	bb 60 08 00 	mv r1,fp                                       
 8005754:	d8 80 00 00 	call r4                                        
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
 8005758:	2b 82 00 a0 	lw r2,(sp+160)                                 
 800575c:	58 40 00 00 	sw (r2+0),r0                                   
              break;                                                  
 8005760:	e3 ff fc ff 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           
  {                                                                   
    rtems_fdisk_error ("write-block: block out of range: %d", block); 
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
 8005764:	b6 b5 30 00 	add r6,r21,r21                                 
 8005768:	2b 27 00 18 	lw r7,(r25+24)                                 
 800576c:	b4 c6 30 00 	add r6,r6,r6                                   
 8005770:	b4 c6 30 00 	add r6,r6,r6                                   
 8005774:	b4 e6 90 00 	add r18,r7,r6                                  
                                                                      
  /*                                                                  
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
 8005778:	2a 4c 00 00 	lw r12,(r18+0)                                 
 800577c:	45 80 00 5d 	be r12,r0,80058f0 <rtems_fdisk_ioctl+0x101c>   
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
 8005780:	2a 51 00 04 	lw r17,(r18+4)                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 8005784:	29 83 00 08 	lw r3,(r12+8)                                  
 8005788:	29 84 00 0c 	lw r4,(r12+12)                                 
 800578c:	2b 82 00 90 	lw r2,(sp+144)                                 
 8005790:	ba 20 28 00 	mv r5,r17                                      
 8005794:	bb 20 08 00 	mv r1,r25                                      
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
 8005798:	29 94 00 10 	lw r20,(r12+16)                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
 800579c:	fb ff f5 fd 	calli 8002f90 <rtems_fdisk_info>               
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
 80057a0:	2a 48 00 04 	lw r8,(r18+4)                                  
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
                                 page * fd->block_size, buffer, fd->block_size);
 80057a4:	2b 30 00 14 	lw r16,(r25+20)                                
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
 80057a8:	29 81 00 18 	lw r1,(r12+24)                                 
 80057ac:	29 8d 00 08 	lw r13,(r12+8)                                 
                             uint32_t               device,           
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
 80057b0:	ba 00 10 00 	mv r2,r16                                      
 80057b4:	b4 28 08 00 	add r1,r1,r8                                   
 80057b8:	fb ff f0 03 	calli 80017c4 <__mulsi3>                       
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80057bc:	b5 ad 38 00 	add r7,r13,r13                                 
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
 80057c0:	29 8e 00 0c 	lw r14,(r12+12)                                
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80057c4:	2b 2b 00 2c 	lw r11,(r25+44)                                
 80057c8:	b4 ed 38 00 	add r7,r7,r13                                  
 80057cc:	b4 e7 38 00 	add r7,r7,r7                                   
                             uint32_t               device,           
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
 80057d0:	b8 20 98 00 	mv r19,r1                                      
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80057d4:	b4 e7 38 00 	add r7,r7,r7                                   
 80057d8:	34 02 00 30 	mvi r2,48                                      
 80057dc:	b9 c0 08 00 	mv r1,r14                                      
 80057e0:	b5 67 58 00 	add r11,r11,r7                                 
 80057e4:	fb ff ef f8 	calli 80017c4 <__mulsi3>                       
                        uint32_t               size)                  
{                                                                     
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
 80057e8:	29 68 00 08 	lw r8,(r11+8)                                  
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80057ec:	29 67 00 00 	lw r7,(r11+0)                                  
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 80057f0:	2b 82 00 94 	lw r2,(sp+148)                                 
                        uint32_t               size)                  
{                                                                     
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
 80057f4:	29 0f 00 08 	lw r15,(r8+8)                                  
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 80057f8:	b4 e1 38 00 	add r7,r7,r1                                   
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 80057fc:	b9 a0 18 00 	mv r3,r13                                      
 8005800:	b9 c0 20 00 	mv r4,r14                                      
 8005804:	ba 60 28 00 	mv r5,r19                                      
 8005808:	ba 00 30 00 	mv r6,r16                                      
 800580c:	bb 20 08 00 	mv r1,r25                                      
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 8005810:	28 eb 00 04 	lw r11,(r7+4)                                  
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
 8005814:	fb ff f6 0c 	calli 8003044 <rtems_fdisk_printf>             
                      device, segment, offset, size);                 
#endif                                                                
  return ops->verify (sd, device, segment, offset, buffer, size);     
 8005818:	29 e8 00 0c 	lw r8,(r15+12)                                 
 800581c:	b9 60 08 00 	mv r1,r11                                      
 8005820:	b9 a0 10 00 	mv r2,r13                                      
 8005824:	b9 c0 18 00 	mv r3,r14                                      
 8005828:	ba 60 20 00 	mv r4,r19                                      
 800582c:	ba c0 28 00 	mv r5,r22                                      
 8005830:	ba 00 30 00 	mv r6,r16                                      
 8005834:	d9 00 00 00 	call r8                                        
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
 8005838:	44 20 00 eb 	be r1,r0,8005be4 <rtems_fdisk_ioctl+0x1310>    
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
 800583c:	b6 31 30 00 	add r6,r17,r17                                 
 8005840:	b4 c6 30 00 	add r6,r6,r6                                   
 8005844:	b4 c6 30 00 	add r6,r6,r6                                   
 8005848:	b6 86 68 00 	add r13,r20,r6                                 
     * matches the flash device.                                      
     */                                                               
                                                                      
    rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);      
                                                                      
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
 800584c:	2a 4e 00 04 	lw r14,(r18+4)                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 8005850:	2d aa 00 02 	lhu r10,(r13+2)                                
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8005854:	2b 29 00 08 	lw r9,(r25+8)                                  
rtems_fdisk_seg_write_page_desc_flags (const rtems_flashdisk*       fd,
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
 8005858:	b5 ce 40 00 	add r8,r14,r14                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 800585c:	21 4a ff fd 	andi r10,r10,0xfffd                            
rtems_fdisk_seg_write_page_desc_flags (const rtems_flashdisk*       fd,
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
 8005860:	b5 08 40 00 	add r8,r8,r8                                   
 8005864:	b5 08 40 00 	add r8,r8,r8                                   
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 8005868:	0d aa 00 02 	sh (r13+2),r10                                 
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 800586c:	21 29 00 08 	andi r9,r9,0x8                                 
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
 8005870:	35 0f 00 02 	addi r15,r8,2                                  
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8005874:	45 20 00 b9 	be r9,r0,8005b58 <rtems_fdisk_ioctl+0x1284>    <== NEVER TAKEN
  {                                                                   
    uint16_t flash_flags;                                             
    int      ret;                                                     
    ret = rtems_fdisk_seg_read (fd, sc, offset,                       
 8005878:	29 82 00 08 	lw r2,(r12+8)                                  
 800587c:	29 83 00 0c 	lw r3,(r12+12)                                 
 8005880:	bb 20 08 00 	mv r1,r25                                      
 8005884:	b9 e0 20 00 	mv r4,r15                                      
 8005888:	37 85 00 aa 	addi r5,sp,170                                 
 800588c:	34 06 00 02 	mvi r6,2                                       
 8005890:	fb ff f8 49 	calli 80039b4 <rtems_fdisk_seg_read.clone.14>  
 8005894:	b8 20 58 00 	mv r11,r1                                      
                                &flash_flags, sizeof (flash_flags));  
    if (ret)                                                          
 8005898:	5c 20 00 b8 	bne r1,r0,8005b78 <rtems_fdisk_ioctl+0x12a4>   <== NEVER TAKEN
      return ret;                                                     
    if ((flash_flags & page_desc->flags) != page_desc->flags)         
 800589c:	2d a6 00 02 	lhu r6,(r13+2)                                 
 80058a0:	2f 85 00 aa 	lhu r5,(sp+170)                                
 80058a4:	a0 a6 38 00 	and r7,r5,r6                                   
 80058a8:	44 c7 00 ac 	be r6,r7,8005b58 <rtems_fdisk_ioctl+0x1284>    <== ALWAYS TAKEN
    {                                                                 
      rtems_fdisk_error ("  seg-write-page-flags: %02d-%03d-%03d: "   
 80058ac:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 80058b0:	29 83 00 0c 	lw r3,(r12+12)                                 <== NOT EXECUTED
 80058b4:	bb 60 08 00 	mv r1,fp                                       <== NOT EXECUTED
 80058b8:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 80058bc:	fb ff f6 7b 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                        strerror (ret), ret);                         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
 80058c0:	29 88 00 1c 	lw r8,(r12+28)                                 
      sc->pages_used++;                                               
 80058c4:	29 87 00 20 	lw r7,(r12+32)                                 
                        strerror (ret), ret);                         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
 80058c8:	35 08 ff ff 	addi r8,r8,-1                                  
      sc->pages_used++;                                               
 80058cc:	34 e7 00 01 	addi r7,r7,1                                   
                        strerror (ret), ret);                         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
 80058d0:	59 88 00 1c 	sw (r12+28),r8                                 
      sc->pages_used++;                                               
 80058d4:	59 87 00 20 	sw (r12+32),r7                                 
    /*                                                                
     * If possible reuse this segment. This will mean the segment     
     * needs to be removed from the available list and placed         
     * back if space is still available.                              
     */                                                               
    rtems_fdisk_queue_segment (fd, sc);                               
 80058d8:	bb 20 08 00 	mv r1,r25                                      
 80058dc:	b9 80 10 00 	mv r2,r12                                      
 80058e0:	fb ff f7 00 	calli 80034e0 <rtems_fdisk_queue_segment>      
    /*                                                                
     * If no background compacting then compact in the forground.     
     * If we compact we ignore the error as there is little we        
     * can do from here. The write may will work.                     
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT) == 0)            
 80058e4:	2b 27 00 08 	lw r7,(r25+8)                                  
 80058e8:	20 e7 00 02 	andi r7,r7,0x2                                 
 80058ec:	44 e0 00 cf 	be r7,r0,8005c28 <rtems_fdisk_ioctl+0x1354>    <== ALWAYS TAKEN
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80058f0:	2b 28 00 34 	lw r8,(r25+52)                                 
 80058f4:	b9 00 30 00 	mv r6,r8                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 80058f8:	45 00 00 08 	be r8,r0,8005918 <rtems_fdisk_ioctl+0x1044>    <== NEVER TAKEN
 80058fc:	34 07 00 00 	mvi r7,0                                       
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
 8005900:	28 c6 00 00 	lw r6,(r6+0)                                   
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
  {                                                                   
    count++;                                                          
 8005904:	34 e7 00 01 	addi r7,r7,1                                   
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
 8005908:	5c c0 ff fe 	bne r6,r0,8005900 <rtems_fdisk_ioctl+0x102c>   
  /*                                                                  
   * Is it time to compact the disk ?                                 
   *                                                                  
   * We override the background compaction configruation.             
   */                                                                 
  if (rtems_fdisk_segment_count_queue (&fd->available) <=             
 800590c:	2b 29 00 10 	lw r9,(r25+16)                                 
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8005910:	b9 00 a0 00 	mv r20,r8                                      
  /*                                                                  
   * Is it time to compact the disk ?                                 
   *                                                                  
   * We override the background compaction configruation.             
   */                                                                 
  if (rtems_fdisk_segment_count_queue (&fd->available) <=             
 8005914:	54 e9 00 12 	bgu r7,r9,800595c <rtems_fdisk_ioctl+0x1088>   
      fd->avail_compact_segs)                                         
    rtems_fdisk_compact (fd);                                         
 8005918:	bb 20 08 00 	mv r1,r25                                      
 800591c:	fb ff fa 06 	calli 8004134 <rtems_fdisk_compact>            
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8005920:	2b 34 00 34 	lw r20,(r25+52)                                
 8005924:	5e 80 00 0e 	bne r20,r0,800595c <rtems_fdisk_ioctl+0x1088>  <== ALWAYS TAKEN
  {                                                                   
    /*                                                                
     * If compacting is configured for the background do it now       
     * to see if we can get some space back.                          
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))                 
 8005928:	2b 27 00 08 	lw r7,(r25+8)                                  <== NOT EXECUTED
 800592c:	20 e7 00 02 	andi r7,r7,0x2                                 <== NOT EXECUTED
 8005930:	5c f4 00 07 	bne r7,r20,800594c <rtems_fdisk_ioctl+0x1078>  <== NOT EXECUTED
     */                                                               
    sc = rtems_fdisk_segment_queue_pop_head (&fd->available);         
                                                                      
    if (!sc)                                                          
    {                                                                 
      rtems_fdisk_error ("write-block: no available pages");          
 8005934:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8005938:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 800593c:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 8005940:	38 21 89 fc 	ori r1,r1,0x89fc                               <== NOT EXECUTED
 8005944:	fb ff f6 59 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 8005948:	e3 ff ff 80 	bi 8005748 <rtems_fdisk_ioctl+0xe74>           <== NOT EXECUTED
    /*                                                                
     * If compacting is configured for the background do it now       
     * to see if we can get some space back.                          
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))                 
      rtems_fdisk_compact (fd);                                       
 800594c:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8005950:	fb ff f9 f9 	calli 8004134 <rtems_fdisk_compact>            <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
 8005954:	2b 34 00 34 	lw r20,(r25+52)                                <== NOT EXECUTED
 8005958:	46 80 ff f7 	be r20,r0,8005934 <rtems_fdisk_ioctl+0x1060>   <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
 800595c:	2a 87 00 00 	lw r7,(r20+0)                                  
 8005960:	5b 27 00 34 	sw (r25+52),r7                                 
    if (!queue->head)                                                 
 8005964:	44 e0 00 93 	be r7,r0,8005bb0 <rtems_fdisk_ioctl+0x12dc>    
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 8005968:	2b 27 00 3c 	lw r7,(r25+60)                                 
      return ENOSPC;                                                  
    }                                                                 
  }                                                                   
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
 800596c:	2b 29 00 6c 	lw r9,(r25+108)                                
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
 8005970:	34 e7 ff ff 	addi r7,r7,-1                                  
 8005974:	5b 27 00 3c 	sw (r25+60),r7                                 
                                                                      
    sc->next = 0;                                                     
 8005978:	5a 80 00 00 	sw (r20+0),r0                                  
      return ENOSPC;                                                  
    }                                                                 
  }                                                                   
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
 800597c:	34 07 00 02 	mvi r7,2                                       
 8005980:	50 e9 00 0d 	bgeu r7,r9,80059b4 <rtems_fdisk_ioctl+0x10e0>  <== ALWAYS TAKEN
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
 8005984:	37 8b 00 a4 	addi r11,sp,164                                <== NOT EXECUTED
 8005988:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 800598c:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 8005990:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8005994:	fb ff f5 47 	calli 8002eb0 <rtems_fdisk_queue_status>       <== NOT EXECUTED
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
 8005998:	2b 82 00 8c 	lw r2,(sp+140)                                 <== NOT EXECUTED
 800599c:	2a 84 00 08 	lw r4,(r20+8)                                  <== NOT EXECUTED
 80059a0:	2a 85 00 0c 	lw r5,(r20+12)                                 <== NOT EXECUTED
 80059a4:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 80059a8:	ba a0 18 00 	mv r3,r21                                      <== NOT EXECUTED
 80059ac:	b9 60 30 00 	mv r6,r11                                      <== NOT EXECUTED
 80059b0:	fb ff f5 78 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
   * Find the next avaliable page in the segment.                     
   */                                                                 
                                                                      
  pd = sc->page_descriptors;                                          
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
 80059b4:	2a 87 00 14 	lw r7,(r20+20)                                 
                                                                      
  /*                                                                  
   * Find the next avaliable page in the segment.                     
   */                                                                 
                                                                      
  pd = sc->page_descriptors;                                          
 80059b8:	2a 8b 00 10 	lw r11,(r20+16)                                
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
 80059bc:	44 e0 00 5a 	be r7,r0,8005b24 <rtems_fdisk_ioctl+0x1250>    <== NEVER TAKEN
 80059c0:	34 0c 00 00 	mvi r12,0                                      
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 80059c4:	34 08 ff ff 	mvi r8,-1                                      
 80059c8:	e0 00 00 04 	bi 80059d8 <rtems_fdisk_ioctl+0x1104>          
   * Find the next avaliable page in the segment.                     
   */                                                                 
                                                                      
  pd = sc->page_descriptors;                                          
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
 80059cc:	35 8c 00 01 	addi r12,r12,1                                 
 80059d0:	51 87 00 55 	bgeu r12,r7,8005b24 <rtems_fdisk_ioctl+0x1250> <== NEVER TAKEN
 80059d4:	35 6b 00 08 	addi r11,r11,8                                 
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 80059d8:	29 61 00 00 	lw r1,(r11+0)                                  
 80059dc:	5c 28 ff fc 	bne r1,r8,80059cc <rtems_fdisk_ioctl+0x10f8>   
 80059e0:	29 61 00 04 	lw r1,(r11+4)                                  
 80059e4:	5c 28 ff fa 	bne r1,r8,80059cc <rtems_fdisk_ioctl+0x10f8>   <== NEVER TAKEN
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
  {                                                                   
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
 80059e8:	2b 2d 00 14 	lw r13,(r25+20)                                
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
 80059ec:	38 0f ff ff 	mvu r15,0xffff                                 
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 80059f0:	45 a0 00 0d 	be r13,r0,8005a24 <rtems_fdisk_ioctl+0x1150>   <== NEVER TAKEN
 80059f4:	2b 83 00 88 	lw r3,(sp+136)                                 
 80059f8:	34 08 00 00 	mvi r8,0                                       
 80059fc:	28 6e 00 00 	lw r14,(r3+0)                                  
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
 8005a00:	b6 c8 10 00 	add r2,r22,r8                                  
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
 8005a04:	40 41 00 00 	lbu r1,(r2+0)                                  
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 8005a08:	35 08 00 01 	addi r8,r8,1                                   
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
 8005a0c:	99 e1 08 00 	xor r1,r15,r1                                  
 8005a10:	20 21 00 ff 	andi r1,r1,0xff                                
 8005a14:	b4 21 08 00 	add r1,r1,r1                                   
 8005a18:	b5 c1 08 00 	add r1,r14,r1                                  
 8005a1c:	2c 2f 00 00 	lhu r15,(r1+0)                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
 8005a20:	55 a8 ff f8 	bgu r13,r8,8005a00 <rtems_fdisk_ioctl+0x112c>  
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 8005a24:	2d 68 00 02 	lhu r8,(r11+2)                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 8005a28:	2a 83 00 00 	lw r3,(r20+0)                                  
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
  {                                                                   
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
 8005a2c:	0d 6f 00 00 	sh (r11+0),r15                                 
      pd->block = block;                                              
 8005a30:	59 75 00 04 	sw (r11+4),r21                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 8005a34:	21 0e ff fe 	andi r14,r8,0xfffe                             
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
      pd->block = block;                                              
                                                                      
      bc->segment = sc;                                               
 8005a38:	5a 54 00 00 	sw (r18+0),r20                                 
      bc->page    = page;                                             
 8005a3c:	5a 4c 00 04 	sw (r18+4),r12                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 8005a40:	0d 6e 00 02 	sh (r11+2),r14                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
 8005a44:	2a 84 00 08 	lw r4,(r20+8)                                  
 8005a48:	2a 85 00 0c 	lw r5,(r20+12)                                 
 8005a4c:	2a 88 00 1c 	lw r8,(r20+28)                                 
 8005a50:	2a 8d 00 20 	lw r13,(r20+32)                                
 8005a54:	2a 8a 00 24 	lw r10,(r20+36)                                
 8005a58:	2b 89 00 74 	lw r9,(sp+116)                                 
 8005a5c:	44 60 00 02 	be r3,r0,8005a64 <rtems_fdisk_ioctl+0x1190>    <== ALWAYS TAKEN
 8005a60:	2b 89 00 84 	lw r9,(sp+132)                                 <== NOT EXECUTED
 8005a64:	2b 82 00 78 	lw r2,(sp+120)                                 
 8005a68:	ba a0 18 00 	mv r3,r21                                      
 8005a6c:	b9 80 30 00 	mv r6,r12                                      
 8005a70:	bb 20 08 00 	mv r1,r25                                      
 8005a74:	5b 8d 00 04 	sw (sp+4),r13                                  
 8005a78:	5b 8a 00 08 	sw (sp+8),r10                                  
 8005a7c:	5b 89 00 0c 	sw (sp+12),r9                                  
 8005a80:	5b 8e 00 10 	sw (sp+16),r14                                 
 8005a84:	5b 8f 00 14 	sw (sp+20),r15                                 
 8005a88:	5b 95 00 18 	sw (sp+24),r21                                 
 8005a8c:	fb ff f5 41 	calli 8002f90 <rtems_fdisk_info>               
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
 8005a90:	2a 88 00 18 	lw r8,(r20+24)                                 
 8005a94:	bb 20 08 00 	mv r1,r25                                      
 8005a98:	ba 80 10 00 	mv r2,r20                                      
 8005a9c:	b5 88 18 00 	add r3,r12,r8                                  
 8005aa0:	ba c0 20 00 	mv r4,r22                                      
 8005aa4:	fb ff f8 51 	calli 8003be8 <rtems_fdisk_seg_write_page>     
 8005aa8:	b8 20 68 00 	mv r13,r1                                      
      if (ret)                                                        
 8005aac:	44 20 00 43 	be r1,r0,8005bb8 <rtems_fdisk_ioctl+0x12e4>    <== ALWAYS TAKEN
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
 8005ab0:	2a 8b 00 08 	lw r11,(r20+8)                                 <== NOT EXECUTED
 8005ab4:	2a 8e 00 0c 	lw r14,(r20+12)                                <== NOT EXECUTED
 8005ab8:	f8 00 81 33 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8005abc:	2b 82 00 80 	lw r2,(sp+128)                                 <== NOT EXECUTED
 8005ac0:	b8 20 30 00 	mv r6,r1                                       <== NOT EXECUTED
 8005ac4:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005ac8:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8005acc:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 8005ad0:	b9 80 28 00 	mv r5,r12                                      <== NOT EXECUTED
 8005ad4:	b9 a0 38 00 	mv r7,r13                                      <== NOT EXECUTED
 8005ad8:	fb ff f5 2e 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
        {                                                             
          sc->pages_active++;                                         
        }                                                             
      }                                                               
                                                                      
      rtems_fdisk_queue_segment (fd, sc);                             
 8005adc:	bb 20 08 00 	mv r1,r25                                      
 8005ae0:	ba 80 10 00 	mv r2,r20                                      
 8005ae4:	fb ff f6 7f 	calli 80034e0 <rtems_fdisk_queue_segment>      
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
 8005ae8:	2b 26 00 28 	lw r6,(r25+40)                                 
 8005aec:	2b 23 00 24 	lw r3,(r25+36)                                 
 8005af0:	50 c3 00 06 	bgeu r6,r3,8005b08 <rtems_fdisk_ioctl+0x1234>  
    fd->starvations++;                                                
 8005af4:	2b 23 00 70 	lw r3,(r25+112)                                
      }                                                               
                                                                      
      rtems_fdisk_queue_segment (fd, sc);                             
                                                                      
      if (rtems_fdisk_is_erased_blocks_starvation (fd))               
        rtems_fdisk_compact (fd);                                     
 8005af8:	bb 20 08 00 	mv r1,r25                                      
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
    fd->starvations++;                                                
 8005afc:	34 63 00 01 	addi r3,r3,1                                   
 8005b00:	5b 23 00 70 	sw (r25+112),r3                                
      }                                                               
                                                                      
      rtems_fdisk_queue_segment (fd, sc);                             
                                                                      
      if (rtems_fdisk_is_erased_blocks_starvation (fd))               
        rtems_fdisk_compact (fd);                                     
 8005b04:	fb ff f9 8c 	calli 8004134 <rtems_fdisk_compact>            
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    {                                                                 
      ret = rtems_fdisk_write_block (fd, sg->block + b, data);        
      if (ret)                                                        
 8005b08:	5d a0 00 53 	bne r13,r0,8005c54 <rtems_fdisk_ioctl+0x1380>  <== NEVER TAKEN
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 8005b0c:	2b 81 00 9c 	lw r1,(sp+156)                                 
 8005b10:	37 18 00 01 	addi r24,r24,1                                 
 8005b14:	2b 23 00 14 	lw r3,(r25+20)                                 
 8005b18:	53 01 00 3d 	bgeu r24,r1,8005c0c <rtems_fdisk_ioctl+0x1338> <== ALWAYS TAKEN
 8005b1c:	b6 c3 b0 00 	add r22,r22,r3                                 <== NOT EXECUTED
 8005b20:	e3 ff fe fa 	bi 8005708 <rtems_fdisk_ioctl+0xe34>           <== NOT EXECUTED
                                                                      
      return ret;                                                     
    }                                                                 
  }                                                                   
                                                                      
  rtems_fdisk_error ("write-block: no erased page descs in segment: %d-%d",
 8005b24:	2a 82 00 08 	lw r2,(r20+8)                                  <== NOT EXECUTED
 8005b28:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 8005b2c:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 8005b30:	2a 83 00 0c 	lw r3,(r20+12)                                 <== NOT EXECUTED
 8005b34:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 8005b38:	38 21 8b 08 	ori r1,r1,0x8b08                               <== NOT EXECUTED
 8005b3c:	fb ff f5 db 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                     sc->device, sc->segment);                        
                                                                      
  sc->failed = true;                                                  
 8005b40:	34 05 00 01 	mvi r5,1                                       <== NOT EXECUTED
 8005b44:	5a 85 00 28 	sw (r20+40),r5                                 <== NOT EXECUTED
  rtems_fdisk_queue_segment (fd, sc);                                 
 8005b48:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8005b4c:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 8005b50:	fb ff f6 64 	calli 80034e0 <rtems_fdisk_queue_segment>      <== NOT EXECUTED
 8005b54:	e3 ff fe fd 	bi 8005748 <rtems_fdisk_ioctl+0xe74>           <== NOT EXECUTED
                         sc->device, sc->segment, page,               
                         flash_flags, page_desc->flags);              
      return ret;                                                     
    }                                                                 
  }                                                                   
  return rtems_fdisk_seg_write (fd, sc, offset,                       
 8005b58:	bb 20 08 00 	mv r1,r25                                      
 8005b5c:	b9 80 10 00 	mv r2,r12                                      
 8005b60:	b9 e0 18 00 	mv r3,r15                                      
 8005b64:	35 a4 00 02 	addi r4,r13,2                                  
 8005b68:	34 05 00 02 	mvi r5,2                                       
 8005b6c:	fb ff f5 64 	calli 80030fc <rtems_fdisk_seg_write>          
 8005b70:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);      
                                                                      
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
 8005b74:	44 20 ff 53 	be r1,r0,80058c0 <rtems_fdisk_ioctl+0xfec>     <== ALWAYS TAKEN
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
 8005b78:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8005b7c:	29 8d 00 08 	lw r13,(r12+8)                                 <== NOT EXECUTED
 8005b80:	29 8f 00 0c 	lw r15,(r12+12)                                <== NOT EXECUTED
 8005b84:	2a 4e 00 04 	lw r14,(r18+4)                                 <== NOT EXECUTED
 8005b88:	f8 00 80 ff 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8005b8c:	2b 82 00 98 	lw r2,(sp+152)                                 <== NOT EXECUTED
 8005b90:	b8 20 30 00 	mv r6,r1                                       <== NOT EXECUTED
 8005b94:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 8005b98:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8005b9c:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 8005ba0:	b9 c0 28 00 	mv r5,r14                                      <== NOT EXECUTED
 8005ba4:	b9 60 38 00 	mv r7,r11                                      <== NOT EXECUTED
 8005ba8:	fb ff f4 fa 	calli 8002f90 <rtems_fdisk_info>               <== NOT EXECUTED
 8005bac:	e3 ff ff 4b 	bi 80058d8 <rtems_fdisk_ioctl+0x1004>          <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    if (!queue->head)                                                 
      queue->tail = 0;                                                
 8005bb0:	5b 20 00 38 	sw (r25+56),r0                                 
 8005bb4:	e3 ff ff 6d 	bi 8005968 <rtems_fdisk_ioctl+0x1094>          
                          strerror (ret), ret);                       
#endif                                                                
      }                                                               
      else                                                            
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
 8005bb8:	bb 20 08 00 	mv r1,r25                                      
 8005bbc:	ba 80 10 00 	mv r2,r20                                      
 8005bc0:	b9 80 18 00 	mv r3,r12                                      
 8005bc4:	b9 60 20 00 	mv r4,r11                                      
 8005bc8:	fb ff f7 e6 	calli 8003b60 <rtems_fdisk_seg_write_page_desc>
 8005bcc:	b8 20 68 00 	mv r13,r1                                      
        if (ret)                                                      
 8005bd0:	5c 20 00 19 	bne r1,r0,8005c34 <rtems_fdisk_ioctl+0x1360>   <== NEVER TAKEN
                            strerror (ret), ret);                     
#endif                                                                
        }                                                             
        else                                                          
        {                                                             
          sc->pages_active++;                                         
 8005bd4:	2a 83 00 1c 	lw r3,(r20+28)                                 
 8005bd8:	34 63 00 01 	addi r3,r3,1                                   
 8005bdc:	5a 83 00 1c 	sw (r20+28),r3                                 
 8005be0:	e3 ff ff bf 	bi 8005adc <rtems_fdisk_ioctl+0x1208>          
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
                                     bc->page + sc->pages_desc, buffer) == 0)
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "write-block:%d=>%02d-%03d-%03d: page verified",
 8005be4:	78 07 08 03 	mvhi r7,0x803                                  
 8005be8:	29 84 00 08 	lw r4,(r12+8)                                  
 8005bec:	29 85 00 0c 	lw r5,(r12+12)                                 
 8005bf0:	2a 46 00 04 	lw r6,(r18+4)                                  
 8005bf4:	b8 e0 10 00 	mv r2,r7                                       
 8005bf8:	bb 20 08 00 	mv r1,r25                                      
 8005bfc:	38 42 89 44 	ori r2,r2,0x8944                               
 8005c00:	ba a0 18 00 	mv r3,r21                                      
 8005c04:	fb ff f4 e3 	calli 8002f90 <rtems_fdisk_info>               
 8005c08:	e3 ff ff c1 	bi 8005b0c <rtems_fdisk_ioctl+0x1238>          
 8005c0c:	2b 82 00 60 	lw r2,(sp+96)                                  
 8005c10:	28 4b 00 10 	lw r11,(r2+16)                                 
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
 8005c14:	2b 83 00 6c 	lw r3,(sp+108)                                 
 8005c18:	36 f7 00 10 	addi r23,r23,16                                
 8005c1c:	34 63 00 01 	addi r3,r3,1                                   
 8005c20:	5b 83 00 6c 	sw (sp+108),r3                                 
 8005c24:	e3 ff fe a9 	bi 80056c8 <rtems_fdisk_ioctl+0xdf4>           
     * If no background compacting then compact in the forground.     
     * If we compact we ignore the error as there is little we        
     * can do from here. The write may will work.                     
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT) == 0)            
      rtems_fdisk_compact (fd);                                       
 8005c28:	bb 20 08 00 	mv r1,r25                                      
 8005c2c:	fb ff f9 42 	calli 8004134 <rtems_fdisk_compact>            
 8005c30:	e3 ff ff 30 	bi 80058f0 <rtems_fdisk_ioctl+0x101c>          
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
 8005c34:	2a 8b 00 08 	lw r11,(r20+8)                                 <== NOT EXECUTED
 8005c38:	2a 8e 00 0c 	lw r14,(r20+12)                                <== NOT EXECUTED
 8005c3c:	2a 4c 00 04 	lw r12,(r18+4)                                 <== NOT EXECUTED
 8005c40:	f8 00 80 d1 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8005c44:	b8 20 30 00 	mv r6,r1                                       <== NOT EXECUTED
 8005c48:	2b 82 00 7c 	lw r2,(sp+124)                                 <== NOT EXECUTED
 8005c4c:	bb 20 08 00 	mv r1,r25                                      <== NOT EXECUTED
 8005c50:	e3 ff ff 9e 	bi 8005ac8 <rtems_fdisk_ioctl+0x11f4>          <== NOT EXECUTED
 8005c54:	2b 9b 00 60 	lw fp,(sp+96)                                  <== NOT EXECUTED
 8005c58:	e3 ff fe bc 	bi 8005748 <rtems_fdisk_ioctl+0xe74>           <== NOT EXECUTED
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    {                                                                 
      if (!fd->devices[device].segments)                              
        return ENOMEM;                                                
 8005c5c:	34 01 00 0c 	mvi r1,12                                      <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
 8005c60:	5a 01 00 00 	sw (r16+0),r1                                  <== NOT EXECUTED
 8005c64:	e3 ff fb be 	bi 8004b5c <rtems_fdisk_ioctl+0x288>           <== NOT EXECUTED
                                                                      

080034e0 <rtems_fdisk_queue_segment>: * @param fd The flash disk control table. * @param sc The segment control table to be reallocated */ static void rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc) {
 80034e0:	37 9c ff ec 	addi sp,sp,-20                                 
 80034e4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80034e8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80034ec:	5b 9d 00 0c 	sw (sp+12),ra                                  
 80034f0:	b8 40 58 00 	mv r11,r2                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
 80034f4:	28 42 00 28 	lw r2,(r2+40)                                  
 80034f8:	78 0a 08 03 	mvhi r10,0x803                                 
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
 80034fc:	b8 20 60 00 	mv r12,r1                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
 8003500:	29 63 00 08 	lw r3,(r11+8)                                  
 8003504:	29 64 00 0c 	lw r4,(r11+12)                                 
 8003508:	29 65 00 14 	lw r5,(r11+20)                                 
 800350c:	29 66 00 1c 	lw r6,(r11+28)                                 
 8003510:	29 67 00 20 	lw r7,(r11+32)                                 
 8003514:	29 68 00 24 	lw r8,(r11+36)                                 
 8003518:	39 4a a0 70 	ori r10,r10,0xa070                             
 800351c:	44 40 00 03 	be r2,r0,8003528 <rtems_fdisk_queue_segment+0x48><== ALWAYS TAKEN
 8003520:	78 0a 08 03 	mvhi r10,0x803                                 <== NOT EXECUTED
 8003524:	39 4a 83 24 	ori r10,r10,0x8324                             <== NOT EXECUTED
 8003528:	29 61 00 00 	lw r1,(r11+0)                                  
 800352c:	78 09 08 03 	mvhi r9,0x803                                  
 8003530:	39 29 83 30 	ori r9,r9,0x8330                               
 8003534:	44 20 00 03 	be r1,r0,8003540 <rtems_fdisk_queue_segment+0x60>
 8003538:	78 09 08 03 	mvhi r9,0x803                                  
 800353c:	39 29 83 2c 	ori r9,r9,0x832c                               
 8003540:	78 02 08 03 	mvhi r2,0x803                                  
 8003544:	b9 80 08 00 	mv r1,r12                                      
 8003548:	38 42 83 38 	ori r2,r2,0x8338                               
 800354c:	5b 8a 00 04 	sw (sp+4),r10                                  
 8003550:	5b 89 00 08 	sw (sp+8),r9                                   
 8003554:	fb ff fe 8f 	calli 8002f90 <rtems_fdisk_info>               
                                                                      
  /*                                                                  
   * If the segment has failed then check the failed queue and append 
   * if not failed.                                                   
   */                                                                 
  if (sc->failed)                                                     
 8003558:	29 61 00 28 	lw r1,(r11+40)                                 
 800355c:	44 20 00 12 	be r1,r0,80035a4 <rtems_fdisk_queue_segment+0xc4><== ALWAYS TAKEN
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8003560:	29 82 00 58 	lw r2,(r12+88)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8003564:	44 40 00 a3 	be r2,r0,80037f0 <rtems_fdisk_queue_segment+0x310><== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
 8003568:	45 62 00 0a 	be r11,r2,8003590 <rtems_fdisk_queue_segment+0xb0><== NOT EXECUTED
      return true;                                                    
    it = it->next;                                                    
 800356c:	28 42 00 00 	lw r2,(r2+0)                                   <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8003570:	5c 40 ff fe 	bne r2,r0,8003568 <rtems_fdisk_queue_segment+0x88><== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003574:	29 81 00 5c 	lw r1,(r12+92)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003578:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 800357c:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
      queue->tail       = sc;                                         
 8003580:	59 8b 00 5c 	sw (r12+92),r11                                <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003584:	29 81 00 60 	lw r1,(r12+96)                                 <== NOT EXECUTED
 8003588:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 800358c:	59 81 00 60 	sw (r12+96),r1                                 <== NOT EXECUTED
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
 8003590:	2b 9d 00 0c 	lw ra,(sp+12)                                  
 8003594:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003598:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800359c:	37 9c 00 14 	addi sp,sp,20                                  
 80035a0:	c3 a0 00 00 	ret                                            
static void                                                           
rtems_fdisk_segment_queue_remove (rtems_fdisk_segment_ctl_queue* queue,
                                  rtems_fdisk_segment_ctl*       sc)  
{                                                                     
  rtems_fdisk_segment_ctl* prev = 0;                                  
  rtems_fdisk_segment_ctl* it = queue->head;                          
 80035a4:	29 82 00 34 	lw r2,(r12+52)                                 
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80035a8:	44 41 00 07 	be r2,r1,80035c4 <rtems_fdisk_queue_segment+0xe4>
  {                                                                   
    if (sc == it)                                                     
 80035ac:	5d 62 00 04 	bne r11,r2,80035bc <rtems_fdisk_queue_segment+0xdc>
 80035b0:	e0 00 00 9c 	bi 8003820 <rtems_fdisk_queue_segment+0x340>   
 80035b4:	45 61 00 34 	be r11,r1,8003684 <rtems_fdisk_queue_segment+0x1a4><== NEVER TAKEN
 80035b8:	b8 20 10 00 	mv r2,r1                                       
      queue->count--;                                                 
      break;                                                          
    }                                                                 
                                                                      
    prev = it;                                                        
    it = it->next;                                                    
 80035bc:	28 41 00 00 	lw r1,(r2+0)                                   
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80035c0:	5c 20 ff fd 	bne r1,r0,80035b4 <rtems_fdisk_queue_segment+0xd4>
static void                                                           
rtems_fdisk_segment_queue_remove (rtems_fdisk_segment_ctl_queue* queue,
                                  rtems_fdisk_segment_ctl*       sc)  
{                                                                     
  rtems_fdisk_segment_ctl* prev = 0;                                  
  rtems_fdisk_segment_ctl* it = queue->head;                          
 80035c4:	29 82 00 40 	lw r2,(r12+64)                                 
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80035c8:	44 40 00 07 	be r2,r0,80035e4 <rtems_fdisk_queue_segment+0x104>
  {                                                                   
    if (sc == it)                                                     
 80035cc:	5d 62 00 04 	bne r11,r2,80035dc <rtems_fdisk_queue_segment+0xfc>
 80035d0:	e0 00 00 8f 	bi 800380c <rtems_fdisk_queue_segment+0x32c>   
 80035d4:	45 61 00 37 	be r11,r1,80036b0 <rtems_fdisk_queue_segment+0x1d0>
 80035d8:	b8 20 10 00 	mv r2,r1                                       
      queue->count--;                                                 
      break;                                                          
    }                                                                 
                                                                      
    prev = it;                                                        
    it = it->next;                                                    
 80035dc:	28 41 00 00 	lw r1,(r2+0)                                   
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80035e0:	5c 20 ff fd 	bne r1,r0,80035d4 <rtems_fdisk_queue_segment+0xf4>
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 80035e4:	29 61 00 1c 	lw r1,(r11+28)                                 
 80035e8:	29 63 00 20 	lw r3,(r11+32)                                 
 80035ec:	29 65 00 24 	lw r5,(r11+36)                                 
 80035f0:	29 62 00 14 	lw r2,(r11+20)                                 
 80035f4:	b4 61 20 00 	add r4,r3,r1                                   
 80035f8:	b4 85 28 00 	add r5,r4,r5                                   
   * If they are and the driver has been configured to background     
   * erase place the segment on the used queue. If not configured     
   * to background erase perform the erase now.                       
   *                                                                  
   */                                                                 
  if (rtems_fdisk_seg_pages_available (sc) == 0)                      
 80035fc:	44 45 00 3c 	be r2,r5,80036ec <rtems_fdisk_queue_segment+0x20c>
     * bit is cleared for that segment. When 32 erasers               
     * has occurred the page is re-written to the flash               
     * with all the counters updated with the number of               
     * bits cleared and all bits set back to 1.                       
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
 8003600:	29 83 00 34 	lw r3,(r12+52)                                 
                                                                      
    while (seg)                                                       
 8003604:	44 60 00 a1 	be r3,r0,8003888 <rtems_fdisk_queue_segment+0x3a8>
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
 8003608:	28 64 00 20 	lw r4,(r3+32)                                  
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 800360c:	28 67 00 1c 	lw r7,(r3+28)                                  
 8003610:	28 61 00 14 	lw r1,(r3+20)                                  
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
 8003614:	c8 04 20 00 	sub r4,r0,r4                                   
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8003618:	28 66 00 24 	lw r6,(r3+36)                                  
 800361c:	c8 87 20 00 	sub r4,r4,r7                                   
 8003620:	b4 81 08 00 	add r1,r4,r1                                   
 8003624:	c8 45 28 00 	sub r5,r2,r5                                   
 8003628:	c8 26 08 00 	sub r1,r1,r6                                   
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
    {                                                                 
      if (rtems_fdisk_seg_pages_available (sc) <                      
 800362c:	54 25 00 55 	bgu r1,r5,8003780 <rtems_fdisk_queue_segment+0x2a0>
 8003630:	b8 60 10 00 	mv r2,r3                                       
 8003634:	e0 00 00 0a 	bi 800365c <rtems_fdisk_queue_segment+0x17c>   
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
 8003638:	28 44 00 24 	lw r4,(r2+36)                                  
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 800363c:	28 47 00 1c 	lw r7,(r2+28)                                  
 8003640:	28 41 00 14 	lw r1,(r2+20)                                  
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
 8003644:	c8 04 20 00 	sub r4,r0,r4                                   
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8003648:	28 46 00 20 	lw r6,(r2+32)                                  
 800364c:	c8 87 20 00 	sub r4,r4,r7                                   
 8003650:	b4 81 08 00 	add r1,r4,r1                                   
 8003654:	c8 26 08 00 	sub r1,r1,r6                                   
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
    {                                                                 
      if (rtems_fdisk_seg_pages_available (sc) <                      
 8003658:	54 25 00 38 	bgu r1,r5,8003738 <rtems_fdisk_queue_segment+0x258><== NEVER TAKEN
          rtems_fdisk_seg_pages_available (seg))                      
        break;                                                        
      seg = seg->next;                                                
 800365c:	28 42 00 00 	lw r2,(r2+0)                                   
     * with all the counters updated with the number of               
     * bits cleared and all bits set back to 1.                       
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
 8003660:	5c 40 ff f6 	bne r2,r0,8003638 <rtems_fdisk_queue_segment+0x158>
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003664:	29 81 00 38 	lw r1,(r12+56)                                 
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003668:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 800366c:	58 2b 00 00 	sw (r1+0),r11                                  
      queue->tail       = sc;                                         
 8003670:	59 8b 00 38 	sw (r12+56),r11                                
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003674:	29 81 00 3c 	lw r1,(r12+60)                                 
 8003678:	34 21 00 01 	addi r1,r1,1                                   
 800367c:	59 81 00 3c 	sw (r12+60),r1                                 
 8003680:	e3 ff ff c4 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 8003684:	29 63 00 00 	lw r3,(r11+0)                                  <== NOT EXECUTED
        if (queue->tail == sc)                                        
 8003688:	29 81 00 38 	lw r1,(r12+56)                                 <== NOT EXECUTED
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 800368c:	58 43 00 00 	sw (r2+0),r3                                   <== NOT EXECUTED
        if (queue->tail == sc)                                        
 8003690:	45 61 00 56 	be r11,r1,80037e8 <rtems_fdisk_queue_segment+0x308><== NOT EXECUTED
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
      queue->count--;                                                 
 8003694:	29 81 00 3c 	lw r1,(r12+60)                                 
static void                                                           
rtems_fdisk_segment_queue_remove (rtems_fdisk_segment_ctl_queue* queue,
                                  rtems_fdisk_segment_ctl*       sc)  
{                                                                     
  rtems_fdisk_segment_ctl* prev = 0;                                  
  rtems_fdisk_segment_ctl* it = queue->head;                          
 8003698:	29 82 00 40 	lw r2,(r12+64)                                 
      {                                                               
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
 800369c:	59 60 00 00 	sw (r11+0),r0                                  
      queue->count--;                                                 
 80036a0:	34 21 ff ff 	addi r1,r1,-1                                  
 80036a4:	59 81 00 3c 	sw (r12+60),r1                                 
                                                                      
  /*                                                                  
   * Do not change sc->next as sc could be on another queue.          
   */                                                                 
                                                                      
  while (it)                                                          
 80036a8:	5c 40 ff c9 	bne r2,r0,80035cc <rtems_fdisk_queue_segment+0xec>
 80036ac:	e3 ff ff ce 	bi 80035e4 <rtems_fdisk_queue_segment+0x104>   
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 80036b0:	29 63 00 00 	lw r3,(r11+0)                                  
        if (queue->tail == sc)                                        
 80036b4:	29 81 00 44 	lw r1,(r12+68)                                 
        if (queue->head == 0)                                         
          queue->tail = 0;                                            
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
 80036b8:	58 43 00 00 	sw (r2+0),r3                                   
        if (queue->tail == sc)                                        
 80036bc:	45 61 00 49 	be r11,r1,80037e0 <rtems_fdisk_queue_segment+0x300><== ALWAYS TAKEN
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
      queue->count--;                                                 
 80036c0:	29 81 00 48 	lw r1,(r12+72)                                 
      {                                                               
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
 80036c4:	59 60 00 00 	sw (r11+0),r0                                  
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 80036c8:	29 63 00 20 	lw r3,(r11+32)                                 
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
      }                                                               
      sc->next = 0;                                                   
      queue->count--;                                                 
 80036cc:	34 21 ff ff 	addi r1,r1,-1                                  
 80036d0:	59 81 00 48 	sw (r12+72),r1                                 
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 80036d4:	29 61 00 1c 	lw r1,(r11+28)                                 
 80036d8:	29 65 00 24 	lw r5,(r11+36)                                 
 80036dc:	29 62 00 14 	lw r2,(r11+20)                                 
 80036e0:	b4 61 20 00 	add r4,r3,r1                                   
 80036e4:	b4 85 28 00 	add r5,r4,r5                                   
   * If they are and the driver has been configured to background     
   * erase place the segment on the used queue. If not configured     
   * to background erase perform the erase now.                       
   *                                                                  
   */                                                                 
  if (rtems_fdisk_seg_pages_available (sc) == 0)                      
 80036e8:	5c 45 ff c6 	bne r2,r5,8003600 <rtems_fdisk_queue_segment+0x120><== NEVER TAKEN
  {                                                                   
    if (sc->pages_active)                                             
 80036ec:	44 20 00 30 	be r1,r0,80037ac <rtems_fdisk_queue_segment+0x2cc><== NEVER TAKEN
      /*                                                              
       * Keep the used queue sorted by the most number of used        
       * pages. When we compact we want to move the pages into        
       * a new segment and cover more than one segment.               
       */                                                             
      rtems_fdisk_segment_ctl* seg = fd->used.head;                   
 80036f0:	29 82 00 40 	lw r2,(r12+64)                                 
                                                                      
      while (seg)                                                     
 80036f4:	44 40 00 6d 	be r2,r0,80038a8 <rtems_fdisk_queue_segment+0x3c8>
      {                                                               
        if (sc->pages_used > seg->pages_used)                         
 80036f8:	28 41 00 20 	lw r1,(r2+32)                                  
 80036fc:	54 61 00 5c 	bgu r3,r1,800386c <rtems_fdisk_queue_segment+0x38c>
 8003700:	b8 40 08 00 	mv r1,r2                                       
 8003704:	e0 00 00 03 	bi 8003710 <rtems_fdisk_queue_segment+0x230>   
 8003708:	28 24 00 20 	lw r4,(r1+32)                                  
 800370c:	54 64 00 4a 	bgu r3,r4,8003834 <rtems_fdisk_queue_segment+0x354>
          break;                                                      
        seg = seg->next;                                              
 8003710:	28 21 00 00 	lw r1,(r1+0)                                   
       * pages. When we compact we want to move the pages into        
       * a new segment and cover more than one segment.               
       */                                                             
      rtems_fdisk_segment_ctl* seg = fd->used.head;                   
                                                                      
      while (seg)                                                     
 8003714:	5c 20 ff fd 	bne r1,r0,8003708 <rtems_fdisk_queue_segment+0x228>
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003718:	29 81 00 44 	lw r1,(r12+68)                                 
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 800371c:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003720:	58 2b 00 00 	sw (r1+0),r11                                  
      queue->tail       = sc;                                         
 8003724:	59 8b 00 44 	sw (r12+68),r11                                
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003728:	29 81 00 48 	lw r1,(r12+72)                                 
 800372c:	34 21 00 01 	addi r1,r1,1                                   
 8003730:	59 81 00 48 	sw (r12+72),r1                                 
 8003734:	e3 ff ff 97 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
 8003738:	5c 62 00 03 	bne r3,r2,8003744 <rtems_fdisk_queue_segment+0x264><== NOT EXECUTED
 800373c:	e0 00 00 11 	bi 8003780 <rtems_fdisk_queue_segment+0x2a0>   <== NOT EXECUTED
 8003740:	44 62 00 11 	be r3,r2,8003784 <rtems_fdisk_queue_segment+0x2a4><== NOT EXECUTED
        *prev = sc;                                                   
        queue->count++;                                               
        return;                                                       
      }                                                               
                                                                      
      prev = &it->next;                                               
 8003744:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
      it = it->next;                                                  
 8003748:	28 63 00 00 	lw r3,(r3+0)                                   <== NOT EXECUTED
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
 800374c:	5c 60 ff fd 	bne r3,r0,8003740 <rtems_fdisk_queue_segment+0x260><== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003750:	29 81 00 3c 	lw r1,(r12+60)                                 <== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003754:	29 82 00 38 	lw r2,(r12+56)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003758:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 800375c:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003760:	58 4b 00 00 	sw (r2+0),r11                                  <== NOT EXECUTED
      queue->tail       = sc;                                         
 8003764:	59 8b 00 38 	sw (r12+56),r11                                <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003768:	59 81 00 3c 	sw (r12+60),r1                                 <== NOT EXECUTED
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
 800376c:	2b 9d 00 0c 	lw ra,(sp+12)                                  <== NOT EXECUTED
 8003770:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8003774:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8003778:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 800377c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                         rtems_fdisk_segment_ctl*       item,
                                         rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
 8003780:	35 81 00 34 	addi r1,r12,52                                 
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
        *prev = sc;                                                   
        queue->count++;                                               
 8003784:	29 82 00 3c 	lw r2,(r12+60)                                 
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
 8003788:	59 63 00 00 	sw (r11+0),r3                                  
        *prev = sc;                                                   
 800378c:	58 2b 00 00 	sw (r1+0),r11                                  
        queue->count++;                                               
 8003790:	34 41 00 01 	addi r1,r2,1                                   
 8003794:	59 81 00 3c 	sw (r12+60),r1                                 
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
 8003798:	2b 9d 00 0c 	lw ra,(sp+12)                                  
 800379c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80037a0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80037a4:	37 9c 00 14 	addi sp,sp,20                                  
 80037a8:	c3 a0 00 00 	ret                                            
      else                                                            
        rtems_fdisk_segment_queue_push_tail (&fd->used, sc);          
    }                                                                 
    else                                                              
    {                                                                 
      if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))                 
 80037ac:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 80037b0:	20 42 00 01 	andi r2,r2,0x1                                 <== NOT EXECUTED
 80037b4:	44 41 00 39 	be r2,r1,8003898 <rtems_fdisk_queue_segment+0x3b8><== NOT EXECUTED
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
 80037b8:	29 81 00 4c 	lw r1,(r12+76)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 80037bc:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
 80037c0:	44 20 00 10 	be r1,r0,8003800 <rtems_fdisk_queue_segment+0x320><== NOT EXECUTED
    {                                                                 
      queue->tail->next = sc;                                         
 80037c4:	29 81 00 50 	lw r1,(r12+80)                                 <== NOT EXECUTED
 80037c8:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
      queue->tail       = sc;                                         
 80037cc:	59 8b 00 50 	sw (r12+80),r11                                <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 80037d0:	29 81 00 54 	lw r1,(r12+84)                                 <== NOT EXECUTED
 80037d4:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 80037d8:	59 81 00 54 	sw (r12+84),r1                                 <== NOT EXECUTED
 80037dc:	e3 ff ff 6d 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    <== NOT EXECUTED
      }                                                               
      else                                                            
      {                                                               
        prev->next = sc->next;                                        
        if (queue->tail == sc)                                        
          queue->tail = prev;                                         
 80037e0:	59 82 00 44 	sw (r12+68),r2                                 
 80037e4:	e3 ff ff b7 	bi 80036c0 <rtems_fdisk_queue_segment+0x1e0>   
 80037e8:	59 82 00 38 	sw (r12+56),r2                                 <== NOT EXECUTED
 80037ec:	e3 ff ff aa 	bi 8003694 <rtems_fdisk_queue_segment+0x1b4>   <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 80037f0:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
 80037f4:	59 8b 00 5c 	sw (r12+92),r11                                <== NOT EXECUTED
 80037f8:	59 8b 00 58 	sw (r12+88),r11                                <== NOT EXECUTED
 80037fc:	e3 ff ff 62 	bi 8003584 <rtems_fdisk_queue_segment+0xa4>    <== NOT EXECUTED
 8003800:	59 8b 00 50 	sw (r12+80),r11                                <== NOT EXECUTED
 8003804:	59 8b 00 4c 	sw (r12+76),r11                                <== NOT EXECUTED
 8003808:	e3 ff ff f2 	bi 80037d0 <rtems_fdisk_queue_segment+0x2f0>   <== NOT EXECUTED
  {                                                                   
    if (sc == it)                                                     
    {                                                                 
      if (prev == 0)                                                  
      {                                                               
        queue->head = sc->next;                                       
 800380c:	29 61 00 00 	lw r1,(r11+0)                                  
 8003810:	59 81 00 40 	sw (r12+64),r1                                 
        if (queue->head == 0)                                         
 8003814:	5c 20 ff ab 	bne r1,r0,80036c0 <rtems_fdisk_queue_segment+0x1e0>
          queue->tail = 0;                                            
 8003818:	59 80 00 44 	sw (r12+68),r0                                 
 800381c:	e3 ff ff a9 	bi 80036c0 <rtems_fdisk_queue_segment+0x1e0>   
  {                                                                   
    if (sc == it)                                                     
    {                                                                 
      if (prev == 0)                                                  
      {                                                               
        queue->head = sc->next;                                       
 8003820:	29 61 00 00 	lw r1,(r11+0)                                  
 8003824:	59 81 00 34 	sw (r12+52),r1                                 
        if (queue->head == 0)                                         
 8003828:	5c 20 ff 9b 	bne r1,r0,8003694 <rtems_fdisk_queue_segment+0x1b4>
          queue->tail = 0;                                            
 800382c:	59 80 00 38 	sw (r12+56),r0                                 
 8003830:	e3 ff ff 99 	bi 8003694 <rtems_fdisk_queue_segment+0x1b4>   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
 8003834:	5c 41 00 03 	bne r2,r1,8003840 <rtems_fdisk_queue_segment+0x360><== ALWAYS TAKEN
 8003838:	e0 00 00 0d 	bi 800386c <rtems_fdisk_queue_segment+0x38c>   <== NOT EXECUTED
 800383c:	44 41 00 0d 	be r2,r1,8003870 <rtems_fdisk_queue_segment+0x390><== ALWAYS TAKEN
        *prev = sc;                                                   
        queue->count++;                                               
        return;                                                       
      }                                                               
                                                                      
      prev = &it->next;                                               
 8003840:	b8 40 18 00 	mv r3,r2                                       
      it = it->next;                                                  
 8003844:	28 42 00 00 	lw r2,(r2+0)                                   
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
 8003848:	5c 40 ff fd 	bne r2,r0,800383c <rtems_fdisk_queue_segment+0x35c><== ALWAYS TAKEN
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 800384c:	29 81 00 48 	lw r1,(r12+72)                                 <== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 8003850:	29 82 00 44 	lw r2,(r12+68)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003854:	59 60 00 00 	sw (r11+0),r0                                  <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003858:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
 800385c:	58 4b 00 00 	sw (r2+0),r11                                  <== NOT EXECUTED
      queue->tail       = sc;                                         
 8003860:	59 8b 00 44 	sw (r12+68),r11                                <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
 8003864:	59 81 00 48 	sw (r12+72),r1                                 <== NOT EXECUTED
 8003868:	e3 ff ff 4a 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    <== NOT EXECUTED
                                         rtems_fdisk_segment_ctl*       item,
                                         rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
 800386c:	35 83 00 40 	addi r3,r12,64                                 
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
        *prev = sc;                                                   
        queue->count++;                                               
 8003870:	29 81 00 48 	lw r1,(r12+72)                                 
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
 8003874:	59 62 00 00 	sw (r11+0),r2                                  
        *prev = sc;                                                   
 8003878:	58 6b 00 00 	sw (r3+0),r11                                  
        queue->count++;                                               
 800387c:	34 21 00 01 	addi r1,r1,1                                   
 8003880:	59 81 00 48 	sw (r12+72),r1                                 
 8003884:	e3 ff ff 43 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 8003888:	59 60 00 00 	sw (r11+0),r0                                  
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
 800388c:	59 8b 00 38 	sw (r12+56),r11                                
 8003890:	59 8b 00 34 	sw (r12+52),r11                                
 8003894:	e3 ff ff 78 	bi 8003674 <rtems_fdisk_queue_segment+0x194>   
    else                                                              
    {                                                                 
      if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))                 
        rtems_fdisk_segment_queue_push_tail (&fd->erase, sc);         
      else                                                            
        rtems_fdisk_erase_segment (fd, sc);                           
 8003898:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800389c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80038a0:	fb ff fe ac 	calli 8003350 <rtems_fdisk_erase_segment>      <== NOT EXECUTED
 80038a4:	e3 ff ff 3b 	bi 8003590 <rtems_fdisk_queue_segment+0xb0>    <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
 80038a8:	59 60 00 00 	sw (r11+0),r0                                  
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
 80038ac:	59 8b 00 44 	sw (r12+68),r11                                
 80038b0:	59 8b 00 40 	sw (r12+64),r11                                
 80038b4:	e3 ff ff 9d 	bi 8003728 <rtems_fdisk_queue_segment+0x248>   
                                                                      

08002eb0 <rtems_fdisk_queue_status>: } rtems_flashdisk_count = rtems_flashdisk_configuration_size; return RTEMS_SUCCESSFUL; }
 8002eb0:	28 24 00 34 	lw r4,(r1+52)                                  
static void                                                           
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
 8002eb4:	34 05 00 2d 	mvi r5,45                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002eb8:	44 80 00 08 	be r4,r0,8002ed8 <rtems_fdisk_queue_status+0x28><== NEVER TAKEN
static void                                                           
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
 8002ebc:	34 05 00 41 	mvi r5,65                                      
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
  {                                                                   
    if (it == sc)                                                     
 8002ec0:	5c 82 00 03 	bne r4,r2,8002ecc <rtems_fdisk_queue_status+0x1c>
 8002ec4:	e0 00 00 05 	bi 8002ed8 <rtems_fdisk_queue_status+0x28>     
 8002ec8:	44 44 00 28 	be r2,r4,8002f68 <rtems_fdisk_queue_status+0xb8><== NOT EXECUTED
      return true;                                                    
    it = it->next;                                                    
 8002ecc:	28 84 00 00 	lw r4,(r4+0)                                   
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002ed0:	5c 80 ff fe 	bne r4,r0,8002ec8 <rtems_fdisk_queue_status+0x18><== NEVER TAKEN
static void                                                           
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
 8002ed4:	34 05 00 2d 	mvi r5,45                                      
 8002ed8:	30 65 00 00 	sb (r3+0),r5                                   
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8002edc:	28 24 00 40 	lw r4,(r1+64)                                  
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
 8002ee0:	34 05 00 2d 	mvi r5,45                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002ee4:	44 80 00 08 	be r4,r0,8002f04 <rtems_fdisk_queue_status+0x54><== NEVER TAKEN
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
 8002ee8:	34 05 00 55 	mvi r5,85                                      
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
  {                                                                   
    if (it == sc)                                                     
 8002eec:	5c 44 00 03 	bne r2,r4,8002ef8 <rtems_fdisk_queue_status+0x48>
 8002ef0:	e0 00 00 05 	bi 8002f04 <rtems_fdisk_queue_status+0x54>     
 8002ef4:	44 44 00 25 	be r2,r4,8002f88 <rtems_fdisk_queue_status+0xd8>
      return true;                                                    
    it = it->next;                                                    
 8002ef8:	28 84 00 00 	lw r4,(r4+0)                                   
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002efc:	5c 80 ff fe 	bne r4,r0,8002ef4 <rtems_fdisk_queue_status+0x44>
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
 8002f00:	34 05 00 2d 	mvi r5,45                                      
 8002f04:	30 65 00 01 	sb (r3+1),r5                                   
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8002f08:	28 24 00 4c 	lw r4,(r1+76)                                  
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
 8002f0c:	34 05 00 2d 	mvi r5,45                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002f10:	44 80 00 08 	be r4,r0,8002f30 <rtems_fdisk_queue_status+0x80><== ALWAYS TAKEN
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
 8002f14:	34 05 00 45 	mvi r5,69                                      <== NOT EXECUTED
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
  {                                                                   
    if (it == sc)                                                     
 8002f18:	5c 44 00 03 	bne r2,r4,8002f24 <rtems_fdisk_queue_status+0x74><== NOT EXECUTED
 8002f1c:	e0 00 00 05 	bi 8002f30 <rtems_fdisk_queue_status+0x80>     <== NOT EXECUTED
 8002f20:	44 44 00 18 	be r2,r4,8002f80 <rtems_fdisk_queue_status+0xd0><== NOT EXECUTED
      return true;                                                    
    it = it->next;                                                    
 8002f24:	28 84 00 00 	lw r4,(r4+0)                                   <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002f28:	5c 80 ff fe 	bne r4,r0,8002f20 <rtems_fdisk_queue_status+0x70><== NOT EXECUTED
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
 8002f2c:	34 05 00 2d 	mvi r5,45                                      <== NOT EXECUTED
 8002f30:	30 65 00 02 	sb (r3+2),r5                                   
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8002f34:	28 21 00 58 	lw r1,(r1+88)                                  
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
 8002f38:	34 04 00 2d 	mvi r4,45                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002f3c:	44 20 00 08 	be r1,r0,8002f5c <rtems_fdisk_queue_status+0xac><== ALWAYS TAKEN
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
 8002f40:	34 04 00 46 	mvi r4,70                                      <== NOT EXECUTED
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
  {                                                                   
    if (it == sc)                                                     
 8002f44:	5c 41 00 03 	bne r2,r1,8002f50 <rtems_fdisk_queue_status+0xa0><== NOT EXECUTED
 8002f48:	e0 00 00 05 	bi 8002f5c <rtems_fdisk_queue_status+0xac>     <== NOT EXECUTED
 8002f4c:	44 41 00 09 	be r2,r1,8002f70 <rtems_fdisk_queue_status+0xc0><== NOT EXECUTED
      return true;                                                    
    it = it->next;                                                    
 8002f50:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
 8002f54:	5c 20 ff fe 	bne r1,r0,8002f4c <rtems_fdisk_queue_status+0x9c><== NOT EXECUTED
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
 8002f58:	34 04 00 2d 	mvi r4,45                                      <== NOT EXECUTED
 8002f5c:	30 64 00 03 	sb (r3+3),r4                                   
  queues[4] = '\0';                                                   
 8002f60:	30 60 00 04 	sb (r3+4),r0                                   
}                                                                     
 8002f64:	c3 a0 00 00 	ret                                            
static void                                                           
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
 8002f68:	34 05 00 41 	mvi r5,65                                      <== NOT EXECUTED
 8002f6c:	e3 ff ff db 	bi 8002ed8 <rtems_fdisk_queue_status+0x28>     <== NOT EXECUTED
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
 8002f70:	34 04 00 46 	mvi r4,70                                      <== NOT EXECUTED
 8002f74:	30 64 00 03 	sb (r3+3),r4                                   <== NOT EXECUTED
  queues[4] = '\0';                                                   
 8002f78:	30 60 00 04 	sb (r3+4),r0                                   <== NOT EXECUTED
}                                                                     
 8002f7c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
 8002f80:	34 05 00 45 	mvi r5,69                                      <== NOT EXECUTED
 8002f84:	e3 ff ff eb 	bi 8002f30 <rtems_fdisk_queue_status+0x80>     <== NOT EXECUTED
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
 8002f88:	34 05 00 55 	mvi r5,85                                      
 8002f8c:	e3 ff ff de 	bi 8002f04 <rtems_fdisk_queue_status+0x54>     
                                                                      

08004470 <rtems_fdisk_recover_block_mappings>: /** * Recover the block mappings from the devices. */ static int rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd) {
 8004470:	37 9c ff b4 	addi sp,sp,-76                                 
 8004474:	5b 8b 00 44 	sw (sp+68),r11                                 
 8004478:	5b 8c 00 40 	sw (sp+64),r12                                 
 800447c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8004480:	5b 8e 00 38 	sw (sp+56),r14                                 
 8004484:	5b 8f 00 34 	sw (sp+52),r15                                 
 8004488:	5b 90 00 30 	sw (sp+48),r16                                 
 800448c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8004490:	5b 92 00 28 	sw (sp+40),r18                                 
 8004494:	5b 93 00 24 	sw (sp+36),r19                                 
 8004498:	5b 94 00 20 	sw (sp+32),r20                                 
 800449c:	5b 95 00 1c 	sw (sp+28),r21                                 
 80044a0:	5b 96 00 18 	sw (sp+24),r22                                 
 80044a4:	5b 97 00 14 	sw (sp+20),r23                                 
 80044a8:	5b 98 00 10 	sw (sp+16),r24                                 
 80044ac:	5b 99 00 0c 	sw (sp+12),r25                                 
 80044b0:	5b 9b 00 08 	sw (sp+8),fp                                   
 80044b4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
 80044b8:	28 23 00 1c 	lw r3,(r1+28)                                  
/**                                                                   
 * Recover the block mappings from the devices.                       
 */                                                                   
static int                                                            
rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd)              
{                                                                     
 80044bc:	b8 20 68 00 	mv r13,r1                                      
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
 80044c0:	28 21 00 18 	lw r1,(r1+24)                                  
 80044c4:	b4 63 18 00 	add r3,r3,r3                                   
 80044c8:	b4 63 18 00 	add r3,r3,r3                                   
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
 80044cc:	59 a0 00 38 	sw (r13+56),r0                                 
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
 80044d0:	b4 63 18 00 	add r3,r3,r3                                   
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
 80044d4:	59 a0 00 34 	sw (r13+52),r0                                 
  queue->count = 0;                                                   
 80044d8:	59 a0 00 3c 	sw (r13+60),r0                                 
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
 80044dc:	59 a0 00 44 	sw (r13+68),r0                                 
 80044e0:	59 a0 00 40 	sw (r13+64),r0                                 
  queue->count = 0;                                                   
 80044e4:	59 a0 00 48 	sw (r13+72),r0                                 
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
 80044e8:	59 a0 00 50 	sw (r13+80),r0                                 
 80044ec:	59 a0 00 4c 	sw (r13+76),r0                                 
  queue->count = 0;                                                   
 80044f0:	59 a0 00 54 	sw (r13+84),r0                                 
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
 80044f4:	59 a0 00 5c 	sw (r13+92),r0                                 
 80044f8:	59 a0 00 58 	sw (r13+88),r0                                 
  queue->count = 0;                                                   
 80044fc:	59 a0 00 60 	sw (r13+96),r0                                 
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
 8004500:	34 02 00 00 	mvi r2,0                                       
 8004504:	f8 00 81 49 	calli 8024a28 <memset>                         
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
 8004508:	29 a1 00 30 	lw r1,(r13+48)                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
                                                                      
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
 800450c:	59 a0 00 28 	sw (r13+40),r0                                 
  fd->starvation_threshold = 0;                                       
 8004510:	59 a0 00 24 	sw (r13+36),r0                                 
  for (device = 0; device < fd->device_count; device++)               
 8004514:	44 20 00 a3 	be r1,r0,80047a0 <rtems_fdisk_recover_block_mappings+0x330><== NEVER TAKEN
                                                                      
      if (!sc->page_descriptors)                                      
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
                                                                      
      if (!sc->page_descriptors)                                      
        rtems_fdisk_abort ("no memory for page descriptors");         
 8004518:	78 02 08 03 	mvhi r2,0x803                                  
 800451c:	5b 82 00 4c 	sw (sp+76),r2                                  
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
 8004520:	78 02 08 03 	mvhi r2,0x803                                  
 8004524:	5b 82 00 48 	sw (sp+72),r2                                  
                                                                      
      if (!sc->page_descriptors)                                      
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
                                                                      
      if (!sc->page_descriptors)                                      
        rtems_fdisk_abort ("no memory for page descriptors");         
 8004528:	2b 82 00 4c 	lw r2,(sp+76)                                  
 800452c:	29 a4 00 2c 	lw r4,(r13+44)                                 
 8004530:	78 15 08 03 	mvhi r21,0x803                                 
 8004534:	38 42 86 44 	ori r2,r2,0x8644                               
 8004538:	5b 82 00 4c 	sw (sp+76),r2                                  
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
 800453c:	2b 82 00 48 	lw r2,(sp+72)                                  
               * each block so we can tell which is the later block when
               * duplicates appear. A power down with a failed wirte could cause
               * a duplicate.                                         
               */                                                     
              const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
 8004540:	78 16 08 03 	mvhi r22,0x803                                 
          else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
          {                                                           
            if (pd->block >= fd->block_count)                         
            {                                                         
#if RTEMS_FDISK_TRACE                                                 
              rtems_fdisk_warning (fd,                                
 8004544:	78 1b 08 03 	mvhi fp,0x803                                  
            ++fd->erased_blocks;                                      
          }                                                           
          else                                                        
          {                                                           
#if RTEMS_FDISK_TRACE                                                 
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
 8004548:	78 17 08 03 	mvhi r23,0x803                                 
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
 800454c:	38 42 86 c4 	ori r2,r2,0x86c4                               
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
 8004550:	34 14 00 00 	mvi r20,0                                      
 8004554:	34 11 00 00 	mvi r17,0                                      
 8004558:	3a b5 86 20 	ori r21,r21,0x8620                             
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 800455c:	34 10 ff ff 	mvi r16,-1                                     
               * each block so we can tell which is the later block when
               * duplicates appear. A power down with a failed wirte could cause
               * a duplicate.                                         
               */                                                     
              const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
 8004560:	3a d6 87 18 	ori r22,r22,0x8718                             
          else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
          {                                                           
            if (pd->block >= fd->block_count)                         
            {                                                         
#if RTEMS_FDISK_TRACE                                                 
              rtems_fdisk_warning (fd,                                
 8004564:	3b 7b 86 ec 	ori fp,fp,0x86ec                               
            ++fd->erased_blocks;                                      
          }                                                           
          else                                                        
          {                                                           
#if RTEMS_FDISK_TRACE                                                 
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
 8004568:	3a f7 86 a8 	ori r23,r23,0x86a8                             
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
 800456c:	5b 82 00 48 	sw (sp+72),r2                                  
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
 8004570:	b4 94 18 00 	add r3,r4,r20                                  
 8004574:	28 62 00 04 	lw r2,(r3+4)                                   
 8004578:	34 13 00 00 	mvi r19,0                                      
 800457c:	34 0f 00 00 	mvi r15,0                                      
 8004580:	44 40 00 85 	be r2,r0,8004794 <rtems_fdisk_recover_block_mappings+0x324><== NEVER TAKEN
    {                                                                 
      rtems_fdisk_segment_ctl*        sc = &fd->devices[device].segments[segment];
 8004584:	28 6c 00 00 	lw r12,(r3+0)                                  
      rtems_fdisk_page_desc*          pd;                             
      uint32_t                        page;                           
      int                             ret;                            
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
 8004588:	b9 e0 20 00 	mv r4,r15                                      
 800458c:	ba 20 18 00 	mv r3,r17                                      
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
    {                                                                 
      rtems_fdisk_segment_ctl*        sc = &fd->devices[device].segments[segment];
 8004590:	b5 93 60 00 	add r12,r12,r19                                
      const rtems_fdisk_segment_desc* sd = sc->descriptor;            
 8004594:	29 8b 00 04 	lw r11,(r12+4)                                 
      rtems_fdisk_page_desc*          pd;                             
      uint32_t                        page;                           
      int                             ret;                            
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
 8004598:	ba a0 10 00 	mv r2,r21                                      
 800459c:	b9 a0 08 00 	mv r1,r13                                      
 80045a0:	fb ff fa 7c 	calli 8002f90 <rtems_fdisk_info>               
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
 80045a4:	29 b2 00 14 	lw r18,(r13+20)                                
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
 80045a8:	29 61 00 08 	lw r1,(r11+8)                                  
 80045ac:	ba 40 10 00 	mv r2,r18                                      
 80045b0:	fb ff f4 91 	calli 80017f4 <__udivsi3>                      
static uint32_t                                                       
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
 80045b4:	b4 21 38 00 	add r7,r1,r1                                   
 80045b8:	b4 e7 38 00 	add r7,r7,r7                                   
 80045bc:	b4 e7 38 00 	add r7,r7,r7                                   
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
 80045c0:	b8 20 58 00 	mv r11,r1                                      
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
  return ((bytes - 1) / page_size) + 1;                               
 80045c4:	ba 40 10 00 	mv r2,r18                                      
 80045c8:	34 e1 ff ff 	addi r1,r7,-1                                  
 80045cc:	fb ff f4 8a 	calli 80017f4 <__udivsi3>                      
 80045d0:	34 2e 00 01 	addi r14,r1,1                                  
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
 80045d4:	29 a3 00 24 	lw r3,(r13+36)                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
 80045d8:	c9 6e 58 00 	sub r11,r11,r14                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
 80045dc:	59 8e 00 18 	sw (r12+24),r14                                
      sc->pages =                                                     
 80045e0:	59 8b 00 14 	sw (r12+20),r11                                
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
 80045e4:	50 6b 00 02 	bgeu r3,r11,80045ec <rtems_fdisk_recover_block_mappings+0x17c>
        fd->starvation_threshold = sc->pages;                         
 80045e8:	59 ab 00 24 	sw (r13+36),r11                                
      sc->pages_used   = 0;                                           
      sc->pages_bad    = 0;                                           
                                                                      
      sc->failed = false;                                             
                                                                      
      if (!sc->page_descriptors)                                      
 80045ec:	29 8b 00 10 	lw r11,(r12+16)                                
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
        fd->starvation_threshold = sc->pages;                         
                                                                      
      sc->pages_active = 0;                                           
 80045f0:	59 80 00 1c 	sw (r12+28),r0                                 
      sc->pages_used   = 0;                                           
 80045f4:	59 80 00 20 	sw (r12+32),r0                                 
      sc->pages_bad    = 0;                                           
 80045f8:	59 80 00 24 	sw (r12+36),r0                                 
                                                                      
      sc->failed = false;                                             
 80045fc:	59 80 00 28 	sw (r12+40),r0                                 
                                                                      
      if (!sc->page_descriptors)                                      
 8004600:	45 60 00 8c 	be r11,r0,8004830 <rtems_fdisk_recover_block_mappings+0x3c0><== ALWAYS TAKEN
       * descriptors.                                                 
       *                                                              
       * @todo It may be better to ask the driver to get these value  
       *       so NAND flash could be better supported.               
       */                                                             
      ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,              
 8004604:	29 99 00 08 	lw r25,(r12+8)                                 
 8004608:	29 98 00 0c 	lw r24,(r12+12)                                
 800460c:	b9 c0 10 00 	mv r2,r14                                      
 8004610:	ba 40 08 00 	mv r1,r18                                      
 8004614:	fb ff f4 6c 	calli 80017c4 <__mulsi3>                       
 8004618:	b8 20 30 00 	mv r6,r1                                       
 800461c:	bb 20 10 00 	mv r2,r25                                      
 8004620:	b9 a0 08 00 	mv r1,r13                                      
 8004624:	bb 00 18 00 	mv r3,r24                                      
 8004628:	34 04 00 00 	mvi r4,0                                       
 800462c:	b9 60 28 00 	mv r5,r11                                      
 8004630:	fb ff fc e1 	calli 80039b4 <rtems_fdisk_seg_read.clone.14>  
 8004634:	b8 20 70 00 	mv r14,r1                                      
                                  sc->pages_desc * fd->block_size);   
                                                                      
      if (ret)                                                        
 8004638:	5c 20 00 8b 	bne r1,r0,8004864 <rtems_fdisk_recover_block_mappings+0x3f4><== NEVER TAKEN
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
 800463c:	29 87 00 14 	lw r7,(r12+20)                                 
 8004640:	5c e1 00 08 	bne r7,r1,8004660 <rtems_fdisk_recover_block_mappings+0x1f0><== ALWAYS TAKEN
 8004644:	e0 00 00 4a 	bi 800476c <rtems_fdisk_recover_block_mappings+0x2fc><== NOT EXECUTED
        }                                                             
        else                                                          
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
          {                                                           
            sc->pages_used++;                                         
 8004648:	29 83 00 20 	lw r3,(r12+32)                                 <== NOT EXECUTED
 800464c:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 8004650:	59 83 00 20 	sw (r12+32),r3                                 <== NOT EXECUTED
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
 8004654:	35 ce 00 01 	addi r14,r14,1                                 
 8004658:	51 c7 00 45 	bgeu r14,r7,800476c <rtems_fdisk_recover_block_mappings+0x2fc>
 800465c:	35 6b 00 08 	addi r11,r11,8                                 
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8004660:	29 64 00 00 	lw r4,(r11+0)                                  
 8004664:	44 90 00 29 	be r4,r16,8004708 <rtems_fdisk_recover_block_mappings+0x298><== ALWAYS TAKEN
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004668:	2d 68 00 02 	lhu r8,(r11+2)                                 <== NOT EXECUTED
            sc->pages_used++;                                         
          }                                                           
        }                                                             
        else                                                          
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
 800466c:	21 09 00 02 	andi r9,r8,0x2                                 <== NOT EXECUTED
 8004670:	21 29 ff ff 	andi r9,r9,0xffff                              <== NOT EXECUTED
 8004674:	45 20 ff f5 	be r9,r0,8004648 <rtems_fdisk_recover_block_mappings+0x1d8><== NOT EXECUTED
          {                                                           
            sc->pages_used++;                                         
          }                                                           
          else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
 8004678:	21 08 00 01 	andi r8,r8,0x1                                 <== NOT EXECUTED
 800467c:	5d 00 00 38 	bne r8,r0,800475c <rtems_fdisk_recover_block_mappings+0x2ec><== NOT EXECUTED
          {                                                           
            if (pd->block >= fd->block_count)                         
 8004680:	29 66 00 04 	lw r6,(r11+4)                                  <== NOT EXECUTED
 8004684:	29 a3 00 1c 	lw r3,(r13+28)                                 <== NOT EXECUTED
 8004688:	54 66 00 0c 	bgu r3,r6,80046b8 <rtems_fdisk_recover_block_mappings+0x248><== NOT EXECUTED
            {                                                         
#if RTEMS_FDISK_TRACE                                                 
              rtems_fdisk_warning (fd,                                
 800468c:	ba 20 18 00 	mv r3,r17                                      <== NOT EXECUTED
 8004690:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004694:	bb 60 10 00 	mv r2,fp                                       <== NOT EXECUTED
 8004698:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 800469c:	b9 c0 28 00 	mv r5,r14                                      <== NOT EXECUTED
 80046a0:	fb ff fa d5 	calli 80031f4 <rtems_fdisk_warning>            <== NOT EXECUTED
                                   "invalid block number: %d-%d-%d: block: %d",
                                   device, segment, page, pd->block); 
#endif                                                                
              sc->pages_bad++;                                        
 80046a4:	29 83 00 24 	lw r3,(r12+36)                                 <== NOT EXECUTED
 80046a8:	29 87 00 14 	lw r7,(r12+20)                                 <== NOT EXECUTED
 80046ac:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 80046b0:	59 83 00 24 	sw (r12+36),r3                                 <== NOT EXECUTED
 80046b4:	e3 ff ff e8 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4><== NOT EXECUTED
            }                                                         
            else if (fd->blocks[pd->block].segment)                   
 80046b8:	29 a3 00 18 	lw r3,(r13+24)                                 <== NOT EXECUTED
 80046bc:	b4 c6 40 00 	add r8,r6,r6                                   <== NOT EXECUTED
 80046c0:	b5 08 40 00 	add r8,r8,r8                                   <== NOT EXECUTED
 80046c4:	b5 08 40 00 	add r8,r8,r8                                   <== NOT EXECUTED
 80046c8:	b4 68 40 00 	add r8,r3,r8                                   <== NOT EXECUTED
 80046cc:	29 03 00 00 	lw r3,(r8+0)                                   <== NOT EXECUTED
 80046d0:	44 60 00 4c 	be r3,r0,8004800 <rtems_fdisk_recover_block_mappings+0x390><== NOT EXECUTED
               * each block so we can tell which is the later block when
               * duplicates appear. A power down with a failed wirte could cause
               * a duplicate.                                         
               */                                                     
              const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
 80046d4:	28 62 00 08 	lw r2,(r3+8)                                   <== NOT EXECUTED
 80046d8:	29 04 00 04 	lw r4,(r8+4)                                   <== NOT EXECUTED
 80046dc:	28 63 00 0c 	lw r3,(r3+12)                                  <== NOT EXECUTED
 80046e0:	b9 c0 38 00 	mv r7,r14                                      <== NOT EXECUTED
 80046e4:	ba c0 08 00 	mv r1,r22                                      <== NOT EXECUTED
 80046e8:	ba 20 28 00 	mv r5,r17                                      <== NOT EXECUTED
 80046ec:	b9 e0 30 00 	mv r6,r15                                      <== NOT EXECUTED
 80046f0:	fb ff fa ee 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                                 "duplicate: %d-%d-%d",               
                                 bsc->device, bsc->segment,           
                                 fd->blocks[pd->block].page,          
                                 device, segment, page);              
              sc->pages_bad++;                                        
 80046f4:	29 83 00 24 	lw r3,(r12+36)                                 <== NOT EXECUTED
 80046f8:	29 87 00 14 	lw r7,(r12+20)                                 <== NOT EXECUTED
 80046fc:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 8004700:	59 83 00 24 	sw (r12+36),r3                                 <== NOT EXECUTED
 8004704:	e3 ff ff d4 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4><== NOT EXECUTED
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8004708:	29 63 00 04 	lw r3,(r11+4)                                  
 800470c:	5c 70 ff d7 	bne r3,r16,8004668 <rtems_fdisk_recover_block_mappings+0x1f8><== NEVER TAKEN
        if (rtems_fdisk_page_desc_erased (pd))                        
        {                                                             
          /*                                                          
           * Is the page erased ?                                     
           */                                                         
          ret = rtems_fdisk_seg_blank_check_page (fd, sc,             
 8004710:	29 84 00 18 	lw r4,(r12+24)                                 
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
                                      page * fd->block_size, fd->block_size);
 8004714:	29 b2 00 14 	lw r18,(r13+20)                                
static int                                                            
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
 8004718:	29 99 00 08 	lw r25,(r12+8)                                 
 800471c:	29 98 00 0c 	lw r24,(r12+12)                                
 8004720:	b5 c4 08 00 	add r1,r14,r4                                  
 8004724:	ba 40 10 00 	mv r2,r18                                      
 8004728:	fb ff f4 27 	calli 80017c4 <__mulsi3>                       
 800472c:	b8 20 20 00 	mv r4,r1                                       
 8004730:	bb 20 10 00 	mv r2,r25                                      
 8004734:	b9 a0 08 00 	mv r1,r13                                      
 8004738:	bb 00 18 00 	mv r3,r24                                      
 800473c:	ba 40 28 00 	mv r5,r18                                      
 8004740:	fb ff fc d4 	calli 8003a90 <rtems_fdisk_seg_blank_check.clone.16>
           * Is the page erased ?                                     
           */                                                         
          ret = rtems_fdisk_seg_blank_check_page (fd, sc,             
                                                  page + sc->pages_desc);
                                                                      
          if (ret == 0)                                               
 8004744:	5c 20 00 19 	bne r1,r0,80047a8 <rtems_fdisk_recover_block_mappings+0x338><== NEVER TAKEN
          {                                                           
            ++fd->erased_blocks;                                      
 8004748:	29 a3 00 28 	lw r3,(r13+40)                                 
 800474c:	29 87 00 14 	lw r7,(r12+20)                                 
 8004750:	34 63 00 01 	addi r3,r3,1                                   
 8004754:	59 a3 00 28 	sw (r13+40),r3                                 
 8004758:	e3 ff ff bf 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4>
               */                                                     
              sc->pages_active++;                                     
            }                                                         
          }                                                           
          else                                                        
            sc->pages_bad++;                                          
 800475c:	29 83 00 24 	lw r3,(r12+36)                                 <== NOT EXECUTED
 8004760:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 8004764:	59 83 00 24 	sw (r12+36),r3                                 <== NOT EXECUTED
 8004768:	e3 ff ff bb 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4><== NOT EXECUTED
      }                                                               
                                                                      
      /*                                                              
       * Place the segment on to the correct queue.                   
       */                                                             
      rtems_fdisk_queue_segment (fd, sc);                             
 800476c:	b9 a0 08 00 	mv r1,r13                                      
 8004770:	b9 80 10 00 	mv r2,r12                                      
 8004774:	fb ff fb 5b 	calli 80034e0 <rtems_fdisk_queue_segment>      
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
 8004778:	29 a4 00 2c 	lw r4,(r13+44)                                 
 800477c:	35 ef 00 01 	addi r15,r15,1                                 
 8004780:	36 73 00 30 	addi r19,r19,48                                
 8004784:	b4 94 18 00 	add r3,r4,r20                                  
 8004788:	28 65 00 04 	lw r5,(r3+4)                                   
 800478c:	54 af ff 7e 	bgu r5,r15,8004584 <rtems_fdisk_recover_block_mappings+0x114>
 8004790:	29 a1 00 30 	lw r1,(r13+48)                                 
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
 8004794:	36 31 00 01 	addi r17,r17,1                                 
 8004798:	36 94 00 0c 	addi r20,r20,12                                
 800479c:	54 31 ff 75 	bgu r1,r17,8004570 <rtems_fdisk_recover_block_mappings+0x100><== NEVER TAKEN
       */                                                             
      rtems_fdisk_queue_segment (fd, sc);                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
 80047a0:	34 0e 00 00 	mvi r14,0                                      
 80047a4:	e0 00 00 38 	bi 8004884 <rtems_fdisk_recover_block_mappings+0x414>
            ++fd->erased_blocks;                                      
          }                                                           
          else                                                        
          {                                                           
#if RTEMS_FDISK_TRACE                                                 
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
 80047a8:	29 66 00 04 	lw r6,(r11+4)                                  <== NOT EXECUTED
 80047ac:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 80047b0:	ba 20 18 00 	mv r3,r17                                      <== NOT EXECUTED
 80047b4:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 80047b8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80047bc:	b9 c0 28 00 	mv r5,r14                                      <== NOT EXECUTED
 80047c0:	fb ff fa 8d 	calli 80031f4 <rtems_fdisk_warning>            <== NOT EXECUTED
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 80047c4:	2d 63 00 02 	lhu r3,(r11+2)                                 <== NOT EXECUTED
 80047c8:	34 04 ff fd 	mvi r4,-3                                      <== NOT EXECUTED
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
                                 device, segment, page, pd->block);   
#endif                                                                
            rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
                                                                      
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
 80047cc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
 80047d0:	a0 64 18 00 	and r3,r3,r4                                   <== NOT EXECUTED
 80047d4:	0d 63 00 02 	sh (r11+2),r3                                  <== NOT EXECUTED
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
                                 device, segment, page, pd->block);   
#endif                                                                
            rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
                                                                      
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
 80047d8:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 80047dc:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 80047e0:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 80047e4:	fb ff fc df 	calli 8003b60 <rtems_fdisk_seg_write_page_desc><== NOT EXECUTED
                                                   page, pd);         
                                                                      
            if (ret)                                                  
 80047e8:	5c 20 00 0c 	bne r1,r0,8004818 <rtems_fdisk_recover_block_mappings+0x3a8><== NOT EXECUTED
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
                                 device, segment, page);              
            }                                                         
                                                                      
            sc->pages_used++;                                         
 80047ec:	29 83 00 20 	lw r3,(r12+32)                                 <== NOT EXECUTED
 80047f0:	29 87 00 14 	lw r7,(r12+20)                                 <== NOT EXECUTED
 80047f4:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 80047f8:	59 83 00 20 	sw (r12+32),r3                                 <== NOT EXECUTED
 80047fc:	e3 ff ff 96 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4><== NOT EXECUTED
              fd->blocks[pd->block].page    = page;                   
                                                                      
              /*                                                      
               * The page is active.                                  
               */                                                     
              sc->pages_active++;                                     
 8004800:	29 82 00 1c 	lw r2,(r12+28)                                 <== NOT EXECUTED
            {                                                         
              /**                                                     
               * @todo                                                
               * Add start up crc checks here.                        
               */                                                     
              fd->blocks[pd->block].segment = sc;                     
 8004804:	59 0c 00 00 	sw (r8+0),r12                                  <== NOT EXECUTED
              fd->blocks[pd->block].page    = page;                   
 8004808:	59 0e 00 04 	sw (r8+4),r14                                  <== NOT EXECUTED
                                                                      
              /*                                                      
               * The page is active.                                  
               */                                                     
              sc->pages_active++;                                     
 800480c:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
 8004810:	59 82 00 1c 	sw (r12+28),r2                                 <== NOT EXECUTED
 8004814:	e3 ff ff 90 	bi 8004654 <rtems_fdisk_recover_block_mappings+0x1e4><== NOT EXECUTED
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
 8004818:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 800481c:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8004820:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 8004824:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 8004828:	fb ff fa a0 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 800482c:	e3 ff ff f0 	bi 80047ec <rtems_fdisk_recover_block_mappings+0x37c><== NOT EXECUTED
      sc->pages_bad    = 0;                                           
                                                                      
      sc->failed = false;                                             
                                                                      
      if (!sc->page_descriptors)                                      
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
 8004830:	ba 40 10 00 	mv r2,r18                                      
 8004834:	b9 c0 08 00 	mv r1,r14                                      
 8004838:	fb ff f3 e3 	calli 80017c4 <__mulsi3>                       
 800483c:	f8 00 0a ea 	calli 80073e4 <malloc>                         
 8004840:	59 81 00 10 	sw (r12+16),r1                                 
 8004844:	b8 20 58 00 	mv r11,r1                                      
                                                                      
      if (!sc->page_descriptors)                                      
 8004848:	5c 20 ff 6f 	bne r1,r0,8004604 <rtems_fdisk_recover_block_mappings+0x194><== ALWAYS TAKEN
        rtems_fdisk_abort ("no memory for page descriptors");         
 800484c:	2b 81 00 4c 	lw r1,(sp+76)                                  <== NOT EXECUTED
 8004850:	fb ff fc 1a 	calli 80038b8 <rtems_fdisk_abort>              <== NOT EXECUTED
 8004854:	29 8b 00 10 	lw r11,(r12+16)                                <== NOT EXECUTED
 8004858:	29 8e 00 18 	lw r14,(r12+24)                                <== NOT EXECUTED
 800485c:	29 b2 00 14 	lw r18,(r13+20)                                <== NOT EXECUTED
 8004860:	e3 ff ff 69 	bi 8004604 <rtems_fdisk_recover_block_mappings+0x194><== NOT EXECUTED
      ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,              
                                  sc->pages_desc * fd->block_size);   
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recover-block-mappings:%02d-%03d: " \     
 8004864:	f8 00 85 c8 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8004868:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800486c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8004870:	38 21 86 64 	ori r1,r1,0x8664                               <== NOT EXECUTED
 8004874:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8004878:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 800487c:	b9 c0 28 00 	mv r5,r14                                      <== NOT EXECUTED
 8004880:	fb ff fa 8a 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      rtems_fdisk_queue_segment (fd, sc);                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8004884:	b9 c0 08 00 	mv r1,r14                                      
 8004888:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800488c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8004890:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8004894:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8004898:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800489c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80048a0:	2b 90 00 30 	lw r16,(sp+48)                                 
 80048a4:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80048a8:	2b 92 00 28 	lw r18,(sp+40)                                 
 80048ac:	2b 93 00 24 	lw r19,(sp+36)                                 
 80048b0:	2b 94 00 20 	lw r20,(sp+32)                                 
 80048b4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80048b8:	2b 96 00 18 	lw r22,(sp+24)                                 
 80048bc:	2b 97 00 14 	lw r23,(sp+20)                                 
 80048c0:	2b 98 00 10 	lw r24,(sp+16)                                 
 80048c4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80048c8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80048cc:	37 9c 00 4c 	addi sp,sp,76                                  
 80048d0:	c3 a0 00 00 	ret                                            
                                                                      

08003cb8 <rtems_fdisk_recycle_segment>: static int rtems_fdisk_recycle_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* ssc, rtems_fdisk_segment_ctl* dsc, uint32_t *pages) {
 8003cb8:	37 9c ff b0 	addi sp,sp,-80                                 
 8003cbc:	5b 8b 00 48 	sw (sp+72),r11                                 
 8003cc0:	5b 8c 00 44 	sw (sp+68),r12                                 
 8003cc4:	5b 8d 00 40 	sw (sp+64),r13                                 
 8003cc8:	5b 8e 00 3c 	sw (sp+60),r14                                 
 8003ccc:	5b 8f 00 38 	sw (sp+56),r15                                 
 8003cd0:	5b 90 00 34 	sw (sp+52),r16                                 
 8003cd4:	5b 91 00 30 	sw (sp+48),r17                                 
 8003cd8:	5b 92 00 2c 	sw (sp+44),r18                                 
 8003cdc:	5b 93 00 28 	sw (sp+40),r19                                 
 8003ce0:	5b 94 00 24 	sw (sp+36),r20                                 
 8003ce4:	5b 95 00 20 	sw (sp+32),r21                                 
 8003ce8:	5b 96 00 1c 	sw (sp+28),r22                                 
 8003cec:	5b 97 00 18 	sw (sp+24),r23                                 
 8003cf0:	5b 98 00 14 	sw (sp+20),r24                                 
 8003cf4:	5b 99 00 10 	sw (sp+16),r25                                 
 8003cf8:	5b 9b 00 0c 	sw (sp+12),fp                                  
 8003cfc:	5b 9d 00 08 	sw (sp+8),ra                                   
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
 8003d00:	28 47 00 14 	lw r7,(r2+20)                                  
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
                                    rtems_fdisk_segment_ctl* ssc,     
                                    rtems_fdisk_segment_ctl* dsc,     
                                    uint32_t *pages)                  
{                                                                     
 8003d04:	b8 40 68 00 	mv r13,r2                                      
 8003d08:	b8 20 70 00 	mv r14,r1                                      
 8003d0c:	b8 60 58 00 	mv r11,r3                                      
 8003d10:	b8 80 a8 00 	mv r21,r4                                      
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
 8003d14:	44 e0 01 05 	be r7,r0,8004128 <rtems_fdisk_recycle_segment+0x470><== NEVER TAKEN
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
      }                                                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
 8003d18:	78 1b 08 03 	mvhi fp,0x803                                  
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
 8003d1c:	78 19 08 03 	mvhi r25,0x803                                 
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
 8003d20:	34 12 00 00 	mvi r18,0                                      
 8003d24:	34 17 00 00 	mvi r23,0                                      
 8003d28:	34 14 00 00 	mvi r20,0                                      
 8003d2c:	34 10 00 00 	mvi r16,0                                      
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8003d30:	34 11 ff ff 	mvi r17,-1                                     
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
      }                                                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
 8003d34:	3b 7b 84 18 	ori fp,fp,0x8418                               
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
 8003d38:	3b 39 84 40 	ori r25,r25,0x8440                             
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
 8003d3c:	29 af 00 10 	lw r15,(r13+16)                                
                                                                      
    if (!dsc && ssc->pages_active > 0)                                
 8003d40:	45 60 00 a3 	be r11,r0,8003fcc <rtems_fdisk_recycle_segment+0x314>
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
 8003d44:	b5 f2 78 00 	add r15,r15,r18                                
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8003d48:	2d e3 00 02 	lhu r3,(r15+2)                                 
    {                                                                 
      rtems_fdisk_error ("recycle: no available dst segment");        
      return EIO;                                                     
    }                                                                 
                                                                      
    if (rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_ACTIVE) &&
 8003d4c:	20 61 00 01 	andi r1,r3,0x1                                 
 8003d50:	5c 20 00 70 	bne r1,r0,8003f10 <rtems_fdisk_recycle_segment+0x258><== NEVER TAKEN
 8003d54:	20 63 00 02 	andi r3,r3,0x2                                 
 8003d58:	20 63 ff ff 	andi r3,r3,0xffff                              
 8003d5c:	44 61 00 6d 	be r3,r1,8003f10 <rtems_fdisk_recycle_segment+0x258>
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8003d60:	29 61 00 14 	lw r1,(r11+20)                                 
 8003d64:	29 76 00 10 	lw r22,(r11+16)                                
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)     
{                                                                     
  rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];               
  uint32_t               page;                                        
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
 8003d68:	44 20 00 0c 	be r1,r0,8003d98 <rtems_fdisk_recycle_segment+0xe0><== NEVER TAKEN
 8003d6c:	ba c0 18 00 	mv r3,r22                                      
 8003d70:	34 0c 00 00 	mvi r12,0                                      
 8003d74:	e0 00 00 04 	bi 8003d84 <rtems_fdisk_recycle_segment+0xcc>  
 8003d78:	35 8c 00 01 	addi r12,r12,1                                 
 8003d7c:	51 81 00 07 	bgeu r12,r1,8003d98 <rtems_fdisk_recycle_segment+0xe0><== NEVER TAKEN
 8003d80:	34 63 00 08 	addi r3,r3,8                                   
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8003d84:	28 68 00 00 	lw r8,(r3+0)                                   
 8003d88:	5d 11 ff fc 	bne r8,r17,8003d78 <rtems_fdisk_recycle_segment+0xc0>
 8003d8c:	28 64 00 04 	lw r4,(r3+4)                                   
 8003d90:	5c 91 ff fa 	bne r4,r17,8003d78 <rtems_fdisk_recycle_segment+0xc0><== NEVER TAKEN
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
                                                                      
      active++;                                                       
                                                                      
      if (dpage >= dsc->pages)                                        
 8003d94:	54 2c 00 1c 	bgu r1,r12,8003e04 <rtems_fdisk_recycle_segment+0x14c><== ALWAYS TAKEN
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
                                                                      
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
 8003d98:	29 62 00 24 	lw r2,(r11+36)                                 <== NOT EXECUTED
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8003d9c:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 8003da0:	29 65 00 1c 	lw r5,(r11+28)                                 <== NOT EXECUTED
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
                                                                      
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
 8003da4:	c8 02 10 00 	sub r2,r0,r2                                   <== NOT EXECUTED
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 8003da8:	c8 44 20 00 	sub r4,r2,r4                                   <== NOT EXECUTED
 8003dac:	c8 85 20 00 	sub r4,r4,r5                                   <== NOT EXECUTED
                                                                      
      active++;                                                       
                                                                      
      if (dpage >= dsc->pages)                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d: " \                   
 8003db0:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 8003db4:	29 63 00 0c 	lw r3,(r11+12)                                 <== NOT EXECUTED
 8003db8:	b4 81 20 00 	add r4,r4,r1                                   <== NOT EXECUTED
 8003dbc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8003dc0:	38 21 83 e8 	ori r1,r1,0x83e8                               <== NOT EXECUTED
 8003dc4:	fb ff fd 39 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                           "no page desc available: %d",              
                           dsc->device, dsc->segment,                 
                           rtems_fdisk_seg_pages_available (dsc));    
        dsc->failed = true;                                           
 8003dc8:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8003dcc:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
        rtems_fdisk_queue_segment (fd, dsc);                          
 8003dd0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8003dd4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8003dd8:	fb ff fd c2 	calli 80034e0 <rtems_fdisk_queue_segment>      <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
 8003ddc:	29 c2 00 40 	lw r2,(r14+64)                                 <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
 8003de0:	29 c1 00 44 	lw r1,(r14+68)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
 8003de4:	59 a2 00 00 	sw (r13+0),r2                                  <== NOT EXECUTED
    queue->head = sc;                                                 
 8003de8:	59 cd 00 40 	sw (r14+64),r13                                <== NOT EXECUTED
                                                                      
    if (queue->tail == 0)                                             
 8003dec:	44 20 00 cd 	be r1,r0,8004120 <rtems_fdisk_recycle_segment+0x468><== NOT EXECUTED
      queue->tail = sc;                                               
    queue->count++;                                                   
 8003df0:	29 c1 00 48 	lw r1,(r14+72)                                 <== NOT EXECUTED
                           dsc->device, dsc->segment,                 
                           rtems_fdisk_seg_pages_available (dsc));    
        dsc->failed = true;                                           
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
 8003df4:	34 13 00 05 	mvi r19,5                                      <== NOT EXECUTED
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
    queue->count++;                                                   
 8003df8:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 8003dfc:	59 c1 00 48 	sw (r14+72),r1                                 <== NOT EXECUTED
 8003e00:	e0 00 00 59 	bi 8003f64 <rtems_fdisk_recycle_segment+0x2ac> <== NOT EXECUTED
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
      }                                                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
 8003e04:	29 a3 00 08 	lw r3,(r13+8)                                  
 8003e08:	29 a4 00 0c 	lw r4,(r13+12)                                 
 8003e0c:	29 66 00 08 	lw r6,(r11+8)                                  
 8003e10:	29 67 00 0c 	lw r7,(r11+12)                                 
 8003e14:	bb 60 10 00 	mv r2,fp                                       
 8003e18:	ba 00 28 00 	mv r5,r16                                      
 8003e1c:	b9 80 40 00 	mv r8,r12                                      
 8003e20:	b9 c0 08 00 	mv r1,r14                                      
 8003e24:	fb ff fc 5b 	calli 8002f90 <rtems_fdisk_info>               
                        ssc->device, ssc->segment, spage,             
                        dsc->device, dsc->segment, dpage);            
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
 8003e28:	29 b3 00 18 	lw r19,(r13+24)                                
 8003e2c:	29 78 00 18 	lw r24,(r11+24)                                
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
 8003e30:	29 67 00 0c 	lw r7,(r11+12)                                 
 8003e34:	29 a4 00 0c 	lw r4,(r13+12)                                 
 8003e38:	29 66 00 08 	lw r6,(r11+8)                                  
 8003e3c:	29 a3 00 08 	lw r3,(r13+8)                                  
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
                        ssc->device, ssc->segment, spage,             
                        dsc->device, dsc->segment, dpage);            
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
 8003e40:	b6 13 98 00 	add r19,r16,r19                                
 8003e44:	b5 98 c0 00 	add r24,r12,r24                                
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
 8003e48:	ba 60 28 00 	mv r5,r19                                      
 8003e4c:	bb 00 40 00 	mv r8,r24                                      
 8003e50:	bb 20 10 00 	mv r2,r25                                      
 8003e54:	b9 c0 08 00 	mv r1,r14                                      
 8003e58:	fb ff fc 7b 	calli 8003044 <rtems_fdisk_printf>             
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
                               page * fd->block_size, buffer, fd->block_size);
 8003e5c:	29 c6 00 14 	lw r6,(r14+20)                                 
rtems_fdisk_seg_read_page (const rtems_flashdisk*   fd,               
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
 8003e60:	29 a3 00 0c 	lw r3,(r13+12)                                 
 8003e64:	ba 60 08 00 	mv r1,r19                                      
 8003e68:	b8 c0 10 00 	mv r2,r6                                       
 8003e6c:	5b 83 00 4c 	sw (sp+76),r3                                  
 8003e70:	5b 86 00 50 	sw (sp+80),r6                                  
 8003e74:	fb ff f6 54 	calli 80017c4 <__mulsi3>                       
 8003e78:	29 a2 00 08 	lw r2,(r13+8)                                  
 8003e7c:	2b 83 00 4c 	lw r3,(sp+76)                                  
 8003e80:	29 c5 00 68 	lw r5,(r14+104)                                
 8003e84:	2b 86 00 50 	lw r6,(sp+80)                                  
 8003e88:	b8 20 20 00 	mv r4,r1                                       
 8003e8c:	b9 c0 08 00 	mv r1,r14                                      
 8003e90:	fb ff fe c9 	calli 80039b4 <rtems_fdisk_seg_read.clone.14>  
 8003e94:	b8 20 98 00 	mv r19,r1                                      
                      src_sc->device, src_sc->segment, src_page,      
                      dst_sc->device, dst_sc->segment, dst_page);     
#endif                                                                
  ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,              
                                   fd->copy_buffer);                  
  if (ret)                                                            
 8003e98:	44 20 00 54 	be r1,r0,8003fe8 <rtems_fdisk_recycle_segment+0x330><== ALWAYS TAKEN
                                       spage + ssc->pages_desc,       
                                       dsc,                           
                                       dpage + dsc->pages_desc);      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>" \              
 8003e9c:	29 b4 00 0c 	lw r20,(r13+12)                                <== NOT EXECUTED
 8003ea0:	29 72 00 08 	lw r18,(r11+8)                                 <== NOT EXECUTED
 8003ea4:	29 71 00 0c 	lw r17,(r11+12)                                <== NOT EXECUTED
 8003ea8:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 8003eac:	29 af 00 08 	lw r15,(r13+8)                                 <== NOT EXECUTED
 8003eb0:	f8 00 88 35 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8003eb4:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
 8003eb8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8003ebc:	ba 80 18 00 	mv r3,r20                                      <== NOT EXECUTED
 8003ec0:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 8003ec4:	ba 40 28 00 	mv r5,r18                                      <== NOT EXECUTED
 8003ec8:	ba 20 30 00 	mv r6,r17                                      <== NOT EXECUTED
 8003ecc:	b9 80 38 00 	mv r7,r12                                      <== NOT EXECUTED
 8003ed0:	38 21 84 70 	ori r1,r1,0x8470                               <== NOT EXECUTED
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>"   \            
 8003ed4:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8003ed8:	5b 93 00 04 	sw (sp+4),r19                                  <== NOT EXECUTED
 8003edc:	fb ff fc f3 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
                           "%02d-%03d-%03d: copy pd failed: %s (%d)", 
                           ssc->device, ssc->segment, spage,          
                           dsc->device, dsc->segment, dpage,          
                           strerror (ret), ret);                      
        rtems_fdisk_queue_segment (fd, dsc);                          
 8003ee0:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8003ee4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8003ee8:	fb ff fd 7e 	calli 80034e0 <rtems_fdisk_queue_segment>      <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
 8003eec:	29 c2 00 40 	lw r2,(r14+64)                                 <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
 8003ef0:	29 c1 00 44 	lw r1,(r14+68)                                 <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
 8003ef4:	59 a2 00 00 	sw (r13+0),r2                                  <== NOT EXECUTED
    queue->head = sc;                                                 
 8003ef8:	59 cd 00 40 	sw (r14+64),r13                                <== NOT EXECUTED
                                                                      
    if (queue->tail == 0)                                             
 8003efc:	44 20 00 87 	be r1,r0,8004118 <rtems_fdisk_recycle_segment+0x460><== NOT EXECUTED
      queue->tail = sc;                                               
    queue->count++;                                                   
 8003f00:	29 c1 00 48 	lw r1,(r14+72)                                 <== NOT EXECUTED
 8003f04:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
 8003f08:	59 c1 00 48 	sw (r14+72),r1                                 <== NOT EXECUTED
 8003f0c:	e0 00 00 16 	bi 8003f64 <rtems_fdisk_recycle_segment+0x2ac> <== NOT EXECUTED
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8003f10:	29 e1 00 00 	lw r1,(r15+0)                                  
 8003f14:	44 31 00 28 	be r1,r17,8003fb4 <rtems_fdisk_recycle_segment+0x2fc><== NEVER TAKEN
    {                                                                 
      --fd->erased_blocks;                                            
    }                                                                 
    else                                                              
    {                                                                 
      used++;                                                         
 8003f18:	36 94 00 01 	addi r20,r20,1                                 
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
 8003f1c:	36 10 00 01 	addi r16,r16,1                                 
 8003f20:	36 52 00 08 	addi r18,r18,8                                 
 8003f24:	54 f0 ff 86 	bgu r7,r16,8003d3c <rtems_fdisk_recycle_segment+0x84>
      used++;                                                         
    }                                                                 
  }                                                                   
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "ssc end: %d-%d: p=%ld, a=%ld, u=%ld",      
 8003f28:	29 a3 00 08 	lw r3,(r13+8)                                  
 8003f2c:	29 a4 00 0c 	lw r4,(r13+12)                                 
 8003f30:	78 02 08 03 	mvhi r2,0x803                                  
 8003f34:	38 42 84 f8 	ori r2,r2,0x84f8                               
 8003f38:	b9 c0 08 00 	mv r1,r14                                      
 8003f3c:	ba a0 28 00 	mv r5,r21                                      
 8003f40:	ba e0 30 00 	mv r6,r23                                      
 8003f44:	ba 80 38 00 	mv r7,r20                                      
 8003f48:	fb ff fc 3f 	calli 8003044 <rtems_fdisk_printf>             
                      ssc->device, ssc->segment,                      
                      pages, active, used);                           
#endif                                                                
  if (ssc->pages_active != 0)                                         
 8003f4c:	29 a2 00 1c 	lw r2,(r13+28)                                 
 8003f50:	5c 40 00 60 	bne r2,r0,80040d0 <rtems_fdisk_recycle_segment+0x418><== NEVER TAKEN
  {                                                                   
    rtems_fdisk_error ("compacting: ssc pages not 0: %d",             
                       ssc->pages_active);                            
  }                                                                   
                                                                      
  ret = rtems_fdisk_erase_segment (fd, ssc);                          
 8003f54:	b9 c0 08 00 	mv r1,r14                                      
 8003f58:	b9 a0 10 00 	mv r2,r13                                      
 8003f5c:	fb ff fc fd 	calli 8003350 <rtems_fdisk_erase_segment>      
 8003f60:	b8 20 98 00 	mv r19,r1                                      
                                                                      
  return ret;                                                         
}                                                                     
 8003f64:	ba 60 08 00 	mv r1,r19                                      
 8003f68:	2b 9d 00 08 	lw ra,(sp+8)                                   
 8003f6c:	2b 8b 00 48 	lw r11,(sp+72)                                 
 8003f70:	2b 8c 00 44 	lw r12,(sp+68)                                 
 8003f74:	2b 8d 00 40 	lw r13,(sp+64)                                 
 8003f78:	2b 8e 00 3c 	lw r14,(sp+60)                                 
 8003f7c:	2b 8f 00 38 	lw r15,(sp+56)                                 
 8003f80:	2b 90 00 34 	lw r16,(sp+52)                                 
 8003f84:	2b 91 00 30 	lw r17,(sp+48)                                 
 8003f88:	2b 92 00 2c 	lw r18,(sp+44)                                 
 8003f8c:	2b 93 00 28 	lw r19,(sp+40)                                 
 8003f90:	2b 94 00 24 	lw r20,(sp+36)                                 
 8003f94:	2b 95 00 20 	lw r21,(sp+32)                                 
 8003f98:	2b 96 00 1c 	lw r22,(sp+28)                                 
 8003f9c:	2b 97 00 18 	lw r23,(sp+24)                                 
 8003fa0:	2b 98 00 14 	lw r24,(sp+20)                                 
 8003fa4:	2b 99 00 10 	lw r25,(sp+16)                                 
 8003fa8:	2b 9b 00 0c 	lw fp,(sp+12)                                  
 8003fac:	37 9c 00 50 	addi sp,sp,80                                  
 8003fb0:	c3 a0 00 00 	ret                                            
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
 8003fb4:	29 e1 00 04 	lw r1,(r15+4)                                  <== NOT EXECUTED
 8003fb8:	5c 31 ff d8 	bne r1,r17,8003f18 <rtems_fdisk_recycle_segment+0x260><== NOT EXECUTED
                                                                      
      (*pages)--;                                                     
    }                                                                 
    else if (rtems_fdisk_page_desc_erased (spd))                      
    {                                                                 
      --fd->erased_blocks;                                            
 8003fbc:	29 c1 00 28 	lw r1,(r14+40)                                 <== NOT EXECUTED
 8003fc0:	34 21 ff ff 	addi r1,r1,-1                                  <== NOT EXECUTED
 8003fc4:	59 c1 00 28 	sw (r14+40),r1                                 <== NOT EXECUTED
 8003fc8:	e3 ff ff d5 	bi 8003f1c <rtems_fdisk_recycle_segment+0x264> <== NOT EXECUTED
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
                                                                      
    if (!dsc && ssc->pages_active > 0)                                
 8003fcc:	29 a1 00 1c 	lw r1,(r13+28)                                 
 8003fd0:	44 2b ff 5d 	be r1,r11,8003d44 <rtems_fdisk_recycle_segment+0x8c><== ALWAYS TAKEN
    {                                                                 
      rtems_fdisk_error ("recycle: no available dst segment");        
 8003fd4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8003fd8:	38 21 83 c4 	ori r1,r1,0x83c4                               <== NOT EXECUTED
 8003fdc:	fb ff fc b3 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
      return EIO;                                                     
 8003fe0:	34 13 00 05 	mvi r19,5                                      <== NOT EXECUTED
 8003fe4:	e3 ff ff e0 	bi 8003f64 <rtems_fdisk_recycle_segment+0x2ac> <== NOT EXECUTED
#endif                                                                
  ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,              
                                   fd->copy_buffer);                  
  if (ret)                                                            
    return ret;                                                       
  return rtems_fdisk_seg_write_page (fd, dst_sc, dst_page,            
 8003fe8:	29 c4 00 68 	lw r4,(r14+104)                                
 8003fec:	b9 c0 08 00 	mv r1,r14                                      
 8003ff0:	b9 60 10 00 	mv r2,r11                                      
 8003ff4:	bb 00 18 00 	mv r3,r24                                      
 8003ff8:	fb ff fe fc 	calli 8003be8 <rtems_fdisk_seg_write_page>     
 8003ffc:	b8 20 98 00 	mv r19,r1                                      
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
                                       spage + ssc->pages_desc,       
                                       dsc,                           
                                       dpage + dsc->pages_desc);      
      if (ret)                                                        
 8004000:	5c 20 ff a7 	bne r1,r0,8003e9c <rtems_fdisk_recycle_segment+0x1e4><== NEVER TAKEN
      uint32_t               dst_pages;                               
      rtems_fdisk_page_desc* dpd;                                     
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
 8004004:	b5 8c 08 00 	add r1,r12,r12                                 
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      *dpd = *spd;                                                    
 8004008:	29 e2 00 00 	lw r2,(r15+0)                                  
      uint32_t               dst_pages;                               
      rtems_fdisk_page_desc* dpd;                                     
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
 800400c:	b4 21 08 00 	add r1,r1,r1                                   
 8004010:	b4 21 08 00 	add r1,r1,r1                                   
 8004014:	b6 c1 20 00 	add r4,r22,r1                                  
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      *dpd = *spd;                                                    
 8004018:	58 82 00 00 	sw (r4+0),r2                                   
 800401c:	29 e3 00 04 	lw r3,(r15+4)                                  
                                                                      
      ret = rtems_fdisk_seg_write_page_desc (fd,                      
 8004020:	b9 c0 08 00 	mv r1,r14                                      
 8004024:	b9 60 10 00 	mv r2,r11                                      
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      *dpd = *spd;                                                    
 8004028:	58 83 00 04 	sw (r4+4),r3                                   
                                                                      
      ret = rtems_fdisk_seg_write_page_desc (fd,                      
 800402c:	b9 80 18 00 	mv r3,r12                                      
 8004030:	fb ff fe cc 	calli 8003b60 <rtems_fdisk_seg_write_page_desc>
 8004034:	b8 20 98 00 	mv r19,r1                                      
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
 8004038:	5c 20 00 2a 	bne r1,r0,80040e0 <rtems_fdisk_recycle_segment+0x428><== NEVER TAKEN
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      dsc->pages_active++;                                            
 800403c:	29 63 00 1c 	lw r3,(r11+28)                                 
       */                                                             
                                                                      
      ssc->pages_active--;                                            
      ssc->pages_used++;                                              
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
 8004040:	29 e1 00 04 	lw r1,(r15+4)                                  
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
      ssc->pages_used++;                                              
 8004044:	29 a2 00 20 	lw r2,(r13+32)                                 
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      dsc->pages_active++;                                            
 8004048:	34 63 00 01 	addi r3,r3,1                                   
 800404c:	59 63 00 1c 	sw (r11+28),r3                                 
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
 8004050:	29 a3 00 1c 	lw r3,(r13+28)                                 
      ssc->pages_used++;                                              
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
 8004054:	29 c4 00 18 	lw r4,(r14+24)                                 
 8004058:	b4 21 08 00 	add r1,r1,r1                                   
 800405c:	b4 21 08 00 	add r1,r1,r1                                   
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
 8004060:	34 63 ff ff 	addi r3,r3,-1                                  
      ssc->pages_used++;                                              
 8004064:	34 42 00 01 	addi r2,r2,1                                   
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
 8004068:	b4 21 08 00 	add r1,r1,r1                                   
 800406c:	b4 81 08 00 	add r1,r4,r1                                   
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
 8004070:	59 a3 00 1c 	sw (r13+28),r3                                 
      ssc->pages_used++;                                              
 8004074:	59 a2 00 20 	sw (r13+32),r2                                 
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
 8004078:	58 2b 00 00 	sw (r1+0),r11                                  
      fd->blocks[spd->block].page    = dpage;                         
 800407c:	58 2c 00 04 	sw (r1+4),r12                                  
                                                                      
      /*                                                              
       * Place the segment on to the correct queue.                   
       */                                                             
      rtems_fdisk_queue_segment (fd, dsc);                            
 8004080:	b9 60 10 00 	mv r2,r11                                      
 8004084:	b9 c0 08 00 	mv r1,r14                                      
 8004088:	fb ff fd 16 	calli 80034e0 <rtems_fdisk_queue_segment>      
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 800408c:	29 64 00 20 	lw r4,(r11+32)                                 
 8004090:	29 61 00 1c 	lw r1,(r11+28)                                 
 8004094:	29 63 00 24 	lw r3,(r11+36)                                 
                                                                      
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
 8004098:	29 62 00 14 	lw r2,(r11+20)                                 
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
 800409c:	b4 81 08 00 	add r1,r4,r1                                   
 80040a0:	b4 23 08 00 	add r1,r1,r3                                   
                                                                      
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
 80040a4:	44 41 00 07 	be r2,r1,80040c0 <rtems_fdisk_recycle_segment+0x408>
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
                                                                      
      (*pages)--;                                                     
 80040a8:	2a a1 00 00 	lw r1,(r21+0)                                  
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
                                                                      
      active++;                                                       
 80040ac:	36 f7 00 01 	addi r23,r23,1                                 
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
                                                                      
      (*pages)--;                                                     
 80040b0:	34 21 ff ff 	addi r1,r1,-1                                  
 80040b4:	5a a1 00 00 	sw (r21+0),r1                                  
 80040b8:	29 a7 00 14 	lw r7,(r13+20)                                 
      return EIO;                                                     
    }                                                                 
                                                                      
    if (rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_ACTIVE) &&
        !rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_USED))
    {                                                                 
 80040bc:	e3 ff ff 98 	bi 8003f1c <rtems_fdisk_recycle_segment+0x264> 
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
 80040c0:	29 c1 00 34 	lw r1,(r14+52)                                 
 80040c4:	fb ff fe 22 	calli 800394c <rtems_fdisk_seg_most_available.clone.12>
 80040c8:	b8 20 58 00 	mv r11,r1                                      
 80040cc:	e3 ff ff f7 	bi 80040a8 <rtems_fdisk_recycle_segment+0x3f0> 
                      ssc->device, ssc->segment,                      
                      pages, active, used);                           
#endif                                                                
  if (ssc->pages_active != 0)                                         
  {                                                                   
    rtems_fdisk_error ("compacting: ssc pages not 0: %d",             
 80040d0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80040d4:	38 21 85 1c 	ori r1,r1,0x851c                               <== NOT EXECUTED
 80040d8:	fb ff fc 74 	calli 80032a8 <rtems_fdisk_error>              <== NOT EXECUTED
 80040dc:	e3 ff ff 9e 	bi 8003f54 <rtems_fdisk_recycle_segment+0x29c> <== NOT EXECUTED
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>"   \            
 80040e0:	29 b4 00 0c 	lw r20,(r13+12)                                <== NOT EXECUTED
 80040e4:	29 72 00 08 	lw r18,(r11+8)                                 <== NOT EXECUTED
 80040e8:	29 71 00 0c 	lw r17,(r11+12)                                <== NOT EXECUTED
 80040ec:	29 af 00 08 	lw r15,(r13+8)                                 <== NOT EXECUTED
 80040f0:	f8 00 87 a5 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80040f4:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
 80040f8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80040fc:	ba 80 18 00 	mv r3,r20                                      <== NOT EXECUTED
 8004100:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 8004104:	ba 40 28 00 	mv r5,r18                                      <== NOT EXECUTED
 8004108:	ba 20 30 00 	mv r6,r17                                      <== NOT EXECUTED
 800410c:	b9 80 38 00 	mv r7,r12                                      <== NOT EXECUTED
 8004110:	38 21 84 b4 	ori r1,r1,0x84b4                               <== NOT EXECUTED
 8004114:	e3 ff ff 70 	bi 8003ed4 <rtems_fdisk_recycle_segment+0x21c> <== NOT EXECUTED
  {                                                                   
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
 8004118:	59 cd 00 44 	sw (r14+68),r13                                <== NOT EXECUTED
 800411c:	e3 ff ff 79 	bi 8003f00 <rtems_fdisk_recycle_segment+0x248> <== NOT EXECUTED
 8004120:	59 cd 00 44 	sw (r14+68),r13                                <== NOT EXECUTED
 8004124:	e3 ff ff 33 	bi 8003df0 <rtems_fdisk_recycle_segment+0x138> <== NOT EXECUTED
                                    uint32_t *pages)                  
{                                                                     
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
 8004128:	34 17 00 00 	mvi r23,0                                      <== NOT EXECUTED
                                    rtems_fdisk_segment_ctl* dsc,     
                                    uint32_t *pages)                  
{                                                                     
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
 800412c:	34 14 00 00 	mvi r20,0                                      <== NOT EXECUTED
 8004130:	e3 ff ff 7e 	bi 8003f28 <rtems_fdisk_recycle_segment+0x270> <== NOT EXECUTED
                                                                      

080030fc <rtems_fdisk_seg_write>: rtems_fdisk_seg_write (const rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc, uint32_t offset, const void* buffer, uint32_t size) {
 80030fc:	37 9c ff dc 	addi sp,sp,-36                                 
 8003100:	5b 8b 00 24 	sw (sp+36),r11                                 
 8003104:	5b 8c 00 20 	sw (sp+32),r12                                 
 8003108:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800310c:	5b 8e 00 18 	sw (sp+24),r14                                 
 8003110:	5b 8f 00 14 	sw (sp+20),r15                                 
 8003114:	5b 90 00 10 	sw (sp+16),r16                                 
 8003118:	5b 91 00 0c 	sw (sp+12),r17                                 
 800311c:	5b 92 00 08 	sw (sp+8),r18                                  
 8003120:	5b 9d 00 04 	sw (sp+4),ra                                   
  int ret;                                                            
  uint32_t                           device;                          
  uint32_t                           segment;                         
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
 8003124:	28 4c 00 08 	lw r12,(r2+8)                                  
  segment = sc->segment;                                              
 8003128:	28 4b 00 0c 	lw r11,(r2+12)                                 
rtems_fdisk_seg_write (const rtems_flashdisk*   fd,                   
                       rtems_fdisk_segment_ctl* sc,                   
                       uint32_t                 offset,               
                       const void*              buffer,               
                       uint32_t                 size)                 
{                                                                     
 800312c:	b8 40 68 00 	mv r13,r2                                      
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 8003130:	b5 8c 10 00 	add r2,r12,r12                                 
 8003134:	28 28 00 2c 	lw r8,(r1+44)                                  
 8003138:	b4 4c 30 00 	add r6,r2,r12                                  
 800313c:	b4 c6 30 00 	add r6,r6,r6                                   
 8003140:	b5 6b 38 00 	add r7,r11,r11                                 
 8003144:	b4 c6 30 00 	add r6,r6,r6                                   
 8003148:	b4 eb 38 00 	add r7,r7,r11                                  
 800314c:	b5 06 30 00 	add r6,r8,r6                                   
 8003150:	b4 e7 38 00 	add r7,r7,r7                                   
 8003154:	28 c2 00 00 	lw r2,(r6+0)                                   
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
 8003158:	28 c8 00 08 	lw r8,(r6+8)                                   
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 800315c:	b4 e7 38 00 	add r7,r7,r7                                   
 8003160:	b4 e7 38 00 	add r7,r7,r7                                   
 8003164:	b4 e7 38 00 	add r7,r7,r7                                   
 8003168:	b4 47 38 00 	add r7,r2,r7                                   
rtems_fdisk_seg_write (const rtems_flashdisk*   fd,                   
                       rtems_fdisk_segment_ctl* sc,                   
                       uint32_t                 offset,               
                       const void*              buffer,               
                       uint32_t                 size)                 
{                                                                     
 800316c:	b8 60 78 00 	mv r15,r3                                      
 8003170:	b8 a0 70 00 	mv r14,r5                                      
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
 8003174:	29 12 00 08 	lw r18,(r8+8)                                  
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-write: %02d-%03d: o=%08x s=%d",      
 8003178:	78 02 08 03 	mvhi r2,0x803                                  
rtems_fdisk_seg_write (const rtems_flashdisk*   fd,                   
                       rtems_fdisk_segment_ctl* sc,                   
                       uint32_t                 offset,               
                       const void*              buffer,               
                       uint32_t                 size)                 
{                                                                     
 800317c:	b8 80 80 00 	mv r16,r4                                      
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-write: %02d-%03d: o=%08x s=%d",      
 8003180:	38 42 82 a8 	ori r2,r2,0x82a8                               
 8003184:	b9 80 18 00 	mv r3,r12                                      
 8003188:	b9 60 20 00 	mv r4,r11                                      
 800318c:	b9 e0 28 00 	mv r5,r15                                      
 8003190:	b9 c0 30 00 	mv r6,r14                                      
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
 8003194:	28 f1 00 04 	lw r17,(r7+4)                                  
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-write: %02d-%03d: o=%08x s=%d",      
 8003198:	fb ff ff ab 	calli 8003044 <rtems_fdisk_printf>             
                      device, segment, offset, size);                 
#endif                                                                
  ret = ops->write (sd, device, segment, offset, buffer, size);       
 800319c:	2a 47 00 04 	lw r7,(r18+4)                                  
 80031a0:	ba 20 08 00 	mv r1,r17                                      
 80031a4:	b9 80 10 00 	mv r2,r12                                      
 80031a8:	b9 60 18 00 	mv r3,r11                                      
 80031ac:	b9 e0 20 00 	mv r4,r15                                      
 80031b0:	ba 00 28 00 	mv r5,r16                                      
 80031b4:	b9 c0 30 00 	mv r6,r14                                      
 80031b8:	d8 e0 00 00 	call r7                                        
  if (ret)                                                            
 80031bc:	44 20 00 03 	be r1,r0,80031c8 <rtems_fdisk_seg_write+0xcc>  <== ALWAYS TAKEN
    sc->failed = true;                                                
 80031c0:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80031c4:	59 a2 00 28 	sw (r13+40),r2                                 <== NOT EXECUTED
                                                                      
  return ret;                                                         
}                                                                     
 80031c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80031cc:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80031d0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80031d4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80031d8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80031dc:	2b 8f 00 14 	lw r15,(sp+20)                                 
 80031e0:	2b 90 00 10 	lw r16,(sp+16)                                 
 80031e4:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80031e8:	2b 92 00 08 	lw r18,(sp+8)                                  
 80031ec:	37 9c 00 24 	addi sp,sp,36                                  
 80031f0:	c3 a0 00 00 	ret                                            
                                                                      

08003be8 <rtems_fdisk_seg_write_page>: static int rtems_fdisk_seg_write_page (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc, uint32_t page, const void* buffer) {
 8003be8:	37 9c ff e0 	addi sp,sp,-32                                 
 8003bec:	5b 8b 00 20 	sw (sp+32),r11                                 
 8003bf0:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8003bf4:	5b 8d 00 18 	sw (sp+24),r13                                 
 8003bf8:	5b 8e 00 14 	sw (sp+20),r14                                 
 8003bfc:	5b 8f 00 10 	sw (sp+16),r15                                 
 8003c00:	5b 90 00 0c 	sw (sp+12),r16                                 
 8003c04:	5b 91 00 08 	sw (sp+8),r17                                  
 8003c08:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003c0c:	b8 20 58 00 	mv r11,r1                                      
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003c10:	28 21 00 08 	lw r1,(r1+8)                                   
static int                                                            
rtems_fdisk_seg_write_page (rtems_flashdisk*         fd,              
                            rtems_fdisk_segment_ctl* sc,              
                            uint32_t                 page,            
                            const void*              buffer)          
{                                                                     
 8003c14:	b8 40 60 00 	mv r12,r2                                      
 8003c18:	b8 60 70 00 	mv r14,r3                                      
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003c1c:	20 21 00 08 	andi r1,r1,0x8                                 
static int                                                            
rtems_fdisk_seg_write_page (rtems_flashdisk*         fd,              
                            rtems_fdisk_segment_ctl* sc,              
                            uint32_t                 page,            
                            const void*              buffer)          
{                                                                     
 8003c20:	b8 80 78 00 	mv r15,r4                                      
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003c24:	44 20 00 0e 	be r1,r0,8003c5c <rtems_fdisk_seg_write_page+0x74><== NEVER TAKEN
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
                                      page * fd->block_size, fd->block_size);
 8003c28:	29 6d 00 14 	lw r13,(r11+20)                                
static int                                                            
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
 8003c2c:	28 51 00 08 	lw r17,(r2+8)                                  
 8003c30:	28 50 00 0c 	lw r16,(r2+12)                                 
 8003c34:	b8 60 08 00 	mv r1,r3                                       
 8003c38:	b9 a0 10 00 	mv r2,r13                                      
 8003c3c:	fb ff f6 e2 	calli 80017c4 <__mulsi3>                       
 8003c40:	b8 20 20 00 	mv r4,r1                                       
 8003c44:	ba 20 10 00 	mv r2,r17                                      
 8003c48:	b9 60 08 00 	mv r1,r11                                      
 8003c4c:	ba 00 18 00 	mv r3,r16                                      
 8003c50:	b9 a0 28 00 	mv r5,r13                                      
 8003c54:	fb ff ff 8f 	calli 8003a90 <rtems_fdisk_seg_blank_check.clone.16>
                            const void*              buffer)          
{                                                                     
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
  {                                                                   
    int ret = rtems_fdisk_seg_blank_check_page (fd, sc, page);        
    if (ret)                                                          
 8003c58:	5c 20 00 0e 	bne r1,r0,8003c90 <rtems_fdisk_seg_write_page+0xa8><== NEVER TAKEN
      return ret;                                                     
  }                                                                   
  --fd->erased_blocks;                                                
 8003c5c:	29 62 00 28 	lw r2,(r11+40)                                 
  return rtems_fdisk_seg_write (fd, sc,                               
                                page * fd->block_size, buffer, fd->block_size);
 8003c60:	29 6d 00 14 	lw r13,(r11+20)                                
    int ret = rtems_fdisk_seg_blank_check_page (fd, sc, page);        
    if (ret)                                                          
      return ret;                                                     
  }                                                                   
  --fd->erased_blocks;                                                
  return rtems_fdisk_seg_write (fd, sc,                               
 8003c64:	b9 c0 08 00 	mv r1,r14                                      
  {                                                                   
    int ret = rtems_fdisk_seg_blank_check_page (fd, sc, page);        
    if (ret)                                                          
      return ret;                                                     
  }                                                                   
  --fd->erased_blocks;                                                
 8003c68:	34 42 ff ff 	addi r2,r2,-1                                  
 8003c6c:	59 62 00 28 	sw (r11+40),r2                                 
  return rtems_fdisk_seg_write (fd, sc,                               
 8003c70:	b9 a0 10 00 	mv r2,r13                                      
 8003c74:	fb ff f6 d4 	calli 80017c4 <__mulsi3>                       
 8003c78:	b8 20 18 00 	mv r3,r1                                       
 8003c7c:	b9 80 10 00 	mv r2,r12                                      
 8003c80:	b9 60 08 00 	mv r1,r11                                      
 8003c84:	b9 e0 20 00 	mv r4,r15                                      
 8003c88:	b9 a0 28 00 	mv r5,r13                                      
 8003c8c:	fb ff fd 1c 	calli 80030fc <rtems_fdisk_seg_write>          
                                page * fd->block_size, buffer, fd->block_size);
}                                                                     
 8003c90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003c94:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8003c98:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8003c9c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8003ca0:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8003ca4:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8003ca8:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8003cac:	2b 91 00 08 	lw r17,(sp+8)                                  
 8003cb0:	37 9c 00 20 	addi sp,sp,32                                  
 8003cb4:	c3 a0 00 00 	ret                                            
                                                                      

08003b60 <rtems_fdisk_seg_write_page_desc>: static int rtems_fdisk_seg_write_page_desc (const rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc, uint32_t page, const rtems_fdisk_page_desc* page_desc) {
 8003b60:	37 9c ff ec 	addi sp,sp,-20                                 
 8003b64:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003b68:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003b6c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003b70:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003b74:	5b 9d 00 04 	sw (sp+4),ra                                   
  uint32_t offset = page * sizeof (rtems_fdisk_page_desc);            
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003b78:	28 25 00 08 	lw r5,(r1+8)                                   
rtems_fdisk_seg_write_page_desc (const rtems_flashdisk*       fd,     
                                 rtems_fdisk_segment_ctl*     sc,     
                                 uint32_t                     page,   
                                 const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = page * sizeof (rtems_fdisk_page_desc);            
 8003b7c:	b4 63 58 00 	add r11,r3,r3                                  
 8003b80:	b5 6b 58 00 	add r11,r11,r11                                
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003b84:	20 a3 00 08 	andi r3,r5,0x8                                 
static int                                                            
rtems_fdisk_seg_write_page_desc (const rtems_flashdisk*       fd,     
                                 rtems_fdisk_segment_ctl*     sc,     
                                 uint32_t                     page,   
                                 const rtems_fdisk_page_desc* page_desc)
{                                                                     
 8003b88:	b8 20 68 00 	mv r13,r1                                      
 8003b8c:	b8 40 60 00 	mv r12,r2                                      
 8003b90:	b8 80 70 00 	mv r14,r4                                      
  uint32_t offset = page * sizeof (rtems_fdisk_page_desc);            
 8003b94:	b5 6b 58 00 	add r11,r11,r11                                
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
 8003b98:	44 60 00 07 	be r3,r0,8003bb4 <rtems_fdisk_seg_write_page_desc+0x54><== NEVER TAKEN
  {                                                                   
    int ret = rtems_fdisk_seg_blank_check (fd, sc,                    
 8003b9c:	28 42 00 08 	lw r2,(r2+8)                                   
 8003ba0:	29 83 00 0c 	lw r3,(r12+12)                                 
 8003ba4:	b9 60 20 00 	mv r4,r11                                      
 8003ba8:	34 05 00 08 	mvi r5,8                                       
 8003bac:	fb ff ff b9 	calli 8003a90 <rtems_fdisk_seg_blank_check.clone.16>
                                           offset,                    
                                           sizeof (rtems_fdisk_page_desc));
    if (ret)                                                          
 8003bb0:	5c 20 00 07 	bne r1,r0,8003bcc <rtems_fdisk_seg_write_page_desc+0x6c><== NEVER TAKEN
      return ret;                                                     
  }                                                                   
  return rtems_fdisk_seg_write (fd, sc, offset,                       
 8003bb4:	b9 a0 08 00 	mv r1,r13                                      
 8003bb8:	b9 80 10 00 	mv r2,r12                                      
 8003bbc:	b9 60 18 00 	mv r3,r11                                      
 8003bc0:	b9 c0 20 00 	mv r4,r14                                      
 8003bc4:	34 05 00 08 	mvi r5,8                                       
 8003bc8:	fb ff fd 4d 	calli 80030fc <rtems_fdisk_seg_write>          
                                page_desc, sizeof (rtems_fdisk_page_desc));
}                                                                     
 8003bcc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003bd0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003bd4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003bd8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003bdc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003be0:	37 9c 00 14 	addi sp,sp,20                                  
 8003be4:	c3 a0 00 00 	ret                                            
                                                                      

080031f4 <rtems_fdisk_warning>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...) {
 80031f4:	37 9c ff d4 	addi sp,sp,-44                                 <== NOT EXECUTED
 80031f8:	5b 8b 00 10 	sw (sp+16),r11                                 <== NOT EXECUTED
 80031fc:	5b 8c 00 0c 	sw (sp+12),r12                                 <== NOT EXECUTED
 8003200:	5b 8d 00 08 	sw (sp+8),r13                                  <== NOT EXECUTED
 8003204:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8003208:	5b 82 00 14 	sw (sp+20),r2                                  <== NOT EXECUTED
 800320c:	5b 83 00 18 	sw (sp+24),r3                                  <== NOT EXECUTED
 8003210:	5b 84 00 1c 	sw (sp+28),r4                                  <== NOT EXECUTED
 8003214:	5b 85 00 20 	sw (sp+32),r5                                  <== NOT EXECUTED
 8003218:	5b 86 00 24 	sw (sp+36),r6                                  <== NOT EXECUTED
 800321c:	5b 87 00 28 	sw (sp+40),r7                                  <== NOT EXECUTED
 8003220:	5b 88 00 2c 	sw (sp+44),r8                                  <== NOT EXECUTED
  int ret = 0;                                                        
  if (fd->info_level >= 1)                                            
 8003224:	28 21 00 6c 	lw r1,(r1+108)                                 <== NOT EXECUTED
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...)
{                                                                     
 8003228:	b8 40 68 00 	mv r13,r2                                      <== NOT EXECUTED
  int ret = 0;                                                        
 800322c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
  if (fd->info_level >= 1)                                            
 8003230:	44 20 00 17 	be r1,r0,800328c <rtems_fdisk_warning+0x98>    <== NOT EXECUTED
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:warning:");                               
 8003234:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 8003238:	39 6b e2 90 	ori r11,r11,0xe290                             <== NOT EXECUTED
 800323c:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003240:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8003244:	34 03 00 0e 	mvi r3,14                                      <== NOT EXECUTED
 8003248:	28 24 00 08 	lw r4,(r1+8)                                   <== NOT EXECUTED
 800324c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8003250:	38 21 82 cc 	ori r1,r1,0x82cc                               <== NOT EXECUTED
 8003254:	f8 00 85 1d 	calli 80246c8 <fwrite>                         <== NOT EXECUTED
    ret =  vfprintf (stdout, format, args);                           
 8003258:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 800325c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8003260:	37 83 00 18 	addi r3,sp,24                                  <== NOT EXECUTED
 8003264:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 8003268:	f8 00 a4 8d 	calli 802c49c <vfprintf>                       <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
 800326c:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
  if (fd->info_level >= 1)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:warning:");                               
    ret =  vfprintf (stdout, format, args);                           
 8003270:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
 8003274:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 8003278:	28 42 00 08 	lw r2,(r2+8)                                   <== NOT EXECUTED
 800327c:	f8 00 84 50 	calli 80243bc <fputc>                          <== NOT EXECUTED
    fflush (stdout);                                                  
 8003280:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8003284:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 8003288:	f8 00 82 bf 	calli 8023d84 <fflush>                         <== NOT EXECUTED
    va_end (args);                                                    
  }                                                                   
  return ret;                                                         
}                                                                     
 800328c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003290:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003294:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8003298:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 800329c:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80032a0:	37 9c 00 2c 	addi sp,sp,44                                  <== NOT EXECUTED
 80032a4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003064 <rtems_filesystem_do_unmount>: } void rtems_filesystem_do_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8003064:	37 9c ff f4 	addi sp,sp,-12                                 
 8003068:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800306c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003070:	5b 9d 00 04 	sw (sp+4),ra                                   
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8003074:	78 0c 08 02 	mvhi r12,0x802                                 
 8003078:	39 8c 08 24 	ori r12,r12,0x824                              
 800307c:	b8 20 58 00 	mv r11,r1                                      
 8003080:	29 81 00 00 	lw r1,(r12+0)                                  
 8003084:	34 02 00 00 	mvi r2,0                                       
 8003088:	34 03 00 00 	mvi r3,0                                       
 800308c:	f8 00 02 f4 	calli 8003c5c <rtems_semaphore_obtain>         
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 8003090:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 8003094:	29 62 00 04 	lw r2,(r11+4)                                  
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 8003098:	29 81 00 00 	lw r1,(r12+0)                                  
  next->previous = previous;                                          
 800309c:	58 62 00 04 	sw (r3+4),r2                                   
  previous->next = next;                                              
 80030a0:	58 43 00 00 	sw (r2+0),r3                                   
 80030a4:	f8 00 03 4a 	calli 8003dcc <rtems_semaphore_release>        
  rtems_filesystem_mt_lock();                                         
  rtems_chain_extract_unprotected(&mt_entry->mt_node);                
  rtems_filesystem_mt_unlock();                                       
  rtems_filesystem_global_location_release(mt_entry->mt_point_node);  
 80030a8:	29 61 00 20 	lw r1,(r11+32)                                 
 80030ac:	f8 00 00 9b 	calli 8003318 <rtems_filesystem_global_location_release>
  (*mt_entry->ops->fsunmount_me_h)(mt_entry);                         
 80030b0:	29 62 00 0c 	lw r2,(r11+12)                                 
 80030b4:	b9 60 08 00 	mv r1,r11                                      
 80030b8:	28 42 00 3c 	lw r2,(r2+60)                                  
 80030bc:	d8 40 00 00 	call r2                                        
                                                                      
  if (mt_entry->unmount_task != 0) {                                  
 80030c0:	29 61 00 3c 	lw r1,(r11+60)                                 
 80030c4:	44 20 00 04 	be r1,r0,80030d4 <rtems_filesystem_do_unmount+0x70><== NEVER TAKEN
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send(    
  rtems_id id                                                         
)                                                                     
{                                                                     
  return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT ); 
 80030c8:	78 02 80 00 	mvhi r2,0x8000                                 
 80030cc:	f8 00 03 79 	calli 8003eb0 <rtems_event_system_send>        
    rtems_status_code sc =                                            
      rtems_event_transient_send(mt_entry->unmount_task);             
    if (sc != RTEMS_SUCCESSFUL) {                                     
 80030d0:	5c 20 00 08 	bne r1,r0,80030f0 <rtems_filesystem_do_unmount+0x8c><== NEVER TAKEN
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
  }                                                                   
                                                                      
  free(mt_entry);                                                     
 80030d4:	b9 60 08 00 	mv r1,r11                                      
 80030d8:	fb ff f9 54 	calli 8001628 <free>                           
}                                                                     
 80030dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80030e0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80030e4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80030e8:	37 9c 00 0c 	addi sp,sp,12                                  
 80030ec:	c3 a0 00 00 	ret                                            
                                                                      
  if (mt_entry->unmount_task != 0) {                                  
    rtems_status_code sc =                                            
      rtems_event_transient_send(mt_entry->unmount_task);             
    if (sc != RTEMS_SUCCESSFUL) {                                     
      rtems_fatal_error_occurred(0xdeadbeef);                         
 80030f0:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 80030f4:	38 42 d9 e0 	ori r2,r2,0xd9e0                               <== NOT EXECUTED
 80030f8:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 80030fc:	f8 00 04 eb 	calli 80044a8 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08009654 <rtems_filesystem_eval_path_generic>: void rtems_filesystem_eval_path_generic( rtems_filesystem_eval_path_context_t *ctx, void *arg, const rtems_filesystem_eval_path_generic_config *config ) {
 8009654:	37 9c ff d0 	addi sp,sp,-48                                 
 8009658:	5b 8b 00 30 	sw (sp+48),r11                                 
 800965c:	5b 8c 00 2c 	sw (sp+44),r12                                 
 8009660:	5b 8d 00 28 	sw (sp+40),r13                                 
 8009664:	5b 8e 00 24 	sw (sp+36),r14                                 
 8009668:	5b 8f 00 20 	sw (sp+32),r15                                 
 800966c:	5b 90 00 1c 	sw (sp+28),r16                                 
 8009670:	5b 91 00 18 	sw (sp+24),r17                                 
 8009674:	5b 92 00 14 	sw (sp+20),r18                                 
 8009678:	5b 93 00 10 	sw (sp+16),r19                                 
 800967c:	5b 94 00 0c 	sw (sp+12),r20                                 
 8009680:	5b 95 00 08 	sw (sp+8),r21                                  
 8009684:	5b 9d 00 04 	sw (sp+4),ra                                   
            } else {                                                  
              /* This is the root file system */                      
              status = (*config->eval_token)(ctx, arg, ".", 1);       
            }                                                         
          } else {                                                    
            status = (*config->eval_token)(ctx, arg, "..", 2);        
 8009688:	78 11 08 01 	mvhi r17,0x801                                 
                ¤tloc->mt_entry->mt_point_node                  
              );                                                      
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;       
            } else {                                                  
              /* This is the root file system */                      
              status = (*config->eval_token)(ctx, arg, ".", 1);       
 800968c:	78 10 08 01 	mvhi r16,0x801                                 
void rtems_filesystem_eval_path_generic(                              
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const rtems_filesystem_eval_path_generic_config *config             
)                                                                     
{                                                                     
 8009690:	b8 20 58 00 	mv r11,r1                                      
 8009694:	b8 40 78 00 	mv r15,r2                                      
 8009698:	b8 60 70 00 	mv r14,r3                                      
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 800969c:	34 13 00 01 	mvi r19,1                                      
static inline bool rtems_filesystem_is_parent_directory(              
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 2 && token [0] == '.' && token [1] == '.';       
 80096a0:	34 12 00 02 	mvi r18,2                                      
 80096a4:	34 14 00 2e 	mvi r20,46                                     
              rtems_filesystem_eval_path_error(ctx, EINVAL);          
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;       
            }                                                         
          }                                                           
        } else if (rtems_filesystem_is_parent_directory(token, tokenlen)) {
          rtems_filesystem_location_info_t *currentloc =              
 80096a8:	34 35 00 18 	addi r21,r1,24                                 
            } else {                                                  
              /* This is the root file system */                      
              status = (*config->eval_token)(ctx, arg, ".", 1);       
            }                                                         
          } else {                                                    
            status = (*config->eval_token)(ctx, arg, "..", 2);        
 80096ac:	3a 31 de 40 	ori r17,r17,0xde40                             
                ¤tloc->mt_entry->mt_point_node                  
              );                                                      
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;       
            } else {                                                  
              /* This is the root file system */                      
              status = (*config->eval_token)(ctx, arg, ".", 1);       
 80096b0:	3a 10 d9 dc 	ori r16,r16,0xd9dc                             
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char **token,                                                 
  size_t *tokenlen                                                    
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_next_token(ctx);                         
 80096b4:	b9 60 08 00 	mv r1,r11                                      
 80096b8:	f8 00 00 80 	calli 80098b8 <rtems_filesystem_eval_path_next_token>
  *token = ctx->token;                                                
  *tokenlen = ctx->tokenlen;                                          
 80096bc:	29 6c 00 0c 	lw r12,(r11+12)                                
  const char **token,                                                 
  size_t *tokenlen                                                    
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_next_token(ctx);                         
  *token = ctx->token;                                                
 80096c0:	29 6d 00 08 	lw r13,(r11+8)                                 
    const char *token;                                                
    size_t tokenlen;                                                  
                                                                      
    rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
                                                                      
    if (tokenlen > 0) {                                               
 80096c4:	5d 80 00 0f 	bne r12,r0,8009700 <rtems_filesystem_eval_path_generic+0xac>
      }                                                               
    } else {                                                          
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;               
    }                                                                 
  }                                                                   
}                                                                     
 80096c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80096cc:	2b 8b 00 30 	lw r11,(sp+48)                                 
 80096d0:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 80096d4:	2b 8d 00 28 	lw r13,(sp+40)                                 
 80096d8:	2b 8e 00 24 	lw r14,(sp+36)                                 
 80096dc:	2b 8f 00 20 	lw r15,(sp+32)                                 
 80096e0:	2b 90 00 1c 	lw r16,(sp+28)                                 
 80096e4:	2b 91 00 18 	lw r17,(sp+24)                                 
 80096e8:	2b 92 00 14 	lw r18,(sp+20)                                 
 80096ec:	2b 93 00 10 	lw r19,(sp+16)                                 
 80096f0:	2b 94 00 0c 	lw r20,(sp+12)                                 
 80096f4:	2b 95 00 08 	lw r21,(sp+8)                                  
 80096f8:	37 9c 00 30 	addi sp,sp,48                                  
 80096fc:	c3 a0 00 00 	ret                                            
    size_t tokenlen;                                                  
                                                                      
    rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
                                                                      
    if (tokenlen > 0) {                                               
      if ((*config->is_directory)(ctx, arg)) {                        
 8009700:	29 c3 00 00 	lw r3,(r14+0)                                  
 8009704:	b9 60 08 00 	mv r1,r11                                      
 8009708:	b9 e0 10 00 	mv r2,r15                                      
 800970c:	d8 60 00 00 	call r3                                        
 8009710:	44 20 00 0c 	be r1,r0,8009740 <rtems_filesystem_eval_path_generic+0xec>
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 8009714:	45 93 00 0f 	be r12,r19,8009750 <rtems_filesystem_eval_path_generic+0xfc>
static inline bool rtems_filesystem_is_parent_directory(              
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 2 && token [0] == '.' && token [1] == '.';       
 8009718:	45 92 00 26 	be r12,r18,80097b0 <rtems_filesystem_eval_path_generic+0x15c>
            }                                                         
          } else {                                                    
            status = (*config->eval_token)(ctx, arg, "..", 2);        
          }                                                           
        } else {                                                      
          status = (*config->eval_token)(ctx, arg, token, tokenlen);  
 800971c:	29 c5 00 04 	lw r5,(r14+4)                                  
 8009720:	b9 60 08 00 	mv r1,r11                                      
 8009724:	b9 e0 10 00 	mv r2,r15                                      
 8009728:	b9 a0 18 00 	mv r3,r13                                      
 800972c:	b9 80 20 00 	mv r4,r12                                      
 8009730:	d8 a0 00 00 	call r5                                        
        }                                                             
                                                                      
        if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {  
 8009734:	44 32 00 12 	be r1,r18,800977c <rtems_filesystem_eval_path_generic+0x128>
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;                      
                                                                      
  while (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE) {     
 8009738:	44 20 ff df 	be r1,r0,80096b4 <rtems_filesystem_eval_path_generic+0x60>
 800973c:	e3 ff ff e3 	bi 80096c8 <rtems_filesystem_eval_path_generic+0x74>
              rtems_filesystem_eval_path_error(ctx, ENOENT);          
            }                                                         
          }                                                           
        }                                                             
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOTDIR);               
 8009740:	b9 60 08 00 	mv r1,r11                                      
 8009744:	34 02 00 14 	mvi r2,20                                      
 8009748:	fb ff e4 27 	calli 80027e4 <rtems_filesystem_eval_path_error>
 800974c:	e3 ff ff df 	bi 80096c8 <rtems_filesystem_eval_path_generic+0x74>
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 8009750:	41 a1 00 00 	lbu r1,(r13+0)                                 
 8009754:	5c 34 ff f2 	bne r1,r20,800971c <rtems_filesystem_eval_path_generic+0xc8>
    rtems_filesystem_eval_path_get_next_token(ctx, &token, &tokenlen);
                                                                      
    if (tokenlen > 0) {                                               
      if ((*config->is_directory)(ctx, arg)) {                        
        if (rtems_filesystem_is_current_directory(token, tokenlen)) { 
          if (rtems_filesystem_eval_path_has_path(ctx)) {             
 8009758:	29 62 00 04 	lw r2,(r11+4)                                  
 800975c:	5c 40 00 32 	bne r2,r0,8009824 <rtems_filesystem_eval_path_generic+0x1d0>
            status = (*config->eval_token)(ctx, arg, ".", 1);         
          } else {                                                    
            int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);
                                                                      
            if ((eval_flags & RTEMS_FS_REJECT_TERMINAL_DOT) == 0) {   
 8009760:	29 61 00 10 	lw r1,(r11+16)                                 
 8009764:	20 21 01 00 	andi r1,r1,0x100                               
 8009768:	44 22 00 2f 	be r1,r2,8009824 <rtems_filesystem_eval_path_generic+0x1d0>
              status = (*config->eval_token)(ctx, arg, ".", 1);       
            } else {                                                  
              rtems_filesystem_eval_path_error(ctx, EINVAL);          
 800976c:	b9 60 08 00 	mv r1,r11                                      
 8009770:	34 02 00 16 	mvi r2,22                                      
 8009774:	fb ff e4 1c 	calli 80027e4 <rtems_filesystem_eval_path_error>
 8009778:	e3 ff ff d4 	bi 80096c8 <rtems_filesystem_eval_path_generic+0x74>
        } else {                                                      
          status = (*config->eval_token)(ctx, arg, token, tokenlen);  
        }                                                             
                                                                      
        if (status == RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY) {  
          if (rtems_filesystem_eval_path_has_path(ctx)) {             
 800977c:	29 61 00 04 	lw r1,(r11+4)                                  
 8009780:	44 20 ff d2 	be r1,r0,80096c8 <rtems_filesystem_eval_path_generic+0x74>
            int eval_flags;                                           
                                                                      
            rtems_filesystem_eval_path_eat_delimiter(ctx);            
 8009784:	b9 60 08 00 	mv r1,r11                                      
 8009788:	f8 00 00 3c 	calli 8009878 <rtems_filesystem_eval_path_eat_delimiter>
            eval_flags = rtems_filesystem_eval_path_get_flags(ctx);   
            if (                                                      
              (eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0 
 800978c:	29 61 00 10 	lw r1,(r11+16)                                 
 8009790:	20 21 00 80 	andi r1,r1,0x80                                
          if (rtems_filesystem_eval_path_has_path(ctx)) {             
            int eval_flags;                                           
                                                                      
            rtems_filesystem_eval_path_eat_delimiter(ctx);            
            eval_flags = rtems_filesystem_eval_path_get_flags(ctx);   
            if (                                                      
 8009794:	44 20 00 03 	be r1,r0,80097a0 <rtems_filesystem_eval_path_generic+0x14c>
              (eval_flags & RTEMS_FS_ACCEPT_RESIDUAL_DELIMITERS) == 0 
                || rtems_filesystem_eval_path_has_path(ctx)           
 8009798:	29 61 00 04 	lw r1,(r11+4)                                  
 800979c:	44 20 ff cb 	be r1,r0,80096c8 <rtems_filesystem_eval_path_generic+0x74>
            ) {                                                       
              rtems_filesystem_eval_path_error(ctx, ENOENT);          
 80097a0:	b9 60 08 00 	mv r1,r11                                      
 80097a4:	34 02 00 02 	mvi r2,2                                       
 80097a8:	fb ff e4 0f 	calli 80027e4 <rtems_filesystem_eval_path_error>
 80097ac:	e3 ff ff c7 	bi 80096c8 <rtems_filesystem_eval_path_generic+0x74>
static inline bool rtems_filesystem_is_parent_directory(              
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 2 && token [0] == '.' && token [1] == '.';       
 80097b0:	41 a1 00 00 	lbu r1,(r13+0)                                 
 80097b4:	5c 34 ff da 	bne r1,r20,800971c <rtems_filesystem_eval_path_generic+0xc8>
 80097b8:	41 a1 00 01 	lbu r1,(r13+1)                                 
 80097bc:	5c 34 ff d8 	bne r1,r20,800971c <rtems_filesystem_eval_path_generic+0xc8><== NEVER TAKEN
      }                                                               
    } else {                                                          
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;               
    }                                                                 
  }                                                                   
}                                                                     
 80097c0:	29 62 00 30 	lw r2,(r11+48)                                 
static bool is_eval_path_root(                                        
  const rtems_filesystem_eval_path_context_t *ctx,                    
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
 80097c4:	29 63 00 2c 	lw r3,(r11+44)                                 
  const rtems_filesystem_location_info_t *rootloc = &ctx->rootloc->location;
                                                                      
  return mt_entry == rootloc->mt_entry                                
    && (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );           
 80097c8:	28 41 00 14 	lw r1,(r2+20)                                  
 80097cc:	44 61 00 24 	be r3,r1,800985c <rtems_filesystem_eval_path_generic+0x208>
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
  const rtems_filesystem_location_info_t *mt_fs_root =                
    &mt_entry->mt_fs_root->location;                                  
                                                                      
  return (*mt_entry->ops->are_nodes_equal_h)( loc, mt_fs_root );      
 80097d0:	28 64 00 0c 	lw r4,(r3+12)                                  
 80097d4:	28 62 00 24 	lw r2,(r3+36)                                  
 80097d8:	ba a0 08 00 	mv r1,r21                                      
 80097dc:	28 83 00 10 	lw r3,(r4+16)                                  
 80097e0:	d8 60 00 00 	call r3                                        
            rtems_filesystem_eval_path_get_currentloc( ctx );         
                                                                      
          if (is_eval_path_root(ctx, currentloc)) {                   
            /* This prevents the escape from a chroot() environment */
            status = (*config->eval_token)(ctx, arg, ".", 1);         
          } else if (is_fs_root(currentloc)) {                        
 80097e4:	44 20 00 17 	be r1,r0,8009840 <rtems_filesystem_eval_path_generic+0x1ec>
            if (currentloc->mt_entry->mt_point_node != NULL) {        
 80097e8:	29 62 00 2c 	lw r2,(r11+44)                                 
 80097ec:	28 41 00 20 	lw r1,(r2+32)                                  
 80097f0:	44 20 00 0d 	be r1,r0,8009824 <rtems_filesystem_eval_path_generic+0x1d0><== NEVER TAKEN
                                                                      
static inline void rtems_filesystem_eval_path_put_back_token(         
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  size_t tokenlen = ctx->tokenlen;                                    
 80097f4:	29 61 00 0c 	lw r1,(r11+12)                                 
                                                                      
  ctx->path -= tokenlen;                                              
 80097f8:	29 63 00 00 	lw r3,(r11+0)                                  
  ctx->pathlen += tokenlen;                                           
 80097fc:	29 64 00 04 	lw r4,(r11+4)                                  
  ctx->tokenlen = 0;                                                  
 8009800:	59 60 00 0c 	sw (r11+12),r0                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  size_t tokenlen = ctx->tokenlen;                                    
                                                                      
  ctx->path -= tokenlen;                                              
 8009804:	c8 61 18 00 	sub r3,r3,r1                                   
  ctx->pathlen += tokenlen;                                           
 8009808:	b4 81 08 00 	add r1,r4,r1                                   
 800980c:	59 61 00 04 	sw (r11+4),r1                                  
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  size_t tokenlen = ctx->tokenlen;                                    
                                                                      
  ctx->path -= tokenlen;                                              
 8009810:	59 63 00 00 	sw (r11+0),r3                                  
              rtems_filesystem_eval_path_put_back_token(ctx);         
              rtems_filesystem_eval_path_restart(                     
 8009814:	b9 60 08 00 	mv r1,r11                                      
 8009818:	34 42 00 20 	addi r2,r2,32                                  
 800981c:	fb ff e5 6c 	calli 8002dcc <rtems_filesystem_eval_path_restart>
 8009820:	e3 ff ff aa 	bi 80096c8 <rtems_filesystem_eval_path_generic+0x74>
                ¤tloc->mt_entry->mt_point_node                  
              );                                                      
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;       
            } else {                                                  
              /* This is the root file system */                      
              status = (*config->eval_token)(ctx, arg, ".", 1);       
 8009824:	29 c5 00 04 	lw r5,(r14+4)                                  
 8009828:	b9 60 08 00 	mv r1,r11                                      
 800982c:	b9 e0 10 00 	mv r2,r15                                      
 8009830:	ba 00 18 00 	mv r3,r16                                      
 8009834:	34 04 00 01 	mvi r4,1                                       
 8009838:	d8 a0 00 00 	call r5                                        
 800983c:	e3 ff ff be 	bi 8009734 <rtems_filesystem_eval_path_generic+0xe0>
            }                                                         
          } else {                                                    
            status = (*config->eval_token)(ctx, arg, "..", 2);        
 8009840:	29 c5 00 04 	lw r5,(r14+4)                                  
 8009844:	b9 60 08 00 	mv r1,r11                                      
 8009848:	b9 e0 10 00 	mv r2,r15                                      
 800984c:	ba 20 18 00 	mv r3,r17                                      
 8009850:	34 04 00 02 	mvi r4,2                                       
 8009854:	d8 a0 00 00 	call r5                                        
 8009858:	e3 ff ff b7 	bi 8009734 <rtems_filesystem_eval_path_generic+0xe0>
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
  const rtems_filesystem_location_info_t *rootloc = &ctx->rootloc->location;
                                                                      
  return mt_entry == rootloc->mt_entry                                
    && (*mt_entry->ops->are_nodes_equal_h)( loc, rootloc );           
 800985c:	28 63 00 0c 	lw r3,(r3+12)                                  
 8009860:	ba a0 08 00 	mv r1,r21                                      
 8009864:	28 63 00 10 	lw r3,(r3+16)                                  
 8009868:	d8 60 00 00 	call r3                                        
 800986c:	5c 20 ff ee 	bne r1,r0,8009824 <rtems_filesystem_eval_path_generic+0x1d0>
 8009870:	29 63 00 2c 	lw r3,(r11+44)                                 
 8009874:	e3 ff ff d7 	bi 80097d0 <rtems_filesystem_eval_path_generic+0x17c>
                                                                      

080098b8 <rtems_filesystem_eval_path_next_token>: } void rtems_filesystem_eval_path_next_token( rtems_filesystem_eval_path_context_t *ctx ) {
 80098b8:	37 9c ff f8 	addi sp,sp,-8                                  
 80098bc:	5b 8b 00 08 	sw (sp+8),r11                                  
 80098c0:	5b 9d 00 04 	sw (sp+4),ra                                   
 80098c4:	b8 20 58 00 	mv r11,r1                                      
  rtems_filesystem_eval_path_eat_delimiter(ctx);                      
 80098c8:	fb ff ff ec 	calli 8009878 <rtems_filesystem_eval_path_eat_delimiter>
  ctx->pathlen = (size_t) (end - current);                            
}                                                                     
                                                                      
static void next_token(rtems_filesystem_eval_path_context_t *ctx)     
{                                                                     
  const char *begin = ctx->path;                                      
 80098cc:	29 66 00 00 	lw r6,(r11+0)                                  
  const char *end = begin + ctx->pathlen;                             
 80098d0:	29 64 00 04 	lw r4,(r11+4)                                  
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
 80098d4:	34 01 00 00 	mvi r1,0                                       
 80098d8:	b8 c0 18 00 	mv r3,r6                                       
}                                                                     
                                                                      
static void next_token(rtems_filesystem_eval_path_context_t *ctx)     
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
 80098dc:	b4 c4 20 00 	add r4,r6,r4                                   
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
 80098e0:	b8 c0 10 00 	mv r2,r6                                       
 80098e4:	44 c4 00 11 	be r6,r4,8009928 <rtems_filesystem_eval_path_next_token+0x70>
 80098e8:	40 c1 00 00 	lbu r1,(r6+0)                                  
 80098ec:	b8 c0 10 00 	mv r2,r6                                       
 80098f0:	64 23 00 5c 	cmpei r3,r1,92                                 
 80098f4:	64 21 00 2f 	cmpei r1,r1,47                                 
 80098f8:	b8 61 08 00 	or r1,r3,r1                                    
 80098fc:	44 20 00 07 	be r1,r0,8009918 <rtems_filesystem_eval_path_next_token+0x60><== ALWAYS TAKEN
 8009900:	e0 00 00 16 	bi 8009958 <rtems_filesystem_eval_path_next_token+0xa0><== NOT EXECUTED
 8009904:	40 43 00 00 	lbu r3,(r2+0)                                  
 8009908:	64 65 00 5c 	cmpei r5,r3,92                                 
 800990c:	64 63 00 2f 	cmpei r3,r3,47                                 
 8009910:	b8 a3 18 00 	or r3,r5,r3                                    
 8009914:	5c 60 00 0e 	bne r3,r0,800994c <rtems_filesystem_eval_path_next_token+0x94>
    ++current;                                                        
 8009918:	34 42 00 01 	addi r2,r2,1                                   
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
 800991c:	5c 82 ff fa 	bne r4,r2,8009904 <rtems_filesystem_eval_path_next_token+0x4c>
 8009920:	b8 80 18 00 	mv r3,r4                                       
 8009924:	c8 86 08 00 	sub r1,r4,r6                                   
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
  ctx->pathlen = (size_t) (end - current);                            
 8009928:	c8 83 20 00 	sub r4,r4,r3                                   
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
 800992c:	59 62 00 00 	sw (r11+0),r2                                  
  ctx->pathlen = (size_t) (end - current);                            
 8009930:	59 64 00 04 	sw (r11+4),r4                                  
  ctx->token = begin;                                                 
 8009934:	59 66 00 08 	sw (r11+8),r6                                  
  ctx->tokenlen = (size_t) (current - begin);                         
 8009938:	59 61 00 0c 	sw (r11+12),r1                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_eat_delimiter(ctx);                      
  next_token(ctx);                                                    
}                                                                     
 800993c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009940:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8009944:	37 9c 00 08 	addi sp,sp,8                                   
 8009948:	c3 a0 00 00 	ret                                            
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
 800994c:	b8 40 18 00 	mv r3,r2                                       
 8009950:	c8 46 08 00 	sub r1,r2,r6                                   
 8009954:	e3 ff ff f5 	bi 8009928 <rtems_filesystem_eval_path_next_token+0x70>
 8009958:	b8 c0 18 00 	mv r3,r6                                       <== NOT EXECUTED
 800995c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8009960:	e3 ff ff f2 	bi 8009928 <rtems_filesystem_eval_path_next_token+0x70><== NOT EXECUTED
                                                                      

08002e8c <rtems_filesystem_eval_path_recursive>: void rtems_filesystem_eval_path_recursive( rtems_filesystem_eval_path_context_t *ctx, const char *path, size_t pathlen ) {
 8002e8c:	37 9c ff e8 	addi sp,sp,-24                                 
 8002e90:	5b 8b 00 14 	sw (sp+20),r11                                 
 8002e94:	5b 8c 00 10 	sw (sp+16),r12                                 
 8002e98:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8002e9c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8002ea0:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002ea4:	b8 20 58 00 	mv r11,r1                                      
 8002ea8:	b8 40 60 00 	mv r12,r2                                      
  if (pathlen > 0) {                                                  
 8002eac:	44 60 00 22 	be r3,r0,8002f34 <rtems_filesystem_eval_path_recursive+0xa8><== NEVER TAKEN
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
 8002eb0:	28 24 00 14 	lw r4,(r1+20)                                  
 8002eb4:	34 02 00 1f 	mvi r2,31                                      
 8002eb8:	48 82 00 2e 	bg r4,r2,8002f70 <rtems_filesystem_eval_path_recursive+0xe4>
      const char *saved_path = ctx->path;                             
      size_t saved_pathlen = ctx->pathlen;                            
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
 8002ebc:	41 82 00 00 	lbu r2,(r12+0)                                 
  size_t pathlen                                                      
)                                                                     
{                                                                     
  if (pathlen > 0) {                                                  
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
      const char *saved_path = ctx->path;                             
 8002ec0:	28 2e 00 00 	lw r14,(r1+0)                                  
      size_t saved_pathlen = ctx->pathlen;                            
 8002ec4:	28 2d 00 04 	lw r13,(r1+4)                                  
  gid_t node_gid                                                      
);                                                                    
                                                                      
static inline bool rtems_filesystem_is_delimiter(char c)              
{                                                                     
  return c == '/' || c == '\\';                                       
 8002ec8:	64 45 00 5c 	cmpei r5,r2,92                                 
 8002ecc:	64 42 00 2f 	cmpei r2,r2,47                                 
 8002ed0:	b8 a2 10 00 	or r2,r5,r2                                    
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
 8002ed4:	5c 40 00 21 	bne r2,r0,8002f58 <rtems_filesystem_eval_path_recursive+0xcc>
      }                                                               
                                                                      
      ctx->path = path;                                               
      ctx->pathlen = pathlen;                                         
                                                                      
      ++ctx->recursionlevel;                                          
 8002ed8:	34 84 00 01 	addi r4,r4,1                                   
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
        rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);       
      }                                                               
                                                                      
      ctx->path = path;                                               
 8002edc:	59 6c 00 00 	sw (r11+0),r12                                 
      ctx->pathlen = pathlen;                                         
 8002ee0:	59 63 00 04 	sw (r11+4),r3                                  
                                                                      
      ++ctx->recursionlevel;                                          
 8002ee4:	59 64 00 14 	sw (r11+20),r4                                 
      while (ctx->pathlen > 0) {                                      
        (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);           
 8002ee8:	29 62 00 2c 	lw r2,(r11+44)                                 
 8002eec:	b9 60 08 00 	mv r1,r11                                      
 8002ef0:	28 42 00 0c 	lw r2,(r2+12)                                  
 8002ef4:	28 42 00 08 	lw r2,(r2+8)                                   
 8002ef8:	d8 40 00 00 	call r2                                        
                                                                      
      ctx->path = path;                                               
      ctx->pathlen = pathlen;                                         
                                                                      
      ++ctx->recursionlevel;                                          
      while (ctx->pathlen > 0) {                                      
 8002efc:	29 61 00 04 	lw r1,(r11+4)                                  
 8002f00:	5c 20 ff fa 	bne r1,r0,8002ee8 <rtems_filesystem_eval_path_recursive+0x5c>
        (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);           
      }                                                               
      --ctx->recursionlevel;                                          
 8002f04:	29 61 00 14 	lw r1,(r11+20)                                 
                                                                      
      ctx->path = saved_path;                                         
 8002f08:	59 6e 00 00 	sw (r11+0),r14                                 
      ctx->pathlen = saved_pathlen;                                   
 8002f0c:	59 6d 00 04 	sw (r11+4),r13                                 
                                                                      
      ++ctx->recursionlevel;                                          
      while (ctx->pathlen > 0) {                                      
        (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);           
      }                                                               
      --ctx->recursionlevel;                                          
 8002f10:	34 21 ff ff 	addi r1,r1,-1                                  
 8002f14:	59 61 00 14 	sw (r11+20),r1                                 
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
  }                                                                   
}                                                                     
 8002f18:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002f1c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002f20:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002f24:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002f28:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002f2c:	37 9c 00 18 	addi sp,sp,24                                  
 8002f30:	c3 a0 00 00 	ret                                            
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
 8002f34:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 8002f38:	fb ff fe 2b 	calli 80027e4 <rtems_filesystem_eval_path_error><== NOT EXECUTED
  }                                                                   
}                                                                     
 8002f3c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8002f40:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8002f44:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8002f48:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8002f4c:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8002f50:	37 9c 00 18 	addi sp,sp,24                                  <== NOT EXECUTED
 8002f54:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
      const char *saved_path = ctx->path;                             
      size_t saved_pathlen = ctx->pathlen;                            
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
        rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);       
 8002f58:	34 22 00 30 	addi r2,r1,48                                  
 8002f5c:	5b 83 00 18 	sw (sp+24),r3                                  
 8002f60:	fb ff ff 9b 	calli 8002dcc <rtems_filesystem_eval_path_restart>
 8002f64:	29 64 00 14 	lw r4,(r11+20)                                 
 8002f68:	2b 83 00 18 	lw r3,(sp+24)                                  
 8002f6c:	e3 ff ff db 	bi 8002ed8 <rtems_filesystem_eval_path_recursive+0x4c>
      --ctx->recursionlevel;                                          
                                                                      
      ctx->path = saved_path;                                         
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
 8002f70:	34 02 00 5c 	mvi r2,92                                      
 8002f74:	fb ff fe 1c 	calli 80027e4 <rtems_filesystem_eval_path_error>
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
  }                                                                   
}                                                                     
 8002f78:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002f7c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8002f80:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8002f84:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8002f88:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8002f8c:	37 9c 00 18 	addi sp,sp,24                                  
 8002f90:	c3 a0 00 00 	ret                                            
                                                                      

08009304 <rtems_filesystem_get_mount_handler>: rtems_filesystem_fsmount_me_t rtems_filesystem_get_mount_handler( const char *type ) {
 8009304:	37 9c ff f4 	addi sp,sp,-12                                 
 8009308:	5b 9d 00 04 	sw (sp+4),ra                                   
  find_arg fa = {                                                     
 800930c:	5b 81 00 08 	sw (sp+8),r1                                   
 8009310:	5b 80 00 0c 	sw (sp+12),r0                                  
    .type = type,                                                     
    .mount_h = NULL                                                   
  };                                                                  
                                                                      
  if ( type != NULL ) {                                               
 8009314:	34 02 00 00 	mvi r2,0                                       
 8009318:	44 20 00 06 	be r1,r0,8009330 <rtems_filesystem_get_mount_handler+0x2c><== NEVER TAKEN
    rtems_filesystem_iterate( find_handler, &fa );                    
 800931c:	78 01 08 00 	mvhi r1,0x800                                  
 8009320:	37 82 00 08 	addi r2,sp,8                                   
 8009324:	38 21 91 d0 	ori r1,r1,0x91d0                               
 8009328:	fb ff ff be 	calli 8009220 <rtems_filesystem_iterate>       
 800932c:	2b 82 00 0c 	lw r2,(sp+12)                                  
  }                                                                   
                                                                      
  return fa.mount_h;                                                  
}                                                                     
 8009330:	b8 40 08 00 	mv r1,r2                                       
 8009334:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009338:	37 9c 00 0c 	addi sp,sp,12                                  
 800933c:	c3 a0 00 00 	ret                                            
                                                                      

08001284 <rtems_filesystem_initialize>: /* * Default mode for created files. */ void rtems_filesystem_initialize( void ) {
 8001284:	37 9c ff f8 	addi sp,sp,-8                                  
 8001288:	5b 8b 00 08 	sw (sp+8),r11                                  
 800128c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  const rtems_filesystem_mount_configuration *root_config =           
    &rtems_filesystem_root_configuration;                             
                                                                      
  rv = mount(                                                         
 8001290:	78 05 08 01 	mvhi r5,0x801                                  
 8001294:	38 a5 d2 54 	ori r5,r5,0xd254                               
 8001298:	28 a1 00 00 	lw r1,(r5+0)                                   
 800129c:	28 a2 00 04 	lw r2,(r5+4)                                   
 80012a0:	28 a3 00 08 	lw r3,(r5+8)                                   
 80012a4:	28 a4 00 0c 	lw r4,(r5+12)                                  
 80012a8:	28 a5 00 10 	lw r5,(r5+16)                                  
 80012ac:	f8 00 02 70 	calli 8001c6c <mount>                          
 80012b0:	b8 20 58 00 	mv r11,r1                                      
    root_config->target,                                              
    root_config->filesystemtype,                                      
    root_config->options,                                             
    root_config->data                                                 
  );                                                                  
  if ( rv != 0 )                                                      
 80012b4:	5c 20 00 0a 	bne r1,r0,80012dc <rtems_filesystem_initialize+0x58><== NEVER TAKEN
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).  It is actually
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  rv = mkdir( "/dev", 0777);                                          
 80012b8:	78 01 08 01 	mvhi r1,0x801                                  
 80012bc:	38 21 d4 9c 	ori r1,r1,0xd49c                               
 80012c0:	34 02 01 ff 	mvi r2,511                                     
 80012c4:	f8 00 02 1b 	calli 8001b30 <mkdir>                          
  if ( rv != 0 )                                                      
 80012c8:	5c 2b 00 09 	bne r1,r11,80012ec <rtems_filesystem_initialize+0x68><== NEVER TAKEN
   *  it will be mounted onto is created.  Moreover, if it is going to
   *  use a device, then it is REALLY unfair to attempt this          
   *  before device drivers are initialized.  So we return via a base 
   *  filesystem image and nothing auto-mounted at this point.        
   */                                                                 
}                                                                     
 80012cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80012d0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80012d4:	37 9c 00 08 	addi sp,sp,8                                   
 80012d8:	c3 a0 00 00 	ret                                            
    root_config->filesystemtype,                                      
    root_config->options,                                             
    root_config->data                                                 
  );                                                                  
  if ( rv != 0 )                                                      
    rtems_fatal_error_occurred( 0xABCD0002 );                         
 80012dc:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 80012e0:	38 42 d4 a4 	ori r2,r2,0xd4a4                               <== NOT EXECUTED
 80012e4:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 80012e8:	f8 00 0c 70 	calli 80044a8 <rtems_fatal_error_occurred>     <== NOT EXECUTED
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  rv = mkdir( "/dev", 0777);                                          
  if ( rv != 0 )                                                      
    rtems_fatal_error_occurred( 0xABCD0003 );                         
 80012ec:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 80012f0:	38 42 d4 a8 	ori r2,r2,0xd4a8                               <== NOT EXECUTED
 80012f4:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 80012f8:	f8 00 0c 6c 	calli 80044a8 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08009220 <rtems_filesystem_iterate>: bool rtems_filesystem_iterate( rtems_per_filesystem_routine routine, void *routine_arg ) {
 8009220:	37 9c ff e4 	addi sp,sp,-28                                 
 8009224:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8009228:	5b 8c 00 18 	sw (sp+24),r12                                 
 800922c:	5b 8d 00 14 	sw (sp+20),r13                                 
 8009230:	5b 8e 00 10 	sw (sp+16),r14                                 
 8009234:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8009238:	5b 90 00 08 	sw (sp+8),r16                                  
 800923c:	5b 9d 00 04 	sw (sp+4),ra                                   
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8009240:	78 0c 08 01 	mvhi r12,0x801                                 
 8009244:	39 8c d2 44 	ori r12,r12,0xd244                             
 8009248:	29 83 00 00 	lw r3,(r12+0)                                  
                                                                      
bool rtems_filesystem_iterate(                                        
  rtems_per_filesystem_routine routine,                               
  void *routine_arg                                                   
)                                                                     
{                                                                     
 800924c:	b8 20 68 00 	mv r13,r1                                      
 8009250:	b8 40 70 00 	mv r14,r2                                      
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8009254:	5c 60 00 03 	bne r3,r0,8009260 <rtems_filesystem_iterate+0x40><== ALWAYS TAKEN
 8009258:	e0 00 00 0a 	bi 8009280 <rtems_filesystem_iterate+0x60>     <== NOT EXECUTED
 800925c:	5c 20 00 20 	bne r1,r0,80092dc <rtems_filesystem_iterate+0xbc>
    stop = (*routine)( table_entry, routine_arg );                    
 8009260:	b9 80 08 00 	mv r1,r12                                      
 8009264:	b9 c0 10 00 	mv r2,r14                                      
 8009268:	d9 a0 00 00 	call r13                                       
    ++table_entry;                                                    
 800926c:	35 8c 00 08 	addi r12,r12,8                                 
{                                                                     
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8009270:	29 83 00 00 	lw r3,(r12+0)                                  
    stop = (*routine)( table_entry, routine_arg );                    
 8009274:	b8 20 58 00 	mv r11,r1                                      
{                                                                     
  const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
  rtems_chain_node *node = NULL;                                      
  bool stop = false;                                                  
                                                                      
  while ( table_entry->type && !stop ) {                              
 8009278:	5c 60 ff f9 	bne r3,r0,800925c <rtems_filesystem_iterate+0x3c>
    stop = (*routine)( table_entry, routine_arg );                    
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
 800927c:	5c 23 00 18 	bne r1,r3,80092dc <rtems_filesystem_iterate+0xbc>
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8009280:	78 10 08 02 	mvhi r16,0x802                                 
 8009284:	3a 10 08 24 	ori r16,r16,0x824                              
 8009288:	2a 01 00 00 	lw r1,(r16+0)                                  
 800928c:	34 02 00 00 	mvi r2,0                                       
 8009290:	34 03 00 00 	mvi r3,0                                       
 8009294:	fb ff ea 72 	calli 8003c5c <rtems_semaphore_obtain>         
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8009298:	78 01 08 02 	mvhi r1,0x802                                  
 800929c:	38 21 01 b0 	ori r1,r1,0x1b0                                
 80092a0:	28 2c 00 00 	lw r12,(r1+0)                                  
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
    rtems_libio_lock();                                               
    for (                                                             
 80092a4:	78 0f 08 02 	mvhi r15,0x802                                 
 80092a8:	39 ef 01 b4 	ori r15,r15,0x1b4                              
 80092ac:	34 0b 00 00 	mvi r11,0                                      
 80092b0:	5d 8f 00 03 	bne r12,r15,80092bc <rtems_filesystem_iterate+0x9c>
 80092b4:	e0 00 00 08 	bi 80092d4 <rtems_filesystem_iterate+0xb4>     
      node = rtems_chain_first( &filesystem_chain );                  
      !rtems_chain_is_tail( &filesystem_chain, node ) && !stop;       
 80092b8:	5c 20 00 07 	bne r1,r0,80092d4 <rtems_filesystem_iterate+0xb4><== NEVER TAKEN
      node = rtems_chain_next( node )                                 
    ) {                                                               
      const filesystem_node *fsn = (filesystem_node *) node;          
                                                                      
      stop = (*routine)( &fsn->entry, routine_arg );                  
 80092bc:	35 81 00 08 	addi r1,r12,8                                  
 80092c0:	b9 c0 10 00 	mv r2,r14                                      
 80092c4:	d9 a0 00 00 	call r13                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 80092c8:	29 8c 00 00 	lw r12,(r12+0)                                 
      !rtems_chain_is_tail( &filesystem_chain, node ) && !stop;       
      node = rtems_chain_next( node )                                 
    ) {                                                               
      const filesystem_node *fsn = (filesystem_node *) node;          
                                                                      
      stop = (*routine)( &fsn->entry, routine_arg );                  
 80092cc:	b8 20 58 00 	mv r11,r1                                      
    ++table_entry;                                                    
  }                                                                   
                                                                      
  if ( !stop ) {                                                      
    rtems_libio_lock();                                               
    for (                                                             
 80092d0:	5d 8f ff fa 	bne r12,r15,80092b8 <rtems_filesystem_iterate+0x98>
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 80092d4:	2a 01 00 00 	lw r1,(r16+0)                                  
 80092d8:	fb ff ea bd 	calli 8003dcc <rtems_semaphore_release>        
    }                                                                 
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  return stop;                                                        
}                                                                     
 80092dc:	b9 60 08 00 	mv r1,r11                                      
 80092e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80092e4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80092e8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80092ec:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80092f0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80092f4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80092f8:	2b 90 00 08 	lw r16,(sp+8)                                  
 80092fc:	37 9c 00 1c 	addi sp,sp,28                                  
 8009300:	c3 a0 00 00 	ret                                            
                                                                      

08003100 <rtems_filesystem_location_remove_from_mt_entry>: } void rtems_filesystem_location_remove_from_mt_entry( rtems_filesystem_location_info_t *loc ) {
 8003100:	37 9c ff fc 	addi sp,sp,-4                                  
 8003104:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_filesystem_mt_entry_declare_lock_context(lock_context);       
  bool do_unmount;                                                    
                                                                      
  rtems_filesystem_mt_entry_lock(lock_context);                       
 8003108:	90 00 18 00 	rcsr r3,IE                                     
 800310c:	34 02 ff fe 	mvi r2,-2                                      
 8003110:	a0 62 10 00 	and r2,r3,r2                                   
 8003114:	d0 02 00 00 	wcsr IE,r2                                     
  rtems_chain_extract_unprotected(&loc->mt_entry_node);               
  do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);  
 8003118:	28 22 00 14 	lw r2,(r1+20)                                  
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 800311c:	28 27 00 00 	lw r7,(r1+0)                                   
  previous       = the_node->previous;                                
 8003120:	28 24 00 04 	lw r4,(r1+4)                                   
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
 8003124:	40 46 00 28 	lbu r6,(r2+40)                                 
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
 8003128:	34 05 00 00 	mvi r5,0                                       
  next->previous = previous;                                          
 800312c:	58 e4 00 04 	sw (r7+4),r4                                   
  previous->next = next;                                              
 8003130:	58 87 00 00 	sw (r4+0),r7                                   
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
 8003134:	5c c0 00 04 	bne r6,r0,8003144 <rtems_filesystem_location_remove_from_mt_entry+0x44>
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
 8003138:	28 46 00 14 	lw r6,(r2+20)                                  
 800313c:	28 44 00 1c 	lw r4,(r2+28)                                  
 8003140:	44 c4 00 08 	be r6,r4,8003160 <rtems_filesystem_location_remove_from_mt_entry+0x60>
  rtems_filesystem_mt_entry_unlock(lock_context);                     
 8003144:	d0 03 00 00 	wcsr IE,r3                                     
                                                                      
  if (do_unmount) {                                                   
 8003148:	44 a0 00 03 	be r5,r0,8003154 <rtems_filesystem_location_remove_from_mt_entry+0x54><== ALWAYS TAKEN
    rtems_filesystem_do_unmount(loc->mt_entry);                       
 800314c:	28 21 00 14 	lw r1,(r1+20)                                  <== NOT EXECUTED
 8003150:	fb ff ff c5 	calli 8003064 <rtems_filesystem_do_unmount>    <== NOT EXECUTED
  }                                                                   
}                                                                     
 8003154:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003158:	37 9c 00 04 	addi sp,sp,4                                   
 800315c:	c3 a0 00 00 	ret                                            
    && mt_entry->mt_fs_root->reference_count == 1;                    
 8003160:	28 44 00 24 	lw r4,(r2+36)                                  
 8003164:	28 86 00 18 	lw r6,(r4+24)                                  
 8003168:	34 04 00 01 	mvi r4,1                                       
 800316c:	5c c4 ff f6 	bne r6,r4,8003144 <rtems_filesystem_location_remove_from_mt_entry+0x44><== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8003170:	34 45 00 18 	addi r5,r2,24                                  <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8003174:	34 44 00 14 	addi r4,r2,20                                  <== NOT EXECUTED
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 8003178:	58 45 00 14 	sw (r2+20),r5                                  <== NOT EXECUTED
  head->previous = NULL;                                              
 800317c:	58 40 00 18 	sw (r2+24),r0                                  <== NOT EXECUTED
  tail->previous = head;                                              
 8003180:	58 44 00 1c 	sw (r2+28),r4                                  <== NOT EXECUTED
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
 8003184:	34 05 00 01 	mvi r5,1                                       <== NOT EXECUTED
 8003188:	e3 ff ff ef 	bi 8003144 <rtems_filesystem_location_remove_from_mt_entry+0x44><== NOT EXECUTED
                                                                      

080034a8 <rtems_filesystem_location_transform_to_global>: } rtems_filesystem_global_location_t *rtems_filesystem_location_transform_to_global( rtems_filesystem_location_info_t *loc ) {
 80034a8:	37 9c ff f0 	addi sp,sp,-16                                 
 80034ac:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80034b0:	5b 8c 00 08 	sw (sp+8),r12                                  
 80034b4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80034b8:	b8 20 60 00 	mv r12,r1                                      
  rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
 80034bc:	34 01 00 24 	mvi r1,36                                      
 80034c0:	fb ff f9 5c 	calli 8001a30 <malloc>                         
 80034c4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if (global_loc != NULL) {                                           
 80034c8:	45 60 00 21 	be r11,r0,800354c <rtems_filesystem_location_transform_to_global+0xa4><== NEVER TAKEN
rtems_filesystem_location_info_t *rtems_filesystem_location_copy(     
  rtems_filesystem_location_info_t *dst,                              
  const rtems_filesystem_location_info_t *src                         
)                                                                     
{                                                                     
  dst->node_access = src->node_access;                                
 80034cc:	29 85 00 08 	lw r5,(r12+8)                                  
  dst->node_access_2 = src->node_access_2;                            
 80034d0:	29 84 00 0c 	lw r4,(r12+12)                                 
  dst->handlers = src->handlers;                                      
 80034d4:	29 83 00 10 	lw r3,(r12+16)                                 
  dst->mt_entry = src->mt_entry;                                      
 80034d8:	29 86 00 14 	lw r6,(r12+20)                                 
)                                                                     
{                                                                     
  rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
                                                                      
  if (global_loc != NULL) {                                           
    global_loc->reference_count = 1;                                  
 80034dc:	34 02 00 01 	mvi r2,1                                       
 80034e0:	59 62 00 18 	sw (r11+24),r2                                 
)                                                                     
{                                                                     
  dst->node_access = src->node_access;                                
  dst->node_access_2 = src->node_access_2;                            
  dst->handlers = src->handlers;                                      
  dst->mt_entry = src->mt_entry;                                      
 80034e4:	59 66 00 14 	sw (r11+20),r6                                 
{                                                                     
  rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
                                                                      
  if (global_loc != NULL) {                                           
    global_loc->reference_count = 1;                                  
    global_loc->deferred_released_next = NULL;                        
 80034e8:	59 60 00 1c 	sw (r11+28),r0                                 
    global_loc->deferred_released_count = 0;                          
 80034ec:	59 60 00 20 	sw (r11+32),r0                                 
rtems_filesystem_location_info_t *rtems_filesystem_location_copy(     
  rtems_filesystem_location_info_t *dst,                              
  const rtems_filesystem_location_info_t *src                         
)                                                                     
{                                                                     
  dst->node_access = src->node_access;                                
 80034f0:	59 65 00 08 	sw (r11+8),r5                                  
  dst->node_access_2 = src->node_access_2;                            
 80034f4:	59 64 00 0c 	sw (r11+12),r4                                 
  dst->handlers = src->handlers;                                      
 80034f8:	59 63 00 10 	sw (r11+16),r3                                 
  rtems_filesystem_location_info_t *loc                               
)                                                                     
{                                                                     
  rtems_filesystem_mt_entry_declare_lock_context( lock_context );     
                                                                      
  rtems_filesystem_mt_entry_lock( lock_context );                     
 80034fc:	90 00 18 00 	rcsr r3,IE                                     
 8003500:	34 02 ff fe 	mvi r2,-2                                      
 8003504:	a0 62 10 00 	and r2,r3,r2                                   
 8003508:	d0 02 00 00 	wcsr IE,r2                                     
  rtems_chain_append_unprotected(                                     
    &loc->mt_entry->location_chain,                                   
 800350c:	28 22 00 14 	lw r2,(r1+20)                                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
 8003510:	28 44 00 1c 	lw r4,(r2+28)                                  
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 8003514:	34 45 00 18 	addi r5,r2,24                                  
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
 8003518:	58 25 00 00 	sw (r1+0),r5                                   
  tail->previous = the_node;                                          
 800351c:	58 41 00 1c 	sw (r2+28),r1                                  
  old_last->next = the_node;                                          
 8003520:	58 81 00 00 	sw (r4+0),r1                                   
  the_node->previous = old_last;                                      
 8003524:	58 24 00 04 	sw (r1+4),r4                                   
    &loc->mt_entry_node                                               
  );                                                                  
  rtems_filesystem_mt_entry_unlock( lock_context );                   
 8003528:	d0 03 00 00 	wcsr IE,r3                                     
  if (global_loc != NULL) {                                           
    global_loc->reference_count = 1;                                  
    global_loc->deferred_released_next = NULL;                        
    global_loc->deferred_released_count = 0;                          
    rtems_filesystem_location_copy(&global_loc->location, loc);       
    rtems_filesystem_location_remove_from_mt_entry(loc);              
 800352c:	b9 80 08 00 	mv r1,r12                                      
 8003530:	fb ff fe f4 	calli 8003100 <rtems_filesystem_location_remove_from_mt_entry>
    global_loc = rtems_filesystem_global_location_obtain_null();      
    errno = ENOMEM;                                                   
  }                                                                   
                                                                      
  return global_loc;                                                  
}                                                                     
 8003534:	b9 60 08 00 	mv r1,r11                                      
 8003538:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800353c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8003540:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003544:	37 9c 00 10 	addi sp,sp,16                                  
 8003548:	c3 a0 00 00 	ret                                            
    global_loc->deferred_released_next = NULL;                        
    global_loc->deferred_released_count = 0;                          
    rtems_filesystem_location_copy(&global_loc->location, loc);       
    rtems_filesystem_location_remove_from_mt_entry(loc);              
  } else {                                                            
    rtems_filesystem_location_free(loc);                              
 800354c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003550:	f8 00 16 6a 	calli 8008ef8 <rtems_filesystem_location_free> <== NOT EXECUTED
static inline rtems_filesystem_global_location_t *                    
rtems_filesystem_global_location_obtain_null(void)                    
{                                                                     
  rtems_filesystem_global_location_t *global_loc = NULL;              
                                                                      
  return rtems_filesystem_global_location_obtain( &global_loc );      
 8003554:	37 81 00 10 	addi r1,sp,16                                  <== NOT EXECUTED
);                                                                    
                                                                      
static inline rtems_filesystem_global_location_t *                    
rtems_filesystem_global_location_obtain_null(void)                    
{                                                                     
  rtems_filesystem_global_location_t *global_loc = NULL;              
 8003558:	5b 80 00 10 	sw (sp+16),r0                                  <== NOT EXECUTED
                                                                      
  return rtems_filesystem_global_location_obtain( &global_loc );      
 800355c:	fb ff ff 9a 	calli 80033c4 <rtems_filesystem_global_location_obtain><== NOT EXECUTED
 8003560:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    global_loc = rtems_filesystem_global_location_obtain_null();      
    errno = ENOMEM;                                                   
 8003564:	f8 00 27 44 	calli 800d274 <__errno>                        <== NOT EXECUTED
 8003568:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 800356c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
  }                                                                   
                                                                      
  return global_loc;                                                  
}                                                                     
 8003570:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8003574:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003578:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 800357c:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8003580:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8003584:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08001b54 <rtems_filesystem_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
 8001b54:	37 9c ff fc 	addi sp,sp,-4                                  
 8001b58:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
 8001b5c:	78 07 08 02 	mvhi r7,0x802                                  
 8001b60:	38 e7 01 90 	ori r7,r7,0x190                                
 8001b64:	28 e7 00 00 	lw r7,(r7+0)                                   
                                                                      
  switch (mode & S_IFMT) {                                            
 8001b68:	34 08 40 00 	mvi r8,16384                                   
  dev_t dev                                                           
)                                                                     
{                                                                     
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
 8001b6c:	28 e7 00 08 	lw r7,(r7+8)                                   
 8001b70:	a4 e0 38 00 	not r7,r7                                      
 8001b74:	a0 87 20 00 	and r4,r4,r7                                   
                                                                      
  switch (mode & S_IFMT) {                                            
 8001b78:	20 87 f0 00 	andi r7,r4,0xf000                              
 8001b7c:	44 e8 00 11 	be r7,r8,8001bc0 <rtems_filesystem_mknod+0x6c> 
 8001b80:	54 e8 00 0c 	bgu r7,r8,8001bb0 <rtems_filesystem_mknod+0x5c>
 8001b84:	34 08 10 00 	mvi r8,4096                                    
 8001b88:	44 e8 00 0e 	be r7,r8,8001bc0 <rtems_filesystem_mknod+0x6c> 
 8001b8c:	34 08 20 00 	mvi r8,8192                                    
 8001b90:	44 e8 00 0c 	be r7,r8,8001bc0 <rtems_filesystem_mknod+0x6c> 
    case S_IFDIR:                                                     
    case S_IFIFO:                                                     
    case S_IFREG:                                                     
      break;                                                          
    default:                                                          
      errno = EINVAL;                                                 
 8001b94:	f8 00 2d b8 	calli 800d274 <__errno>                        
 8001b98:	34 02 00 16 	mvi r2,22                                      
 8001b9c:	58 22 00 00 	sw (r1+0),r2                                   
 8001ba0:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
    rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );      
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001ba4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001ba8:	37 9c 00 04 	addi sp,sp,4                                   
 8001bac:	c3 a0 00 00 	ret                                            
{                                                                     
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
                                                                      
  switch (mode & S_IFMT) {                                            
 8001bb0:	34 08 60 00 	mvi r8,24576                                   
 8001bb4:	44 e8 00 03 	be r7,r8,8001bc0 <rtems_filesystem_mknod+0x6c> 
 8001bb8:	35 08 20 00 	addi r8,r8,8192                                
 8001bbc:	5c e8 ff f6 	bne r7,r8,8001b94 <rtems_filesystem_mknod+0x40><== NEVER TAKEN
      rv = -1;                                                        
      break;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    const rtems_filesystem_operations_table *ops = parentloc->mt_entry->ops;
 8001bc0:	28 27 00 14 	lw r7,(r1+20)                                  
                                                                      
    rv = (*ops->mknod_h)( parentloc, name, namelen, mode, dev );      
 8001bc4:	28 e7 00 0c 	lw r7,(r7+12)                                  
 8001bc8:	28 e7 00 18 	lw r7,(r7+24)                                  
 8001bcc:	d8 e0 00 00 	call r7                                        
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8001bd0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001bd4:	37 9c 00 04 	addi sp,sp,4                                   
 8001bd8:	c3 a0 00 00 	ret                                            
                                                                      

08009450 <rtems_filesystem_unregister>: int rtems_filesystem_unregister( const char *type ) {
 8009450:	37 9c ff ec 	addi sp,sp,-20                                 
 8009454:	5b 8b 00 14 	sw (sp+20),r11                                 
 8009458:	5b 8c 00 10 	sw (sp+16),r12                                 
 800945c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8009460:	5b 8e 00 08 	sw (sp+8),r14                                  
 8009464:	5b 9d 00 04 	sw (sp+4),ra                                   
 8009468:	b8 20 68 00 	mv r13,r1                                      
  rtems_chain_node *node = NULL;                                      
                                                                      
  if ( type == NULL ) {                                               
 800946c:	44 20 00 2f 	be r1,r0,8009528 <rtems_filesystem_unregister+0xd8>
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 8009470:	78 0e 08 02 	mvhi r14,0x802                                 
 8009474:	39 ce 08 24 	ori r14,r14,0x824                              
 8009478:	29 c1 00 00 	lw r1,(r14+0)                                  
 800947c:	34 02 00 00 	mvi r2,0                                       
 8009480:	34 03 00 00 	mvi r3,0                                       
 8009484:	fb ff e9 f6 	calli 8003c5c <rtems_semaphore_obtain>         
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 8009488:	78 01 08 02 	mvhi r1,0x802                                  
 800948c:	38 21 01 b0 	ori r1,r1,0x1b0                                
 8009490:	28 2b 00 00 	lw r11,(r1+0)                                  
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 8009494:	78 0c 08 02 	mvhi r12,0x802                                 
 8009498:	39 8c 01 b4 	ori r12,r12,0x1b4                              
 800949c:	5d 6c 00 04 	bne r11,r12,80094ac <rtems_filesystem_unregister+0x5c>
 80094a0:	e0 00 00 15 	bi 80094f4 <rtems_filesystem_unregister+0xa4>  
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 80094a4:	29 6b 00 00 	lw r11,(r11+0)                                 
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  rtems_libio_lock();                                                 
  for (                                                               
 80094a8:	45 6c 00 13 	be r11,r12,80094f4 <rtems_filesystem_unregister+0xa4><== ALWAYS TAKEN
    !rtems_chain_is_tail( &filesystem_chain, node );                  
    node = rtems_chain_next( node )                                   
  ) {                                                                 
    filesystem_node *fsn = (filesystem_node *) node;                  
                                                                      
    if ( strcmp( fsn->entry.type, type ) == 0 ) {                     
 80094ac:	29 61 00 08 	lw r1,(r11+8)                                  
 80094b0:	b9 a0 10 00 	mv r2,r13                                      
 80094b4:	f8 00 14 3c 	calli 800e5a4 <strcmp>                         
 80094b8:	5c 20 ff fb 	bne r1,r0,80094a4 <rtems_filesystem_unregister+0x54>
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 80094bc:	b9 60 08 00 	mv r1,r11                                      
 80094c0:	f8 00 05 43 	calli 800a9cc <_Chain_Extract>                 
      rtems_chain_extract( node );                                    
      free( fsn );                                                    
 80094c4:	b9 60 08 00 	mv r1,r11                                      
 80094c8:	fb ff e0 58 	calli 8001628 <free>                           
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
 80094cc:	29 c1 00 00 	lw r1,(r14+0)                                  
 80094d0:	fb ff ea 3f 	calli 8003dcc <rtems_semaphore_release>        
      rtems_libio_unlock();                                           
                                                                      
      return 0;                                                       
 80094d4:	34 01 00 00 	mvi r1,0                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
}                                                                     
 80094d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80094dc:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80094e0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80094e4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80094e8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80094ec:	37 9c 00 14 	addi sp,sp,20                                  
 80094f0:	c3 a0 00 00 	ret                                            
 80094f4:	29 c1 00 00 	lw r1,(r14+0)                                  
 80094f8:	fb ff ea 35 	calli 8003dcc <rtems_semaphore_release>        
      return 0;                                                       
    }                                                                 
  }                                                                   
  rtems_libio_unlock();                                               
                                                                      
  rtems_set_errno_and_return_minus_one( ENOENT );                     
 80094fc:	f8 00 0f 5e 	calli 800d274 <__errno>                        
 8009500:	34 02 00 02 	mvi r2,2                                       
 8009504:	58 22 00 00 	sw (r1+0),r2                                   
 8009508:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 800950c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009510:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8009514:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8009518:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800951c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8009520:	37 9c 00 14 	addi sp,sp,20                                  
 8009524:	c3 a0 00 00 	ret                                            
)                                                                     
{                                                                     
  rtems_chain_node *node = NULL;                                      
                                                                      
  if ( type == NULL ) {                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8009528:	f8 00 0f 53 	calli 800d274 <__errno>                        
 800952c:	34 02 00 16 	mvi r2,22                                      
 8009530:	58 22 00 00 	sw (r1+0),r2                                   
 8009534:	34 01 ff ff 	mvi r1,-1                                      
 8009538:	e3 ff ff f5 	bi 800950c <rtems_filesystem_unregister+0xbc>  
                                                                      

08001da8 <rtems_gxx_key_create>: int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)) {
 8001da8:	37 9c ff f0 	addi sp,sp,-16                                 
 8001dac:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001db0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001db4:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001db8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001dbc:	b8 20 68 00 	mv r13,r1                                      
   * pointer to the buffer that will hold the value of the key itself.
   * We have to to this, because the others functions on this interface
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
 8001dc0:	34 01 00 08 	mvi r1,8                                       
  }                                                                   
  return 0;                                                           
}                                                                     
                                                                      
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{                                                                     
 8001dc4:	b8 40 60 00 	mv r12,r2                                      
   * pointer to the buffer that will hold the value of the key itself.
   * We have to to this, because the others functions on this interface
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
 8001dc8:	f8 00 01 47 	calli 80022e4 <malloc>                         
 8001dcc:	b8 20 58 00 	mv r11,r1                                      
  *key = new_key;                                                     
 8001dd0:	59 a1 00 00 	sw (r13+0),r1                                  
      "gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
 8001dd4:	b9 60 10 00 	mv r2,r11                                      
 8001dd8:	34 01 00 00 	mvi r1,0                                       
 8001ddc:	b9 80 18 00 	mv r3,r12                                      
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
  *key = new_key;                                                     
  new_key->val  = NULL;                                               
 8001de0:	59 60 00 00 	sw (r11+0),r0                                  
  new_key->dtor = dtor;                                               
 8001de4:	59 6c 00 04 	sw (r11+4),r12                                 
      "gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
 8001de8:	f8 00 0b 4f 	calli 8004b24 <rtems_task_variable_add>        
  if ( status == RTEMS_SUCCESSFUL )                                   
    return 0;                                                         
 8001dec:	34 02 00 00 	mvi r2,0                                       
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
  if ( status == RTEMS_SUCCESSFUL )                                   
 8001df0:	5c 20 00 08 	bne r1,r0,8001e10 <rtems_gxx_key_create+0x68>  <== NEVER TAKEN
    return 0;                                                         
                                                                      
  free( new_key );                                                    
  return -1;                                                          
}                                                                     
 8001df4:	b8 40 08 00 	mv r1,r2                                       
 8001df8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001dfc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001e00:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8001e04:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001e08:	37 9c 00 10 	addi sp,sp,16                                  
 8001e0c:	c3 a0 00 00 	ret                                            
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
  if ( status == RTEMS_SUCCESSFUL )                                   
    return 0;                                                         
                                                                      
  free( new_key );                                                    
 8001e10:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8001e14:	fb ff ff 4e 	calli 8001b4c <free>                           <== NOT EXECUTED
  return -1;                                                          
 8001e18:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8001e1c:	e3 ff ff f6 	bi 8001df4 <rtems_gxx_key_create+0x4c>         <== NOT EXECUTED
                                                                      

08001e2c <rtems_gxx_key_delete>: int rtems_gxx_key_delete (__gthread_key_t key) {
 8001e2c:	37 9c ff f8 	addi sp,sp,-8                                  
 8001e30:	5b 8b 00 08 	sw (sp+8),r11                                  
 8001e34:	5b 9d 00 04 	sw (sp+4),ra                                   
 8001e38:	b8 20 58 00 	mv r11,r1                                      
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: delete key=%x\n", key );                   
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_delete( RTEMS_SELF, (void **)key );    
 8001e3c:	b8 20 10 00 	mv r2,r1                                       
 8001e40:	34 01 00 00 	mvi r1,0                                       
 8001e44:	f8 00 0b 77 	calli 8004c20 <rtems_task_variable_delete>     
  if ( status == RTEMS_SUCCESSFUL ) {                                 
 8001e48:	5c 20 00 04 	bne r1,r0,8001e58 <rtems_gxx_key_delete+0x2c>  <== NEVER TAKEN
    /* Hmm - hopefully all tasks using this key have gone away... */  
    if ( key ) free( *(void **)key );                                 
 8001e4c:	45 61 00 03 	be r11,r1,8001e58 <rtems_gxx_key_delete+0x2c>  <== NEVER TAKEN
 8001e50:	29 61 00 00 	lw r1,(r11+0)                                  
 8001e54:	fb ff ff 3e 	calli 8001b4c <free>                           
    return 0;                                                         
  }                                                                   
  key = NULL;                                                         
  return 0;                                                           
}                                                                     
 8001e58:	34 01 00 00 	mvi r1,0                                       
 8001e5c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001e60:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8001e64:	37 9c 00 08 	addi sp,sp,8                                   
 8001e68:	c3 a0 00 00 	ret                                            
                                                                      

08001cec <rtems_gxx_once>: /* uncomment this if you need to debug this interface */ /*#define DEBUG_GXX_WRAPPERS 1*/ int rtems_gxx_once(__gthread_once_t *once, void (*func) (void)) {
 8001cec:	37 9c ff ec 	addi sp,sp,-20                                 
 8001cf0:	5b 8b 00 10 	sw (sp+16),r11                                 
 8001cf4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8001cf8:	5b 8d 00 08 	sw (sp+8),r13                                  
 8001cfc:	5b 9d 00 04 	sw (sp+4),ra                                   
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
 8001d00:	28 2c 00 00 	lw r12,(r1+0)                                  
                                                                      
/* uncomment this if you need to debug this interface */              
/*#define DEBUG_GXX_WRAPPERS 1*/                                      
                                                                      
int rtems_gxx_once(__gthread_once_t *once, void (*func) (void))       
{                                                                     
 8001d04:	b8 20 58 00 	mv r11,r1                                      
 8001d08:	b8 40 68 00 	mv r13,r2                                      
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
 8001d0c:	45 80 00 08 	be r12,r0,8001d2c <rtems_gxx_once+0x40>        
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    if ( o == 0 )                                                     
      (*func)();                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8001d10:	34 01 00 00 	mvi r1,0                                       
 8001d14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d18:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001d1c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8001d20:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001d24:	37 9c 00 14 	addi sp,sp,20                                  
 8001d28:	c3 a0 00 00 	ret                                            
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
 8001d2c:	34 01 01 00 	mvi r1,256                                     
 8001d30:	34 02 01 00 	mvi r2,256                                     
 8001d34:	37 83 00 14 	addi r3,sp,20                                  
 8001d38:	f8 00 0a dd 	calli 80048ac <rtems_task_mode>                
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
 8001d3c:	29 61 00 00 	lw r1,(r11+0)                                  
 8001d40:	5c 2c 00 0f 	bne r1,r12,8001d7c <rtems_gxx_once+0x90>       <== NEVER TAKEN
      *(volatile __gthread_once_t *)once = 1;                         
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8001d44:	2b 81 00 14 	lw r1,(sp+20)                                  
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
      *(volatile __gthread_once_t *)once = 1;                         
 8001d48:	34 04 00 01 	mvi r4,1                                       
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8001d4c:	34 02 01 00 	mvi r2,256                                     
 8001d50:	37 83 00 14 	addi r3,sp,20                                  
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
      *(volatile __gthread_once_t *)once = 1;                         
 8001d54:	59 64 00 00 	sw (r11+0),r4                                  
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8001d58:	f8 00 0a d5 	calli 80048ac <rtems_task_mode>                
    if ( o == 0 )                                                     
      (*func)();                                                      
 8001d5c:	d9 a0 00 00 	call r13                                       
  }                                                                   
  return 0;                                                           
}                                                                     
 8001d60:	34 01 00 00 	mvi r1,0                                       
 8001d64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001d68:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8001d6c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8001d70:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8001d74:	37 9c 00 14 	addi sp,sp,20                                  
 8001d78:	c3 a0 00 00 	ret                                            
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
      *(volatile __gthread_once_t *)once = 1;                         
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
 8001d7c:	2b 81 00 14 	lw r1,(sp+20)                                  <== NOT EXECUTED
 8001d80:	34 02 01 00 	mvi r2,256                                     <== NOT EXECUTED
 8001d84:	37 83 00 14 	addi r3,sp,20                                  <== NOT EXECUTED
 8001d88:	f8 00 0a c9 	calli 80048ac <rtems_task_mode>                <== NOT EXECUTED
    if ( o == 0 )                                                     
      (*func)();                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
 8001d8c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8001d90:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8001d94:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8001d98:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8001d9c:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8001da0:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8001da4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08001ee4 <rtems_gxx_setspecific>: #endif return p; } int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr) {
 8001ee4:	37 9c ff f4 	addi sp,sp,-12                                 
 8001ee8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8001eec:	5b 8c 00 08 	sw (sp+8),r12                                  
 8001ef0:	5b 9d 00 04 	sw (sp+4),ra                                   
      rtems_task_self()                                               
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
 8001ef4:	28 23 00 04 	lw r3,(r1+4)                                   
  #endif                                                              
  return p;                                                           
}                                                                     
                                                                      
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)       
{                                                                     
 8001ef8:	b8 20 58 00 	mv r11,r1                                      
 8001efc:	b8 40 60 00 	mv r12,r2                                      
      rtems_task_self()                                               
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
 8001f00:	34 01 00 00 	mvi r1,0                                       
 8001f04:	b9 60 10 00 	mv r2,r11                                      
 8001f08:	f8 00 0b 07 	calli 8004b24 <rtems_task_variable_add>        
  if ( status == RTEMS_SUCCESSFUL ) {                                 
    /* now let's set the proper value */                              
    key->val =  (void *)ptr;                                          
    return 0;                                                         
  }                                                                   
  return -1;                                                          
 8001f0c:	34 03 ff ff 	mvi r3,-1                                      
      );                                                              
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)key, key->dtor );
  if ( status == RTEMS_SUCCESSFUL ) {                                 
 8001f10:	5c 20 00 03 	bne r1,r0,8001f1c <rtems_gxx_setspecific+0x38> <== NEVER TAKEN
    /* now let's set the proper value */                              
    key->val =  (void *)ptr;                                          
 8001f14:	59 6c 00 00 	sw (r11+0),r12                                 
    return 0;                                                         
 8001f18:	34 03 00 00 	mvi r3,0                                       
  }                                                                   
  return -1;                                                          
}                                                                     
 8001f1c:	b8 60 08 00 	mv r1,r3                                       
 8001f20:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001f24:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8001f28:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8001f2c:	37 9c 00 0c 	addi sp,sp,12                                  
 8001f30:	c3 a0 00 00 	ret                                            
                                                                      

08006ff0 <rtems_heap_allocate_aligned_with_boundary>: void *rtems_heap_allocate_aligned_with_boundary( size_t size, uintptr_t alignment, uintptr_t boundary ) {
 8006ff0:	37 9c ff f0 	addi sp,sp,-16                                 
 8006ff4:	5b 8b 00 10 	sw (sp+16),r11                                 
 8006ff8:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8006ffc:	5b 8d 00 08 	sw (sp+8),r13                                  
 8007000:	5b 9d 00 04 	sw (sp+4),ra                                   
  if (                                                                
 8007004:	78 04 08 02 	mvhi r4,0x802                                  
 8007008:	38 84 86 c8 	ori r4,r4,0x86c8                               
 800700c:	28 86 00 00 	lw r6,(r4+0)                                   
 8007010:	34 05 00 03 	mvi r5,3                                       
void *rtems_heap_allocate_aligned_with_boundary(                      
  size_t size,                                                        
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
 8007014:	b8 20 68 00 	mv r13,r1                                      
 8007018:	b8 40 60 00 	mv r12,r2                                      
 800701c:	b8 60 58 00 	mv r11,r3                                      
  if (                                                                
 8007020:	44 c5 00 11 	be r6,r5,8007064 <rtems_heap_allocate_aligned_with_boundary+0x74><== ALWAYS TAKEN
      && !malloc_is_system_state_OK()                                 
  ) {                                                                 
    return NULL;                                                      
  }                                                                   
                                                                      
  malloc_deferred_frees_process();                                    
 8007024:	fb ff fa fe 	calli 8005c1c <malloc_deferred_frees_process>  
                                                                      
  /* FIXME: Statistics, boundary checks */                            
                                                                      
  return _Protected_heap_Allocate_aligned_with_boundary(              
 8007028:	78 05 08 02 	mvhi r5,0x802                                  
 800702c:	38 a5 70 54 	ori r5,r5,0x7054                               
 8007030:	28 a1 00 00 	lw r1,(r5+0)                                   
 8007034:	b9 a0 10 00 	mv r2,r13                                      
 8007038:	b9 80 18 00 	mv r3,r12                                      
 800703c:	b9 60 20 00 	mv r4,r11                                      
 8007040:	f8 00 13 87 	calli 800be5c <_Protected_heap_Allocate_aligned_with_boundary>
 8007044:	b8 20 28 00 	mv r5,r1                                       
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment,                                                        
    boundary                                                          
  );                                                                  
}                                                                     
 8007048:	b8 a0 08 00 	mv r1,r5                                       
 800704c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007050:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8007054:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8007058:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800705c:	37 9c 00 10 	addi sp,sp,16                                  
 8007060:	c3 a0 00 00 	ret                                            
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  if (                                                                
    _System_state_Is_up( _System_state_Get() )                        
      && !malloc_is_system_state_OK()                                 
 8007064:	fb ff fa e4 	calli 8005bf4 <malloc_is_system_state_OK>      
  ) {                                                                 
    return NULL;                                                      
 8007068:	34 05 00 00 	mvi r5,0                                       
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  if (                                                                
    _System_state_Is_up( _System_state_Get() )                        
      && !malloc_is_system_state_OK()                                 
 800706c:	5c 20 ff ee 	bne r1,r0,8007024 <rtems_heap_allocate_aligned_with_boundary+0x34>
 8007070:	e3 ff ff f6 	bi 8007048 <rtems_heap_allocate_aligned_with_boundary+0x58>
                                                                      

08002418 <rtems_heap_extend_via_sbrk>: void *rtems_heap_extend_via_sbrk( Heap_Control *heap, size_t alloc_size ) {
 8002418:	37 9c ff e8 	addi sp,sp,-24                                 
 800241c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002420:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002424:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002428:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800242c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002430:	5b 9d 00 04 	sw (sp+4),ra                                   
  ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;                   
 8002434:	78 03 08 01 	mvhi r3,0x801                                  
 8002438:	38 63 59 30 	ori r3,r3,0x5930                               
 800243c:	28 6c 00 00 	lw r12,(r3+0)                                  
                                                                      
void *rtems_heap_extend_via_sbrk(                                     
  Heap_Control *heap,                                                 
  size_t alloc_size                                                   
)                                                                     
{                                                                     
 8002440:	b8 40 58 00 	mv r11,r2                                      
 8002444:	b8 20 78 00 	mv r15,r1                                      
  ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;                   
  ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;                       
  ptrdiff_t misaligned = sbrk_size % sbrk_amount;                     
 8002448:	b9 80 10 00 	mv r2,r12                                      
 800244c:	b9 60 08 00 	mv r1,r11                                      
 8002450:	f8 00 42 fb 	calli 801303c <__modsi3>                       
  Heap_Control *heap,                                                 
  size_t alloc_size                                                   
)                                                                     
{                                                                     
  ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;                   
  ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;                       
 8002454:	b9 60 68 00 	mv r13,r11                                     
  ptrdiff_t misaligned = sbrk_size % sbrk_amount;                     
  void *return_this = NULL;                                           
                                                                      
  if ( misaligned != 0 ) {                                            
 8002458:	44 20 00 03 	be r1,r0,8002464 <rtems_heap_extend_via_sbrk+0x4c>
    sbrk_size += sbrk_amount - misaligned;                            
 800245c:	b5 6c 68 00 	add r13,r11,r12                                
 8002460:	c9 a1 68 00 	sub r13,r13,r1                                 
  }                                                                   
                                                                      
  if ( sbrk_size > 0 && sbrk_amount > 0 ) {                           
 8002464:	69 a2 00 00 	cmpgi r2,r13,0                                 
 8002468:	69 8c 00 00 	cmpgi r12,r12,0                                
)                                                                     
{                                                                     
  ptrdiff_t sbrk_amount = RTEMS_Malloc_Sbrk_amount;                   
  ptrdiff_t sbrk_size = (ptrdiff_t) alloc_size;                       
  ptrdiff_t misaligned = sbrk_size % sbrk_amount;                     
  void *return_this = NULL;                                           
 800246c:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if ( misaligned != 0 ) {                                            
    sbrk_size += sbrk_amount - misaligned;                            
  }                                                                   
                                                                      
  if ( sbrk_size > 0 && sbrk_amount > 0 ) {                           
 8002470:	a0 4c 60 00 	and r12,r2,r12                                 
 8002474:	5d 80 00 0a 	bne r12,r0,800249c <rtems_heap_extend_via_sbrk+0x84><== ALWAYS TAKEN
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return return_this;                                                 
}                                                                     
 8002478:	b9 c0 08 00 	mv r1,r14                                      
 800247c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002480:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002484:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002488:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800248c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002490:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002494:	37 9c 00 18 	addi sp,sp,24                                  
 8002498:	c3 a0 00 00 	ret                                            
  if ( misaligned != 0 ) {                                            
    sbrk_size += sbrk_amount - misaligned;                            
  }                                                                   
                                                                      
  if ( sbrk_size > 0 && sbrk_amount > 0 ) {                           
    void *area_begin = sbrk( sbrk_size );                             
 800249c:	b9 a0 08 00 	mv r1,r13                                      
 80024a0:	fb ff f7 ca 	calli 80003c8 <sbrk>                           
 80024a4:	b8 20 10 00 	mv r2,r1                                       
                                                                      
    if ( area_begin != (void *) -1 ) {                                
 80024a8:	34 01 ff ff 	mvi r1,-1                                      
 80024ac:	44 41 ff f3 	be r2,r1,8002478 <rtems_heap_extend_via_sbrk+0x60>
      bool ok = _Protected_heap_Extend( heap, area_begin, sbrk_size );
 80024b0:	b9 e0 08 00 	mv r1,r15                                      
 80024b4:	b9 a0 18 00 	mv r3,r13                                      
 80024b8:	f8 00 0d 9d 	calli 8005b2c <_Protected_heap_Extend>         
                                                                      
      if ( ok ) {                                                     
 80024bc:	44 20 00 0d 	be r1,r0,80024f0 <rtems_heap_extend_via_sbrk+0xd8>
        MSBUMP( space_available, sbrk_size );                         
 80024c0:	78 05 08 01 	mvhi r5,0x801                                  
 80024c4:	38 a5 59 00 	ori r5,r5,0x5900                               
 80024c8:	28 a3 00 00 	lw r3,(r5+0)                                   
 80024cc:	b9 e0 08 00 	mv r1,r15                                      
 80024d0:	b9 60 10 00 	mv r2,r11                                      
 80024d4:	b5 a3 68 00 	add r13,r13,r3                                 
 80024d8:	34 04 00 00 	mvi r4,0                                       
 80024dc:	34 03 00 00 	mvi r3,0                                       
 80024e0:	58 ad 00 00 	sw (r5+0),r13                                  
 80024e4:	f8 00 0d 78 	calli 8005ac4 <_Protected_heap_Allocate_aligned_with_boundary>
 80024e8:	b8 20 70 00 	mv r14,r1                                      
 80024ec:	e3 ff ff e3 	bi 8002478 <rtems_heap_extend_via_sbrk+0x60>   
                                                                      
        return_this = _Protected_heap_Allocate( heap, alloc_size );   
      } else {                                                        
        sbrk( -sbrk_size );                                           
 80024f0:	c8 0d 08 00 	sub r1,r0,r13                                  
 80024f4:	fb ff f7 b5 	calli 80003c8 <sbrk>                           
 80024f8:	e3 ff ff e0 	bi 8002478 <rtems_heap_extend_via_sbrk+0x60>   
                                                                      

08002740 <rtems_heap_null_extend>: Heap_Control *heap __attribute__((unused)), size_t alloc_size __attribute__((unused)) ) { return NULL; }
 8002740:	34 01 00 00 	mvi r1,0                                       
 8002744:	c3 a0 00 00 	ret                                            
                                                                      

080037e8 <rtems_ide_part_table_free>: * RETURNS: * N/A */ void rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc) {
 80037e8:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 80037ec:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
    partition_table_free( disk_desc );                                
 80037f0:	fb ff fe 3f 	calli 80030ec <partition_table_free>           <== NOT EXECUTED
}                                                                     
 80037f4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80037f8:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 80037fc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003800 <rtems_ide_part_table_get>: * RTEMS_SUCCESSFUL if success, * RTEMS_INTERNAL_ERROR otherwise */ rtems_status_code rtems_ide_part_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc) {
 8003800:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8003804:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
    return partition_table_get( dev_name, disk_desc );                
 8003808:	fb ff ff 75 	calli 80035dc <partition_table_get>            <== NOT EXECUTED
}                                                                     
 800380c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8003810:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8003814:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08003818 <rtems_ide_part_table_initialize>: * RTEMS_NO_MEMOTY if cannot have not enough memory, * RTEMS_INTERNAL_ERROR if other error occurs. */ rtems_status_code rtems_ide_part_table_initialize(const char *dev_name) {
 8003818:	37 9c ff c0 	addi sp,sp,-64                                 
 800381c:	5b 8b 00 30 	sw (sp+48),r11                                 
 8003820:	5b 8c 00 2c 	sw (sp+44),r12                                 
 8003824:	5b 8d 00 28 	sw (sp+40),r13                                 
 8003828:	5b 8e 00 24 	sw (sp+36),r14                                 
 800382c:	5b 8f 00 20 	sw (sp+32),r15                                 
 8003830:	5b 90 00 1c 	sw (sp+28),r16                                 
 8003834:	5b 91 00 18 	sw (sp+24),r17                                 
 8003838:	5b 92 00 14 	sw (sp+20),r18                                 
 800383c:	5b 93 00 10 	sw (sp+16),r19                                 
 8003840:	5b 94 00 0c 	sw (sp+12),r20                                 
 8003844:	5b 95 00 08 	sw (sp+8),r21                                  
 8003848:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_part_desc_t          *part_desc;                            
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
 800384c:	34 02 01 28 	mvi r2,296                                     
 *      RTEMS_NO_MEMOTY if cannot have not enough memory,             
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
rtems_status_code                                                     
rtems_ide_part_table_initialize(const char *dev_name)                 
{                                                                     
 8003850:	b8 20 80 00 	mv r16,r1                                      
    rtems_part_desc_t          *part_desc;                            
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
 8003854:	34 01 00 01 	mvi r1,1                                       
 8003858:	f8 00 02 46 	calli 8004170 <calloc>                         
 800385c:	b8 20 60 00 	mv r12,r1                                      
    if (disk_desc == NULL)                                            
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
 8003860:	34 15 00 1a 	mvi r21,26                                     
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
    if (disk_desc == NULL)                                            
 8003864:	44 20 00 18 	be r1,r0,80038c4 <rtems_ide_part_table_initialize+0xac><== NEVER TAKEN
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    /* get partition table */                                         
    rc = partition_table_get(dev_name, disk_desc);                    
 8003868:	ba 00 08 00 	mv r1,r16                                      
 800386c:	b9 80 10 00 	mv r2,r12                                      
 8003870:	fb ff ff 5b 	calli 80035dc <partition_table_get>            
 8003874:	b8 20 a8 00 	mv r21,r1                                      
    if (rc != RTEMS_SUCCESSFUL)                                       
 8003878:	5c 20 00 3a 	bne r1,r0,8003960 <rtems_ide_part_table_initialize+0x148><== NEVER TAKEN
    /* To avoid device numbers conflicts we have to use for logic disk the same
     * device major number as ATA device has, and minor number that equals to
     * sum of logic disk partition number and the minor number of physical disk
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
 800387c:	29 92 00 00 	lw r18,(r12+0)                                 
 8003880:	29 91 00 04 	lw r17,(r12+4)                                 
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
 8003884:	78 0f 08 02 	mvhi r15,0x802                                 
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
 8003888:	78 13 08 02 	mvhi r19,0x802                                 
 800388c:	78 14 08 02 	mvhi r20,0x802                                 
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
  return temp.__overlay.minor;                                        
 8003890:	b9 80 68 00 	mv r13,r12                                     
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
 8003894:	34 0b 00 00 	mvi r11,0                                      
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
 8003898:	37 8e 00 34 	addi r14,sp,52                                 
 800389c:	39 ef 73 a8 	ori r15,r15,0x73a8                             
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
 80038a0:	3a 73 92 70 	ori r19,r19,0x9270                             
 80038a4:	3a 94 73 b0 	ori r20,r20,0x73b0                             
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
 80038a8:	29 84 00 24 	lw r4,(r12+36)                                 
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
 80038ac:	b9 e0 10 00 	mv r2,r15                                      
 80038b0:	ba 00 18 00 	mv r3,r16                                      
 80038b4:	b9 c0 08 00 	mv r1,r14                                      
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
 80038b8:	48 8b 00 12 	bg r4,r11,8003900 <rtems_ide_part_table_initialize+0xe8>
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
            continue;                                                 
        }                                                             
    }                                                                 
                                                                      
    partition_table_free(disk_desc);                                  
 80038bc:	b9 80 08 00 	mv r1,r12                                      
 80038c0:	fb ff fe 0b 	calli 80030ec <partition_table_free>           
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
 80038c4:	ba a0 08 00 	mv r1,r21                                      
 80038c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80038cc:	2b 8b 00 30 	lw r11,(sp+48)                                 
 80038d0:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 80038d4:	2b 8d 00 28 	lw r13,(sp+40)                                 
 80038d8:	2b 8e 00 24 	lw r14,(sp+36)                                 
 80038dc:	2b 8f 00 20 	lw r15,(sp+32)                                 
 80038e0:	2b 90 00 1c 	lw r16,(sp+28)                                 
 80038e4:	2b 91 00 18 	lw r17,(sp+24)                                 
 80038e8:	2b 92 00 14 	lw r18,(sp+20)                                 
 80038ec:	2b 93 00 10 	lw r19,(sp+16)                                 
 80038f0:	2b 94 00 0c 	lw r20,(sp+12)                                 
 80038f4:	2b 95 00 08 	lw r21,(sp+8)                                  
 80038f8:	37 9c 00 40 	addi sp,sp,64                                  
 80038fc:	c3 a0 00 00 	ret                                            
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
 8003900:	35 6b 00 01 	addi r11,r11,1                                 
 8003904:	b9 60 20 00 	mv r4,r11                                      
 8003908:	f8 00 47 88 	calli 8015728 <sprintf>                        
        dev = rtems_filesystem_make_dev_t(major, ++minor);            
                                                                      
        part_desc = disk_desc->partitions[part_num];                  
 800390c:	29 a6 00 28 	lw r6,(r13+40)                                 
        if (part_desc == NULL)                                        
        {                                                             
            continue;                                                 
        }                                                             
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
 8003910:	b9 c0 38 00 	mv r7,r14                                      
 8003914:	ba 40 08 00 	mv r1,r18                                      
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.__overlay.major = _major;                                      
  temp.__overlay.minor = _minor;                                      
 8003918:	b5 71 10 00 	add r2,r11,r17                                 
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
        dev = rtems_filesystem_make_dev_t(major, ++minor);            
                                                                      
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc == NULL)                                        
 800391c:	44 c0 00 08 	be r6,r0,800393c <rtems_ide_part_table_initialize+0x124>
        {                                                             
            continue;                                                 
        }                                                             
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
 8003920:	29 84 00 04 	lw r4,(r12+4)                                  
 8003924:	28 c5 00 04 	lw r5,(r6+4)                                   
 8003928:	29 83 00 00 	lw r3,(r12+0)                                  
 800392c:	28 c6 00 08 	lw r6,(r6+8)                                   
 8003930:	fb ff fc 32 	calli 80029f8 <rtems_disk_create_log>          
 8003934:	b8 20 20 00 	mv r4,r1                                       
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
 8003938:	5c 20 00 03 	bne r1,r0,8003944 <rtems_ide_part_table_initialize+0x12c><== NEVER TAKEN
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
            continue;                                                 
 800393c:	35 ad 00 04 	addi r13,r13,4                                 
 8003940:	e3 ff ff da 	bi 80038a8 <rtems_ide_part_table_initialize+0x90>
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
 8003944:	2a 65 00 00 	lw r5,(r19+0)                                  <== NOT EXECUTED
 8003948:	ba 80 10 00 	mv r2,r20                                      <== NOT EXECUTED
 800394c:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8003950:	28 a1 00 08 	lw r1,(r5+8)                                   <== NOT EXECUTED
            continue;                                                 
 8003954:	35 ad 00 04 	addi r13,r13,4                                 <== NOT EXECUTED
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
 8003958:	f8 00 44 fc 	calli 8014d48 <fprintf>                        <== NOT EXECUTED
 800395c:	e3 ff ff d3 	bi 80038a8 <rtems_ide_part_table_initialize+0x90><== NOT EXECUTED
                                                                      
    /* get partition table */                                         
    rc = partition_table_get(dev_name, disk_desc);                    
    if (rc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        free(disk_desc);                                              
 8003960:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8003964:	f8 00 02 51 	calli 80042a8 <free>                           <== NOT EXECUTED
        return rc;                                                    
 8003968:	e3 ff ff d7 	bi 80038c4 <rtems_ide_part_table_initialize+0xac><== NOT EXECUTED
                                                                      

080059f0 <rtems_io_register_driver>: rtems_status_code rtems_io_register_driver( rtems_device_major_number major, const rtems_driver_address_table *driver_table, rtems_device_major_number *registered_major ) {
 80059f0:	37 9c ff f8 	addi sp,sp,-8                                  
 80059f4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80059f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 80059fc:	78 04 08 01 	mvhi r4,0x801                                  
 8005a00:	38 84 ae 00 	ori r4,r4,0xae00                               
 8005a04:	28 85 00 08 	lw r5,(r4+8)                                   
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
 8005a08:	78 04 08 01 	mvhi r4,0x801                                  
 8005a0c:	38 84 b2 b0 	ori r4,r4,0xb2b0                               
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
 8005a10:	b8 20 58 00 	mv r11,r1                                      
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
 8005a14:	28 86 00 00 	lw r6,(r4+0)                                   
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
 8005a18:	34 01 00 12 	mvi r1,18                                      
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
 8005a1c:	5c a0 00 33 	bne r5,r0,8005ae8 <rtems_io_register_driver+0xf8>
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
    return RTEMS_INVALID_ADDRESS;                                     
 8005a20:	34 01 00 09 	mvi r1,9                                       
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
 8005a24:	44 65 00 31 	be r3,r5,8005ae8 <rtems_io_register_driver+0xf8>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
 8005a28:	58 66 00 00 	sw (r3+0),r6                                   
                                                                      
  if ( driver_table == NULL )                                         
 8005a2c:	44 40 00 2f 	be r2,r0,8005ae8 <rtems_io_register_driver+0xf8>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8005a30:	28 45 00 00 	lw r5,(r2+0)                                   
 8005a34:	44 a0 00 42 	be r5,r0,8005b3c <rtems_io_register_driver+0x14c>
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
 8005a38:	34 01 00 0a 	mvi r1,10                                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
 8005a3c:	51 66 00 2b 	bgeu r11,r6,8005ae8 <rtems_io_register_driver+0xf8>
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8005a40:	78 01 08 01 	mvhi r1,0x801                                  
 8005a44:	38 21 a9 78 	ori r1,r1,0xa978                               
 8005a48:	28 25 00 00 	lw r5,(r1+0)                                   
                                                                      
    ++level;                                                          
 8005a4c:	34 a5 00 01 	addi r5,r5,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8005a50:	58 25 00 00 	sw (r1+0),r5                                   
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
 8005a54:	5d 60 00 29 	bne r11,r0,8005af8 <rtems_io_register_driver+0x108>
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
 8005a58:	28 85 00 00 	lw r5,(r4+0)                                   
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 8005a5c:	44 ab 00 3e 	be r5,r11,8005b54 <rtems_io_register_driver+0x164><== NEVER TAKEN
 8005a60:	78 06 08 01 	mvhi r6,0x801                                  
 8005a64:	38 c6 b2 b4 	ori r6,r6,0xb2b4                               
 8005a68:	28 c1 00 00 	lw r1,(r6+0)                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8005a6c:	28 24 00 00 	lw r4,(r1+0)                                   
 8005a70:	44 80 00 36 	be r4,r0,8005b48 <rtems_io_register_driver+0x158>
  rtems_device_major_number n = _IO_Number_of_drivers;                
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
 8005a74:	35 6b 00 01 	addi r11,r11,1                                 
 8005a78:	34 21 00 18 	addi r1,r1,24                                  
 8005a7c:	54 ab ff fc 	bgu r5,r11,8005a6c <rtems_io_register_driver+0x7c>
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 8005a80:	58 6b 00 00 	sw (r3+0),r11                                  
                                                                      
  if ( m != n )                                                       
 8005a84:	44 ab 00 35 	be r5,r11,8005b58 <rtems_io_register_driver+0x168>
 8005a88:	b5 6b 08 00 	add r1,r11,r11                                 
 8005a8c:	b4 2b 08 00 	add r1,r1,r11                                  
 8005a90:	b4 21 08 00 	add r1,r1,r1                                   
 8005a94:	b4 21 08 00 	add r1,r1,r1                                   
 8005a98:	b4 21 08 00 	add r1,r1,r1                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
 8005a9c:	28 c3 00 00 	lw r3,(r6+0)                                   
 8005aa0:	28 44 00 00 	lw r4,(r2+0)                                   
 8005aa4:	b4 61 08 00 	add r1,r3,r1                                   
 8005aa8:	58 24 00 00 	sw (r1+0),r4                                   
 8005aac:	28 43 00 04 	lw r3,(r2+4)                                   
 8005ab0:	58 23 00 04 	sw (r1+4),r3                                   
 8005ab4:	28 43 00 08 	lw r3,(r2+8)                                   
 8005ab8:	58 23 00 08 	sw (r1+8),r3                                   
 8005abc:	28 43 00 0c 	lw r3,(r2+12)                                  
 8005ac0:	58 23 00 0c 	sw (r1+12),r3                                  
 8005ac4:	28 43 00 10 	lw r3,(r2+16)                                  
 8005ac8:	58 23 00 10 	sw (r1+16),r3                                  
 8005acc:	28 42 00 14 	lw r2,(r2+20)                                  
 8005ad0:	58 22 00 14 	sw (r1+20),r2                                  
                                                                      
  _Thread_Enable_dispatch();                                          
 8005ad4:	f8 00 08 bb 	calli 8007dc0 <_Thread_Enable_dispatch>        
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
 8005ad8:	b9 60 08 00 	mv r1,r11                                      
 8005adc:	34 02 00 00 	mvi r2,0                                       
 8005ae0:	34 03 00 00 	mvi r3,0                                       
 8005ae4:	f8 00 27 94 	calli 800f934 <rtems_io_initialize>            
}                                                                     
 8005ae8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005aec:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005af0:	37 9c 00 08 	addi sp,sp,8                                   
 8005af4:	c3 a0 00 00 	ret                                            
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
 8005af8:	b5 6b 08 00 	add r1,r11,r11                                 
 8005afc:	78 06 08 01 	mvhi r6,0x801                                  
 8005b00:	b4 2b 08 00 	add r1,r1,r11                                  
 8005b04:	38 c6 b2 b4 	ori r6,r6,0xb2b4                               
 8005b08:	b4 21 08 00 	add r1,r1,r1                                   
 8005b0c:	28 c5 00 00 	lw r5,(r6+0)                                   
 8005b10:	b4 21 08 00 	add r1,r1,r1                                   
 8005b14:	b4 21 08 00 	add r1,r1,r1                                   
 8005b18:	b4 a1 28 00 	add r5,r5,r1                                   
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8005b1c:	28 a4 00 00 	lw r4,(r5+0)                                   
 8005b20:	44 80 00 11 	be r4,r0,8005b64 <rtems_io_register_driver+0x174>
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
                                                                      
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
 8005b24:	f8 00 08 a7 	calli 8007dc0 <_Thread_Enable_dispatch>        
      return RTEMS_RESOURCE_IN_USE;                                   
 8005b28:	34 01 00 0c 	mvi r1,12                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
 8005b2c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005b30:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005b34:	37 9c 00 08 	addi sp,sp,8                                   
 8005b38:	c3 a0 00 00 	ret                                            
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8005b3c:	28 47 00 04 	lw r7,(r2+4)                                   
 8005b40:	5c e5 ff be 	bne r7,r5,8005a38 <rtems_io_register_driver+0x48>
 8005b44:	e3 ff ff e9 	bi 8005ae8 <rtems_io_register_driver+0xf8>     
 8005b48:	28 27 00 04 	lw r7,(r1+4)                                   
 8005b4c:	5c e4 ff ca 	bne r7,r4,8005a74 <rtems_io_register_driver+0x84>
 8005b50:	e3 ff ff cc 	bi 8005a80 <rtems_io_register_driver+0x90>     
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
 8005b54:	58 60 00 00 	sw (r3+0),r0                                   <== NOT EXECUTED
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
 8005b58:	f8 00 08 9a 	calli 8007dc0 <_Thread_Enable_dispatch>        
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
 8005b5c:	34 01 00 05 	mvi r1,5                                       
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
 8005b60:	e3 ff ff e2 	bi 8005ae8 <rtems_io_register_driver+0xf8>     
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
 8005b64:	28 a5 00 04 	lw r5,(r5+4)                                   
 8005b68:	5c a4 ff ef 	bne r5,r4,8005b24 <rtems_io_register_driver+0x134>
    if ( !rtems_io_is_empty_table( table ) ) {                        
      _Thread_Enable_dispatch();                                      
      return RTEMS_RESOURCE_IN_USE;                                   
    }                                                                 
                                                                      
    *registered_major = major;                                        
 8005b6c:	58 6b 00 00 	sw (r3+0),r11                                  
 8005b70:	e3 ff ff cb 	bi 8005a9c <rtems_io_register_driver+0xac>     
                                                                      

08007198 <rtems_iterate_over_all_threads>: #include <rtems/system.h> #include <rtems/score/thread.h> void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) {
 8007198:	37 9c ff e4 	addi sp,sp,-28                                 
 800719c:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80071a0:	5b 8c 00 18 	sw (sp+24),r12                                 
 80071a4:	5b 8d 00 14 	sw (sp+20),r13                                 
 80071a8:	5b 8e 00 10 	sw (sp+16),r14                                 
 80071ac:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80071b0:	5b 90 00 08 	sw (sp+8),r16                                  
 80071b4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80071b8:	b8 20 78 00 	mv r15,r1                                      
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80071bc:	44 20 00 19 	be r1,r0,8007220 <rtems_iterate_over_all_threads+0x88><== NEVER TAKEN
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80071c0:	78 01 08 02 	mvhi r1,0x802                                  
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80071c4:	78 0e 08 02 	mvhi r14,0x802                                 
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80071c8:	38 21 2c f4 	ori r1,r1,0x2cf4                               
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
 80071cc:	39 ce 2c f8 	ori r14,r14,0x2cf8                             
#endif                                                                
                                                                      
#include <rtems/system.h>                                             
#include <rtems/score/thread.h>                                       
                                                                      
void rtems_iterate_over_all_threads(rtems_per_thread_routine routine) 
 80071d0:	34 30 00 10 	addi r16,r1,16                                 
    #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)             
      if ( !_Objects_Information_table[ api_index ] )                 
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
 80071d4:	29 c1 00 00 	lw r1,(r14+0)                                  
 80071d8:	28 2d 00 04 	lw r13,(r1+4)                                  
    if ( !information )                                               
 80071dc:	45 a0 00 0f 	be r13,r0,8007218 <rtems_iterate_over_all_threads+0x80>
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80071e0:	2d a3 00 10 	lhu r3,(r13+16)                                
 80071e4:	44 60 00 0d 	be r3,r0,8007218 <rtems_iterate_over_all_threads+0x80>
 80071e8:	34 0c 00 04 	mvi r12,4                                      
 80071ec:	34 0b 00 01 	mvi r11,1                                      
      the_thread = (Thread_Control *)information->local_table[ i ];   
 80071f0:	29 a2 00 1c 	lw r2,(r13+28)                                 
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 80071f4:	35 6b 00 01 	addi r11,r11,1                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
 80071f8:	b4 4c 10 00 	add r2,r2,r12                                  
 80071fc:	28 42 00 00 	lw r2,(r2+0)                                   
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8007200:	35 8c 00 04 	addi r12,r12,4                                 
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 8007204:	b8 40 08 00 	mv r1,r2                                       
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
      the_thread = (Thread_Control *)information->local_table[ i ];   
                                                                      
      if ( !the_thread )                                              
 8007208:	44 40 00 03 	be r2,r0,8007214 <rtems_iterate_over_all_threads+0x7c>
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
 800720c:	d9 e0 00 00 	call r15                                       
 8007210:	2d a3 00 10 	lhu r3,(r13+16)                                
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
 8007214:	50 6b ff f7 	bgeu r3,r11,80071f0 <rtems_iterate_over_all_threads+0x58>
 8007218:	35 ce 00 04 	addi r14,r14,4                                 
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
    return;                                                           
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
 800721c:	5d d0 ff ee 	bne r14,r16,80071d4 <rtems_iterate_over_all_threads+0x3c>
                                                                      
      (*routine)(the_thread);                                         
    }                                                                 
  }                                                                   
                                                                      
}                                                                     
 8007220:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007224:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8007228:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800722c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8007230:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8007234:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8007238:	2b 90 00 08 	lw r16,(sp+8)                                  
 800723c:	37 9c 00 1c 	addi sp,sp,28                                  
 8007240:	c3 a0 00 00 	ret                                            
                                                                      

080017c8 <rtems_libio_init>: rtems_id rtems_libio_semaphore; rtems_libio_t *rtems_libio_iops; rtems_libio_t *rtems_libio_iop_freelist; void rtems_libio_init( void ) {
 80017c8:	37 9c ff f8 	addi sp,sp,-8                                  
 80017cc:	5b 8b 00 08 	sw (sp+8),r11                                  
 80017d0:	5b 9d 00 04 	sw (sp+4),ra                                   
    rtems_status_code rc;                                             
    uint32_t i;                                                       
    rtems_libio_t *iop;                                               
                                                                      
    if (rtems_libio_number_iops > 0)                                  
 80017d4:	78 01 08 02 	mvhi r1,0x802                                  
 80017d8:	38 21 00 10 	ori r1,r1,0x10                                 
 80017dc:	28 2b 00 00 	lw r11,(r1+0)                                  
 80017e0:	45 60 00 1e 	be r11,r0,8001858 <rtems_libio_init+0x90>      <== NEVER TAKEN
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
 80017e4:	34 02 00 2c 	mvi r2,44                                      
 80017e8:	b9 60 08 00 	mv r1,r11                                      
 80017ec:	fb ff fe c4 	calli 80012fc <calloc>                         
 80017f0:	78 02 08 02 	mvhi r2,0x802                                  
 80017f4:	38 42 08 1c 	ori r2,r2,0x81c                                
 80017f8:	58 41 00 00 	sw (r2+0),r1                                   
 80017fc:	b8 20 18 00 	mv r3,r1                                       
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
 8001800:	44 20 00 2b 	be r1,r0,80018ac <rtems_libio_init+0xe4>       
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
 8001804:	78 02 08 02 	mvhi r2,0x802                                  
 8001808:	38 42 08 20 	ori r2,r2,0x820                                
 800180c:	58 41 00 00 	sw (r2+0),r1                                   
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
 8001810:	34 02 00 01 	mvi r2,1                                       
 8001814:	50 4b 00 10 	bgeu r2,r11,8001854 <rtems_libio_init+0x8c>    
                                                                      
rtems_id           rtems_libio_semaphore;                             
rtems_libio_t     *rtems_libio_iops;                                  
rtems_libio_t     *rtems_libio_iop_freelist;                          
                                                                      
void rtems_libio_init( void )                                         
 8001818:	34 22 00 2c 	addi r2,r1,44                                  
 800181c:	34 03 00 01 	mvi r3,1                                       
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
          iop->data1 = iop + 1;                                       
 8001820:	58 42 ff fc 	sw (r2+-4),r2                                  
 8001824:	34 63 00 01 	addi r3,r3,1                                   
 8001828:	34 42 00 2c 	addi r2,r2,44                                  
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
 800182c:	5c 6b ff fd 	bne r3,r11,8001820 <rtems_libio_init+0x58>     
                                                                      
rtems_id           rtems_libio_semaphore;                             
rtems_libio_t     *rtems_libio_iops;                                  
rtems_libio_t     *rtems_libio_iop_freelist;                          
                                                                      
void rtems_libio_init( void )                                         
 8001830:	34 63 ff ff 	addi r3,r3,-1                                  
 8001834:	b4 63 10 00 	add r2,r3,r3                                   
 8001838:	b4 43 10 00 	add r2,r2,r3                                   
 800183c:	b4 42 10 00 	add r2,r2,r2                                   
 8001840:	b4 42 10 00 	add r2,r2,r2                                   
 8001844:	c8 43 18 00 	sub r3,r2,r3                                   
 8001848:	b4 63 18 00 	add r3,r3,r3                                   
 800184c:	b4 63 18 00 	add r3,r3,r3                                   
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
 8001850:	b4 23 18 00 	add r3,r1,r3                                   
          iop->data1 = iop + 1;                                       
        iop->data1 = NULL;                                            
 8001854:	58 60 00 28 	sw (r3+40),r0                                  
  /*                                                                  
   *  Create the binary semaphore used to provide mutual exclusion    
   *  on the IOP Table.                                               
   */                                                                 
                                                                      
  rc = rtems_semaphore_create(                                        
 8001858:	78 02 08 01 	mvhi r2,0x801                                  
 800185c:	38 42 d9 98 	ori r2,r2,0xd998                               
 8001860:	28 41 00 00 	lw r1,(r2+0)                                   
 8001864:	78 05 08 02 	mvhi r5,0x802                                  
 8001868:	34 03 00 54 	mvi r3,84                                      
 800186c:	34 02 00 01 	mvi r2,1                                       
 8001870:	34 04 00 00 	mvi r4,0                                       
 8001874:	38 a5 08 24 	ori r5,r5,0x824                                
 8001878:	f8 00 08 75 	calli 8003a4c <rtems_semaphore_create>         
 800187c:	b8 20 18 00 	mv r3,r1                                       
    1,                                                                
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
 8001880:	5c 20 00 0a 	bne r1,r0,80018a8 <rtems_libio_init+0xe0>      <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize the base file system infrastructure.                 
   */                                                                 
                                                                      
  if (rtems_fs_init_helper)                                           
 8001884:	78 02 08 02 	mvhi r2,0x802                                  
 8001888:	38 42 00 0c 	ori r2,r2,0xc                                  
 800188c:	28 41 00 00 	lw r1,(r2+0)                                   
 8001890:	44 23 00 02 	be r1,r3,8001898 <rtems_libio_init+0xd0>       
     (* rtems_fs_init_helper)();                                      
 8001894:	d8 20 00 00 	call r1                                        
}                                                                     
 8001898:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800189c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80018a0:	37 9c 00 08 	addi sp,sp,8                                   
 80018a4:	c3 a0 00 00 	ret                                            
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
    rtems_fatal_error_occurred( rc );                                 
 80018a8:	f8 00 0b 00 	calli 80044a8 <rtems_fatal_error_occurred>     <== NOT EXECUTED
    if (rtems_libio_number_iops > 0)                                  
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
 80018ac:	34 01 00 1a 	mvi r1,26                                      
 80018b0:	f8 00 0a fe 	calli 80044a8 <rtems_fatal_error_occurred>     
                                                                      

08002e9c <rtems_libio_set_private_env>: rtems_status_code rtems_libio_set_private_env(void) {
 8002e9c:	37 9c ff e8 	addi sp,sp,-24                                 
 8002ea0:	5b 8b 00 18 	sw (sp+24),r11                                 
 8002ea4:	5b 8c 00 14 	sw (sp+20),r12                                 
 8002ea8:	5b 8d 00 10 	sw (sp+16),r13                                 
 8002eac:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8002eb0:	5b 8f 00 08 	sw (sp+8),r15                                  
 8002eb4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id self_task_id = rtems_task_self();                          
  rtems_user_env_t *old_env = rtems_current_user_env;                 
 8002eb8:	78 0e 08 01 	mvhi r14,0x801                                 
 8002ebc:	39 ce 41 48 	ori r14,r14,0x4148                             
}                                                                     
                                                                      
rtems_status_code rtems_libio_set_private_env(void)                   
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id self_task_id = rtems_task_self();                          
 8002ec0:	f8 00 08 07 	calli 8004edc <rtems_task_self>                
  rtems_user_env_t *old_env = rtems_current_user_env;                 
 8002ec4:	29 cb 00 00 	lw r11,(r14+0)                                 
  bool uses_global_env = old_env == &rtems_global_user_env;           
  bool uses_shared_env = old_env->task_id != self_task_id;            
                                                                      
  if (uses_global_env || uses_shared_env) {                           
 8002ec8:	78 02 08 01 	mvhi r2,0x801                                  
 8002ecc:	38 42 41 1c 	ori r2,r2,0x411c                               
}                                                                     
                                                                      
rtems_status_code rtems_libio_set_private_env(void)                   
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id self_task_id = rtems_task_self();                          
 8002ed0:	b8 20 78 00 	mv r15,r1                                      
  rtems_user_env_t *old_env = rtems_current_user_env;                 
  bool uses_global_env = old_env == &rtems_global_user_env;           
  bool uses_shared_env = old_env->task_id != self_task_id;            
 8002ed4:	29 61 00 24 	lw r1,(r11+36)                                 
                                                                      
  if (uses_global_env || uses_shared_env) {                           
 8002ed8:	45 62 00 03 	be r11,r2,8002ee4 <rtems_libio_set_private_env+0x48>
  _Thread_Enable_dispatch();                                          
}                                                                     
                                                                      
rtems_status_code rtems_libio_set_private_env(void)                   
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 8002edc:	34 0d 00 00 	mvi r13,0                                      
  rtems_id self_task_id = rtems_task_self();                          
  rtems_user_env_t *old_env = rtems_current_user_env;                 
  bool uses_global_env = old_env == &rtems_global_user_env;           
  bool uses_shared_env = old_env->task_id != self_task_id;            
                                                                      
  if (uses_global_env || uses_shared_env) {                           
 8002ee0:	45 e1 00 33 	be r15,r1,8002fac <rtems_libio_set_private_env+0x110>
    rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));          
 8002ee4:	34 01 00 01 	mvi r1,1                                       
 8002ee8:	34 02 00 2c 	mvi r2,44                                      
 8002eec:	f8 00 17 f9 	calli 8008ed0 <calloc>                         
 8002ef0:	b8 20 60 00 	mv r12,r1                                      
                                                                      
      if (sc != RTEMS_SUCCESSFUL) {                                   
        free_user_env(new_env);                                       
      }                                                               
    } else {                                                          
      sc = RTEMS_NO_MEMORY;                                           
 8002ef4:	34 0d 00 1a 	mvi r13,26                                     
  bool uses_shared_env = old_env->task_id != self_task_id;            
                                                                      
  if (uses_global_env || uses_shared_env) {                           
    rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));          
                                                                      
    if (new_env != NULL) {                                            
 8002ef8:	44 20 00 2d 	be r1,r0,8002fac <rtems_libio_set_private_env+0x110>
      *new_env = *old_env;                                            
 8002efc:	29 62 00 00 	lw r2,(r11+0)                                  
      new_env->reference_count = 1;                                   
      new_env->task_id = self_task_id;                                
      new_env->root_directory =                                       
        rtems_filesystem_global_location_obtain(&old_env->root_directory);
 8002f00:	35 61 00 04 	addi r1,r11,4                                  
                                                                      
  if (uses_global_env || uses_shared_env) {                           
    rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));          
                                                                      
    if (new_env != NULL) {                                            
      *new_env = *old_env;                                            
 8002f04:	59 82 00 00 	sw (r12+0),r2                                  
 8002f08:	29 62 00 04 	lw r2,(r11+4)                                  
 8002f0c:	59 82 00 04 	sw (r12+4),r2                                  
 8002f10:	29 62 00 08 	lw r2,(r11+8)                                  
 8002f14:	59 82 00 08 	sw (r12+8),r2                                  
 8002f18:	29 62 00 0c 	lw r2,(r11+12)                                 
 8002f1c:	59 82 00 0c 	sw (r12+12),r2                                 
 8002f20:	29 62 00 10 	lw r2,(r11+16)                                 
 8002f24:	59 82 00 10 	sw (r12+16),r2                                 
 8002f28:	29 62 00 14 	lw r2,(r11+20)                                 
 8002f2c:	59 82 00 14 	sw (r12+20),r2                                 
 8002f30:	29 62 00 18 	lw r2,(r11+24)                                 
 8002f34:	59 82 00 18 	sw (r12+24),r2                                 
 8002f38:	29 62 00 1c 	lw r2,(r11+28)                                 
 8002f3c:	59 82 00 1c 	sw (r12+28),r2                                 
 8002f40:	29 62 00 20 	lw r2,(r11+32)                                 
      new_env->reference_count = 1;                                   
      new_env->task_id = self_task_id;                                
 8002f44:	59 8f 00 24 	sw (r12+36),r15                                
                                                                      
  if (uses_global_env || uses_shared_env) {                           
    rtems_user_env_t *new_env = calloc(1, sizeof(*new_env));          
                                                                      
    if (new_env != NULL) {                                            
      *new_env = *old_env;                                            
 8002f48:	59 82 00 20 	sw (r12+32),r2                                 
      new_env->reference_count = 1;                                   
 8002f4c:	34 02 00 01 	mvi r2,1                                       
 8002f50:	59 82 00 28 	sw (r12+40),r2                                 
      new_env->task_id = self_task_id;                                
      new_env->root_directory =                                       
        rtems_filesystem_global_location_obtain(&old_env->root_directory);
 8002f54:	f8 00 04 41 	calli 8004058 <rtems_filesystem_global_location_obtain>
                                                                      
    if (new_env != NULL) {                                            
      *new_env = *old_env;                                            
      new_env->reference_count = 1;                                   
      new_env->task_id = self_task_id;                                
      new_env->root_directory =                                       
 8002f58:	59 81 00 04 	sw (r12+4),r1                                  
        rtems_filesystem_global_location_obtain(&old_env->root_directory);
      new_env->current_directory =                                    
        rtems_filesystem_global_location_obtain(&old_env->current_directory);
 8002f5c:	b9 60 08 00 	mv r1,r11                                      
 8002f60:	f8 00 04 3e 	calli 8004058 <rtems_filesystem_global_location_obtain>
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
                                                                      
    rtems_current_user_env = &rtems_global_user_env;                  
  }                                                                   
}                                                                     
 8002f64:	29 83 00 04 	lw r3,(r12+4)                                  
      new_env->root_directory =                                       
        rtems_filesystem_global_location_obtain(&old_env->root_directory);
      new_env->current_directory =                                    
        rtems_filesystem_global_location_obtain(&old_env->current_directory);
                                                                      
      if (                                                            
 8002f68:	78 02 08 01 	mvhi r2,0x801                                  
      *new_env = *old_env;                                            
      new_env->reference_count = 1;                                   
      new_env->task_id = self_task_id;                                
      new_env->root_directory =                                       
        rtems_filesystem_global_location_obtain(&old_env->root_directory);
      new_env->current_directory =                                    
 8002f6c:	59 81 00 00 	sw (r12+0),r1                                  
        rtems_filesystem_global_location_obtain(&old_env->current_directory);
                                                                      
      if (                                                            
 8002f70:	28 63 00 10 	lw r3,(r3+16)                                  
 8002f74:	38 42 34 40 	ori r2,r2,0x3440                               
 8002f78:	44 62 00 16 	be r3,r2,8002fd0 <rtems_libio_set_private_env+0x134>
        !rtems_filesystem_global_location_is_null(new_env->root_directory)
          && !rtems_filesystem_global_location_is_null(new_env->current_directory)
 8002f7c:	28 21 00 10 	lw r1,(r1+16)                                  
 8002f80:	44 22 00 14 	be r1,r2,8002fd0 <rtems_libio_set_private_env+0x134><== NEVER TAKEN
      ) {                                                             
        sc = rtems_task_variable_add(                                 
 8002f84:	78 03 08 00 	mvhi r3,0x800                                  
 8002f88:	34 01 00 00 	mvi r1,0                                       
 8002f8c:	b9 c0 10 00 	mv r2,r14                                      
 8002f90:	38 63 2e 10 	ori r3,r3,0x2e10                               
 8002f94:	f8 00 08 04 	calli 8004fa4 <rtems_task_variable_add>        
 8002f98:	b8 20 68 00 	mv r13,r1                                      
          RTEMS_SELF,                                                 
          (void **) &rtems_current_user_env,                          
          free_user_env                                               
        );                                                            
        if (sc == RTEMS_SUCCESSFUL) {                                 
 8002f9c:	44 20 00 0f 	be r1,r0,8002fd8 <rtems_libio_set_private_env+0x13c>
          free_user_env_protected(old_env);                           
          rtems_current_user_env = new_env;                           
        } else {                                                      
          sc = RTEMS_TOO_MANY;                                        
 8002fa0:	34 0d 00 05 	mvi r13,5                                      
      } else {                                                        
        sc = RTEMS_UNSATISFIED;                                       
      }                                                               
                                                                      
      if (sc != RTEMS_SUCCESSFUL) {                                   
        free_user_env(new_env);                                       
 8002fa4:	b9 80 08 00 	mv r1,r12                                      
 8002fa8:	fb ff ff 9a 	calli 8002e10 <free_user_env>                  
      sc = RTEMS_NO_MEMORY;                                           
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8002fac:	b9 a0 08 00 	mv r1,r13                                      
 8002fb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8002fb4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8002fb8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8002fbc:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8002fc0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8002fc4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8002fc8:	37 9c 00 18 	addi sp,sp,24                                  
 8002fcc:	c3 a0 00 00 	ret                                            
          rtems_current_user_env = new_env;                           
        } else {                                                      
          sc = RTEMS_TOO_MANY;                                        
        }                                                             
      } else {                                                        
        sc = RTEMS_UNSATISFIED;                                       
 8002fd0:	34 0d 00 0d 	mvi r13,13                                     
 8002fd4:	e3 ff ff f4 	bi 8002fa4 <rtems_libio_set_private_env+0x108> 
          RTEMS_SELF,                                                 
          (void **) &rtems_current_user_env,                          
          free_user_env                                               
        );                                                            
        if (sc == RTEMS_SUCCESSFUL) {                                 
          free_user_env_protected(old_env);                           
 8002fd8:	b9 60 08 00 	mv r1,r11                                      
 8002fdc:	fb ff ff a4 	calli 8002e6c <free_user_env_protected>        
          rtems_current_user_env = new_env;                           
 8002fe0:	59 cc 00 00 	sw (r14+0),r12                                 
 8002fe4:	e3 ff ff f2 	bi 8002fac <rtems_libio_set_private_env+0x110> 
                                                                      

08002fe8 <rtems_libio_share_private_env>: return sc; } rtems_status_code rtems_libio_share_private_env(rtems_id task_id) {
 8002fe8:	37 9c ff ec 	addi sp,sp,-20                                 
 8002fec:	5b 8b 00 10 	sw (sp+16),r11                                 
 8002ff0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8002ff4:	5b 8d 00 08 	sw (sp+8),r13                                  
 8002ff8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8002ffc:	b8 20 60 00 	mv r12,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id self_task_id = rtems_task_self();                          
 8003000:	f8 00 07 b7 	calli 8004edc <rtems_task_self>                
                                                                      
  if (task_id != RTEMS_SELF && self_task_id != task_id) {             
 8003004:	fc 2c 08 00 	cmpne r1,r1,r12                                
 8003008:	7d 82 00 00 	cmpnei r2,r12,0                                
  return sc;                                                          
}                                                                     
                                                                      
rtems_status_code rtems_libio_share_private_env(rtems_id task_id)     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 800300c:	34 0b 00 00 	mvi r11,0                                      
  rtems_id self_task_id = rtems_task_self();                          
                                                                      
  if (task_id != RTEMS_SELF && self_task_id != task_id) {             
 8003010:	a0 22 08 00 	and r1,r1,r2                                   
 8003014:	5c 20 00 08 	bne r1,r0,8003034 <rtems_libio_share_private_env+0x4c>
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8003018:	b9 60 08 00 	mv r1,r11                                      
 800301c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003020:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003024:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003028:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800302c:	37 9c 00 14 	addi sp,sp,20                                  
 8003030:	c3 a0 00 00 	ret                                            
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8003034:	78 01 08 01 	mvhi r1,0x801                                  
 8003038:	38 21 48 b8 	ori r1,r1,0x48b8                               
 800303c:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 8003040:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8003044:	58 22 00 00 	sw (r1+0),r2                                   
    /*                                                                
     * We have to disable the thread dispatching to prevent deletion of the
     * environment in the meantime.                                   
     */                                                               
    _Thread_Disable_dispatch();                                       
    sc = rtems_task_variable_get(                                     
 8003048:	78 0d 08 01 	mvhi r13,0x801                                 
 800304c:	39 ad 41 48 	ori r13,r13,0x4148                             
 8003050:	b9 80 08 00 	mv r1,r12                                      
 8003054:	b9 a0 10 00 	mv r2,r13                                      
 8003058:	37 83 00 14 	addi r3,sp,20                                  
 800305c:	f8 00 08 41 	calli 8005160 <rtems_task_variable_get>        
 8003060:	b8 20 60 00 	mv r12,r1                                      
      task_id,                                                        
      (void *) &rtems_current_user_env,                               
      (void *) &env                                                   
    );                                                                
    if (sc == RTEMS_SUCCESSFUL) {                                     
 8003064:	5c 20 00 17 	bne r1,r0,80030c0 <rtems_libio_share_private_env+0xd8>
      ++env->reference_count;                                         
 8003068:	2b 81 00 14 	lw r1,(sp+20)                                  
 800306c:	28 22 00 28 	lw r2,(r1+40)                                  
 8003070:	34 42 00 01 	addi r2,r2,1                                   
 8003074:	58 22 00 28 	sw (r1+40),r2                                  
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
    }                                                                 
    _Thread_Enable_dispatch();                                        
 8003078:	f8 00 11 90 	calli 80076b8 <_Thread_Enable_dispatch>        
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      sc = rtems_task_variable_add(                                   
 800307c:	78 03 08 00 	mvhi r3,0x800                                  
 8003080:	34 01 00 00 	mvi r1,0                                       
 8003084:	b9 a0 10 00 	mv r2,r13                                      
 8003088:	38 63 2e 10 	ori r3,r3,0x2e10                               
 800308c:	f8 00 07 c6 	calli 8004fa4 <rtems_task_variable_add>        
 8003090:	b8 20 58 00 	mv r11,r1                                      
        RTEMS_SELF,                                                   
        (void **) &rtems_current_user_env,                            
        free_user_env                                                 
      );                                                              
      if (sc == RTEMS_SUCCESSFUL) {                                   
 8003094:	44 2c 00 14 	be r1,r12,80030e4 <rtems_libio_share_private_env+0xfc><== ALWAYS TAKEN
        free_user_env_protected(rtems_current_user_env);              
        rtems_current_user_env = env;                                 
      } else {                                                        
        free_user_env_protected(env);                                 
 8003098:	2b 81 00 14 	lw r1,(sp+20)                                  <== NOT EXECUTED
        sc = RTEMS_TOO_MANY;                                          
 800309c:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
      );                                                              
      if (sc == RTEMS_SUCCESSFUL) {                                   
        free_user_env_protected(rtems_current_user_env);              
        rtems_current_user_env = env;                                 
      } else {                                                        
        free_user_env_protected(env);                                 
 80030a0:	fb ff ff 73 	calli 8002e6c <free_user_env_protected>        <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 80030a4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80030a8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80030ac:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 80030b0:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 80030b4:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 80030b8:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 80030bc:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ++env->reference_count;                                         
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
    }                                                                 
    _Thread_Enable_dispatch();                                        
 80030c0:	f8 00 11 7e 	calli 80076b8 <_Thread_Enable_dispatch>        
      (void *) &env                                                   
    );                                                                
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ++env->reference_count;                                         
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
 80030c4:	34 0b 00 0d 	mvi r11,13                                     
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 80030c8:	b9 60 08 00 	mv r1,r11                                      
 80030cc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80030d0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80030d4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80030d8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80030dc:	37 9c 00 14 	addi sp,sp,20                                  
 80030e0:	c3 a0 00 00 	ret                                            
        RTEMS_SELF,                                                   
        (void **) &rtems_current_user_env,                            
        free_user_env                                                 
      );                                                              
      if (sc == RTEMS_SUCCESSFUL) {                                   
        free_user_env_protected(rtems_current_user_env);              
 80030e4:	29 a1 00 00 	lw r1,(r13+0)                                  
 80030e8:	fb ff ff 61 	calli 8002e6c <free_user_env_protected>        
        rtems_current_user_env = env;                                 
 80030ec:	2b 81 00 14 	lw r1,(sp+20)                                  
 80030f0:	59 a1 00 00 	sw (r13+0),r1                                  
 80030f4:	e3 ff ff c9 	bi 8003018 <rtems_libio_share_private_env+0x30>
                                                                      

08009078 <rtems_libio_to_fcntl_flags>: int rtems_libio_to_fcntl_flags( uint32_t flags ) { int fcntl_flags = 0; if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
 8009078:	20 24 00 06 	andi r4,r1,0x6                                 
 800907c:	34 03 00 06 	mvi r3,6                                       
    fcntl_flags |= O_RDWR;                                            
 8009080:	34 02 00 02 	mvi r2,2                                       
                                                                      
int rtems_libio_to_fcntl_flags( uint32_t flags )                      
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
 8009084:	44 83 00 04 	be r4,r3,8009094 <rtems_libio_to_fcntl_flags+0x1c>
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
 8009088:	20 23 00 02 	andi r3,r1,0x2                                 
    fcntl_flags |= O_RDONLY;                                          
 800908c:	34 02 00 00 	mvi r2,0                                       
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
 8009090:	44 60 00 0c 	be r3,r0,80090c0 <rtems_libio_to_fcntl_flags+0x48><== NEVER TAKEN
    fcntl_flags |= O_RDONLY;                                          
  } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {     
    fcntl_flags |= O_WRONLY;                                          
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) {     
 8009094:	20 23 00 01 	andi r3,r1,0x1                                 
 8009098:	44 60 00 02 	be r3,r0,80090a0 <rtems_libio_to_fcntl_flags+0x28>
    fcntl_flags |= O_NONBLOCK;                                        
 800909c:	38 42 40 00 	ori r2,r2,0x4000                               
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {         
 80090a0:	20 23 02 00 	andi r3,r1,0x200                               
 80090a4:	44 60 00 02 	be r3,r0,80090ac <rtems_libio_to_fcntl_flags+0x34>
    fcntl_flags |= O_APPEND;                                          
 80090a8:	38 42 00 08 	ori r2,r2,0x8                                  
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {         
 80090ac:	20 21 04 00 	andi r1,r1,0x400                               
 80090b0:	44 20 00 02 	be r1,r0,80090b8 <rtems_libio_to_fcntl_flags+0x40>
    fcntl_flags |= O_CREAT;                                           
 80090b4:	38 42 02 00 	ori r2,r2,0x200                                
  }                                                                   
                                                                      
  return fcntl_flags;                                                 
}                                                                     
 80090b8:	b8 40 08 00 	mv r1,r2                                       
 80090bc:	c3 a0 00 00 	ret                                            
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
    fcntl_flags |= O_RDONLY;                                          
  } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {     
 80090c0:	20 22 00 04 	andi r2,r1,0x4                                 <== NOT EXECUTED
int rtems_libio_to_fcntl_flags( uint32_t flags )                      
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
 80090c4:	7c 42 00 00 	cmpnei r2,r2,0                                 <== NOT EXECUTED
 80090c8:	e3 ff ff f3 	bi 8009094 <rtems_libio_to_fcntl_flags+0x1c>   <== NOT EXECUTED
                                                                      

080030f8 <rtems_libio_use_global_env>: return sc; } void rtems_libio_use_global_env(void) {
 80030f8:	37 9c ff f4 	addi sp,sp,-12                                 
 80030fc:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8003100:	5b 8c 00 08 	sw (sp+8),r12                                  
 8003104:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_user_env_t *env = rtems_current_user_env;                     
  bool uses_private_env = env != &rtems_global_user_env;              
                                                                      
  if (uses_private_env) {                                             
 8003108:	78 0b 08 01 	mvhi r11,0x801                                 
 800310c:	39 6b 41 48 	ori r11,r11,0x4148                             
 8003110:	29 61 00 00 	lw r1,(r11+0)                                  
 8003114:	78 0c 08 01 	mvhi r12,0x801                                 
 8003118:	39 8c 41 1c 	ori r12,r12,0x411c                             
 800311c:	44 2c 00 06 	be r1,r12,8003134 <rtems_libio_use_global_env+0x3c>
    sc = rtems_task_variable_delete(                                  
 8003120:	34 01 00 00 	mvi r1,0                                       
 8003124:	b9 60 10 00 	mv r2,r11                                      
 8003128:	f8 00 07 de 	calli 80050a0 <rtems_task_variable_delete>     
      RTEMS_SELF,                                                     
      (void **) &rtems_current_user_env                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
 800312c:	5c 20 00 07 	bne r1,r0,8003148 <rtems_libio_use_global_env+0x50><== NEVER TAKEN
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
                                                                      
    rtems_current_user_env = &rtems_global_user_env;                  
 8003130:	59 6c 00 00 	sw (r11+0),r12                                 
  }                                                                   
}                                                                     
 8003134:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003138:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800313c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8003140:	37 9c 00 0c 	addi sp,sp,12                                  
 8003144:	c3 a0 00 00 	ret                                            
    sc = rtems_task_variable_delete(                                  
      RTEMS_SELF,                                                     
      (void **) &rtems_current_user_env                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
      rtems_fatal_error_occurred(0xdeadbeef);                         
 8003148:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 800314c:	38 42 34 38 	ori r2,r2,0x3438                               <== NOT EXECUTED
 8003150:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 8003154:	f8 00 08 a2 	calli 80053dc <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

080060a0 <rtems_malloc_statistics_at_free>: * size and thus we skip updating the statistics. */ static void rtems_malloc_statistics_at_free( void *pointer ) {
 80060a0:	37 9c ff f8 	addi sp,sp,-8                                  
 80060a4:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t size;                                                     
                                                                      
  if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
 80060a8:	78 03 08 02 	mvhi r3,0x802                                  
 80060ac:	38 63 70 54 	ori r3,r3,0x7054                               
 *  size and thus we skip updating the statistics.                    
 */                                                                   
static void rtems_malloc_statistics_at_free(                          
  void *pointer                                                       
)                                                                     
{                                                                     
 80060b0:	b8 20 10 00 	mv r2,r1                                       
  uintptr_t size;                                                     
                                                                      
  if (_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &size) ) {
 80060b4:	28 61 00 00 	lw r1,(r3+0)                                   
 80060b8:	37 83 00 08 	addi r3,sp,8                                   
 80060bc:	f8 00 17 b1 	calli 800bf80 <_Protected_heap_Get_block_size> 
 80060c0:	44 20 00 0b 	be r1,r0,80060ec <rtems_malloc_statistics_at_free+0x4c><== NEVER TAKEN
    MSBUMP(lifetime_freed, size);                                     
 80060c4:	78 01 08 02 	mvhi r1,0x802                                  
 80060c8:	38 21 81 18 	ori r1,r1,0x8118                               
 80060cc:	2b 83 00 08 	lw r3,(sp+8)                                   
 80060d0:	28 22 00 2c 	lw r2,(r1+44)                                  
 80060d4:	28 24 00 28 	lw r4,(r1+40)                                  
 80060d8:	b4 62 10 00 	add r2,r3,r2                                   
 80060dc:	f4 62 18 00 	cmpgu r3,r3,r2                                 
 80060e0:	58 22 00 2c 	sw (r1+44),r2                                  
 80060e4:	b4 64 10 00 	add r2,r3,r4                                   
 80060e8:	58 22 00 28 	sw (r1+40),r2                                  
  }                                                                   
}                                                                     
 80060ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80060f0:	37 9c 00 08 	addi sp,sp,8                                   
 80060f4:	c3 a0 00 00 	ret                                            
                                                                      

080060f8 <rtems_malloc_statistics_at_malloc>: } static void rtems_malloc_statistics_at_malloc( void *pointer ) {
 80060f8:	37 9c ff f8 	addi sp,sp,-8                                  
 80060fc:	5b 9d 00 04 	sw (sp+4),ra                                   
  uintptr_t actual_size = 0;                                          
 8006100:	5b 80 00 08 	sw (sp+8),r0                                   
}                                                                     
                                                                      
static void rtems_malloc_statistics_at_malloc(                        
  void *pointer                                                       
)                                                                     
{                                                                     
 8006104:	b8 20 10 00 	mv r2,r1                                       
  uintptr_t actual_size = 0;                                          
  uint32_t current_depth;                                             
  rtems_malloc_statistics_t *s = &rtems_malloc_statistics;            
                                                                      
  if ( !pointer )                                                     
 8006108:	44 20 00 15 	be r1,r0,800615c <rtems_malloc_statistics_at_malloc+0x64><== NEVER TAKEN
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
 800610c:	78 03 08 02 	mvhi r3,0x802                                  
 8006110:	38 63 70 54 	ori r3,r3,0x7054                               
 8006114:	28 61 00 00 	lw r1,(r3+0)                                   
 8006118:	37 83 00 08 	addi r3,sp,8                                   
 800611c:	f8 00 17 99 	calli 800bf80 <_Protected_heap_Get_block_size> 
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 8006120:	78 01 08 02 	mvhi r1,0x802                                  
 8006124:	38 21 81 18 	ori r1,r1,0x8118                               
 8006128:	2b 83 00 08 	lw r3,(sp+8)                                   
 800612c:	28 22 00 24 	lw r2,(r1+36)                                  
 8006130:	28 26 00 20 	lw r6,(r1+32)                                  
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
 8006134:	28 25 00 2c 	lw r5,(r1+44)                                  
  if ( !pointer )                                                     
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 8006138:	b4 62 10 00 	add r2,r3,r2                                   
 800613c:	f4 62 18 00 	cmpgu r3,r3,r2                                 
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
  if (current_depth > s->max_depth)                                   
 8006140:	28 24 00 18 	lw r4,(r1+24)                                  
  if ( !pointer )                                                     
    return;                                                           
                                                                      
  _Protected_heap_Get_block_size(RTEMS_Malloc_Heap, pointer, &actual_size);
                                                                      
  MSBUMP(lifetime_allocated, actual_size);                            
 8006144:	b4 66 18 00 	add r3,r3,r6                                   
 8006148:	58 22 00 24 	sw (r1+36),r2                                  
 800614c:	58 23 00 20 	sw (r1+32),r3                                  
                                                                      
  current_depth = (uint32_t) (s->lifetime_allocated - s->lifetime_freed);
 8006150:	c8 45 10 00 	sub r2,r2,r5                                   
  if (current_depth > s->max_depth)                                   
 8006154:	50 82 00 02 	bgeu r4,r2,800615c <rtems_malloc_statistics_at_malloc+0x64>
      s->max_depth = current_depth;                                   
 8006158:	58 22 00 18 	sw (r1+24),r2                                  
}                                                                     
 800615c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006160:	37 9c 00 08 	addi sp,sp,8                                   
 8006164:	c3 a0 00 00 	ret                                            
                                                                      

0800dc8c <rtems_memalign>: int rtems_memalign( void **pointer, size_t alignment, size_t size ) {
 800dc8c:	37 9c ff ec 	addi sp,sp,-20                                 
 800dc90:	5b 8b 00 14 	sw (sp+20),r11                                 
 800dc94:	5b 8c 00 10 	sw (sp+16),r12                                 
 800dc98:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800dc9c:	5b 8e 00 08 	sw (sp+8),r14                                  
 800dca0:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
    return EINVAL;                                                    
 800dca4:	34 0c 00 16 	mvi r12,22                                     
int rtems_memalign(                                                   
  void   **pointer,                                                   
  size_t   alignment,                                                 
  size_t   size                                                       
)                                                                     
{                                                                     
 800dca8:	b8 20 58 00 	mv r11,r1                                      
 800dcac:	b8 40 68 00 	mv r13,r2                                      
 800dcb0:	b8 60 70 00 	mv r14,r3                                      
  void *return_this;                                                  
                                                                      
  /*                                                                  
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
 800dcb4:	44 20 00 1b 	be r1,r0,800dd20 <rtems_memalign+0x94>         
  *pointer = NULL;                                                    
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800dcb8:	78 01 08 01 	mvhi r1,0x801                                  
 800dcbc:	38 21 ad f8 	ori r1,r1,0xadf8                               
 800dcc0:	28 22 00 00 	lw r2,(r1+0)                                   
   *  Parameter error checks                                          
   */                                                                 
  if ( !pointer )                                                     
    return EINVAL;                                                    
                                                                      
  *pointer = NULL;                                                    
 800dcc4:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800dcc8:	34 01 00 03 	mvi r1,3                                       
 800dccc:	44 41 00 1d 	be r2,r1,800dd40 <rtems_memalign+0xb4>         
    return EINVAL;                                                    
                                                                      
  /*                                                                  
   *  If some free's have been deferred, then do them now.            
   */                                                                 
  malloc_deferred_frees_process();                                    
 800dcd0:	fb ff d4 3a 	calli 8002db8 <malloc_deferred_frees_process>  
  Heap_Control *heap,                                                 
  uintptr_t size,                                                     
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return                                                              
 800dcd4:	78 01 08 01 	mvhi r1,0x801                                  
 800dcd8:	38 21 a0 54 	ori r1,r1,0xa054                               
 800dcdc:	28 21 00 00 	lw r1,(r1+0)                                   
 800dce0:	b9 a0 18 00 	mv r3,r13                                      
 800dce4:	b9 c0 10 00 	mv r2,r14                                      
 800dce8:	34 04 00 00 	mvi r4,0                                       
 800dcec:	fb ff e5 78 	calli 80072cc <_Protected_heap_Allocate_aligned_with_boundary>
 800dcf0:	b8 20 68 00 	mv r13,r1                                      
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment                                                         
  );                                                                  
  if ( !return_this )                                                 
    return ENOMEM;                                                    
 800dcf4:	34 0c 00 0c 	mvi r12,12                                     
  return_this = _Protected_heap_Allocate_aligned(                     
    RTEMS_Malloc_Heap,                                                
    size,                                                             
    alignment                                                         
  );                                                                  
  if ( !return_this )                                                 
 800dcf8:	44 20 00 0a 	be r1,r0,800dd20 <rtems_memalign+0x94>         
    return ENOMEM;                                                    
                                                                      
  /*                                                                  
   *  If configured, update the more involved statistics              
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
 800dcfc:	78 02 08 01 	mvhi r2,0x801                                  
 800dd00:	38 42 a7 0c 	ori r2,r2,0xa70c                               
 800dd04:	28 41 00 00 	lw r1,(r2+0)                                   
 800dd08:	44 20 00 04 	be r1,r0,800dd18 <rtems_memalign+0x8c>         
    (*rtems_malloc_statistics_helpers->at_malloc)(pointer);           
 800dd0c:	28 22 00 04 	lw r2,(r1+4)                                   
 800dd10:	b9 60 08 00 	mv r1,r11                                      
 800dd14:	d8 40 00 00 	call r2                                        
                                                                      
  *pointer = return_this;                                             
 800dd18:	59 6d 00 00 	sw (r11+0),r13                                 
  return 0;                                                           
 800dd1c:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 800dd20:	b9 80 08 00 	mv r1,r12                                      
 800dd24:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800dd28:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800dd2c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800dd30:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800dd34:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800dd38:	37 9c 00 14 	addi sp,sp,20                                  
 800dd3c:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
       !malloc_is_system_state_OK() )                                 
 800dd40:	fb ff d4 14 	calli 8002d90 <malloc_is_system_state_OK>      
  *pointer = NULL;                                                    
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
 800dd44:	5c 20 ff e3 	bne r1,r0,800dcd0 <rtems_memalign+0x44>        <== ALWAYS TAKEN
 800dd48:	e3 ff ff f6 	bi 800dd20 <rtems_memalign+0x94>               <== NOT EXECUTED
                                                                      

080083f8 <rtems_mkdir>: return (retval); } int rtems_mkdir(const char *path, mode_t mode) {
 80083f8:	37 9c ff 84 	addi sp,sp,-124                                
 80083fc:	5b 8b 00 34 	sw (sp+52),r11                                 
 8008400:	5b 8c 00 30 	sw (sp+48),r12                                 
 8008404:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8008408:	5b 8e 00 28 	sw (sp+40),r14                                 
 800840c:	5b 8f 00 24 	sw (sp+36),r15                                 
 8008410:	5b 90 00 20 	sw (sp+32),r16                                 
 8008414:	5b 91 00 1c 	sw (sp+28),r17                                 
 8008418:	5b 92 00 18 	sw (sp+24),r18                                 
 800841c:	5b 93 00 14 	sw (sp+20),r19                                 
 8008420:	5b 94 00 10 	sw (sp+16),r20                                 
 8008424:	5b 95 00 0c 	sw (sp+12),r21                                 
 8008428:	5b 96 00 08 	sw (sp+8),r22                                  
 800842c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8008430:	b8 40 88 00 	mv r17,r2                                      
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
 8008434:	f8 00 75 bb 	calli 8025b20 <strdup>                         
 8008438:	b8 20 68 00 	mv r13,r1                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 800843c:	34 01 ff ff 	mvi r1,-1                                      
rtems_mkdir(const char *path, mode_t mode)                            
{                                                                     
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
 8008440:	45 a0 00 31 	be r13,r0,8008504 <rtems_mkdir+0x10c>          
  char *p;                                                            
                                                                      
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
 8008444:	41 a3 00 00 	lbu r3,(r13+0)                                 
 8008448:	34 01 00 2f 	mvi r1,47                                      
 800844c:	b9 a0 58 00 	mv r11,r13                                     
 8008450:	44 61 00 4d 	be r3,r1,8008584 <rtems_mkdir+0x18c>           
 8008454:	34 0e 00 00 	mvi r14,0                                      
 8008458:	34 04 00 01 	mvi r4,1                                       
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
 800845c:	34 10 00 2f 	mvi r16,47                                     
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
      if (errno == EEXIST || errno == EISDIR) {                       
 8008460:	34 13 00 11 	mvi r19,17                                     
        if (stat(path, &sb) < 0) {                                    
 8008464:	37 94 00 38 	addi r20,sp,56                                 
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
 8008468:	34 15 40 00 	mvi r21,16384                                  
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
      if (errno == EEXIST || errno == EISDIR) {                       
 800846c:	34 16 00 15 	mvi r22,21                                     
       *                                                              
       * We change the user's umask and then restore it,              
       * instead of doing chmod's.                                    
       */                                                             
      oumask = umask(0);                                              
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
 8008470:	34 12 ff 3f 	mvi r18,-193                                   
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
 8008474:	34 0f 00 2f 	mvi r15,47                                     
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
 8008478:	44 60 00 05 	be r3,r0,800848c <rtems_mkdir+0x94>            <== NEVER TAKEN
      last = 1;                                                       
    else if (p[0] != '/')                                             
 800847c:	44 6f 00 3e 	be r3,r15,8008574 <rtems_mkdir+0x17c>          
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
  for (first = 1, last = 0; !last ; ++p) {                            
 8008480:	35 6b 00 01 	addi r11,r11,1                                 
 8008484:	41 63 00 00 	lbu r3,(r11+0)                                 
    if (p[0] == '\0')                                                 
 8008488:	5c 60 ff fd 	bne r3,r0,800847c <rtems_mkdir+0x84>           
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
 800848c:	31 60 00 00 	sb (r11+0),r0                                  
 8008490:	34 0c 00 01 	mvi r12,1                                      
    if (!last && p[1] == '\0')                                        
      last = 1;                                                       
    if (first) {                                                      
 8008494:	5c 80 00 32 	bne r4,r0,800855c <rtems_mkdir+0x164>          
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 8008498:	34 02 01 ff 	mvi r2,511                                     
      oumask = umask(0);                                              
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
 800849c:	5d 80 00 2c 	bne r12,r0,800854c <rtems_mkdir+0x154>         
      (void)umask(oumask);                                            
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 80084a0:	b9 a0 08 00 	mv r1,r13                                      
 80084a4:	fb ff fc 10 	calli 80074e4 <mkdir>                          
 80084a8:	4c 20 00 11 	bge r1,r0,80084ec <rtems_mkdir+0xf4>           
      if (errno == EEXIST || errno == EISDIR) {                       
 80084ac:	f8 00 6d 26 	calli 8023944 <__errno>                        
 80084b0:	28 21 00 00 	lw r1,(r1+0)                                   
 80084b4:	44 33 00 04 	be r1,r19,80084c4 <rtems_mkdir+0xcc>           
 80084b8:	f8 00 6d 23 	calli 8023944 <__errno>                        
 80084bc:	28 21 00 00 	lw r1,(r1+0)                                   
 80084c0:	5c 36 00 45 	bne r1,r22,80085d4 <rtems_mkdir+0x1dc>         <== ALWAYS TAKEN
        if (stat(path, &sb) < 0) {                                    
 80084c4:	b9 a0 08 00 	mv r1,r13                                      
 80084c8:	ba 80 10 00 	mv r2,r20                                      
 80084cc:	f8 00 00 44 	calli 80085dc <stat>                           
 80084d0:	48 01 00 41 	bg r0,r1,80085d4 <rtems_mkdir+0x1dc>           <== NEVER TAKEN
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
 80084d4:	2b 81 00 44 	lw r1,(sp+68)                                  
 80084d8:	20 21 f0 00 	andi r1,r1,0xf000                              
 80084dc:	5c 35 00 2d 	bne r1,r21,8008590 <rtems_mkdir+0x198>         
          else                                                        
            errno = ENOTDIR;                                          
          retval = 0;                                                 
          break;                                                      
        }                                                             
        if (last)                                                     
 80084e0:	45 80 00 18 	be r12,r0,8008540 <rtems_mkdir+0x148>          
          retval = 2;                                                 
 80084e4:	34 0b 00 02 	mvi r11,2                                      
 80084e8:	e0 00 00 03 	bi 80084f4 <rtems_mkdir+0xfc>                  
      } else {                                                        
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
 80084ec:	45 80 00 15 	be r12,r0,8008540 <rtems_mkdir+0x148>          
 80084f0:	34 0b 00 01 	mvi r11,1                                      
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 80084f4:	b9 a0 08 00 	mv r1,r13                                      
 80084f8:	fb ff f9 c7 	calli 8006c14 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 80084fc:	34 01 00 00 	mvi r1,0                                       
 8008500:	45 60 00 33 	be r11,r0,80085cc <rtems_mkdir+0x1d4>          <== NEVER TAKEN
}                                                                     
 8008504:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008508:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800850c:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8008510:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8008514:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8008518:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800851c:	2b 90 00 20 	lw r16,(sp+32)                                 
 8008520:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8008524:	2b 92 00 18 	lw r18,(sp+24)                                 
 8008528:	2b 93 00 14 	lw r19,(sp+20)                                 
 800852c:	2b 94 00 10 	lw r20,(sp+16)                                 
 8008530:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8008534:	2b 96 00 08 	lw r22,(sp+8)                                  
 8008538:	37 9c 00 7c 	addi sp,sp,124                                 
 800853c:	c3 a0 00 00 	ret                                            
        retval = 0;                                                   
        break;                                                        
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
 8008540:	31 70 00 00 	sb (r11+0),r16                                 
 8008544:	34 04 00 00 	mvi r4,0                                       
 8008548:	e3 ff ff ce 	bi 8008480 <rtems_mkdir+0x88>                  
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
      first = 0;                                                      
    }                                                                 
    if (last)                                                         
      (void)umask(oumask);                                            
 800854c:	b9 c0 08 00 	mv r1,r14                                      
 8008550:	f8 00 03 cd 	calli 8009484 <umask>                          
    if (mkdir(path, last ? omode : S_IRWXU | S_IRWXG | S_IRWXO) < 0) {
 8008554:	ba 20 10 00 	mv r2,r17                                      
 8008558:	e3 ff ff d2 	bi 80084a0 <rtems_mkdir+0xa8>                  
       *    mkdir [-m mode] dir                                       
       *                                                              
       * We change the user's umask and then restore it,              
       * instead of doing chmod's.                                    
       */                                                             
      oumask = umask(0);                                              
 800855c:	34 01 00 00 	mvi r1,0                                       
 8008560:	f8 00 03 c9 	calli 8009484 <umask>                          
 8008564:	b8 20 70 00 	mv r14,r1                                      
      numask = oumask & ~(S_IWUSR | S_IXUSR);                         
      (void)umask(numask);                                            
 8008568:	a0 32 08 00 	and r1,r1,r18                                  
 800856c:	f8 00 03 c6 	calli 8009484 <umask>                          
 8008570:	e3 ff ff ca 	bi 8008498 <rtems_mkdir+0xa0>                  
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
    if (!last && p[1] == '\0')                                        
 8008574:	41 6c 00 01 	lbu r12,(r11+1)                                
  for (first = 1, last = 0; !last ; ++p) {                            
    if (p[0] == '\0')                                                 
      last = 1;                                                       
    else if (p[0] != '/')                                             
      continue;                                                       
    *p = '\0';                                                        
 8008578:	31 60 00 00 	sb (r11+0),r0                                  
    if (!last && p[1] == '\0')                                        
 800857c:	65 8c 00 00 	cmpei r12,r12,0                                
 8008580:	e3 ff ff c5 	bi 8008494 <rtems_mkdir+0x9c>                  
                                                                      
  p = path;                                                           
  oumask = 0;                                                         
  retval = 1;                                                         
  if (p[0] == '/')    /* Skip leading '/'. */                         
    ++p;                                                              
 8008584:	41 a3 00 01 	lbu r3,(r13+1)                                 
 8008588:	35 ab 00 01 	addi r11,r13,1                                 
 800858c:	e3 ff ff b2 	bi 8008454 <rtems_mkdir+0x5c>                  
      if (errno == EEXIST || errno == EISDIR) {                       
        if (stat(path, &sb) < 0) {                                    
          retval = 0;                                                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
          if (last)                                                   
 8008590:	45 80 00 08 	be r12,r0,80085b0 <rtems_mkdir+0x1b8>          
            errno = EEXIST;                                           
 8008594:	f8 00 6c ec 	calli 8023944 <__errno>                        
 8008598:	34 02 00 11 	mvi r2,17                                      
 800859c:	58 22 00 00 	sw (r1+0),r2                                   
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 80085a0:	b9 a0 08 00 	mv r1,r13                                      
 80085a4:	fb ff f9 9c 	calli 8006c14 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 80085a8:	34 01 ff ff 	mvi r1,-1                                      
 80085ac:	e3 ff ff d6 	bi 8008504 <rtems_mkdir+0x10c>                 
          break;                                                      
        } else if (!S_ISDIR(sb.st_mode)) {                            
          if (last)                                                   
            errno = EEXIST;                                           
          else                                                        
            errno = ENOTDIR;                                          
 80085b0:	f8 00 6c e5 	calli 8023944 <__errno>                        
 80085b4:	34 02 00 14 	mvi r2,20                                      
 80085b8:	58 22 00 00 	sw (r1+0),r2                                   
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
  }                                                                   
  if (!first && !last)                                                
    (void)umask(oumask);                                              
 80085bc:	b9 c0 08 00 	mv r1,r14                                      
 80085c0:	f8 00 03 b1 	calli 8009484 <umask>                          
  int success = 0;                                                    
  char *dup_path = strdup(path);                                      
                                                                      
  if (dup_path != NULL) {                                             
    success = build(dup_path, mode);                                  
    free(dup_path);                                                   
 80085c4:	b9 a0 08 00 	mv r1,r13                                      
 80085c8:	fb ff f9 93 	calli 8006c14 <free>                           
  }                                                                   
                                                                      
  return success != 0 ? 0 : -1;                                       
 80085cc:	34 01 ff ff 	mvi r1,-1                                      
 80085d0:	e3 ff ff cd 	bi 8008504 <rtems_mkdir+0x10c>                 
      }                                                               
    }                                                                 
    if (!last)                                                        
        *p = '/';                                                     
  }                                                                   
  if (!first && !last)                                                
 80085d4:	45 80 ff fa 	be r12,r0,80085bc <rtems_mkdir+0x1c4>          <== NEVER TAKEN
 80085d8:	e3 ff ff fb 	bi 80085c4 <rtems_mkdir+0x1cc>                 
                                                                      

08005944 <rtems_object_get_class_information>: rtems_status_code rtems_object_get_class_information( int the_api, int the_class, rtems_object_api_class_information *info ) {
 8005944:	37 9c ff f8 	addi sp,sp,-8                                  
 8005948:	5b 8b 00 08 	sw (sp+8),r11                                  
 800594c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005950:	b8 60 58 00 	mv r11,r3                                      
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
 8005954:	34 03 00 09 	mvi r3,9                                       
  int                  i;                                             
                                                                      
  /*                                                                  
   * Validate parameters and look up information structure.           
   */                                                                 
  if ( !info )                                                        
 8005958:	45 60 00 1e 	be r11,r0,80059d0 <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
 800595c:	20 42 ff ff 	andi r2,r2,0xffff                              
 8005960:	f8 00 08 08 	calli 8007980 <_Objects_Get_information>       
 8005964:	b8 20 10 00 	mv r2,r1                                       
  if ( !obj_info )                                                    
    return RTEMS_INVALID_NUMBER;                                      
 8005968:	34 03 00 0a 	mvi r3,10                                      
   */                                                                 
  if ( !info )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  obj_info = _Objects_Get_information( the_api, the_class );          
  if ( !obj_info )                                                    
 800596c:	44 20 00 19 	be r1,r0,80059d0 <rtems_object_get_class_information+0x8c>
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8005970:	28 24 00 08 	lw r4,(r1+8)                                   
  info->maximum_id  = obj_info->maximum_id;                           
 8005974:	28 23 00 0c 	lw r3,(r1+12)                                  
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
 8005978:	2c 46 00 10 	lhu r6,(r2+16)                                 
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
 800597c:	40 21 00 12 	lbu r1,(r1+18)                                 
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  /*                                                                  
   * Return information about this object class to the user.          
   */                                                                 
  info->minimum_id  = obj_info->minimum_id;                           
 8005980:	59 64 00 00 	sw (r11+0),r4                                  
  info->maximum_id  = obj_info->maximum_id;                           
 8005984:	59 63 00 04 	sw (r11+4),r3                                  
  info->auto_extend = obj_info->auto_extend;                          
 8005988:	31 61 00 0c 	sb (r11+12),r1                                 
  info->maximum     = obj_info->maximum;                              
 800598c:	59 66 00 08 	sw (r11+8),r6                                  
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 8005990:	34 04 00 00 	mvi r4,0                                       
 8005994:	44 c0 00 0d 	be r6,r0,80059c8 <rtems_object_get_class_information+0x84><== NEVER TAKEN
 8005998:	28 43 00 1c 	lw r3,(r2+28)                                  
 800599c:	34 01 00 01 	mvi r1,1                                       
 80059a0:	34 02 00 01 	mvi r2,1                                       
    if ( !obj_info->local_table[i] )                                  
 80059a4:	b4 21 08 00 	add r1,r1,r1                                   
 80059a8:	b4 21 08 00 	add r1,r1,r1                                   
 80059ac:	b4 61 08 00 	add r1,r3,r1                                   
 80059b0:	28 25 00 00 	lw r5,(r1+0)                                   
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 80059b4:	34 42 00 01 	addi r2,r2,1                                   
 80059b8:	b8 40 08 00 	mv r1,r2                                       
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
 80059bc:	64 a5 00 00 	cmpei r5,r5,0                                  
 80059c0:	b4 85 20 00 	add r4,r4,r5                                   
  info->minimum_id  = obj_info->minimum_id;                           
  info->maximum_id  = obj_info->maximum_id;                           
  info->auto_extend = obj_info->auto_extend;                          
  info->maximum     = obj_info->maximum;                              
                                                                      
  for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )               
 80059c4:	50 c2 ff f8 	bgeu r6,r2,80059a4 <rtems_object_get_class_information+0x60>
    if ( !obj_info->local_table[i] )                                  
      unallocated++;                                                  
                                                                      
  info->unallocated = unallocated;                                    
 80059c8:	59 64 00 10 	sw (r11+16),r4                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 80059cc:	34 03 00 00 	mvi r3,0                                       
}                                                                     
 80059d0:	b8 60 08 00 	mv r1,r3                                       
 80059d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80059d8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80059dc:	37 9c 00 08 	addi sp,sp,8                                   
 80059e0:	c3 a0 00 00 	ret                                            
                                                                      

0800552c <rtems_partition_create>: uint32_t length, uint32_t buffer_size, rtems_attribute attribute_set, rtems_id *id ) {
 800552c:	37 9c ff d8 	addi sp,sp,-40                                 
 8005530:	5b 8b 00 18 	sw (sp+24),r11                                 
 8005534:	5b 8c 00 14 	sw (sp+20),r12                                 
 8005538:	5b 8d 00 10 	sw (sp+16),r13                                 
 800553c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8005540:	5b 8f 00 08 	sw (sp+8),r15                                  
 8005544:	5b 9d 00 04 	sw (sp+4),ra                                   
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
 8005548:	34 07 00 03 	mvi r7,3                                       
  uint32_t         length,                                            
  uint32_t         buffer_size,                                       
  rtems_attribute  attribute_set,                                     
  rtems_id        *id                                                 
)                                                                     
{                                                                     
 800554c:	b8 20 60 00 	mv r12,r1                                      
 8005550:	b8 40 58 00 	mv r11,r2                                      
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
 8005554:	44 20 00 3e 	be r1,r0,800564c <rtems_partition_create+0x120>
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
    return RTEMS_INVALID_ADDRESS;                                     
 8005558:	34 07 00 09 	mvi r7,9                                       
  register Partition_Control *the_partition;                          
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !starting_address )                                            
 800555c:	44 40 00 3c 	be r2,r0,800564c <rtems_partition_create+0x120>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
 8005560:	44 c0 00 3b 	be r6,r0,800564c <rtems_partition_create+0x120><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 8005564:	64 82 00 00 	cmpei r2,r4,0                                  
 8005568:	64 61 00 00 	cmpei r1,r3,0                                  
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
 800556c:	34 07 00 08 	mvi r7,8                                       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
 8005570:	b8 41 08 00 	or r1,r2,r1                                    
 8005574:	5c 20 00 36 	bne r1,r0,800564c <rtems_partition_create+0x120>
 8005578:	54 83 00 35 	bgu r4,r3,800564c <rtems_partition_create+0x120>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (         
   uint32_t   buffer_size                                             
)                                                                     
{                                                                     
  return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);              
 800557c:	20 81 00 03 	andi r1,r4,0x3                                 
 8005580:	5c 20 00 33 	bne r1,r0,800564c <rtems_partition_create+0x120>
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
 8005584:	21 6f 00 03 	andi r15,r11,0x3                               
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
     return RTEMS_INVALID_ADDRESS;                                    
 8005588:	34 07 00 09 	mvi r7,9                                       
                                                                      
  if ( length == 0 || buffer_size == 0 || length < buffer_size ||     
         !_Partition_Is_buffer_size_aligned( buffer_size ) )          
    return RTEMS_INVALID_SIZE;                                        
                                                                      
  if ( !_Addresses_Is_aligned( starting_address ) )                   
 800558c:	5d e1 00 30 	bne r15,r1,800564c <rtems_partition_create+0x120>
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8005590:	78 01 08 02 	mvhi r1,0x802                                  
 8005594:	38 21 53 28 	ori r1,r1,0x5328                               
 8005598:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 800559c:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 80055a0:	58 22 00 00 	sw (r1+0),r2                                   
 *  This function allocates a partition control block from            
 *  the inactive chain of free partition control blocks.              
 */                                                                   
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )  
{                                                                     
  return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
 80055a4:	78 0e 08 02 	mvhi r14,0x802                                 
 80055a8:	39 ce 51 68 	ori r14,r14,0x5168                             
 80055ac:	b9 c0 08 00 	mv r1,r14                                      
 80055b0:	5b 83 00 28 	sw (sp+40),r3                                  
 80055b4:	5b 84 00 20 	sw (sp+32),r4                                  
 80055b8:	5b 85 00 24 	sw (sp+36),r5                                  
 80055bc:	5b 86 00 1c 	sw (sp+28),r6                                  
 80055c0:	f8 00 08 6a 	calli 8007768 <_Objects_Allocate>              
 80055c4:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
 80055c8:	2b 83 00 28 	lw r3,(sp+40)                                  
 80055cc:	2b 84 00 20 	lw r4,(sp+32)                                  
 80055d0:	2b 85 00 24 	lw r5,(sp+36)                                  
 80055d4:	2b 86 00 1c 	lw r6,(sp+28)                                  
 80055d8:	44 2f 00 26 	be r1,r15,8005670 <rtems_partition_create+0x144>
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
 80055dc:	58 25 00 1c 	sw (r1+28),r5                                  
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
  the_partition->length                = length;                      
 80055e0:	58 23 00 14 	sw (r1+20),r3                                  
  the_partition->buffer_size           = buffer_size;                 
 80055e4:	58 24 00 18 	sw (r1+24),r4                                  
    _Thread_Enable_dispatch();                                        
    return RTEMS_TOO_MANY;                                            
  }                                                                   
#endif                                                                
                                                                      
  the_partition->starting_address      = starting_address;            
 80055e8:	58 2b 00 10 	sw (r1+16),r11                                 
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
 80055ec:	58 20 00 20 	sw (r1+32),r0                                  
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
                        length / buffer_size, buffer_size );          
 80055f0:	b8 80 10 00 	mv r2,r4                                       
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 80055f4:	34 2f 00 24 	addi r15,r1,36                                 
                        length / buffer_size, buffer_size );          
 80055f8:	b8 60 08 00 	mv r1,r3                                       
 80055fc:	5b 86 00 1c 	sw (sp+28),r6                                  
 8005600:	5b 84 00 20 	sw (sp+32),r4                                  
 8005604:	f8 00 64 31 	calli 801e6c8 <__udivsi3>                      
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 8005608:	2b 84 00 20 	lw r4,(sp+32)                                  
                        length / buffer_size, buffer_size );          
 800560c:	b8 20 18 00 	mv r3,r1                                       
  the_partition->length                = length;                      
  the_partition->buffer_size           = buffer_size;                 
  the_partition->attribute_set         = attribute_set;               
  the_partition->number_of_used_blocks = 0;                           
                                                                      
  _Chain_Initialize( &the_partition->Memory, starting_address,        
 8005610:	b9 60 10 00 	mv r2,r11                                      
 8005614:	b9 e0 08 00 	mv r1,r15                                      
 8005618:	f8 00 05 2b 	calli 8006ac4 <_Chain_Initialize>              
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 800561c:	29 a2 00 08 	lw r2,(r13+8)                                  
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8005620:	29 c3 00 1c 	lw r3,(r14+28)                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8005624:	20 41 ff ff 	andi r1,r2,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8005628:	b4 21 08 00 	add r1,r1,r1                                   
 800562c:	b4 21 08 00 	add r1,r1,r1                                   
 8005630:	b4 61 08 00 	add r1,r3,r1                                   
 8005634:	58 2d 00 00 	sw (r1+0),r13                                  
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
 8005638:	59 ac 00 0c 	sw (r13+12),r12                                
    &_Partition_Information,                                          
    &the_partition->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_partition->Object.id;                                     
 800563c:	2b 86 00 1c 	lw r6,(sp+28)                                  
 8005640:	58 c2 00 00 	sw (r6+0),r2                                   
      name,                                                           
      0                  /* Not used */                               
    );                                                                
#endif                                                                
                                                                      
  _Thread_Enable_dispatch();                                          
 8005644:	f8 00 0d e2 	calli 8008dcc <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 8005648:	34 07 00 00 	mvi r7,0                                       
}                                                                     
 800564c:	b8 e0 08 00 	mv r1,r7                                       
 8005650:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005654:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8005658:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800565c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8005660:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8005664:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8005668:	37 9c 00 28 	addi sp,sp,40                                  
 800566c:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();               /* prevents deletion */   
                                                                      
  the_partition = _Partition_Allocate();                              
                                                                      
  if ( !the_partition ) {                                             
    _Thread_Enable_dispatch();                                        
 8005670:	f8 00 0d d7 	calli 8008dcc <_Thread_Enable_dispatch>        
    return RTEMS_TOO_MANY;                                            
 8005674:	34 07 00 05 	mvi r7,5                                       
 8005678:	e3 ff ff f5 	bi 800564c <rtems_partition_create+0x120>      
                                                                      

08000890 <rtems_print_buffer>: void rtems_print_buffer( const unsigned char *buffer, int length ) {
 8000890:	37 9c ff 50 	addi sp,sp,-176                                
 8000894:	5b 8b 00 38 	sw (sp+56),r11                                 
 8000898:	5b 8c 00 34 	sw (sp+52),r12                                 
 800089c:	5b 8d 00 30 	sw (sp+48),r13                                 
 80008a0:	5b 8e 00 2c 	sw (sp+44),r14                                 
 80008a4:	5b 8f 00 28 	sw (sp+40),r15                                 
 80008a8:	5b 90 00 24 	sw (sp+36),r16                                 
 80008ac:	5b 91 00 20 	sw (sp+32),r17                                 
 80008b0:	5b 92 00 1c 	sw (sp+28),r18                                 
 80008b4:	5b 93 00 18 	sw (sp+24),r19                                 
 80008b8:	5b 94 00 14 	sw (sp+20),r20                                 
 80008bc:	5b 95 00 10 	sw (sp+16),r21                                 
 80008c0:	5b 96 00 0c 	sw (sp+12),r22                                 
 80008c4:	5b 97 00 08 	sw (sp+8),r23                                  
 80008c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80008cc:	b8 40 a8 00 	mv r21,r2                                      
 80008d0:	b8 20 b0 00 	mv r22,r1                                      
                                                                      
  int i, mod, max;                                                    
                                                                      
  if ( !length ) return;                                              
 80008d4:	44 40 00 41 	be r2,r0,80009d8 <rtems_print_buffer+0x148>    
                                                                      
  mod = length % 16;                                                  
 80008d8:	b8 40 08 00 	mv r1,r2                                       
 80008dc:	34 02 00 1f 	mvi r2,31                                      
 80008e0:	f8 00 6e 49 	calli 801c204 <__ashrsi3>                      
 80008e4:	9a a1 98 00 	xor r19,r21,r1                                 
 80008e8:	ca 61 98 00 	sub r19,r19,r1                                 
 80008ec:	22 73 00 0f 	andi r19,r19,0xf                               
 80008f0:	9a 61 98 00 	xor r19,r19,r1                                 
 80008f4:	ca 61 98 00 	sub r19,r19,r1                                 
                                                                      
  max = length - mod;                                                 
 80008f8:	ca b3 a8 00 	sub r21,r21,r19                                
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 80008fc:	4c 15 00 36 	bge r0,r21,80009d4 <rtems_print_buffer+0x144>  
 8000900:	78 0f 08 01 	mvhi r15,0x801                                 
 8000904:	78 0d 08 01 	mvhi r13,0x801                                 
 8000908:	78 0e 08 01 	mvhi r14,0x801                                 
 800090c:	34 12 00 00 	mvi r18,0                                      
 8000910:	37 8b 00 3c 	addi r11,sp,60                                 
 8000914:	39 ef d4 54 	ori r15,r15,0xd454                             
 8000918:	39 ad f2 70 	ori r13,r13,0xf270                             
 800091c:	39 ce d4 5c 	ori r14,r14,0xd45c                             
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000920:	34 11 00 10 	mvi r17,16                                     
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000924:	34 14 00 7c 	mvi r20,124                                    
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000928:	34 17 00 0a 	mvi r23,10                                     
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 800092c:	b6 d2 80 00 	add r16,r22,r18                                
{                                                                     
                                                                      
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
 8000930:	33 80 00 3c 	sb (sp+60),r0                                  
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000934:	34 0c 00 00 	mvi r12,0                                      
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000938:	b6 0c 10 00 	add r2,r16,r12                                 
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 800093c:	40 44 00 00 	lbu r4,(r2+0)                                  
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000940:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 8000944:	b9 60 08 00 	mv r1,r11                                      
 8000948:	b9 e0 10 00 	mv r2,r15                                      
 800094c:	b9 60 18 00 	mv r3,r11                                      
 8000950:	f8 00 34 69 	calli 800daf4 <sprintf>                        
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000954:	5d 91 ff f9 	bne r12,r17,8000938 <rtems_print_buffer+0xa8>  
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000958:	b9 60 08 00 	mv r1,r11                                      
 800095c:	f8 00 35 91 	calli 800dfa0 <strlen>                         
 8000960:	b5 61 10 00 	add r2,r11,r1                                  
 8000964:	30 54 00 00 	sb (r2+0),r20                                  
 8000968:	30 40 00 01 	sb (r2+1),r0                                   
  for( i=0 ; i<length ; i++ )                                         
 800096c:	34 0c 00 00 	mvi r12,0                                      
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000970:	b6 0c 10 00 	add r2,r16,r12                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000974:	40 45 00 00 	lbu r5,(r2+0)                                  
 8000978:	29 a3 00 00 	lw r3,(r13+0)                                  
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 800097c:	b9 60 08 00 	mv r1,r11                                      
 8000980:	b9 c0 10 00 	mv r2,r14                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000984:	b4 65 18 00 	add r3,r3,r5                                   
 8000988:	40 66 00 01 	lbu r6,(r3+1)                                  
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 800098c:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000990:	b9 60 18 00 	mv r3,r11                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000994:	20 c6 00 97 	andi r6,r6,0x97                                
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000998:	34 04 00 2e 	mvi r4,46                                      
 800099c:	44 c0 00 02 	be r6,r0,80009a4 <rtems_print_buffer+0x114>    
 80009a0:	b8 a0 20 00 	mv r4,r5                                       
 80009a4:	f8 00 34 54 	calli 800daf4 <sprintf>                        
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 80009a8:	5d 91 ff f2 	bne r12,r17,8000970 <rtems_print_buffer+0xe0>  
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 80009ac:	b9 60 08 00 	mv r1,r11                                      
 80009b0:	f8 00 35 7c 	calli 800dfa0 <strlen>                         
 80009b4:	b5 61 10 00 	add r2,r11,r1                                  
                                                                      
  mod = length % 16;                                                  
                                                                      
  max = length - mod;                                                 
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 80009b8:	36 52 00 10 	addi r18,r18,16                                
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 80009bc:	30 54 00 00 	sb (r2+0),r20                                  
 80009c0:	30 57 00 01 	sb (r2+1),r23                                  
 80009c4:	30 40 00 02 	sb (r2+2),r0                                   
                                                                      
  printk( line_buffer );                                              
 80009c8:	b9 60 08 00 	mv r1,r11                                      
 80009cc:	f8 00 06 96 	calli 8002424 <printk>                         
                                                                      
  mod = length % 16;                                                  
                                                                      
  max = length - mod;                                                 
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
 80009d0:	4a b2 ff d7 	bg r21,r18,800092c <rtems_print_buffer+0x9c>   
    Dump_Line( &buffer[ i ], 16 );                                    
                                                                      
  if ( mod )                                                          
 80009d4:	5e 60 00 11 	bne r19,r0,8000a18 <rtems_print_buffer+0x188>  
    Dump_Line( &buffer[ max ], mod );                                 
}                                                                     
 80009d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80009dc:	2b 8b 00 38 	lw r11,(sp+56)                                 
 80009e0:	2b 8c 00 34 	lw r12,(sp+52)                                 
 80009e4:	2b 8d 00 30 	lw r13,(sp+48)                                 
 80009e8:	2b 8e 00 2c 	lw r14,(sp+44)                                 
 80009ec:	2b 8f 00 28 	lw r15,(sp+40)                                 
 80009f0:	2b 90 00 24 	lw r16,(sp+36)                                 
 80009f4:	2b 91 00 20 	lw r17,(sp+32)                                 
 80009f8:	2b 92 00 1c 	lw r18,(sp+28)                                 
 80009fc:	2b 93 00 18 	lw r19,(sp+24)                                 
 8000a00:	2b 94 00 14 	lw r20,(sp+20)                                 
 8000a04:	2b 95 00 10 	lw r21,(sp+16)                                 
 8000a08:	2b 96 00 0c 	lw r22,(sp+12)                                 
 8000a0c:	2b 97 00 08 	lw r23,(sp+8)                                  
 8000a10:	37 9c 00 b0 	addi sp,sp,176                                 
 8000a14:	c3 a0 00 00 	ret                                            
{                                                                     
                                                                      
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
 8000a18:	33 80 00 3c 	sb (sp+60),r0                                  
                                                                      
  for ( i=0 ; i<max ; i+=16 )                                         
    Dump_Line( &buffer[ i ], 16 );                                    
                                                                      
  if ( mod )                                                          
    Dump_Line( &buffer[ max ], mod );                                 
 8000a1c:	b6 d5 a8 00 	add r21,r22,r21                                
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000a20:	4a 60 00 2a 	bg r19,r0,8000ac8 <rtems_print_buffer+0x238>   
 8000a24:	34 0c 00 00 	mvi r12,0                                      
 8000a28:	37 8b 00 3c 	addi r11,sp,60                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
 8000a2c:	34 0d 00 20 	mvi r13,32                                     
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000a30:	34 0e 00 0f 	mvi r14,15                                     
    strcat( line_buffer, "   " );                                     
 8000a34:	b9 60 08 00 	mv r1,r11                                      
 8000a38:	f8 00 35 5a 	calli 800dfa0 <strlen>                         
 8000a3c:	b5 61 08 00 	add r1,r11,r1                                  
 8000a40:	30 2d 00 00 	sb (r1+0),r13                                  
 8000a44:	30 2d 00 01 	sb (r1+1),r13                                  
 8000a48:	30 2d 00 02 	sb (r1+2),r13                                  
 8000a4c:	30 20 00 03 	sb (r1+3),r0                                   
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000a50:	35 8c 00 01 	addi r12,r12,1                                 
 8000a54:	4d cc ff f8 	bge r14,r12,8000a34 <rtems_print_buffer+0x1a4> 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000a58:	b9 60 08 00 	mv r1,r11                                      
 8000a5c:	f8 00 35 51 	calli 800dfa0 <strlen>                         
 8000a60:	b5 61 08 00 	add r1,r11,r1                                  
 8000a64:	34 02 00 7c 	mvi r2,124                                     
 8000a68:	30 22 00 00 	sb (r1+0),r2                                   
 8000a6c:	30 20 00 01 	sb (r1+1),r0                                   
  for( i=0 ; i<length ; i++ )                                         
 8000a70:	4a 60 00 2b 	bg r19,r0,8000b1c <rtems_print_buffer+0x28c>   
 8000a74:	34 13 00 00 	mvi r19,0                                      
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, " " );                                       
 8000a78:	34 0d 00 20 	mvi r13,32                                     
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000a7c:	34 0c 00 0f 	mvi r12,15                                     
    strcat( line_buffer, " " );                                       
 8000a80:	b9 60 08 00 	mv r1,r11                                      
 8000a84:	f8 00 35 47 	calli 800dfa0 <strlen>                         
 8000a88:	b5 61 08 00 	add r1,r11,r1                                  
 8000a8c:	30 2d 00 00 	sb (r1+0),r13                                  
 8000a90:	30 20 00 01 	sb (r1+1),r0                                   
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000a94:	36 73 00 01 	addi r19,r19,1                                 
 8000a98:	4d 93 ff fa 	bge r12,r19,8000a80 <rtems_print_buffer+0x1f0> 
    strcat( line_buffer, " " );                                       
                                                                      
  strcat( line_buffer, "|\n" );                                       
 8000a9c:	b9 60 08 00 	mv r1,r11                                      
 8000aa0:	f8 00 35 40 	calli 800dfa0 <strlen>                         
 8000aa4:	b5 61 08 00 	add r1,r11,r1                                  
 8000aa8:	34 02 00 7c 	mvi r2,124                                     
 8000aac:	30 22 00 00 	sb (r1+0),r2                                   
 8000ab0:	34 02 00 0a 	mvi r2,10                                      
 8000ab4:	30 22 00 01 	sb (r1+1),r2                                   
 8000ab8:	30 20 00 02 	sb (r1+2),r0                                   
                                                                      
  printk( line_buffer );                                              
 8000abc:	b9 60 08 00 	mv r1,r11                                      
 8000ac0:	f8 00 06 59 	calli 8002424 <printk>                         
 8000ac4:	e3 ff ff c5 	bi 80009d8 <rtems_print_buffer+0x148>          
 8000ac8:	78 0f 08 01 	mvhi r15,0x801                                 
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000acc:	34 0c 00 00 	mvi r12,0                                      
 8000ad0:	37 8b 00 3c 	addi r11,sp,60                                 
 8000ad4:	39 ef d4 54 	ori r15,r15,0xd454                             
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000ad8:	b6 ac 08 00 	add r1,r21,r12                                 
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 8000adc:	40 24 00 00 	lbu r4,(r1+0)                                  
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000ae0:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
 8000ae4:	b9 60 08 00 	mv r1,r11                                      
 8000ae8:	b9 e0 10 00 	mv r2,r15                                      
 8000aec:	b9 60 18 00 	mv r3,r11                                      
 8000af0:	f8 00 34 01 	calli 800daf4 <sprintf>                        
  int  i;                                                             
  char line_buffer[120];                                              
                                                                      
  line_buffer[0] = '\0';                                              
                                                                      
  for( i=0 ; i<length ; i++ )                                         
 8000af4:	4a 6c ff f9 	bg r19,r12,8000ad8 <rtems_print_buffer+0x248>  
    sprintf( line_buffer, "%s%02x ", line_buffer, buffer[ i ] );      
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000af8:	34 01 00 0f 	mvi r1,15                                      
 8000afc:	ba 60 60 00 	mv r12,r19                                     
 8000b00:	4c 33 ff cb 	bge r1,r19,8000a2c <rtems_print_buffer+0x19c>  <== ALWAYS TAKEN
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
 8000b04:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8000b08:	f8 00 35 26 	calli 800dfa0 <strlen>                         <== NOT EXECUTED
 8000b0c:	b5 61 08 00 	add r1,r11,r1                                  <== NOT EXECUTED
 8000b10:	34 02 00 7c 	mvi r2,124                                     <== NOT EXECUTED
 8000b14:	30 22 00 00 	sb (r1+0),r2                                   <== NOT EXECUTED
 8000b18:	30 20 00 01 	sb (r1+1),r0                                   <== NOT EXECUTED
 8000b1c:	78 0d 08 01 	mvhi r13,0x801                                 
 8000b20:	78 0e 08 01 	mvhi r14,0x801                                 
  for( i=0 ; i<length ; i++ )                                         
 8000b24:	34 0c 00 00 	mvi r12,0                                      
 8000b28:	39 ad f2 70 	ori r13,r13,0xf270                             
 8000b2c:	39 ce d4 5c 	ori r14,r14,0xd45c                             
static inline void Dump_Line(                                         
  const unsigned char *buffer,                                        
  int                  length                                         
);                                                                    
                                                                      
void rtems_print_buffer(                                              
 8000b30:	b6 ac 08 00 	add r1,r21,r12                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000b34:	40 25 00 00 	lbu r5,(r1+0)                                  
 8000b38:	29 a3 00 00 	lw r3,(r13+0)                                  
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000b3c:	b9 60 08 00 	mv r1,r11                                      
 8000b40:	b9 c0 10 00 	mv r2,r14                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000b44:	b4 65 18 00 	add r3,r3,r5                                   
 8000b48:	40 66 00 01 	lbu r6,(r3+1)                                  
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 8000b4c:	35 8c 00 01 	addi r12,r12,1                                 
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000b50:	b9 60 18 00 	mv r3,r11                                      
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
 8000b54:	20 c6 00 97 	andi r6,r6,0x97                                
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
    sprintf( line_buffer, "%s%c", line_buffer,                        
 8000b58:	34 04 00 2e 	mvi r4,46                                      
 8000b5c:	44 c0 00 02 	be r6,r0,8000b64 <rtems_print_buffer+0x2d4>    
 8000b60:	b8 a0 20 00 	mv r4,r5                                       
 8000b64:	f8 00 33 e4 	calli 800daf4 <sprintf>                        
                                                                      
  for( ; i<16 ; i++ )                                                 
    strcat( line_buffer, "   " );                                     
                                                                      
  strcat( line_buffer, "|" );                                         
  for( i=0 ; i<length ; i++ )                                         
 8000b68:	4a 6c ff f2 	bg r19,r12,8000b30 <rtems_print_buffer+0x2a0>  
    sprintf( line_buffer, "%s%c", line_buffer,                        
             isprint( buffer[ i ] ) ? buffer[ i ] : '.' );            
                                                                      
  for( ; i<16 ; i++ )                                                 
 8000b6c:	34 01 00 0f 	mvi r1,15                                      
 8000b70:	4c 33 ff c2 	bge r1,r19,8000a78 <rtems_print_buffer+0x1e8>  <== ALWAYS TAKEN
 8000b74:	e3 ff ff ca 	bi 8000a9c <rtems_print_buffer+0x20c>          <== NOT EXECUTED
                                                                      

080389dc <rtems_rate_monotonic_period>: rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) {
 80389dc:	37 9c ff e4 	addi sp,sp,-28                                 
 80389e0:	5b 8b 00 18 	sw (sp+24),r11                                 
 80389e4:	5b 8c 00 14 	sw (sp+20),r12                                 
 80389e8:	5b 8d 00 10 	sw (sp+16),r13                                 
 80389ec:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80389f0:	5b 8f 00 08 	sw (sp+8),r15                                  
 80389f4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80389f8:	78 03 08 06 	mvhi r3,0x806                                  
 80389fc:	b8 20 68 00 	mv r13,r1                                      
 8038a00:	b8 60 08 00 	mv r1,r3                                       
 8038a04:	b8 40 70 00 	mv r14,r2                                      
 8038a08:	38 21 fb 30 	ori r1,r1,0xfb30                               
 8038a0c:	b9 a0 10 00 	mv r2,r13                                      
 8038a10:	37 83 00 1c 	addi r3,sp,28                                  
 8038a14:	fb ff 31 eb 	calli 80051c0 <_Objects_Get>                   
 8038a18:	b8 20 58 00 	mv r11,r1                                      
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
 8038a1c:	2b 81 00 1c 	lw r1,(sp+28)                                  
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8038a20:	34 0c 00 04 	mvi r12,4                                      
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
 8038a24:	44 20 00 0a 	be r1,r0,8038a4c <rtems_rate_monotonic_period+0x70>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8038a28:	b9 80 08 00 	mv r1,r12                                      
 8038a2c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8038a30:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8038a34:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8038a38:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8038a3c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8038a40:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8038a44:	37 9c 00 1c 	addi sp,sp,28                                  
 8038a48:	c3 a0 00 00 	ret                                            
                                                                      
RTEMS_INLINE_ROUTINE bool _Thread_Is_executing (                      
  const Thread_Control *the_thread                                    
)                                                                     
{                                                                     
  return ( the_thread == _Thread_Executing );                         
 8038a4c:	78 0c 08 06 	mvhi r12,0x806                                 
 8038a50:	39 8c f5 00 	ori r12,r12,0xf500                             
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
 8038a54:	29 62 00 40 	lw r2,(r11+64)                                 
 8038a58:	29 81 00 10 	lw r1,(r12+16)                                 
 8038a5c:	44 41 00 04 	be r2,r1,8038a6c <rtems_rate_monotonic_period+0x90>
        _Thread_Enable_dispatch();                                    
 8038a60:	fb ff 35 a6 	calli 80060f8 <_Thread_Enable_dispatch>        
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
 8038a64:	34 0c 00 17 	mvi r12,23                                     
 8038a68:	e3 ff ff f0 	bi 8038a28 <rtems_rate_monotonic_period+0x4c>  
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
 8038a6c:	5d c0 00 0d 	bne r14,r0,8038aa0 <rtems_rate_monotonic_period+0xc4>
        switch ( the_period->state ) {                                
 8038a70:	29 61 00 38 	lw r1,(r11+56)                                 
 8038a74:	34 02 00 04 	mvi r2,4                                       
 8038a78:	34 0c 00 00 	mvi r12,0                                      
 8038a7c:	54 22 00 07 	bgu r1,r2,8038a98 <rtems_rate_monotonic_period+0xbc><== NEVER TAKEN
 8038a80:	78 02 08 06 	mvhi r2,0x806                                  
 8038a84:	b4 21 08 00 	add r1,r1,r1                                   
 8038a88:	38 42 80 b0 	ori r2,r2,0x80b0                               
 8038a8c:	b4 21 08 00 	add r1,r1,r1                                   
 8038a90:	b4 41 08 00 	add r1,r2,r1                                   
 8038a94:	28 2c 00 00 	lw r12,(r1+0)                                  
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 8038a98:	fb ff 35 98 	calli 80060f8 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 8038a9c:	e3 ff ff e3 	bi 8038a28 <rtems_rate_monotonic_period+0x4c>  
        }                                                             
        _Thread_Enable_dispatch();                                    
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
 8038aa0:	90 00 78 00 	rcsr r15,IE                                    
 8038aa4:	34 01 ff fe 	mvi r1,-2                                      
 8038aa8:	a1 e1 08 00 	and r1,r15,r1                                  
 8038aac:	d0 01 00 00 	wcsr IE,r1                                     
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
 8038ab0:	29 61 00 38 	lw r1,(r11+56)                                 
 8038ab4:	44 20 00 19 	be r1,r0,8038b18 <rtems_rate_monotonic_period+0x13c>
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
 8038ab8:	34 02 00 02 	mvi r2,2                                       
 8038abc:	44 22 00 2b 	be r1,r2,8038b68 <rtems_rate_monotonic_period+0x18c>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8038ac0:	34 0c 00 04 	mvi r12,4                                      
                                                                      
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
 8038ac4:	5c 2c ff d9 	bne r1,r12,8038a28 <rtems_rate_monotonic_period+0x4c><== NEVER TAKEN
        /*                                                            
         *  Update statistics from the concluding period              
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 8038ac8:	b9 60 08 00 	mv r1,r11                                      
 8038acc:	fb ff ff 49 	calli 80387f0 <_Rate_monotonic_Update_statistics>
                                                                      
        _ISR_Enable( level );                                         
 8038ad0:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8038ad4:	34 03 00 02 	mvi r3,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038ad8:	78 01 08 06 	mvhi r1,0x806                                  
 8038adc:	35 62 00 10 	addi r2,r11,16                                 
 8038ae0:	59 63 00 38 	sw (r11+56),r3                                 
 8038ae4:	38 21 f0 f8 	ori r1,r1,0xf0f8                               
        the_period->next_length = length;                             
 8038ae8:	59 6e 00 3c 	sw (r11+60),r14                                
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8038aec:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038af0:	fb ff 39 33 	calli 8006fbc <_Watchdog_Insert>               
 8038af4:	78 03 08 06 	mvhi r3,0x806                                  
 8038af8:	38 63 b0 18 	ori r3,r3,0xb018                               
 8038afc:	29 61 00 40 	lw r1,(r11+64)                                 
 8038b00:	29 62 00 3c 	lw r2,(r11+60)                                 
 8038b04:	28 63 00 34 	lw r3,(r3+52)                                  
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
        return RTEMS_TIMEOUT;                                         
 8038b08:	34 0c 00 06 	mvi r12,6                                      
 8038b0c:	d8 60 00 00 	call r3                                        
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
 8038b10:	fb ff 35 7a 	calli 80060f8 <_Thread_Enable_dispatch>        
        return RTEMS_TIMEOUT;                                         
 8038b14:	e3 ff ff c5 	bi 8038a28 <rtems_rate_monotonic_period+0x4c>  
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
        _ISR_Enable( level );                                         
 8038b18:	d0 0f 00 00 	wcsr IE,r15                                    
        the_period->next_length = length;                             
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
 8038b1c:	b9 60 08 00 	mv r1,r11                                      
                                                                      
      _ISR_Disable( level );                                          
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
        _ISR_Enable( level );                                         
                                                                      
        the_period->next_length = length;                             
 8038b20:	59 6e 00 3c 	sw (r11+60),r14                                
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
 8038b24:	fb ff ff 80 	calli 8038924 <_Rate_monotonic_Initiate_statistics>
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8038b28:	78 03 08 03 	mvhi r3,0x803                                  
 8038b2c:	38 63 8b dc 	ori r3,r3,0x8bdc                               
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
 8038b30:	34 04 00 02 	mvi r4,2                                       
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038b34:	78 01 08 06 	mvhi r1,0x806                                  
 8038b38:	38 21 f0 f8 	ori r1,r1,0xf0f8                               
 8038b3c:	35 62 00 10 	addi r2,r11,16                                 
 8038b40:	59 64 00 38 	sw (r11+56),r4                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8038b44:	59 60 00 18 	sw (r11+24),r0                                 
  the_watchdog->routine   = routine;                                  
 8038b48:	59 63 00 2c 	sw (r11+44),r3                                 
  the_watchdog->id        = id;                                       
 8038b4c:	59 6d 00 30 	sw (r11+48),r13                                
  the_watchdog->user_data = user_data;                                
 8038b50:	59 60 00 34 	sw (r11+52),r0                                 
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8038b54:	59 6e 00 1c 	sw (r11+28),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8038b58:	fb ff 39 19 	calli 8006fbc <_Watchdog_Insert>               
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
 8038b5c:	34 0c 00 00 	mvi r12,0                                      
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
 8038b60:	fb ff 35 66 	calli 80060f8 <_Thread_Enable_dispatch>        
 8038b64:	e3 ff ff b1 	bi 8038a28 <rtems_rate_monotonic_period+0x4c>  
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
        /*                                                            
         *  Update statistics from the concluding period.             
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
 8038b68:	b9 60 08 00 	mv r1,r11                                      
 8038b6c:	fb ff ff 21 	calli 80387f0 <_Rate_monotonic_Update_statistics>
        /*                                                            
         *  This tells the _Rate_monotonic_Timeout that this task is  
         *  in the process of blocking on the period and that we      
         *  may be changing the length of the next period.            
         */                                                           
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
 8038b70:	34 01 00 01 	mvi r1,1                                       
 8038b74:	59 61 00 38 	sw (r11+56),r1                                 
        the_period->next_length = length;                             
 8038b78:	59 6e 00 3c 	sw (r11+60),r14                                
                                                                      
        _ISR_Enable( level );                                         
 8038b7c:	d0 0f 00 00 	wcsr IE,r15                                    
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 8038b80:	29 83 00 10 	lw r3,(r12+16)                                 
 8038b84:	29 64 00 08 	lw r4,(r11+8)                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 8038b88:	34 02 40 00 	mvi r2,16384                                   
 8038b8c:	b8 60 08 00 	mv r1,r3                                       
        the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;         
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
 8038b90:	58 64 00 20 	sw (r3+32),r4                                  
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 8038b94:	fb ff 37 f2 	calli 8006b5c <_Thread_Set_state>              
                                                                      
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
 8038b98:	90 00 08 00 	rcsr r1,IE                                     
 8038b9c:	34 02 ff fe 	mvi r2,-2                                      
 8038ba0:	a0 22 10 00 	and r2,r1,r2                                   
 8038ba4:	d0 02 00 00 	wcsr IE,r2                                     
          local_state = the_period->state;                            
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 8038ba8:	34 03 00 02 	mvi r3,2                                       
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
 8038bac:	29 62 00 38 	lw r2,(r11+56)                                 
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
 8038bb0:	59 63 00 38 	sw (r11+56),r3                                 
        _ISR_Enable( level );                                         
 8038bb4:	d0 01 00 00 	wcsr IE,r1                                     
                                                                      
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
 8038bb8:	34 01 00 03 	mvi r1,3                                       
 8038bbc:	44 41 00 04 	be r2,r1,8038bcc <rtems_rate_monotonic_period+0x1f0><== NEVER TAKEN
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
                                                                      
        _Thread_Enable_dispatch();                                    
 8038bc0:	fb ff 35 4e 	calli 80060f8 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 8038bc4:	34 0c 00 00 	mvi r12,0                                      
 8038bc8:	e3 ff ff 98 	bi 8038a28 <rtems_rate_monotonic_period+0x4c>  
        /*                                                            
         *  If it did, then we want to unblock ourself and continue as
         *  if nothing happen.  The period was reset in the timeout routine.
         */                                                           
        if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )   
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
 8038bcc:	29 81 00 10 	lw r1,(r12+16)                                 <== NOT EXECUTED
 8038bd0:	34 02 40 00 	mvi r2,16384                                   <== NOT EXECUTED
 8038bd4:	fb ff 54 55 	calli 800dd28 <_Thread_Clear_state>            <== NOT EXECUTED
 8038bd8:	e3 ff ff fa 	bi 8038bc0 <rtems_rate_monotonic_period+0x1e4> <== NOT EXECUTED
                                                                      

08028e84 <rtems_rate_monotonic_report_statistics_with_plugin>: void rtems_rate_monotonic_report_statistics_with_plugin( void *context, rtems_printk_plugin_t print ) {
 8028e84:	37 9c ff 5c 	addi sp,sp,-164                                
 8028e88:	5b 8b 00 44 	sw (sp+68),r11                                 
 8028e8c:	5b 8c 00 40 	sw (sp+64),r12                                 
 8028e90:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8028e94:	5b 8e 00 38 	sw (sp+56),r14                                 
 8028e98:	5b 8f 00 34 	sw (sp+52),r15                                 
 8028e9c:	5b 90 00 30 	sw (sp+48),r16                                 
 8028ea0:	5b 91 00 2c 	sw (sp+44),r17                                 
 8028ea4:	5b 92 00 28 	sw (sp+40),r18                                 
 8028ea8:	5b 93 00 24 	sw (sp+36),r19                                 
 8028eac:	5b 94 00 20 	sw (sp+32),r20                                 
 8028eb0:	5b 95 00 1c 	sw (sp+28),r21                                 
 8028eb4:	5b 96 00 18 	sw (sp+24),r22                                 
 8028eb8:	5b 97 00 14 	sw (sp+20),r23                                 
 8028ebc:	5b 98 00 10 	sw (sp+16),r24                                 
 8028ec0:	5b 99 00 0c 	sw (sp+12),r25                                 
 8028ec4:	5b 9b 00 08 	sw (sp+8),fp                                   
 8028ec8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8028ecc:	b8 40 68 00 	mv r13,r2                                      
 8028ed0:	b8 20 78 00 	mv r15,r1                                      
  rtems_id                               id;                          
  rtems_rate_monotonic_period_statistics the_stats;                   
  rtems_rate_monotonic_period_status     the_status;                  
  char                                   name[5];                     
                                                                      
  if ( !print )                                                       
 8028ed4:	44 40 00 2f 	be r2,r0,8028f90 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== NEVER TAKEN
    return;                                                           
                                                                      
  (*print)( context, "Period information by period\n" );              
 8028ed8:	78 02 08 06 	mvhi r2,0x806                                  
 8028edc:	38 42 4e c8 	ori r2,r2,0x4ec8                               
 8028ee0:	d9 a0 00 00 	call r13                                       
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    (*print)( context, "--- CPU times are in seconds ---\n" );        
 8028ee4:	78 02 08 06 	mvhi r2,0x806                                  
 8028ee8:	38 42 4e e8 	ori r2,r2,0x4ee8                               
 8028eec:	b9 e0 08 00 	mv r1,r15                                      
 8028ef0:	d9 a0 00 00 	call r13                                       
    (*print)( context, "--- Wall times are in seconds ---\n" );       
 8028ef4:	78 02 08 06 	mvhi r2,0x806                                  
 8028ef8:	38 42 4f 0c 	ori r2,r2,0x4f0c                               
 8028efc:	b9 e0 08 00 	mv r1,r15                                      
 8028f00:	d9 a0 00 00 	call r13                                       
  Be sure to test the various cases.                                  
  (*print)( context,"\                                                
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");                                                                 
*/                                                                    
  (*print)( context, "   ID     OWNER COUNT MISSED     "              
 8028f04:	78 02 08 06 	mvhi r2,0x806                                  
 8028f08:	38 42 4f 30 	ori r2,r2,0x4f30                               
 8028f0c:	b9 e0 08 00 	mv r1,r15                                      
 8028f10:	d9 a0 00 00 	call r13                                       
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 8028f14:	78 02 08 06 	mvhi r2,0x806                                  
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8028f18:	78 0c 08 06 	mvhi r12,0x806                                 
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 8028f1c:	b9 e0 08 00 	mv r1,r15                                      
 8028f20:	38 42 4f 7c 	ori r2,r2,0x4f7c                               
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8028f24:	39 8c fb 30 	ori r12,r12,0xfb30                             
       #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                     
          "          "                                                
       #endif                                                         
          "   WALL TIME\n"                                            
  );                                                                  
  (*print)( context, "                               "                
 8028f28:	d9 a0 00 00 	call r13                                       
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8028f2c:	29 81 00 0c 	lw r1,(r12+12)                                 
 8028f30:	29 8b 00 08 	lw r11,(r12+8)                                 
 8028f34:	55 61 00 17 	bgu r11,r1,8028f90 <rtems_rate_monotonic_report_statistics_with_plugin+0x10c><== NEVER TAKEN
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 8028f38:	78 12 08 06 	mvhi r18,0x806                                 
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
      (*print)( context,                                              
 8028f3c:	78 15 08 06 	mvhi r21,0x806                                 
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
 8028f40:	78 14 08 06 	mvhi r20,0x806                                 
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 8028f44:	78 11 08 06 	mvhi r17,0x806                                 
 8028f48:	37 90 00 48 	addi r16,sp,72                                 
    #if defined(RTEMS_DEBUG)                                          
      status = rtems_rate_monotonic_get_status( id, &the_status );    
      if ( status != RTEMS_SUCCESSFUL )                               
        continue;                                                     
    #else                                                             
      (void) rtems_rate_monotonic_get_status( id, &the_status );      
 8028f4c:	37 98 00 80 	addi r24,sp,128                                
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 8028f50:	37 93 00 a0 	addi r19,sp,160                                
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 8028f54:	3a 52 4f c8 	ori r18,r18,0x4fc8                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
 8028f58:	37 97 00 60 	addi r23,sp,96                                 
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 8028f5c:	37 96 00 98 	addi r22,sp,152                                
      (*print)( context,                                              
 8028f60:	3a b5 4f e0 	ori r21,r21,0x4fe0                             
    {                                                                 
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      struct timespec  wall_average;                                  
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
 8028f64:	37 9b 00 78 	addi fp,sp,120                                 
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
      (*print)( context,                                              
 8028f68:	3a 94 50 00 	ori r20,r20,0x5000                             
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 8028f6c:	3a 31 69 68 	ori r17,r17,0x6968                             
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
    status = rtems_rate_monotonic_get_statistics( id, &the_stats );   
 8028f70:	b9 60 08 00 	mv r1,r11                                      
 8028f74:	ba 00 10 00 	mv r2,r16                                      
 8028f78:	f8 00 3c f2 	calli 8038340 <rtems_rate_monotonic_get_statistics>
 8028f7c:	b8 20 70 00 	mv r14,r1                                      
    if ( status != RTEMS_SUCCESSFUL )                                 
 8028f80:	44 20 00 17 	be r1,r0,8028fdc <rtems_rate_monotonic_report_statistics_with_plugin+0x158>
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8028f84:	29 85 00 0c 	lw r5,(r12+12)                                 
        id <= _Rate_monotonic_Information.maximum_id ;                
        id++ ) {                                                      
 8028f88:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
  /*                                                                  
   * Cycle through all possible ids and try to report on each one.  If it
   * is a period that is inactive, we just get an error back.  No big deal.
   */                                                                 
  for ( id=_Rate_monotonic_Information.minimum_id ;                   
 8028f8c:	50 ab ff f9 	bgeu r5,r11,8028f70 <rtems_rate_monotonic_report_statistics_with_plugin+0xec><== NEVER TAKEN
        the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
      );                                                              
    #endif                                                            
    }                                                                 
  }                                                                   
}                                                                     
 8028f90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8028f94:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8028f98:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8028f9c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8028fa0:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8028fa4:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8028fa8:	2b 90 00 30 	lw r16,(sp+48)                                 
 8028fac:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8028fb0:	2b 92 00 28 	lw r18,(sp+40)                                 
 8028fb4:	2b 93 00 24 	lw r19,(sp+36)                                 
 8028fb8:	2b 94 00 20 	lw r20,(sp+32)                                 
 8028fbc:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8028fc0:	2b 96 00 18 	lw r22,(sp+24)                                 
 8028fc4:	2b 97 00 14 	lw r23,(sp+20)                                 
 8028fc8:	2b 98 00 10 	lw r24,(sp+16)                                 
 8028fcc:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8028fd0:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8028fd4:	37 9c 00 a4 	addi sp,sp,164                                 
 8028fd8:	c3 a0 00 00 	ret                                            
    #if defined(RTEMS_DEBUG)                                          
      status = rtems_rate_monotonic_get_status( id, &the_status );    
      if ( status != RTEMS_SUCCESSFUL )                               
        continue;                                                     
    #else                                                             
      (void) rtems_rate_monotonic_get_status( id, &the_status );      
 8028fdc:	bb 00 10 00 	mv r2,r24                                      
 8028fe0:	b9 60 08 00 	mv r1,r11                                      
 8028fe4:	f8 00 3d 69 	calli 8038588 <rtems_rate_monotonic_get_status>
    #endif                                                            
                                                                      
    rtems_object_get_name( the_status.owner, sizeof(name), name );    
 8028fe8:	2b 81 00 80 	lw r1,(sp+128)                                 
 8028fec:	ba 60 18 00 	mv r3,r19                                      
 8028ff0:	34 02 00 05 	mvi r2,5                                       
 8028ff4:	fb ff 8f c6 	calli 800cf0c <rtems_object_get_name>          
                                                                      
    /*                                                                
     *  Print part of report line that is not dependent on granularity
     */                                                               
    (*print)( context,                                                
 8028ff8:	2b 85 00 48 	lw r5,(sp+72)                                  
 8028ffc:	2b 86 00 4c 	lw r6,(sp+76)                                  
 8029000:	ba 40 10 00 	mv r2,r18                                      
 8029004:	b9 60 18 00 	mv r3,r11                                      
 8029008:	b9 e0 08 00 	mv r1,r15                                      
 802900c:	ba 60 20 00 	mv r4,r19                                      
 8029010:	d9 a0 00 00 	call r13                                       
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 8029014:	2b 85 00 48 	lw r5,(sp+72)                                  
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 8029018:	ba c0 18 00 	mv r3,r22                                      
 802901c:	ba e0 08 00 	mv r1,r23                                      
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
      (*print)( context, "\n" );                                      
 8029020:	ba 20 10 00 	mv r2,r17                                      
    );                                                                
                                                                      
    /*                                                                
     *  If the count is zero, don't print statistics                  
     */                                                               
    if (the_stats.count == 0) {                                       
 8029024:	5c ae 00 04 	bne r5,r14,8029034 <rtems_rate_monotonic_report_statistics_with_plugin+0x1b0>
      (*print)( context, "\n" );                                      
 8029028:	b9 e0 08 00 	mv r1,r15                                      
 802902c:	d9 a0 00 00 	call r13                                       
      continue;                                                       
 8029030:	e3 ff ff d5 	bi 8028f84 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
      struct timespec  cpu_average;                                   
      struct timespec *min_cpu = &the_stats.min_cpu_time;             
      struct timespec *max_cpu = &the_stats.max_cpu_time;             
      struct timespec *total_cpu = &the_stats.total_cpu_time;         
                                                                      
      _Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
 8029034:	b8 a0 10 00 	mv r2,r5                                       
 8029038:	f8 00 04 9f 	calli 802a2b4 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 802903c:	2b 81 00 54 	lw r1,(sp+84)                                  
 8029040:	34 02 03 e8 	mvi r2,1000                                    
 8029044:	f8 00 d0 70 	calli 805d204 <__divsi3>                       
 8029048:	b8 20 c8 00 	mv r25,r1                                      
 802904c:	2b 81 00 5c 	lw r1,(sp+92)                                  
 8029050:	34 02 03 e8 	mvi r2,1000                                    
 8029054:	f8 00 d0 6c 	calli 805d204 <__divsi3>                       
 8029058:	b8 20 70 00 	mv r14,r1                                      
 802905c:	2b 81 00 9c 	lw r1,(sp+156)                                 
 8029060:	34 02 03 e8 	mvi r2,1000                                    
 8029064:	f8 00 d0 68 	calli 805d204 <__divsi3>                       
 8029068:	2b 85 00 58 	lw r5,(sp+88)                                  
 802906c:	2b 87 00 98 	lw r7,(sp+152)                                 
 8029070:	2b 83 00 50 	lw r3,(sp+80)                                  
 8029074:	b8 20 40 00 	mv r8,r1                                       
 8029078:	bb 20 20 00 	mv r4,r25                                      
 802907c:	b9 c0 30 00 	mv r6,r14                                      
 8029080:	ba a0 10 00 	mv r2,r21                                      
 8029084:	b9 e0 08 00 	mv r1,r15                                      
 8029088:	d9 a0 00 00 	call r13                                       
      struct timespec  wall_average;                                  
      struct timespec *min_wall = &the_stats.min_wall_time;           
      struct timespec *max_wall = &the_stats.max_wall_time;           
      struct timespec *total_wall = &the_stats.total_wall_time;       
                                                                      
      _Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
 802908c:	2b 82 00 48 	lw r2,(sp+72)                                  
 8029090:	ba c0 18 00 	mv r3,r22                                      
 8029094:	bb 60 08 00 	mv r1,fp                                       
 8029098:	f8 00 04 87 	calli 802a2b4 <_Timespec_Divide_by_integer>    
      (*print)( context,                                              
 802909c:	2b 81 00 6c 	lw r1,(sp+108)                                 
 80290a0:	34 02 03 e8 	mvi r2,1000                                    
 80290a4:	f8 00 d0 58 	calli 805d204 <__divsi3>                       
 80290a8:	b8 20 c8 00 	mv r25,r1                                      
 80290ac:	2b 81 00 74 	lw r1,(sp+116)                                 
 80290b0:	34 02 03 e8 	mvi r2,1000                                    
 80290b4:	f8 00 d0 54 	calli 805d204 <__divsi3>                       
 80290b8:	b8 20 70 00 	mv r14,r1                                      
 80290bc:	2b 81 00 9c 	lw r1,(sp+156)                                 
 80290c0:	34 02 03 e8 	mvi r2,1000                                    
 80290c4:	f8 00 d0 50 	calli 805d204 <__divsi3>                       
 80290c8:	2b 83 00 68 	lw r3,(sp+104)                                 
 80290cc:	2b 85 00 70 	lw r5,(sp+112)                                 
 80290d0:	2b 87 00 98 	lw r7,(sp+152)                                 
 80290d4:	b8 20 40 00 	mv r8,r1                                       
 80290d8:	ba 80 10 00 	mv r2,r20                                      
 80290dc:	b9 e0 08 00 	mv r1,r15                                      
 80290e0:	bb 20 20 00 	mv r4,r25                                      
 80290e4:	b9 c0 30 00 	mv r6,r14                                      
 80290e8:	d9 a0 00 00 	call r13                                       
 80290ec:	e3 ff ff a6 	bi 8028f84 <rtems_rate_monotonic_report_statistics_with_plugin+0x100>
                                                                      

08029114 <rtems_rate_monotonic_reset_all_statistics>: /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) {
 8029114:	37 9c ff f4 	addi sp,sp,-12                                 
 8029118:	5b 8b 00 0c 	sw (sp+12),r11                                 
 802911c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8029120:	5b 9d 00 04 	sw (sp+4),ra                                   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8029124:	78 01 08 06 	mvhi r1,0x806                                  
 8029128:	38 21 f0 60 	ori r1,r1,0xf060                               
 802912c:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 8029130:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8029134:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 8029138:	78 0c 08 06 	mvhi r12,0x806                                 
 802913c:	39 8c fb 30 	ori r12,r12,0xfb30                             
 8029140:	29 8b 00 08 	lw r11,(r12+8)                                 
 8029144:	29 81 00 0c 	lw r1,(r12+12)                                 
 8029148:	55 61 00 06 	bgu r11,r1,8029160 <rtems_rate_monotonic_reset_all_statistics+0x4c><== NEVER TAKEN
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
 802914c:	b9 60 08 00 	mv r1,r11                                      
 8029150:	f8 00 00 0a 	calli 8029178 <rtems_rate_monotonic_reset_statistics>
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 8029154:	29 81 00 0c 	lw r1,(r12+12)                                 
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
 8029158:	35 6b 00 01 	addi r11,r11,1                                 
                                                                      
    /*                                                                
     * Cycle through all possible ids and try to reset each one.  If it
     * is a period that is inactive, we just get an error back.  No big deal.
     */                                                               
    for ( id=_Rate_monotonic_Information.minimum_id ;                 
 802915c:	50 2b ff fc 	bgeu r1,r11,802914c <rtems_rate_monotonic_reset_all_statistics+0x38>
    }                                                                 
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
 8029160:	fb ff 73 e6 	calli 80060f8 <_Thread_Enable_dispatch>        
}                                                                     
 8029164:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8029168:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 802916c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8029170:	37 9c 00 0c 	addi sp,sp,12                                  
 8029174:	c3 a0 00 00 	ret                                            
                                                                      

08004bf0 <rtems_rbheap_allocate>: return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) {
 8004bf0:	37 9c ff e8 	addi sp,sp,-24                                 
 8004bf4:	5b 8b 00 18 	sw (sp+24),r11                                 
 8004bf8:	5b 8c 00 14 	sw (sp+20),r12                                 
 8004bfc:	5b 8d 00 10 	sw (sp+16),r13                                 
 8004c00:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8004c04:	5b 8f 00 08 	sw (sp+8),r15                                  
 8004c08:	5b 9d 00 04 	sw (sp+4),ra                                   
  void *ptr = NULL;                                                   
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
 8004c0c:	28 2e 00 30 	lw r14,(r1+48)                                 
                                                                      
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
 8004c10:	b8 40 58 00 	mv r11,r2                                      
 8004c14:	b8 20 68 00 	mv r13,r1                                      
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
 8004c18:	b8 40 08 00 	mv r1,r2                                       
 8004c1c:	b9 c0 10 00 	mv r2,r14                                      
 8004c20:	f8 00 3d c1 	calli 8014324 <__umodsi3>                      
                                                                      
  if (excess > 0) {                                                   
 8004c24:	b9 60 60 00 	mv r12,r11                                     
 8004c28:	34 03 00 01 	mvi r3,1                                       
 8004c2c:	44 20 00 04 	be r1,r0,8004c3c <rtems_rbheap_allocate+0x4c>  <== ALWAYS TAKEN
    value += alignment - excess;                                      
 8004c30:	b5 6e 60 00 	add r12,r11,r14                                <== NOT EXECUTED
 8004c34:	c9 81 60 00 	sub r12,r12,r1                                 <== NOT EXECUTED
 8004c38:	f1 8b 18 00 	cmpgeu r3,r12,r11                              <== NOT EXECUTED
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
 8004c3c:	7d 6b 00 00 	cmpnei r11,r11,0                               
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
 8004c40:	34 02 00 00 	mvi r2,0                                       
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
 8004c44:	a0 6b 18 00 	and r3,r3,r11                                  
 8004c48:	5c 60 00 0a 	bne r3,r0,8004c70 <rtems_rbheap_allocate+0x80> 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
 8004c4c:	b8 40 08 00 	mv r1,r2                                       
 8004c50:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004c54:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8004c58:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8004c5c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8004c60:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8004c64:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8004c68:	37 9c 00 18 	addi sp,sp,24                                  
 8004c6c:	c3 a0 00 00 	ret                                            
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004c70:	29 ab 00 00 	lw r11,(r13+0)                                 
  rtems_chain_control *free_chain,                                    
  size_t size                                                         
)                                                                     
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
 8004c74:	35 a1 00 04 	addi r1,r13,4                                  
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
 8004c78:	45 61 ff f5 	be r11,r1,8004c4c <rtems_rbheap_allocate+0x5c> 
    rtems_rbheap_chunk *free_chunk = (rtems_rbheap_chunk *) current;  
                                                                      
    if (free_chunk->size >= size) {                                   
 8004c7c:	29 6e 00 1c 	lw r14,(r11+28)                                
 8004c80:	55 8e 00 1f 	bgu r12,r14,8004cfc <rtems_rbheap_allocate+0x10c>
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
    rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);
                                                                      
    if (free_chunk != NULL) {                                         
 8004c84:	45 60 00 20 	be r11,r0,8004d04 <rtems_rbheap_allocate+0x114><== NEVER TAKEN
      uintptr_t free_size = free_chunk->size;                         
                                                                      
      if (free_size > aligned_size) {                                 
 8004c88:	51 8e 00 15 	bgeu r12,r14,8004cdc <rtems_rbheap_allocate+0xec>
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004c8c:	29 af 00 0c 	lw r15,(r13+12)                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
 8004c90:	35 a1 00 10 	addi r1,r13,16                                 
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 8004c94:	45 e1 00 1e 	be r15,r1,8004d0c <rtems_rbheap_allocate+0x11c><== NEVER TAKEN
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 8004c98:	29 e1 00 00 	lw r1,(r15+0)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8004c9c:	35 a2 00 0c 	addi r2,r13,12                                 
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
 8004ca0:	59 a1 00 0c 	sw (r13+12),r1                                 
  new_first->previous = head;                                         
 8004ca4:	58 22 00 04 	sw (r1+4),r2                                   
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
 8004ca8:	29 61 00 18 	lw r1,(r11+24)                                 
                                                                      
      if (free_size > aligned_size) {                                 
        rtems_rbheap_chunk *new_chunk = get_chunk(control);           
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
 8004cac:	c9 cc 70 00 	sub r14,r14,r12                                
                                                                      
          free_chunk->size = new_free_size;                           
 8004cb0:	59 6e 00 1c 	sw (r11+28),r14                                
          new_chunk->begin = free_chunk->begin + new_free_size;       
 8004cb4:	b5 c1 70 00 	add r14,r14,r1                                 
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
 8004cb8:	35 e2 00 08 	addi r2,r15,8                                  
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
 8004cbc:	59 ee 00 18 	sw (r15+24),r14                                
          new_chunk->size = aligned_size;                             
 8004cc0:	59 ec 00 1c 	sw (r15+28),r12                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 8004cc4:	59 e0 00 04 	sw (r15+4),r0                                  
 8004cc8:	59 e0 00 00 	sw (r15+0),r0                                  
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
 8004ccc:	35 a1 00 18 	addi r1,r13,24                                 
 8004cd0:	f8 00 07 86 	calli 8006ae8 <_RBTree_Insert_unprotected>     
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
          new_chunk->size = aligned_size;                             
          rtems_chain_set_off_chain(&new_chunk->chain_node);          
          insert_into_tree(chunk_tree, new_chunk);                    
          ptr = (void *) new_chunk->begin;                            
 8004cd4:	29 e2 00 18 	lw r2,(r15+24)                                 
 8004cd8:	e3 ff ff dd 	bi 8004c4c <rtems_rbheap_allocate+0x5c>        
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
 8004cdc:	29 63 00 00 	lw r3,(r11+0)                                  
  previous       = the_node->previous;                                
 8004ce0:	29 61 00 04 	lw r1,(r11+4)                                  
        }                                                             
      } else {                                                        
        rtems_chain_extract_unprotected(&free_chunk->chain_node);     
        rtems_chain_set_off_chain(&free_chunk->chain_node);           
        ptr = (void *) free_chunk->begin;                             
 8004ce4:	29 62 00 18 	lw r2,(r11+24)                                 
  next->previous = previous;                                          
 8004ce8:	58 61 00 04 	sw (r3+4),r1                                   
  previous->next = next;                                              
 8004cec:	58 23 00 00 	sw (r1+0),r3                                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 8004cf0:	59 60 00 04 	sw (r11+4),r0                                  
 8004cf4:	59 60 00 00 	sw (r11+0),r0                                  
 8004cf8:	e3 ff ff d5 	bi 8004c4c <rtems_rbheap_allocate+0x5c>        
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004cfc:	29 6b 00 00 	lw r11,(r11+0)                                 
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
 8004d00:	5c 2b ff df 	bne r1,r11,8004c7c <rtems_rbheap_allocate+0x8c><== NEVER TAKEN
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
 8004d04:	34 02 00 00 	mvi r2,0                                       
 8004d08:	e3 ff ff d1 	bi 8004c4c <rtems_rbheap_allocate+0x5c>        
{                                                                     
  rtems_chain_control *chain = &control->spare_descriptor_chain;      
  rtems_chain_node *chunk = rtems_chain_get_unprotected(chain);       
                                                                      
  if (chunk == NULL) {                                                
    (*control->extend_descriptors)(control);                          
 8004d0c:	29 a2 00 34 	lw r2,(r13+52)                                 <== NOT EXECUTED
 8004d10:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004d14:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
                                                                      
  if (chunk != NULL) {                                                
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004d18:	29 a1 00 0c 	lw r1,(r13+12)                                 <== NOT EXECUTED
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
 8004d1c:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
 8004d20:	45 e1 ff cb 	be r15,r1,8004c4c <rtems_rbheap_allocate+0x5c> <== NOT EXECUTED
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
 8004d24:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 8004d28:	35 a3 00 0c 	addi r3,r13,12                                 <== NOT EXECUTED
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
 8004d2c:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
 8004d30:	59 a2 00 0c 	sw (r13+12),r2                                 <== NOT EXECUTED
  new_first->previous = head;                                         
 8004d34:	58 43 00 04 	sw (r2+4),r3                                   <== NOT EXECUTED
 8004d38:	e3 ff ff dc 	bi 8004ca8 <rtems_rbheap_allocate+0xb8>        <== NOT EXECUTED
                                                                      

08004e74 <rtems_rbheap_extend_descriptors_with_malloc>: void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control) {
 8004e74:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 8004e78:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 8004e7c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8004e80:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
 8004e84:	34 01 00 20 	mvi r1,32                                      <== NOT EXECUTED
 8004e88:	fb ff f4 9c 	calli 80020f8 <malloc>                         <== NOT EXECUTED
                                                                      
  if (chunk != NULL) {                                                
 8004e8c:	44 20 00 07 	be r1,r0,8004ea8 <rtems_rbheap_extend_descriptors_with_malloc+0x34><== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8004e90:	29 62 00 0c 	lw r2,(r11+12)                                 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);        
 8004e94:	35 63 00 0c 	addi r3,r11,12                                 <== NOT EXECUTED
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8004e98:	58 23 00 04 	sw (r1+4),r3                                   <== NOT EXECUTED
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8004e9c:	59 61 00 0c 	sw (r11+12),r1                                 <== NOT EXECUTED
  the_node->next        = before_node;                                
 8004ea0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
  before_node->previous = the_node;                                   
 8004ea4:	58 41 00 04 	sw (r2+4),r1                                   <== NOT EXECUTED
    rtems_rbheap_add_to_spare_descriptor_chain(control, chunk);       
  }                                                                   
}                                                                     
 8004ea8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004eac:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8004eb0:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8004eb4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08004d3c <rtems_rbheap_free>: _RBTree_Extract_unprotected(chunk_tree, &b->tree_node); } } rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr) {
 8004d3c:	37 9c ff cc 	addi sp,sp,-52                                 
 8004d40:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004d44:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004d48:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004d4c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004d50:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004d54:	b8 20 60 00 	mv r12,r1                                      
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 8004d58:	34 01 00 00 	mvi r1,0                                       
                                                                      
  if (ptr != NULL) {                                                  
 8004d5c:	44 40 00 22 	be r2,r0,8004de4 <rtems_rbheap_free+0xa8>      
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected(           
    RBTree_Control *the_rbtree,                                       
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
 8004d60:	29 8b 00 1c 	lw r11,(r12+28)                                
                                                                      
#define NULL_PAGE rtems_rbheap_chunk_of_node(NULL)                    
                                                                      
static rtems_rbheap_chunk *find(rtems_rbtree_control *chunk_tree, uintptr_t key)
{                                                                     
  rtems_rbheap_chunk chunk = { .begin = key };                        
 8004d64:	5b 80 00 18 	sw (sp+24),r0                                  
 8004d68:	5b 80 00 1c 	sw (sp+28),r0                                  
 8004d6c:	5b 80 00 20 	sw (sp+32),r0                                  
 8004d70:	5b 80 00 24 	sw (sp+36),r0                                  
 8004d74:	5b 80 00 28 	sw (sp+40),r0                                  
 8004d78:	5b 80 00 2c 	sw (sp+44),r0                                  
 8004d7c:	5b 80 00 34 	sw (sp+52),r0                                  
 8004d80:	5b 82 00 30 	sw (sp+48),r2                                  
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ID;                                          
 8004d84:	34 01 00 04 	mvi r1,4                                       
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
 8004d88:	45 60 00 17 	be r11,r0,8004de4 <rtems_rbheap_free+0xa8>     <== NEVER TAKEN
 8004d8c:	34 0d 00 00 	mvi r13,0                                      
 8004d90:	37 8e 00 20 	addi r14,sp,32                                 
    compare_result = the_rbtree->compare_function(the_node, iter_node);
 8004d94:	29 83 00 28 	lw r3,(r12+40)                                 
 8004d98:	b9 60 10 00 	mv r2,r11                                      
 8004d9c:	b9 c0 08 00 	mv r1,r14                                      
 8004da0:	d8 60 00 00 	call r3                                        
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
 8004da4:	68 22 00 00 	cmpgi r2,r1,0                                  
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
 8004da8:	5c 20 00 04 	bne r1,r0,8004db8 <rtems_rbheap_free+0x7c>     
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
 8004dac:	41 83 00 2c 	lbu r3,(r12+44)                                
 8004db0:	b9 60 68 00 	mv r13,r11                                     
 8004db4:	5c 61 00 13 	bne r3,r1,8004e00 <rtems_rbheap_free+0xc4>     <== ALWAYS TAKEN
        break;                                                        
    }                                                                 
                                                                      
    RBTree_Direction dir =                                            
      (RBTree_Direction) _RBTree_Is_greater( compare_result );        
    iter_node = iter_node->child[dir];                                
 8004db8:	b4 42 10 00 	add r2,r2,r2                                   
 8004dbc:	b4 42 10 00 	add r2,r2,r2                                   
 8004dc0:	b5 62 58 00 	add r11,r11,r2                                 
 8004dc4:	29 6b 00 04 	lw r11,(r11+4)                                 
    )                                                                 
{                                                                     
  RBTree_Node* iter_node = the_rbtree->root;                          
  RBTree_Node* found = NULL;                                          
  int compare_result;                                                 
  while (iter_node) {                                                 
 8004dc8:	5d 60 ff f3 	bne r11,r0,8004d94 <rtems_rbheap_free+0x58>    
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
    rtems_rbheap_chunk *chunk = find(chunk_tree, (uintptr_t) ptr);    
                                                                      
    if (chunk != NULL_PAGE) {                                         
 8004dcc:	35 ab ff f8 	addi r11,r13,-8                                
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
      }                                                               
    } else {                                                          
      sc = RTEMS_INVALID_ID;                                          
 8004dd0:	34 01 00 04 	mvi r1,4                                       
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
    rtems_rbheap_chunk *chunk = find(chunk_tree, (uintptr_t) ptr);    
                                                                      
    if (chunk != NULL_PAGE) {                                         
 8004dd4:	45 a0 00 04 	be r13,r0,8004de4 <rtems_rbheap_free+0xa8>     
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
 8004dd8:	29 a2 ff f8 	lw r2,(r13+-8)                                 
                                                                      
        check_and_merge(free_chain, chunk_tree, chunk, succ);         
        add_to_chain(free_chain, chunk);                              
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
      } else {                                                        
        sc = RTEMS_INCORRECT_STATE;                                   
 8004ddc:	34 01 00 0e 	mvi r1,14                                      
 8004de0:	44 40 00 0a 	be r2,r0,8004e08 <rtems_rbheap_free+0xcc>      
      sc = RTEMS_INVALID_ID;                                          
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 8004de4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004de8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004dec:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004df0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004df4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004df8:	37 9c 00 34 	addi sp,sp,52                                  
 8004dfc:	c3 a0 00 00 	ret                                            
    compare_result = the_rbtree->compare_function(the_node, iter_node);
    if ( _RBTree_Is_equal( compare_result ) ) {                       
      found = iter_node;                                              
      if ( the_rbtree->is_unique )                                    
 8004e00:	b9 60 68 00 	mv r13,r11                                     
 8004e04:	e3 ff ff f2 	bi 8004dcc <rtems_rbheap_free+0x90>            
 8004e08:	29 63 00 04 	lw r3,(r11+4)                                  
 8004e0c:	5c 62 ff f6 	bne r3,r2,8004de4 <rtems_rbheap_free+0xa8>     <== NEVER TAKEN
static rtems_rbheap_chunk *get_next(                                  
  const rtems_rbheap_chunk *chunk,                                    
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return rtems_rbheap_chunk_of_node(                                  
 8004e10:	b9 a0 08 00 	mv r1,r13                                      
 8004e14:	f8 00 08 21 	calli 8006e98 <_RBTree_Next_unprotected>       
 8004e18:	b8 20 70 00 	mv r14,r1                                      
 8004e1c:	34 02 00 01 	mvi r2,1                                       
 8004e20:	b9 a0 08 00 	mv r1,r13                                      
 8004e24:	f8 00 08 1d 	calli 8006e98 <_RBTree_Next_unprotected>       
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (ptr != NULL) {                                                  
    rtems_chain_control *free_chain = &control->free_chunk_chain;     
    rtems_rbtree_control *chunk_tree = &control->chunk_tree;          
 8004e28:	35 8d 00 18 	addi r13,r12,24                                
static rtems_rbheap_chunk *get_next(                                  
  const rtems_rbheap_chunk *chunk,                                    
  RBTree_Direction dir                                                
)                                                                     
{                                                                     
  return rtems_rbheap_chunk_of_node(                                  
 8004e2c:	34 24 ff f8 	addi r4,r1,-8                                  
    if (chunk != NULL_PAGE) {                                         
      if (!rtems_rbheap_is_chunk_free(chunk)) {                       
        rtems_rbheap_chunk *pred = get_next(chunk, RBT_LEFT);         
        rtems_rbheap_chunk *succ = get_next(chunk, RBT_RIGHT);        
                                                                      
        check_and_merge(free_chain, chunk_tree, chunk, succ);         
 8004e30:	b9 a0 10 00 	mv r2,r13                                      
 8004e34:	b9 80 08 00 	mv r1,r12                                      
 8004e38:	b9 60 18 00 	mv r3,r11                                      
 8004e3c:	fb ff fe ee 	calli 80049f4 <check_and_merge>                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
 8004e40:	29 82 00 00 	lw r2,(r12+0)                                  
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
 8004e44:	59 6c 00 04 	sw (r11+4),r12                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
 8004e48:	59 8b 00 00 	sw (r12+0),r11                                 
  the_node->next        = before_node;                                
 8004e4c:	59 62 00 00 	sw (r11+0),r2                                  
  before_node->previous = the_node;                                   
 8004e50:	58 4b 00 04 	sw (r2+4),r11                                  
        add_to_chain(free_chain, chunk);                              
        check_and_merge(free_chain, chunk_tree, chunk, pred);         
 8004e54:	b9 80 08 00 	mv r1,r12                                      
 8004e58:	b9 a0 10 00 	mv r2,r13                                      
 8004e5c:	b9 60 18 00 	mv r3,r11                                      
 8004e60:	35 c4 ff f8 	addi r4,r14,-8                                 
 8004e64:	fb ff fe e4 	calli 80049f4 <check_and_merge>                
  }                                                                   
}                                                                     
                                                                      
rtems_status_code rtems_rbheap_free(rtems_rbheap_control *control, void *ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
 8004e68:	34 01 00 00 	mvi r1,0                                       
 8004e6c:	e3 ff ff de 	bi 8004de4 <rtems_rbheap_free+0xa8>            
                                                                      

0801abcc <rtems_rfs_bitmap_create_search>: return 0; } int rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control) {
 801abcc:	37 9c ff cc 	addi sp,sp,-52                                 
 801abd0:	5b 8b 00 30 	sw (sp+48),r11                                 
 801abd4:	5b 8c 00 2c 	sw (sp+44),r12                                 
 801abd8:	5b 8d 00 28 	sw (sp+40),r13                                 
 801abdc:	5b 8e 00 24 	sw (sp+36),r14                                 
 801abe0:	5b 8f 00 20 	sw (sp+32),r15                                 
 801abe4:	5b 90 00 1c 	sw (sp+28),r16                                 
 801abe8:	5b 91 00 18 	sw (sp+24),r17                                 
 801abec:	5b 92 00 14 	sw (sp+20),r18                                 
 801abf0:	5b 93 00 10 	sw (sp+16),r19                                 
 801abf4:	5b 94 00 0c 	sw (sp+12),r20                                 
 801abf8:	5b 95 00 08 	sw (sp+8),r21                                  
 801abfc:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_bitmap_map map;                                           
  size_t               size;                                          
  rtems_rfs_bitmap_bit bit;                                           
  int                  rc;                                            
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
 801ac00:	37 82 00 34 	addi r2,sp,52                                  
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control)    
{                                                                     
 801ac04:	b8 20 60 00 	mv r12,r1                                      
  rtems_rfs_bitmap_map map;                                           
  size_t               size;                                          
  rtems_rfs_bitmap_bit bit;                                           
  int                  rc;                                            
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
 801ac08:	fb ff fd 96 	calli 801a260 <rtems_rfs_bitmap_load_map>      
  if (rc > 0)                                                         
 801ac0c:	48 20 00 26 	bg r1,r0,801aca4 <rtems_rfs_bitmap_create_search+0xd8>
    return rc;                                                        
                                                                      
  control->free = 0;                                                  
  search_map = control->search_bits;                                  
 801ac10:	29 94 00 14 	lw r20,(r12+20)                                
  size = control->size;                                               
 801ac14:	29 8d 00 0c 	lw r13,(r12+12)                                
  bit = 0;                                                            
                                                                      
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
 801ac18:	34 01 ff ff 	mvi r1,-1                                      
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  control->free = 0;                                                  
 801ac1c:	59 80 00 10 	sw (r12+16),r0                                 
  search_map = control->search_bits;                                  
  size = control->size;                                               
  bit = 0;                                                            
                                                                      
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
 801ac20:	5a 81 00 00 	sw (r20+0),r1                                  
    else                                                              
      bit++;                                                          
    map++;                                                            
  }                                                                   
                                                                      
  return 0;                                                           
 801ac24:	34 01 00 00 	mvi r1,0                                       
  search_map = control->search_bits;                                  
  size = control->size;                                               
  bit = 0;                                                            
                                                                      
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
  while (size)                                                        
 801ac28:	45 a0 00 1f 	be r13,r0,801aca4 <rtems_rfs_bitmap_create_search+0xd8><== NEVER TAKEN
 801ac2c:	2b 90 00 34 	lw r16,(sp+52)                                 
    return rc;                                                        
                                                                      
  control->free = 0;                                                  
  search_map = control->search_bits;                                  
  size = control->size;                                               
  bit = 0;                                                            
 801ac30:	34 11 00 00 	mvi r17,0                                      
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
  while (size)                                                        
  {                                                                   
    rtems_rfs_bitmap_element bits;                                    
    int                      available;                               
    if (size < rtems_rfs_bitmap_element_bits ())                      
 801ac34:	34 15 00 1f 	mvi r21,31                                     
                                     rtems_rfs_bitmap_mask_section (0, size));
      available = size;                                               
    }                                                                 
    else                                                              
    {                                                                 
      bits      = *map;                                               
 801ac38:	34 13 00 20 	mvi r19,32                                     
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
  while (size)                                                        
  {                                                                   
    rtems_rfs_bitmap_element bits;                                    
    int                      available;                               
    if (size < rtems_rfs_bitmap_element_bits ())                      
 801ac3c:	55 b5 00 28 	bgu r13,r21,801acdc <rtems_rfs_bitmap_create_search+0x110>
                                                                      
rtems_rfs_bitmap_element                                              
rtems_rfs_bitmap_mask (unsigned int size)                             
{                                                                     
  rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK; 
  mask >>= (rtems_rfs_bitmap_element_bits () - size);                 
 801ac40:	34 01 ff ff 	mvi r1,-1                                      
 801ac44:	ca 6d 10 00 	sub r2,r19,r13                                 
 801ac48:	fb ff 9a b8 	calli 8001728 <__lshrsi3>                      
{                                                                     
  /*                                                                  
   * Use the normal bit operators because we do not change the bits just merge
   * the 2 separate parts.                                            
   */                                                                 
  bits1 &= mask;                                                      
 801ac4c:	2a 0e 00 00 	lw r14,(r16+0)                                 
    if (size < rtems_rfs_bitmap_element_bits ())                      
    {                                                                 
      bits = rtems_rfs_bitmap_merge (*map,                            
                                     RTEMS_RFS_BITMAP_ELEMENT_SET,    
                                     rtems_rfs_bitmap_mask_section (0, size));
      available = size;                                               
 801ac50:	b9 a0 78 00 	mv r15,r13                                     
 801ac54:	b9 a0 90 00 	mv r18,r13                                     
{                                                                     
  /*                                                                  
   * Use the normal bit operators because we do not change the bits just merge
   * the 2 separate parts.                                            
   */                                                                 
  bits1 &= mask;                                                      
 801ac58:	a0 2e 70 00 	and r14,r1,r14                                 
    {                                                                 
      bits      = *map;                                               
      available = rtems_rfs_bitmap_element_bits ();                   
    }                                                                 
                                                                      
    if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))  
 801ac5c:	45 c0 00 0c 	be r14,r0,801ac8c <rtems_rfs_bitmap_create_search+0xc0>
 801ac60:	34 0b 00 00 	mvi r11,0                                      
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801ac64:	b9 60 10 00 	mv r2,r11                                      
 801ac68:	34 01 00 01 	mvi r1,1                                       
 801ac6c:	f8 00 70 4a 	calli 8036d94 <__ashlsi3>                      
 801ac70:	a0 2e 08 00 	and r1,r1,r14                                  
    if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))  
      rtems_rfs_bitmap_set (*search_map, bit);                        
    else                                                              
    {                                                                 
      int b;                                                          
      for (b = 0; b < available; b++)                                 
 801ac74:	35 6b 00 01 	addi r11,r11,1                                 
        if (!rtems_rfs_bitmap_test (bits, b))                         
 801ac78:	44 20 00 04 	be r1,r0,801ac88 <rtems_rfs_bitmap_create_search+0xbc>
          control->free++;                                            
 801ac7c:	29 81 00 10 	lw r1,(r12+16)                                 
 801ac80:	34 21 00 01 	addi r1,r1,1                                   
 801ac84:	59 81 00 10 	sw (r12+16),r1                                 
    if (rtems_rfs_bitmap_match (bits, RTEMS_RFS_BITMAP_ELEMENT_SET))  
      rtems_rfs_bitmap_set (*search_map, bit);                        
    else                                                              
    {                                                                 
      int b;                                                          
      for (b = 0; b < available; b++)                                 
 801ac88:	49 eb ff f7 	bg r15,r11,801ac64 <rtems_rfs_bitmap_create_search+0x98>
        if (!rtems_rfs_bitmap_test (bits, b))                         
          control->free++;                                            
    }                                                                 
                                                                      
    size -= available;                                                
 801ac8c:	c9 b2 68 00 	sub r13,r13,r18                                
                                                                      
    if (bit == rtems_rfs_bitmap_element_bits ())                      
 801ac90:	46 33 00 17 	be r17,r19,801acec <rtems_rfs_bitmap_create_search+0x120>
      bit = 0;                                                        
      search_map++;                                                   
      *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                   
    }                                                                 
    else                                                              
      bit++;                                                          
 801ac94:	36 31 00 01 	addi r17,r17,1                                 
    map++;                                                            
 801ac98:	36 10 00 04 	addi r16,r16,4                                 
  search_map = control->search_bits;                                  
  size = control->size;                                               
  bit = 0;                                                            
                                                                      
  *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                       
  while (size)                                                        
 801ac9c:	5d a0 ff e8 	bne r13,r0,801ac3c <rtems_rfs_bitmap_create_search+0x70>
    else                                                              
      bit++;                                                          
    map++;                                                            
  }                                                                   
                                                                      
  return 0;                                                           
 801aca0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801aca4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801aca8:	2b 8b 00 30 	lw r11,(sp+48)                                 
 801acac:	2b 8c 00 2c 	lw r12,(sp+44)                                 
 801acb0:	2b 8d 00 28 	lw r13,(sp+40)                                 
 801acb4:	2b 8e 00 24 	lw r14,(sp+36)                                 
 801acb8:	2b 8f 00 20 	lw r15,(sp+32)                                 
 801acbc:	2b 90 00 1c 	lw r16,(sp+28)                                 
 801acc0:	2b 91 00 18 	lw r17,(sp+24)                                 
 801acc4:	2b 92 00 14 	lw r18,(sp+20)                                 
 801acc8:	2b 93 00 10 	lw r19,(sp+16)                                 
 801accc:	2b 94 00 0c 	lw r20,(sp+12)                                 
 801acd0:	2b 95 00 08 	lw r21,(sp+8)                                  
 801acd4:	37 9c 00 34 	addi sp,sp,52                                  
 801acd8:	c3 a0 00 00 	ret                                            
                                     rtems_rfs_bitmap_mask_section (0, size));
      available = size;                                               
    }                                                                 
    else                                                              
    {                                                                 
      bits      = *map;                                               
 801acdc:	2a 0e 00 00 	lw r14,(r16+0)                                 
 801ace0:	34 12 00 20 	mvi r18,32                                     
      available = rtems_rfs_bitmap_element_bits ();                   
 801ace4:	34 0f 00 20 	mvi r15,32                                     
 801ace8:	e3 ff ff dd 	bi 801ac5c <rtems_rfs_bitmap_create_search+0x90>
    size -= available;                                                
                                                                      
    if (bit == rtems_rfs_bitmap_element_bits ())                      
    {                                                                 
      bit = 0;                                                        
      search_map++;                                                   
 801acec:	36 94 00 04 	addi r20,r20,4                                 
      *search_map = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                   
 801acf0:	34 01 ff ff 	mvi r1,-1                                      
 801acf4:	5a 81 00 00 	sw (r20+0),r1                                  
                                                                      
    size -= available;                                                
                                                                      
    if (bit == rtems_rfs_bitmap_element_bits ())                      
    {                                                                 
      bit = 0;                                                        
 801acf8:	34 11 00 00 	mvi r17,0                                      
 801acfc:	e3 ff ff e7 	bi 801ac98 <rtems_rfs_bitmap_create_search+0xcc>
                                                                      

0801a260 <rtems_rfs_bitmap_load_map>: * @return int The error number (errno). No error if 0. */ static int rtems_rfs_bitmap_load_map (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_map* map) {
 801a260:	37 9c ff f4 	addi sp,sp,-12                                 
 801a264:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801a268:	5b 8c 00 08 	sw (sp+8),r12                                  
 801a26c:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rc;                                                             
                                                                      
  if (!control->buffer)                                               
 801a270:	28 24 00 00 	lw r4,(r1+0)                                   
 * @return int The error number (errno). No error if 0.               
 */                                                                   
static int                                                            
rtems_rfs_bitmap_load_map (rtems_rfs_bitmap_control* control,         
                           rtems_rfs_bitmap_map*     map)             
{                                                                     
 801a274:	b8 20 58 00 	mv r11,r1                                      
 801a278:	b8 40 60 00 	mv r12,r2                                      
  int rc;                                                             
                                                                      
  if (!control->buffer)                                               
    return ENXIO;                                                     
 801a27c:	34 01 00 06 	mvi r1,6                                       
rtems_rfs_bitmap_load_map (rtems_rfs_bitmap_control* control,         
                           rtems_rfs_bitmap_map*     map)             
{                                                                     
  int rc;                                                             
                                                                      
  if (!control->buffer)                                               
 801a280:	44 80 00 0c 	be r4,r0,801a2b0 <rtems_rfs_bitmap_load_map+0x50>
    return ENXIO;                                                     
                                                                      
  *map = NULL;                                                        
                                                                      
  rc = rtems_rfs_buffer_handle_request (control->fs,                  
 801a284:	29 61 00 04 	lw r1,(r11+4)                                  
 801a288:	29 63 00 08 	lw r3,(r11+8)                                  
  int rc;                                                             
                                                                      
  if (!control->buffer)                                               
    return ENXIO;                                                     
                                                                      
  *map = NULL;                                                        
 801a28c:	58 40 00 00 	sw (r2+0),r0                                   
                                                                      
  rc = rtems_rfs_buffer_handle_request (control->fs,                  
 801a290:	b8 80 10 00 	mv r2,r4                                       
 801a294:	34 04 00 01 	mvi r4,1                                       
 801a298:	f8 00 09 6b 	calli 801c844 <rtems_rfs_buffer_handle_request>
                                        control->buffer,              
                                        control->block,               
                                        true);                        
  if (rc)                                                             
 801a29c:	5c 20 00 05 	bne r1,r0,801a2b0 <rtems_rfs_bitmap_load_map+0x50><== NEVER TAKEN
    return rc;                                                        
                                                                      
  *map = rtems_rfs_buffer_data (control->buffer);                     
 801a2a0:	29 62 00 00 	lw r2,(r11+0)                                  
 801a2a4:	28 42 00 08 	lw r2,(r2+8)                                   
 801a2a8:	28 42 00 1c 	lw r2,(r2+28)                                  
 801a2ac:	59 82 00 00 	sw (r12+0),r2                                  
  return 0;                                                           
}                                                                     
 801a2b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801a2b4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801a2b8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801a2bc:	37 9c 00 0c 	addi sp,sp,12                                  
 801a2c0:	c3 a0 00 00 	ret                                            
                                                                      

0801aaf4 <rtems_rfs_bitmap_map_alloc>: int rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit seed, bool* allocated, rtems_rfs_bitmap_bit* bit) {
 801aaf4:	37 9c ff e8 	addi sp,sp,-24                                 
 801aaf8:	5b 8b 00 18 	sw (sp+24),r11                                 
 801aafc:	5b 8c 00 14 	sw (sp+20),r12                                 
 801ab00:	5b 8d 00 10 	sw (sp+16),r13                                 
 801ab04:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801ab08:	5b 8f 00 08 	sw (sp+8),r15                                  
 801ab0c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801ab10:	b8 60 70 00 	mv r14,r3                                      
   * seed up then from the seed down a window number of bits, then repeat the
   * process from the window distance from the seed, again above then 
   * below. Keep moving out until all bits have been searched.        
   */                                                                 
  upper_seed = seed;                                                  
  lower_seed = seed;                                                  
 801ab14:	b8 40 60 00 	mv r12,r2                                      
int                                                                   
rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,        
                            rtems_rfs_bitmap_bit      seed,           
                            bool*                     allocated,      
                            rtems_rfs_bitmap_bit*     bit)            
{                                                                     
 801ab18:	b8 20 68 00 	mv r13,r1                                      
 801ab1c:	b8 80 78 00 	mv r15,r4                                      
  int                  rc = 0;                                        
                                                                      
  /*                                                                  
   * By default we assume the allocation failed.                      
   */                                                                 
  *allocated = false;                                                 
 801ab20:	30 60 00 00 	sb (r3+0),r0                                   
   * of bits from the original seed above then below. That is search from the
   * seed up then from the seed down a window number of bits, then repeat the
   * process from the window distance from the seed, again above then 
   * below. Keep moving out until all bits have been searched.        
   */                                                                 
  upper_seed = seed;                                                  
 801ab24:	b8 40 58 00 	mv r11,r2                                      
   * we have searched all of the map. The seed may not be aligned to a window
   * boundary so we may need to search a partial window and this may also not
   * be balanced for the upper or lower seeds. We move to the limits, search
   * then return false if no clear bits are found.                    
   */                                                                 
  while (((upper_seed >= 0) && (upper_seed < control->size))          
 801ab28:	48 0b 00 03 	bg r0,r11,801ab34 <rtems_rfs_bitmap_map_alloc+0x40>
 801ab2c:	29 a1 00 0c 	lw r1,(r13+12)                                 
 801ab30:	54 2b 00 0e 	bgu r1,r11,801ab68 <rtems_rfs_bitmap_map_alloc+0x74>
         || ((lower_seed >= 0) && (lower_seed < control->size)))      
 801ab34:	48 0c 00 03 	bg r0,r12,801ab40 <rtems_rfs_bitmap_map_alloc+0x4c>
 801ab38:	29 a1 00 0c 	lw r1,(r13+12)                                 
 801ab3c:	54 2c 00 0a 	bgu r1,r12,801ab64 <rtems_rfs_bitmap_map_alloc+0x70>
    if (lower_seed >= 0)                                              
      lower_seed -= window;                                           
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 801ab40:	34 01 00 00 	mvi r1,0                                       
 801ab44:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801ab48:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801ab4c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801ab50:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801ab54:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801ab58:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801ab5c:	37 9c 00 18 	addi sp,sp,24                                  
 801ab60:	c3 a0 00 00 	ret                                            
         || ((lower_seed >= 0) && (lower_seed < control->size)))      
  {                                                                   
    /*                                                                
     * Search up first so bits allocated in succession are grouped together.
     */                                                               
    if (upper_seed < control->size)                                   
 801ab64:	51 61 00 0b 	bgeu r11,r1,801ab90 <rtems_rfs_bitmap_map_alloc+0x9c><== ALWAYS TAKEN
    {                                                                 
      *bit = upper_seed;                                              
 801ab68:	59 eb 00 00 	sw (r15+0),r11                                 
      rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
 801ab6c:	b9 a0 08 00 	mv r1,r13                                      
 801ab70:	b9 e0 10 00 	mv r2,r15                                      
 801ab74:	b9 c0 18 00 	mv r3,r14                                      
 801ab78:	34 04 00 01 	mvi r4,1                                       
 801ab7c:	fb ff fd d2 	calli 801a2c4 <rtems_rfs_search_map_for_clear_bit.clone.0>
                                               window, 1);            
      if ((rc > 0) || *allocated)                                     
 801ab80:	48 20 ff f0 	bg r1,r0,801ab40 <rtems_rfs_bitmap_map_alloc+0x4c><== NEVER TAKEN
 801ab84:	41 c1 00 00 	lbu r1,(r14+0)                                 
 801ab88:	5c 20 ff ee 	bne r1,r0,801ab40 <rtems_rfs_bitmap_map_alloc+0x4c>
        break;                                                        
    }                                                                 
                                                                      
    if (lower_seed >= 0)                                              
 801ab8c:	48 2c 00 0a 	bg r1,r12,801abb4 <rtems_rfs_bitmap_map_alloc+0xc0>
    {                                                                 
      *bit = lower_seed;                                              
 801ab90:	59 ec 00 00 	sw (r15+0),r12                                 
      rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
 801ab94:	b9 a0 08 00 	mv r1,r13                                      
 801ab98:	b9 e0 10 00 	mv r2,r15                                      
 801ab9c:	b9 c0 18 00 	mv r3,r14                                      
 801aba0:	34 04 ff ff 	mvi r4,-1                                      
 801aba4:	fb ff fd c8 	calli 801a2c4 <rtems_rfs_search_map_for_clear_bit.clone.0>
                                               window, -1);           
      if ((rc > 0) || *allocated)                                     
 801aba8:	48 20 ff e6 	bg r1,r0,801ab40 <rtems_rfs_bitmap_map_alloc+0x4c><== NEVER TAKEN
 801abac:	41 c1 00 00 	lbu r1,(r14+0)                                 
 801abb0:	5c 20 ff e4 	bne r1,r0,801ab40 <rtems_rfs_bitmap_map_alloc+0x4c>
                                                                      
    /*                                                                
     * Do not bound the limits at the edges of the map. Do not update if an
     * edge has been passed.                                          
     */                                                               
    if (upper_seed < control->size)                                   
 801abb4:	29 a1 00 0c 	lw r1,(r13+12)                                 
 801abb8:	51 61 00 02 	bgeu r11,r1,801abc0 <rtems_rfs_bitmap_map_alloc+0xcc>
      upper_seed += window;                                           
 801abbc:	35 6b 08 00 	addi r11,r11,2048                              
    if (lower_seed >= 0)                                              
 801abc0:	48 0c ff da 	bg r0,r12,801ab28 <rtems_rfs_bitmap_map_alloc+0x34>
      lower_seed -= window;                                           
 801abc4:	35 8c f8 00 	addi r12,r12,-2048                             
 801abc8:	e3 ff ff d8 	bi 801ab28 <rtems_rfs_bitmap_map_alloc+0x34>   
                                                                      

0801a638 <rtems_rfs_bitmap_mask>: return 0; } rtems_rfs_bitmap_element rtems_rfs_bitmap_mask (unsigned int size) {
 801a638:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 801a63c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK; 
  mask >>= (rtems_rfs_bitmap_element_bits () - size);                 
 801a640:	34 02 00 20 	mvi r2,32                                      <== NOT EXECUTED
 801a644:	c8 41 10 00 	sub r2,r2,r1                                   <== NOT EXECUTED
 801a648:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801a64c:	fb ff 9c 37 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
  return mask;                                                        
}                                                                     
 801a650:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801a654:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 801a658:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801a65c <rtems_rfs_bitmap_mask_section>: rtems_rfs_bitmap_element rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end) {
 801a65c:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 801a660:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 801a664:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 801a668:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  rtems_rfs_bitmap_element mask = 0;                                  
 801a66c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  if (end > start)                                                    
 801a670:	51 62 00 07 	bgeu r11,r2,801a68c <rtems_rfs_bitmap_mask_section+0x30><== NOT EXECUTED
                                                                      
rtems_rfs_bitmap_element                                              
rtems_rfs_bitmap_mask (unsigned int size)                             
{                                                                     
  rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK; 
  mask >>= (rtems_rfs_bitmap_element_bits () - size);                 
 801a674:	c9 62 10 00 	sub r2,r11,r2                                  <== NOT EXECUTED
 801a678:	34 42 00 20 	addi r2,r2,32                                  <== NOT EXECUTED
 801a67c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801a680:	fb ff 9c 2a 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
rtems_rfs_bitmap_element                                              
rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end)  
{                                                                     
  rtems_rfs_bitmap_element mask = 0;                                  
  if (end > start)                                                    
    mask = rtems_rfs_bitmap_mask (end - start) << start;              
 801a684:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801a688:	f8 00 71 c3 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
  return mask;                                                        
}                                                                     
 801a68c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801a690:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 801a694:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 801a698:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801ada4 <rtems_rfs_block_find_indirect>: rtems_rfs_block_find_indirect (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* buffer, rtems_rfs_block_no block, int offset, rtems_rfs_block_no* result) {
 801ada4:	37 9c ff e4 	addi sp,sp,-28                                 
 801ada8:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801adac:	5b 8c 00 18 	sw (sp+24),r12                                 
 801adb0:	5b 8d 00 14 	sw (sp+20),r13                                 
 801adb4:	5b 8e 00 10 	sw (sp+16),r14                                 
 801adb8:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801adbc:	5b 90 00 08 	sw (sp+8),r16                                  
 801adc0:	5b 9d 00 04 	sw (sp+4),ra                                   
 801adc4:	b8 80 60 00 	mv r12,r4                                      
                                                                      
  /*                                                                  
   * If the handle has a buffer and this request is a different block the current
   * buffer is released.                                              
   */                                                                 
  rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);     
 801adc8:	34 04 00 01 	mvi r4,1                                       
rtems_rfs_block_find_indirect (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* buffer,       
                               rtems_rfs_block_no       block,        
                               int                      offset,       
                               rtems_rfs_block_no*      result)       
{                                                                     
 801adcc:	b8 20 70 00 	mv r14,r1                                      
 801add0:	b8 40 58 00 	mv r11,r2                                      
 801add4:	b8 60 78 00 	mv r15,r3                                      
 801add8:	b8 a0 68 00 	mv r13,r5                                      
                                                                      
  /*                                                                  
   * If the handle has a buffer and this request is a different block the current
   * buffer is released.                                              
   */                                                                 
  rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);     
 801addc:	f8 00 06 9a 	calli 801c844 <rtems_rfs_buffer_handle_request>
  if (rc > 0)                                                         
 801ade0:	48 20 00 24 	bg r1,r0,801ae70 <rtems_rfs_block_find_indirect+0xcc><== NEVER TAKEN
    return rc;                                                        
                                                                      
  *result = rtems_rfs_block_get_number (buffer, offset);              
 801ade4:	29 61 00 08 	lw r1,(r11+8)                                  
 801ade8:	b5 8c 30 00 	add r6,r12,r12                                 
 801adec:	b4 c6 30 00 	add r6,r6,r6                                   
 801adf0:	28 2b 00 1c 	lw r11,(r1+28)                                 
 801adf4:	34 02 00 18 	mvi r2,24                                      
 801adf8:	b5 66 58 00 	add r11,r11,r6                                 
 801adfc:	41 61 00 00 	lbu r1,(r11+0)                                 
 801ae00:	41 70 00 03 	lbu r16,(r11+3)                                
 801ae04:	f8 00 6f e4 	calli 8036d94 <__ashlsi3>                      
 801ae08:	ba 01 80 00 	or r16,r16,r1                                  
 801ae0c:	41 61 00 01 	lbu r1,(r11+1)                                 
 801ae10:	34 02 00 10 	mvi r2,16                                      
 801ae14:	f8 00 6f e0 	calli 8036d94 <__ashlsi3>                      
 801ae18:	41 62 00 02 	lbu r2,(r11+2)                                 
 801ae1c:	ba 01 08 00 	or r1,r16,r1                                   
 801ae20:	b4 42 10 00 	add r2,r2,r2                                   
 801ae24:	b4 42 10 00 	add r2,r2,r2                                   
 801ae28:	b4 42 10 00 	add r2,r2,r2                                   
 801ae2c:	b4 42 10 00 	add r2,r2,r2                                   
 801ae30:	b4 42 10 00 	add r2,r2,r2                                   
 801ae34:	b4 42 10 00 	add r2,r2,r2                                   
 801ae38:	b4 42 10 00 	add r2,r2,r2                                   
 801ae3c:	b4 42 10 00 	add r2,r2,r2                                   
 801ae40:	b8 22 10 00 	or r2,r1,r2                                    
 801ae44:	59 a2 00 00 	sw (r13+0),r2                                  
  if ((*result + 1) == 0)                                             
 801ae48:	34 01 ff ff 	mvi r1,-1                                      
 801ae4c:	44 41 00 12 	be r2,r1,801ae94 <rtems_rfs_block_find_indirect+0xf0><== NEVER TAKEN
    *result = 0;                                                      
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
 801ae50:	29 c3 00 04 	lw r3,(r14+4)                                  
              " block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
    *result = 0;                                                      
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
 801ae54:	34 01 00 00 	mvi r1,0                                       
                                                                      
  *result = rtems_rfs_block_get_number (buffer, offset);              
  if ((*result + 1) == 0)                                             
    *result = 0;                                                      
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
 801ae58:	54 62 00 06 	bgu r3,r2,801ae70 <rtems_rfs_block_find_indirect+0xcc><== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))                 
 801ae5c:	34 02 10 00 	mvi r2,4096                                    <== NOT EXECUTED
 801ae60:	fb ff dc d8 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ae64:	5c 20 00 0f 	bne r1,r0,801aea0 <rtems_rfs_block_find_indirect+0xfc><== NOT EXECUTED
      printf ("rtems-rfs: block-find: invalid block in table:"        
              " block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
    *result = 0;                                                      
 801ae68:	59 a0 00 00 	sw (r13+0),r0                                  <== NOT EXECUTED
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
 801ae6c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 801ae70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801ae74:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801ae78:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801ae7c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801ae80:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801ae84:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801ae88:	2b 90 00 08 	lw r16,(sp+8)                                  
 801ae8c:	37 9c 00 1c 	addi sp,sp,28                                  
 801ae90:	c3 a0 00 00 	ret                                            
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  *result = rtems_rfs_block_get_number (buffer, offset);              
  if ((*result + 1) == 0)                                             
    *result = 0;                                                      
 801ae94:	59 a0 00 00 	sw (r13+0),r0                                  <== NOT EXECUTED
 801ae98:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801ae9c:	e3 ff ff ed 	bi 801ae50 <rtems_rfs_block_find_indirect+0xac><== NOT EXECUTED
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))                 
      printf ("rtems-rfs: block-find: invalid block in table:"        
 801aea0:	29 a2 00 00 	lw r2,(r13+0)                                  <== NOT EXECUTED
 801aea4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801aea8:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 801aeac:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 801aeb0:	38 21 aa 98 	ori r1,r1,0xaa98                               <== NOT EXECUTED
 801aeb4:	f8 00 27 79 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801aeb8:	e3 ff ff ec 	bi 801ae68 <rtems_rfs_block_find_indirect+0xc4><== NOT EXECUTED
                                                                      

0801b268 <rtems_rfs_block_get_block_size>: void rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs, rtems_rfs_pos pos, rtems_rfs_block_size* size) {
 801b268:	37 9c ff ec 	addi sp,sp,-20                                 <== NOT EXECUTED
 801b26c:	5b 8b 00 14 	sw (sp+20),r11                                 <== NOT EXECUTED
 801b270:	5b 8c 00 10 	sw (sp+16),r12                                 <== NOT EXECUTED
 801b274:	5b 8d 00 0c 	sw (sp+12),r13                                 <== NOT EXECUTED
 801b278:	5b 8e 00 08 	sw (sp+8),r14                                  <== NOT EXECUTED
 801b27c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 801b280:	b8 40 60 00 	mv r12,r2                                      <== NOT EXECUTED
  if (pos == 0)                                                       
 801b284:	b8 43 10 00 	or r2,r2,r3                                    <== NOT EXECUTED
                                                                      
void                                                                  
rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs,            
                                rtems_rfs_pos          pos,           
                                rtems_rfs_block_size*  size)          
{                                                                     
 801b288:	b8 60 58 00 	mv r11,r3                                      <== NOT EXECUTED
 801b28c:	b8 80 68 00 	mv r13,r4                                      <== NOT EXECUTED
  if (pos == 0)                                                       
 801b290:	44 40 00 16 	be r2,r0,801b2e8 <rtems_rfs_block_get_block_size+0x80><== NOT EXECUTED
    rtems_rfs_block_set_size_zero (size);                             
  else                                                                
  {                                                                   
    size->count  = pos / rtems_rfs_fs_block_size (fs) + 1;            
 801b294:	28 2e 00 08 	lw r14,(r1+8)                                  <== NOT EXECUTED
 801b298:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801b29c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801b2a0:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 801b2a4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801b2a8:	f8 00 5e 05 	calli 8032abc <__udivdi3>                      <== NOT EXECUTED
 801b2ac:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
 801b2b0:	59 a2 00 00 	sw (r13+0),r2                                  <== NOT EXECUTED
    size->offset = pos % rtems_rfs_fs_block_size (fs);                
 801b2b4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801b2b8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801b2bc:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801b2c0:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 801b2c4:	f8 00 5f ec 	calli 8033274 <__umoddi3>                      <== NOT EXECUTED
 801b2c8:	59 a2 00 04 	sw (r13+4),r2                                  <== NOT EXECUTED
  }                                                                   
}                                                                     
 801b2cc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801b2d0:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 801b2d4:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 801b2d8:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 801b2dc:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 801b2e0:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 801b2e4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
 * @param size A pointer to the block size.                           
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)            
{                                                                     
  size->count = 0;                                                    
 801b2e8:	58 80 00 00 	sw (r4+0),r0                                   <== NOT EXECUTED
  size->offset = 0;                                                   
 801b2ec:	58 80 00 04 	sw (r4+4),r0                                   <== NOT EXECUTED
 801b2f0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801b2f4:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 801b2f8:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 801b2fc:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 801b300:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 801b304:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 801b308:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801b614 <rtems_rfs_block_map_close>: int rtems_rfs_block_map_close (rtems_rfs_file_system* fs, rtems_rfs_block_map* map) {
 801b614:	37 9c ff d8 	addi sp,sp,-40                                 
 801b618:	5b 8b 00 28 	sw (sp+40),r11                                 
 801b61c:	5b 8c 00 24 	sw (sp+36),r12                                 
 801b620:	5b 8d 00 20 	sw (sp+32),r13                                 
 801b624:	5b 8e 00 1c 	sw (sp+28),r14                                 
 801b628:	5b 8f 00 18 	sw (sp+24),r15                                 
 801b62c:	5b 90 00 14 	sw (sp+20),r16                                 
 801b630:	5b 91 00 10 	sw (sp+16),r17                                 
 801b634:	5b 92 00 0c 	sw (sp+12),r18                                 
 801b638:	5b 93 00 08 	sw (sp+8),r19                                  
 801b63c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801b640:	b8 40 58 00 	mv r11,r2                                      
  int rc = 0;                                                         
  int brc;                                                            
                                                                      
  if (map->dirty && map->inode)                                       
 801b644:	40 42 00 00 	lbu r2,(r2+0)                                  
}                                                                     
                                                                      
int                                                                   
rtems_rfs_block_map_close (rtems_rfs_file_system* fs,                 
                           rtems_rfs_block_map*   map)                
{                                                                     
 801b648:	b8 20 80 00 	mv r16,r1                                      
  int rc = 0;                                                         
 801b64c:	34 0c 00 00 	mvi r12,0                                      
  int brc;                                                            
                                                                      
  if (map->dirty && map->inode)                                       
 801b650:	44 40 00 8e 	be r2,r0,801b888 <rtems_rfs_block_map_close+0x274>
 801b654:	29 62 00 04 	lw r2,(r11+4)                                  
 801b658:	44 40 00 8c 	be r2,r0,801b888 <rtems_rfs_block_map_close+0x274><== NEVER TAKEN
  {                                                                   
    brc = rtems_rfs_inode_load (fs, map->inode);                      
 801b65c:	fb ff d1 9e 	calli 800fcd4 <rtems_rfs_inode_load>           
    if (brc > 0)                                                      
 801b660:	b8 20 60 00 	mv r12,r1                                      
 801b664:	48 20 00 89 	bg r1,r0,801b888 <rtems_rfs_block_map_close+0x274><== NEVER TAKEN
 801b668:	b9 60 78 00 	mv r15,r11                                     
 801b66c:	34 0d 00 00 	mvi r13,0                                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b670:	34 11 00 01 	mvi r17,1                                      
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      int b;                                                          
                                                                      
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
 801b674:	34 13 00 14 	mvi r19,20                                     
        rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);    
 801b678:	29 6c 00 04 	lw r12,(r11+4)                                 
 801b67c:	29 ee 00 24 	lw r14,(r15+36)                                
 * @param bno The block number.                                       
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
 801b680:	34 02 00 18 	mvi r2,24                                      
 801b684:	29 92 00 0c 	lw r18,(r12+12)                                
 801b688:	b9 c0 08 00 	mv r1,r14                                      
 801b68c:	fb ff 98 27 	calli 8001728 <__lshrsi3>                      
 801b690:	b6 4d 90 00 	add r18,r18,r13                                
 801b694:	32 41 00 1c 	sb (r18+28),r1                                 
 801b698:	34 02 00 10 	mvi r2,16                                      
 801b69c:	b9 c0 08 00 	mv r1,r14                                      
 801b6a0:	fb ff 98 22 	calli 8001728 <__lshrsi3>                      
 801b6a4:	01 c3 00 01 	srui r3,r14,1                                  
 801b6a8:	29 92 00 0c 	lw r18,(r12+12)                                
 801b6ac:	00 63 00 01 	srui r3,r3,1                                   
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b6b0:	35 ef 00 04 	addi r15,r15,4                                 
 * @param bno The block number.                                       
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
 801b6b4:	00 63 00 01 	srui r3,r3,1                                   
 801b6b8:	b6 4d 90 00 	add r18,r18,r13                                
 801b6bc:	00 63 00 01 	srui r3,r3,1                                   
 801b6c0:	32 41 00 1d 	sb (r18+29),r1                                 
 801b6c4:	00 63 00 01 	srui r3,r3,1                                   
 801b6c8:	29 81 00 0c 	lw r1,(r12+12)                                 
 801b6cc:	00 63 00 01 	srui r3,r3,1                                   
 801b6d0:	00 63 00 01 	srui r3,r3,1                                   
 801b6d4:	b4 2d 08 00 	add r1,r1,r13                                  
 801b6d8:	00 63 00 01 	srui r3,r3,1                                   
 801b6dc:	30 23 00 1e 	sb (r1+30),r3                                  
 801b6e0:	29 81 00 0c 	lw r1,(r12+12)                                 
 801b6e4:	b4 2d 08 00 	add r1,r1,r13                                  
 801b6e8:	30 2e 00 1f 	sb (r1+31),r14                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b6ec:	31 91 00 10 	sb (r12+16),r17                                
 801b6f0:	35 ad 00 04 	addi r13,r13,4                                 
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      int b;                                                          
                                                                      
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
 801b6f4:	5d b3 ff e1 	bne r13,r19,801b678 <rtems_rfs_block_map_close+0x64>
        rtems_rfs_inode_set_block (map->inode, b, map->blocks[b]);    
      rtems_rfs_inode_set_block_count (map->inode, map->size.count);  
 801b6f8:	29 6c 00 04 	lw r12,(r11+4)                                 
 801b6fc:	29 6d 00 08 	lw r13,(r11+8)                                 
 * @param block_count The block count.                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->block_count, block_count);      
 801b700:	34 02 00 18 	mvi r2,24                                      
 801b704:	29 8e 00 0c 	lw r14,(r12+12)                                
 801b708:	b9 a0 08 00 	mv r1,r13                                      
 801b70c:	fb ff 98 07 	calli 8001728 <__lshrsi3>                      
 801b710:	31 c1 00 0c 	sb (r14+12),r1                                 
 801b714:	34 02 00 10 	mvi r2,16                                      
 801b718:	b9 a0 08 00 	mv r1,r13                                      
 801b71c:	fb ff 98 03 	calli 8001728 <__lshrsi3>                      
 801b720:	01 a3 00 01 	srui r3,r13,1                                  
 801b724:	29 84 00 0c 	lw r4,(r12+12)                                 
 801b728:	00 63 00 01 	srui r3,r3,1                                   
 * @param block_count The last map block number.                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
 801b72c:	34 02 00 18 	mvi r2,24                                      
 * @param block_count The block count.                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->block_count, block_count);      
 801b730:	00 63 00 01 	srui r3,r3,1                                   
 801b734:	30 81 00 0d 	sb (r4+13),r1                                  
 801b738:	00 63 00 01 	srui r3,r3,1                                   
 801b73c:	29 81 00 0c 	lw r1,(r12+12)                                 
 801b740:	00 63 00 01 	srui r3,r3,1                                   
 801b744:	00 63 00 01 	srui r3,r3,1                                   
 801b748:	00 63 00 01 	srui r3,r3,1                                   
 801b74c:	00 63 00 01 	srui r3,r3,1                                   
 801b750:	30 23 00 0e 	sb (r1+14),r3                                  
 801b754:	29 81 00 0c 	lw r1,(r12+12)                                 
 801b758:	30 2d 00 0f 	sb (r1+15),r13                                 
      rtems_rfs_inode_set_block_offset (map->inode, map->size.offset);
 801b75c:	2d 61 00 0e 	lhu r1,(r11+14)                                
 801b760:	29 64 00 04 	lw r4,(r11+4)                                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b764:	31 91 00 10 	sb (r12+16),r17                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,     
                                  uint16_t                block_offset)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);    
 801b768:	00 23 00 01 	srui r3,r1,1                                   
 801b76c:	28 85 00 0c 	lw r5,(r4+12)                                  
 801b770:	00 63 00 01 	srui r3,r3,1                                   
 801b774:	00 63 00 01 	srui r3,r3,1                                   
 801b778:	00 63 00 01 	srui r3,r3,1                                   
 801b77c:	00 63 00 01 	srui r3,r3,1                                   
 801b780:	00 63 00 01 	srui r3,r3,1                                   
 801b784:	00 63 00 01 	srui r3,r3,1                                   
 801b788:	00 63 00 01 	srui r3,r3,1                                   
 801b78c:	30 a3 00 0a 	sb (r5+10),r3                                  
 801b790:	28 83 00 0c 	lw r3,(r4+12)                                  
 801b794:	30 61 00 0b 	sb (r3+11),r1                                  
      rtems_rfs_inode_set_last_map_block (map->inode, map->last_map_block);
 801b798:	29 6d 00 04 	lw r13,(r11+4)                                 
 801b79c:	29 6c 00 1c 	lw r12,(r11+28)                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b7a0:	30 91 00 10 	sb (r4+16),r17                                 
 * @param block_count The last map block number.                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
 801b7a4:	29 ae 00 0c 	lw r14,(r13+12)                                
 801b7a8:	b9 80 08 00 	mv r1,r12                                      
 801b7ac:	fb ff 97 df 	calli 8001728 <__lshrsi3>                      
 801b7b0:	31 c1 00 30 	sb (r14+48),r1                                 
 801b7b4:	34 02 00 10 	mvi r2,16                                      
 801b7b8:	b9 80 08 00 	mv r1,r12                                      
 801b7bc:	fb ff 97 db 	calli 8001728 <__lshrsi3>                      
 801b7c0:	01 83 00 01 	srui r3,r12,1                                  
 801b7c4:	29 a4 00 0c 	lw r4,(r13+12)                                 
 801b7c8:	00 63 00 01 	srui r3,r3,1                                   
 * @param block_count The last data block number.                     
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
 801b7cc:	34 02 00 18 	mvi r2,24                                      
 * @param block_count The last map block number.                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->last_map_block, last_map_block);
 801b7d0:	00 63 00 01 	srui r3,r3,1                                   
 801b7d4:	30 81 00 31 	sb (r4+49),r1                                  
 801b7d8:	00 63 00 01 	srui r3,r3,1                                   
 801b7dc:	29 a1 00 0c 	lw r1,(r13+12)                                 
 801b7e0:	00 63 00 01 	srui r3,r3,1                                   
 801b7e4:	00 63 00 01 	srui r3,r3,1                                   
 801b7e8:	00 63 00 01 	srui r3,r3,1                                   
 801b7ec:	00 63 00 01 	srui r3,r3,1                                   
 801b7f0:	30 23 00 32 	sb (r1+50),r3                                  
 801b7f4:	29 a1 00 0c 	lw r1,(r13+12)                                 
 801b7f8:	30 2c 00 33 	sb (r1+51),r12                                 
      rtems_rfs_inode_set_last_data_block (map->inode, map->last_data_block);
 801b7fc:	29 6c 00 04 	lw r12,(r11+4)                                 
 801b800:	29 6e 00 20 	lw r14,(r11+32)                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b804:	31 b1 00 10 	sb (r13+16),r17                                
 * @param block_count The last data block number.                     
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->last_data_block, last_data_block);
 801b808:	29 8d 00 0c 	lw r13,(r12+12)                                
 801b80c:	b9 c0 08 00 	mv r1,r14                                      
 801b810:	fb ff 97 c6 	calli 8001728 <__lshrsi3>                      
 801b814:	31 a1 00 34 	sb (r13+52),r1                                 
 801b818:	34 02 00 10 	mvi r2,16                                      
 801b81c:	b9 c0 08 00 	mv r1,r14                                      
 801b820:	fb ff 97 c2 	calli 8001728 <__lshrsi3>                      
 801b824:	01 c2 00 01 	srui r2,r14,1                                  
 801b828:	29 84 00 0c 	lw r4,(r12+12)                                 
 801b82c:	00 42 00 01 	srui r2,r2,1                                   
                                                                      
      brc = rtems_rfs_inode_unload (fs, map->inode, true);            
 801b830:	34 03 00 01 	mvi r3,1                                       
 801b834:	00 42 00 01 	srui r2,r2,1                                   
 801b838:	30 81 00 35 	sb (r4+53),r1                                  
 801b83c:	00 42 00 01 	srui r2,r2,1                                   
 801b840:	29 84 00 0c 	lw r4,(r12+12)                                 
 801b844:	00 42 00 01 	srui r2,r2,1                                   
 801b848:	ba 00 08 00 	mv r1,r16                                      
 801b84c:	00 42 00 01 	srui r2,r2,1                                   
 801b850:	00 42 00 01 	srui r2,r2,1                                   
 801b854:	00 42 00 01 	srui r2,r2,1                                   
 801b858:	30 82 00 36 	sb (r4+54),r2                                  
 801b85c:	29 82 00 0c 	lw r2,(r12+12)                                 
 801b860:	30 4e 00 37 	sb (r2+55),r14                                 
 801b864:	29 62 00 04 	lw r2,(r11+4)                                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801b868:	31 91 00 10 	sb (r12+16),r17                                
 801b86c:	fb ff d1 9f 	calli 800fee8 <rtems_rfs_inode_unload>         
 801b870:	b8 20 60 00 	mv r12,r1                                      
 801b874:	34 02 00 1f 	mvi r2,31                                      
 801b878:	a4 20 08 00 	not r1,r1                                      
 801b87c:	f8 00 6d 6d 	calli 8036e30 <__ashrsi3>                      
 801b880:	a1 81 60 00 	and r12,r12,r1                                 
      if (brc > 0)                                                    
        rc = brc;                                                     
                                                                      
      map->dirty = false;                                             
 801b884:	31 60 00 00 	sb (r11+0),r0                                  
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801b888:	35 62 00 38 	addi r2,r11,56                                 
    }                                                                 
  }                                                                   
                                                                      
  map->inode = NULL;                                                  
 801b88c:	59 60 00 04 	sw (r11+4),r0                                  
 801b890:	ba 00 08 00 	mv r1,r16                                      
 801b894:	f8 00 03 7a 	calli 801c67c <rtems_rfs_buffer_handle_release>
 801b898:	ba 00 08 00 	mv r1,r16                                      
  handle->dirty = false;                                              
 801b89c:	31 60 00 38 	sb (r11+56),r0                                 
  handle->bnum  = 0;                                                  
 801b8a0:	59 60 00 3c 	sw (r11+60),r0                                 
  handle->buffer = NULL;                                              
 801b8a4:	59 60 00 40 	sw (r11+64),r0                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801b8a8:	35 62 00 44 	addi r2,r11,68                                 
 801b8ac:	f8 00 03 74 	calli 801c67c <rtems_rfs_buffer_handle_release>
    rc = brc;                                                         
  brc = rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer);      
  if ((brc > 0) && (rc == 0))                                         
    rc = brc;                                                         
  return rc;                                                          
}                                                                     
 801b8b0:	b9 80 08 00 	mv r1,r12                                      
  handle->dirty = false;                                              
 801b8b4:	31 60 00 44 	sb (r11+68),r0                                 
  handle->bnum  = 0;                                                  
 801b8b8:	59 60 00 48 	sw (r11+72),r0                                 
  handle->buffer = NULL;                                              
 801b8bc:	59 60 00 4c 	sw (r11+76),r0                                 
 801b8c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b8c4:	2b 8b 00 28 	lw r11,(sp+40)                                 
 801b8c8:	2b 8c 00 24 	lw r12,(sp+36)                                 
 801b8cc:	2b 8d 00 20 	lw r13,(sp+32)                                 
 801b8d0:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 801b8d4:	2b 8f 00 18 	lw r15,(sp+24)                                 
 801b8d8:	2b 90 00 14 	lw r16,(sp+20)                                 
 801b8dc:	2b 91 00 10 	lw r17,(sp+16)                                 
 801b8e0:	2b 92 00 0c 	lw r18,(sp+12)                                 
 801b8e4:	2b 93 00 08 	lw r19,(sp+8)                                  
 801b8e8:	37 9c 00 28 	addi sp,sp,40                                  
 801b8ec:	c3 a0 00 00 	ret                                            
                                                                      

0801b8f0 <rtems_rfs_block_map_find>: int rtems_rfs_block_map_find (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, rtems_rfs_block_pos* bpos, rtems_rfs_block_no* block) {
 801b8f0:	37 9c ff d4 	addi sp,sp,-44                                 
 801b8f4:	5b 8b 00 28 	sw (sp+40),r11                                 
 801b8f8:	5b 8c 00 24 	sw (sp+36),r12                                 
 801b8fc:	5b 8d 00 20 	sw (sp+32),r13                                 
 801b900:	5b 8e 00 1c 	sw (sp+28),r14                                 
 801b904:	5b 8f 00 18 	sw (sp+24),r15                                 
 801b908:	5b 90 00 14 	sw (sp+20),r16                                 
 801b90c:	5b 91 00 10 	sw (sp+16),r17                                 
 801b910:	5b 92 00 0c 	sw (sp+12),r18                                 
 801b914:	5b 93 00 08 	sw (sp+8),r19                                  
 801b918:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rc = 0;                                                         
                                                                      
  *block = 0;                                                         
 801b91c:	58 80 00 00 	sw (r4+0),r0                                   
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
 801b920:	28 6c 00 00 	lw r12,(r3+0)                                  
int                                                                   
rtems_rfs_block_map_find (rtems_rfs_file_system* fs,                  
                          rtems_rfs_block_map*   map,                 
                          rtems_rfs_block_pos*   bpos,                
                          rtems_rfs_block_no*    block)               
{                                                                     
 801b924:	b8 80 78 00 	mv r15,r4                                      
 801b928:	b8 60 68 00 	mv r13,r3                                      
 801b92c:	b8 20 80 00 	mv r16,r1                                      
 801b930:	b8 40 58 00 	mv r11,r2                                      
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
 801b934:	5d 80 00 24 	bne r12,r0,801b9c4 <rtems_rfs_block_map_find+0xd4>
 801b938:	28 4e 00 08 	lw r14,(r2+8)                                  
    return ENXIO;                                                     
 801b93c:	34 06 00 06 	mvi r6,6                                       
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
 801b940:	51 8e 00 14 	bgeu r12,r14,801b990 <rtems_rfs_block_map_find+0xa0>
    return ENXIO;                                                     
                                                                      
  /*                                                                  
   * If the block position is the same and we have found the block just return it.
   */                                                                 
  if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))         
 801b944:	29 61 00 10 	lw r1,(r11+16)                                 
 801b948:	45 81 00 54 	be r12,r1,801ba98 <rtems_rfs_block_map_find+0x1a8>
    /*                                                                
     * Determine the type of access we need to perform. If the number of blocks
     * is less than or equal to the number of slots in the inode the blocks are
     * directly accessed.                                             
     */                                                               
    if (map->size.count <= RTEMS_RFS_INODE_BLOCKS)                    
 801b94c:	34 01 00 05 	mvi r1,5                                       
 801b950:	55 c1 00 21 	bgu r14,r1,801b9d4 <rtems_rfs_block_map_find+0xe4>
    {                                                                 
      *block = map->blocks[bpos->bno];                                
 801b954:	35 8c 00 08 	addi r12,r12,8                                 
 801b958:	b5 8c 60 00 	add r12,r12,r12                                
 801b95c:	b5 8c 60 00 	add r12,r12,r12                                
 801b960:	b5 6c 60 00 	add r12,r11,r12                                
 801b964:	29 81 00 04 	lw r1,(r12+4)                                  
 801b968:	59 e1 00 00 	sw (r15+0),r1                                  
    }                                                                 
  }                                                                   
                                                                      
  if (rc == 0)                                                        
  {                                                                   
    rtems_rfs_block_copy_bpos (&map->bpos, bpos);                     
 801b96c:	29 a3 00 08 	lw r3,(r13+8)                                  
 801b970:	29 a1 00 04 	lw r1,(r13+4)                                  
 801b974:	29 a2 00 00 	lw r2,(r13+0)                                  
 801b978:	59 63 00 18 	sw (r11+24),r3                                 
 801b97c:	59 61 00 14 	sw (r11+20),r1                                 
 801b980:	59 62 00 10 	sw (r11+16),r2                                 
    map->bpos.block = *block;                                         
 801b984:	29 e1 00 00 	lw r1,(r15+0)                                  
 801b988:	34 06 00 00 	mvi r6,0                                       
 801b98c:	59 61 00 18 	sw (r11+24),r1                                 
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 801b990:	b8 c0 08 00 	mv r1,r6                                       
 801b994:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b998:	2b 8b 00 28 	lw r11,(sp+40)                                 
 801b99c:	2b 8c 00 24 	lw r12,(sp+36)                                 
 801b9a0:	2b 8d 00 20 	lw r13,(sp+32)                                 
 801b9a4:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 801b9a8:	2b 8f 00 18 	lw r15,(sp+24)                                 
 801b9ac:	2b 90 00 14 	lw r16,(sp+20)                                 
 801b9b0:	2b 91 00 10 	lw r17,(sp+16)                                 
 801b9b4:	2b 92 00 0c 	lw r18,(sp+12)                                 
 801b9b8:	2b 93 00 08 	lw r19,(sp+8)                                  
 801b9bc:	37 9c 00 2c 	addi sp,sp,44                                  
 801b9c0:	c3 a0 00 00 	ret                                            
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
 801b9c4:	28 4e 00 08 	lw r14,(r2+8)                                  
    return ENXIO;                                                     
 801b9c8:	34 06 00 06 	mvi r6,6                                       
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
 801b9cc:	5d c0 ff dc 	bne r14,r0,801b93c <rtems_rfs_block_map_find+0x4c><== ALWAYS TAKEN
 801b9d0:	e3 ff ff f0 	bi 801b990 <rtems_rfs_block_map_find+0xa0>     <== NOT EXECUTED
       * The map is either singly or doubly indirect.                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
 801b9d4:	2a 11 00 34 	lw r17,(r16+52)                                
 801b9d8:	b9 80 08 00 	mv r1,r12                                      
 801b9dc:	ba 20 10 00 	mv r2,r17                                      
 801b9e0:	f8 00 6d 94 	calli 8037030 <__umodsi3>                      
      singly = bpos->bno / fs->blocks_per_block;                      
 801b9e4:	ba 20 10 00 	mv r2,r17                                      
       * The map is either singly or doubly indirect.                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
 801b9e8:	b8 20 98 00 	mv r19,r1                                      
      singly = bpos->bno / fs->blocks_per_block;                      
 801b9ec:	b9 80 08 00 	mv r1,r12                                      
 801b9f0:	fb ff 97 81 	calli 80017f4 <__udivsi3>                      
                                                                      
      if (map->size.count <= fs->block_map_singly_blocks)             
 801b9f4:	2a 02 00 38 	lw r2,(r16+56)                                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
      singly = bpos->bno / fs->blocks_per_block;                      
 801b9f8:	5b 81 00 2c 	sw (sp+44),r1                                  
 801b9fc:	b8 20 60 00 	mv r12,r1                                      
                                                                      
      if (map->size.count <= fs->block_map_singly_blocks)             
 801ba00:	55 c2 00 0e 	bgu r14,r2,801ba38 <rtems_rfs_block_map_find+0x148><== NEVER TAKEN
      {                                                               
        /*                                                            
         * This is a single indirect table of blocks anchored off a slot in the
         * inode.                                                     
         */                                                           
        rc = rtems_rfs_block_find_indirect (fs,                       
 801ba04:	34 2c 00 08 	addi r12,r1,8                                  
 801ba08:	b5 8c 60 00 	add r12,r12,r12                                
 801ba0c:	b5 8c 60 00 	add r12,r12,r12                                
 801ba10:	b5 6c 60 00 	add r12,r11,r12                                
 801ba14:	29 83 00 04 	lw r3,(r12+4)                                  
                                              &map->doubly_buffer,    
                                              map->blocks[doubly],    
                                              singly, &singly);       
          if (rc == 0)                                                
          {                                                           
            rc = rtems_rfs_block_find_indirect (fs,                   
 801ba18:	ba 00 08 00 	mv r1,r16                                      
 801ba1c:	35 62 00 38 	addi r2,r11,56                                 
 801ba20:	ba 60 20 00 	mv r4,r19                                      
 801ba24:	b9 e0 28 00 	mv r5,r15                                      
 801ba28:	fb ff fc df 	calli 801ada4 <rtems_rfs_block_find_indirect>  
 801ba2c:	b8 20 30 00 	mv r6,r1                                       
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (rc == 0)                                                        
 801ba30:	5c 20 ff d8 	bne r1,r0,801b990 <rtems_rfs_block_map_find+0xa0><== NEVER TAKEN
 801ba34:	e3 ff ff ce 	bi 801b96c <rtems_rfs_block_map_find+0x7c>     
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
 801ba38:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 801ba3c:	f8 00 6d 7d 	calli 8037030 <__umodsi3>                      <== NOT EXECUTED
 801ba40:	b8 20 90 00 	mv r18,r1                                      <== NOT EXECUTED
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
 801ba44:	2a 01 00 3c 	lw r1,(r16+60)                                 <== NOT EXECUTED
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
 801ba48:	5b 92 00 2c 	sw (sp+44),r18                                 <== NOT EXECUTED
        {                                                             
          /*                                                          
           * This should never happen. Here so Joel can remove once his coverage
           * testing gets to the file systems.                        
           */                                                         
          rc = ENXIO;                                                 
 801ba4c:	34 06 00 06 	mvi r6,6                                       <== NOT EXECUTED
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
 801ba50:	51 c1 ff d0 	bgeu r14,r1,801b990 <rtems_rfs_block_map_find+0xa0><== NOT EXECUTED
        /*                                                            
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
 801ba54:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 801ba58:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ba5c:	fb ff 97 66 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
        {                                                             
          rc = rtems_rfs_block_find_indirect (fs,                     
 801ba60:	34 22 00 08 	addi r2,r1,8                                   <== NOT EXECUTED
 801ba64:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801ba68:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801ba6c:	b5 62 10 00 	add r2,r11,r2                                  <== NOT EXECUTED
 801ba70:	28 43 00 04 	lw r3,(r2+4)                                   <== NOT EXECUTED
 801ba74:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 801ba78:	35 62 00 44 	addi r2,r11,68                                 <== NOT EXECUTED
 801ba7c:	ba 40 20 00 	mv r4,r18                                      <== NOT EXECUTED
 801ba80:	37 85 00 2c 	addi r5,sp,44                                  <== NOT EXECUTED
 801ba84:	fb ff fc c8 	calli 801ada4 <rtems_rfs_block_find_indirect>  <== NOT EXECUTED
 801ba88:	b8 20 30 00 	mv r6,r1                                       <== NOT EXECUTED
                                              &map->doubly_buffer,    
                                              map->blocks[doubly],    
                                              singly, &singly);       
          if (rc == 0)                                                
 801ba8c:	5c 20 ff c1 	bne r1,r0,801b990 <rtems_rfs_block_map_find+0xa0><== NOT EXECUTED
          {                                                           
            rc = rtems_rfs_block_find_indirect (fs,                   
 801ba90:	2b 83 00 2c 	lw r3,(sp+44)                                  <== NOT EXECUTED
 801ba94:	e3 ff ff e1 	bi 801ba18 <rtems_rfs_block_map_find+0x128>    <== NOT EXECUTED
    return ENXIO;                                                     
                                                                      
  /*                                                                  
   * If the block position is the same and we have found the block just return it.
   */                                                                 
  if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))         
 801ba98:	29 61 00 18 	lw r1,(r11+24)                                 
 801ba9c:	44 20 ff ac 	be r1,r0,801b94c <rtems_rfs_block_map_find+0x5c>
 801baa0:	e3 ff ff b2 	bi 801b968 <rtems_rfs_block_map_find+0x78>     
                                                                      

0801bbac <rtems_rfs_block_map_grow>: int rtems_rfs_block_map_grow (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, size_t blocks, rtems_rfs_block_no* new_block) {
 801bbac:	37 9c ff b8 	addi sp,sp,-72                                 
 801bbb0:	5b 8b 00 40 	sw (sp+64),r11                                 
 801bbb4:	5b 8c 00 3c 	sw (sp+60),r12                                 
 801bbb8:	5b 8d 00 38 	sw (sp+56),r13                                 
 801bbbc:	5b 8e 00 34 	sw (sp+52),r14                                 
 801bbc0:	5b 8f 00 30 	sw (sp+48),r15                                 
 801bbc4:	5b 90 00 2c 	sw (sp+44),r16                                 
 801bbc8:	5b 91 00 28 	sw (sp+40),r17                                 
 801bbcc:	5b 92 00 24 	sw (sp+36),r18                                 
 801bbd0:	5b 93 00 20 	sw (sp+32),r19                                 
 801bbd4:	5b 94 00 1c 	sw (sp+28),r20                                 
 801bbd8:	5b 95 00 18 	sw (sp+24),r21                                 
 801bbdc:	5b 96 00 14 	sw (sp+20),r22                                 
 801bbe0:	5b 97 00 10 	sw (sp+16),r23                                 
 801bbe4:	5b 98 00 0c 	sw (sp+12),r24                                 
 801bbe8:	5b 99 00 08 	sw (sp+8),r25                                  
 801bbec:	5b 9d 00 04 	sw (sp+4),ra                                   
 801bbf0:	b8 20 68 00 	mv r13,r1                                      
 801bbf4:	b8 40 58 00 	mv r11,r2                                      
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
 801bbf8:	34 01 00 00 	mvi r1,0                                       
 801bbfc:	34 02 20 00 	mvi r2,8192                                    
int                                                                   
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,                  
                          rtems_rfs_block_map*   map,                 
                          size_t                 blocks,              
                          rtems_rfs_block_no*    new_block)           
{                                                                     
 801bc00:	b8 60 90 00 	mv r18,r3                                      
 801bc04:	b8 80 b8 00 	mv r23,r4                                      
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
 801bc08:	fb ff d9 6e 	calli 80121c0 <rtems_rfs_trace>                
 801bc0c:	5c 20 01 0a 	bne r1,r0,801c034 <rtems_rfs_block_map_grow+0x488><== NEVER TAKEN
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
 801bc10:	29 61 00 08 	lw r1,(r11+8)                                  
 801bc14:	29 a2 00 3c 	lw r2,(r13+60)                                 
    return EFBIG;                                                     
 801bc18:	34 0c 00 1b 	mvi r12,27                                     
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
 801bc1c:	b6 41 08 00 	add r1,r18,r1                                  
 801bc20:	50 22 00 22 	bgeu r1,r2,801bca8 <rtems_rfs_block_map_grow+0xfc><== NEVER TAKEN
      *new_block = block;                                             
    map->last_data_block = block;                                     
    map->dirty = true;                                                
  }                                                                   
                                                                      
  return 0;                                                           
 801bc24:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
 801bc28:	46 40 00 20 	be r18,r0,801bca8 <rtems_rfs_block_map_grow+0xfc><== NEVER TAKEN
 801bc2c:	29 62 00 20 	lw r2,(r11+32)                                 
 801bc30:	34 0e 00 00 	mvi r14,0                                      
    rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block,      
                                       false, &block);                
    if (rc > 0)                                                       
      return rc;                                                      
                                                                      
    if (map->size.count < RTEMS_RFS_INODE_BLOCKS)                     
 801bc34:	34 14 00 04 	mvi r20,4                                      
            return rc;                                                
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
 801bc38:	34 11 00 01 	mvi r17,1                                      
                                      singly,                         
                                      singly_block);                  
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,                   
 801bc3c:	35 78 00 44 	addi r24,r11,68                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801bc40:	35 76 00 38 	addi r22,r11,56                                
         * doubly indirect block as well. Both always occur when direct is 0
         * and the doubly indirect block when singly is 0.            
         */                                                           
        if (direct == 0)                                              
        {                                                             
          rc = rtems_rfs_block_map_indirect_alloc (fs, map,           
 801bc44:	37 99 00 44 	addi r25,sp,68                                 
    /*                                                                
     * Allocate the block. If an indirect block is needed and cannot be
     * allocated free this block.                                     
     */                                                               
                                                                      
    rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block,      
 801bc48:	b9 a0 08 00 	mv r1,r13                                      
 801bc4c:	34 03 00 00 	mvi r3,0                                       
 801bc50:	37 84 00 48 	addi r4,sp,72                                  
 801bc54:	fb ff ce 96 	calli 800f6ac <rtems_rfs_group_bitmap_alloc>   
 801bc58:	b8 20 60 00 	mv r12,r1                                      
                                       false, &block);                
    if (rc > 0)                                                       
 801bc5c:	48 20 00 13 	bg r1,r0,801bca8 <rtems_rfs_block_map_grow+0xfc>
      return rc;                                                      
                                                                      
    if (map->size.count < RTEMS_RFS_INODE_BLOCKS)                     
 801bc60:	29 6c 00 08 	lw r12,(r11+8)                                 
 801bc64:	55 94 00 24 	bgu r12,r20,801bcf4 <rtems_rfs_block_map_grow+0x148>
      map->blocks[map->size.count] = block;                           
 801bc68:	35 81 00 08 	addi r1,r12,8                                  
 801bc6c:	2b 82 00 48 	lw r2,(sp+72)                                  
 801bc70:	b4 21 08 00 	add r1,r1,r1                                   
 801bc74:	b4 21 08 00 	add r1,r1,r1                                   
 801bc78:	b5 61 08 00 	add r1,r11,r1                                  
 801bc7c:	58 22 00 04 	sw (r1+4),r2                                   
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
    }                                                                 
                                                                      
    map->size.count++;                                                
 801bc80:	35 8c 00 01 	addi r12,r12,1                                 
 801bc84:	59 6c 00 08 	sw (r11+8),r12                                 
    map->size.offset = 0;                                             
 801bc88:	59 60 00 0c 	sw (r11+12),r0                                 
                                                                      
    if (b == 0)                                                       
 801bc8c:	5d c0 00 02 	bne r14,r0,801bc94 <rtems_rfs_block_map_grow+0xe8><== NEVER TAKEN
      *new_block = block;                                             
 801bc90:	5a e2 00 00 	sw (r23+0),r2                                  
    map->last_data_block = block;                                     
 801bc94:	59 62 00 20 	sw (r11+32),r2                                 
    map->dirty = true;                                                
 801bc98:	31 71 00 00 	sb (r11+0),r17                                 
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
 801bc9c:	35 ce 00 01 	addi r14,r14,1                                 
 801bca0:	56 4e ff ea 	bgu r18,r14,801bc48 <rtems_rfs_block_map_grow+0x9c><== NEVER TAKEN
      *new_block = block;                                             
    map->last_data_block = block;                                     
    map->dirty = true;                                                
  }                                                                   
                                                                      
  return 0;                                                           
 801bca4:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 801bca8:	b9 80 08 00 	mv r1,r12                                      
 801bcac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801bcb0:	2b 8b 00 40 	lw r11,(sp+64)                                 
 801bcb4:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 801bcb8:	2b 8d 00 38 	lw r13,(sp+56)                                 
 801bcbc:	2b 8e 00 34 	lw r14,(sp+52)                                 
 801bcc0:	2b 8f 00 30 	lw r15,(sp+48)                                 
 801bcc4:	2b 90 00 2c 	lw r16,(sp+44)                                 
 801bcc8:	2b 91 00 28 	lw r17,(sp+40)                                 
 801bccc:	2b 92 00 24 	lw r18,(sp+36)                                 
 801bcd0:	2b 93 00 20 	lw r19,(sp+32)                                 
 801bcd4:	2b 94 00 1c 	lw r20,(sp+28)                                 
 801bcd8:	2b 95 00 18 	lw r21,(sp+24)                                 
 801bcdc:	2b 96 00 14 	lw r22,(sp+20)                                 
 801bce0:	2b 97 00 10 	lw r23,(sp+16)                                 
 801bce4:	2b 98 00 0c 	lw r24,(sp+12)                                 
 801bce8:	2b 99 00 08 	lw r25,(sp+8)                                  
 801bcec:	37 9c 00 48 	addi sp,sp,72                                  
 801bcf0:	c3 a0 00 00 	ret                                            
       * Single indirect access is occuring. It could still be doubly indirect.
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = map->size.count % fs->blocks_per_block;                
 801bcf4:	29 b0 00 34 	lw r16,(r13+52)                                
 801bcf8:	b9 80 08 00 	mv r1,r12                                      
 801bcfc:	ba 00 10 00 	mv r2,r16                                      
 801bd00:	f8 00 6c cc 	calli 8037030 <__umodsi3>                      
 801bd04:	b8 20 78 00 	mv r15,r1                                      
      singly = map->size.count / fs->blocks_per_block;                
 801bd08:	ba 00 10 00 	mv r2,r16                                      
 801bd0c:	b9 80 08 00 	mv r1,r12                                      
 801bd10:	fb ff 96 b9 	calli 80017f4 <__udivsi3>                      
                                                                      
      if (map->size.count < fs->block_map_singly_blocks)              
 801bd14:	29 a5 00 38 	lw r5,(r13+56)                                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = map->size.count % fs->blocks_per_block;                
      singly = map->size.count / fs->blocks_per_block;                
 801bd18:	b8 20 98 00 	mv r19,r1                                      
                                                                      
      if (map->size.count < fs->block_map_singly_blocks)              
 801bd1c:	51 85 00 60 	bgeu r12,r5,801be9c <rtems_rfs_block_map_grow+0x2f0><== NEVER TAKEN
         * Singly indirect tables are being used. Allocate a new block for a
         * mapping table if direct is 0 or we are moving up (upping). If upping
         * move the direct blocks into the table and if not this is the first
         * entry of a new block.                                      
         */                                                           
        if ((direct == 0) ||                                          
 801bd20:	45 e0 00 05 	be r15,r0,801bd34 <rtems_rfs_block_map_grow+0x188><== NEVER TAKEN
            ((singly == 0) && (direct == RTEMS_RFS_INODE_BLOCKS)))    
 801bd24:	65 e2 00 05 	cmpei r2,r15,5                                 
 801bd28:	64 21 00 00 	cmpei r1,r1,0                                  
         * Singly indirect tables are being used. Allocate a new block for a
         * mapping table if direct is 0 or we are moving up (upping). If upping
         * move the direct blocks into the table and if not this is the first
         * entry of a new block.                                      
         */                                                           
        if ((direct == 0) ||                                          
 801bd2c:	a0 41 08 00 	and r1,r2,r1                                   
 801bd30:	44 20 00 b5 	be r1,r0,801c004 <rtems_rfs_block_map_grow+0x458><== NEVER TAKEN
          /*                                                          
           * Upping is when we move from direct to singly indirect.   
           */                                                         
          bool upping;                                                
          upping = map->size.count == RTEMS_RFS_INODE_BLOCKS;         
          rc = rtems_rfs_block_map_indirect_alloc (fs, map,           
 801bd34:	36 73 00 08 	addi r19,r19,8                                 
 801bd38:	b6 73 98 00 	add r19,r19,r19                                
 801bd3c:	b6 73 98 00 	add r19,r19,r19                                
 801bd40:	65 85 00 05 	cmpei r5,r12,5                                 
 801bd44:	b5 73 98 00 	add r19,r11,r19                                
 801bd48:	b9 a0 08 00 	mv r1,r13                                      
 801bd4c:	b9 60 10 00 	mv r2,r11                                      
 801bd50:	ba c0 18 00 	mv r3,r22                                      
 801bd54:	36 64 00 04 	addi r4,r19,4                                  
 801bd58:	fb ff fc 59 	calli 801aebc <rtems_rfs_block_map_indirect_alloc>
 801bd5c:	b8 20 60 00 	mv r12,r1                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                                singly_block, true);  
          if (rc > 0)                                                 
 801bd60:	4c 0c 00 29 	bge r0,r12,801be04 <rtems_rfs_block_map_grow+0x258><== ALWAYS TAKEN
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
 801bd64:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801bd68:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bd6c:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801bd70:	fb ff cf 00 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
            return rc;                                                
 801bd74:	e3 ff ff cd 	bi 801bca8 <rtems_rfs_block_map_grow+0xfc>     <== NOT EXECUTED
              rtems_rfs_group_bitmap_free (fs, false, block);         
              return rc;                                              
            }                                                         
          }                                                           
                                                                      
          rtems_rfs_block_set_number (&map->doubly_buffer,            
 801bd78:	29 62 00 4c 	lw r2,(r11+76)                                 <== NOT EXECUTED
 801bd7c:	2b 81 00 44 	lw r1,(sp+68)                                  <== NOT EXECUTED
 801bd80:	b6 10 60 00 	add r12,r16,r16                                <== NOT EXECUTED
 801bd84:	28 50 00 1c 	lw r16,(r2+28)                                 <== NOT EXECUTED
 801bd88:	b5 8c 60 00 	add r12,r12,r12                                <== NOT EXECUTED
 801bd8c:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 801bd90:	fb ff 96 66 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 801bd94:	b6 0c 80 00 	add r16,r16,r12                                <== NOT EXECUTED
 801bd98:	32 01 00 00 	sb (r16+0),r1                                  <== NOT EXECUTED
 801bd9c:	29 63 00 4c 	lw r3,(r11+76)                                 <== NOT EXECUTED
 801bda0:	2b 81 00 44 	lw r1,(sp+68)                                  <== NOT EXECUTED
 801bda4:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801bda8:	28 70 00 1c 	lw r16,(r3+28)                                 <== NOT EXECUTED
 801bdac:	fb ff 96 5f 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 801bdb0:	b6 0c 80 00 	add r16,r16,r12                                <== NOT EXECUTED
 801bdb4:	32 01 00 01 	sb (r16+1),r1                                  <== NOT EXECUTED
 801bdb8:	2b 85 00 44 	lw r5,(sp+68)                                  <== NOT EXECUTED
 801bdbc:	29 61 00 4c 	lw r1,(r11+76)                                 <== NOT EXECUTED
 801bdc0:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bdc4:	28 21 00 1c 	lw r1,(r1+28)                                  <== NOT EXECUTED
 801bdc8:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bdcc:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bdd0:	b4 2c 08 00 	add r1,r1,r12                                  <== NOT EXECUTED
 801bdd4:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bdd8:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bddc:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bde0:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bde4:	00 a5 00 01 	srui r5,r5,1                                   <== NOT EXECUTED
 801bde8:	30 25 00 02 	sb (r1+2),r5                                   <== NOT EXECUTED
 801bdec:	29 61 00 4c 	lw r1,(r11+76)                                 <== NOT EXECUTED
 801bdf0:	28 21 00 1c 	lw r1,(r1+28)                                  <== NOT EXECUTED
 801bdf4:	b4 2c 60 00 	add r12,r1,r12                                 <== NOT EXECUTED
 801bdf8:	2b 81 00 44 	lw r1,(sp+68)                                  <== NOT EXECUTED
 801bdfc:	31 81 00 03 	sb (r12+3),r1                                  <== NOT EXECUTED
 801be00:	31 71 00 44 	sb (r11+68),r17                                <== NOT EXECUTED
            return rc;                                                
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
 801be04:	29 65 00 40 	lw r5,(r11+64)                                 
 801be08:	2b 81 00 48 	lw r1,(sp+72)                                  
 801be0c:	b5 ef 60 00 	add r12,r15,r15                                
 801be10:	28 af 00 1c 	lw r15,(r5+28)                                 
 801be14:	b5 8c 60 00 	add r12,r12,r12                                
 801be18:	34 02 00 18 	mvi r2,24                                      
 801be1c:	fb ff 96 43 	calli 8001728 <__lshrsi3>                      
 801be20:	b5 ec 78 00 	add r15,r15,r12                                
 801be24:	31 e1 00 00 	sb (r15+0),r1                                  
 801be28:	29 65 00 40 	lw r5,(r11+64)                                 
 801be2c:	2b 81 00 48 	lw r1,(sp+72)                                  
 801be30:	34 02 00 10 	mvi r2,16                                      
 801be34:	28 af 00 1c 	lw r15,(r5+28)                                 
 801be38:	fb ff 96 3c 	calli 8001728 <__lshrsi3>                      
 801be3c:	b5 ec 78 00 	add r15,r15,r12                                
 801be40:	31 e1 00 01 	sb (r15+1),r1                                  
 801be44:	2b 85 00 48 	lw r5,(sp+72)                                  
 801be48:	29 61 00 40 	lw r1,(r11+64)                                 
 801be4c:	00 a5 00 01 	srui r5,r5,1                                   
 801be50:	28 21 00 1c 	lw r1,(r1+28)                                  
 801be54:	00 a5 00 01 	srui r5,r5,1                                   
 801be58:	00 a5 00 01 	srui r5,r5,1                                   
 801be5c:	b4 2c 08 00 	add r1,r1,r12                                  
 801be60:	00 a5 00 01 	srui r5,r5,1                                   
 801be64:	00 a5 00 01 	srui r5,r5,1                                   
 801be68:	00 a5 00 01 	srui r5,r5,1                                   
 801be6c:	00 a5 00 01 	srui r5,r5,1                                   
 801be70:	00 a5 00 01 	srui r5,r5,1                                   
 801be74:	30 25 00 02 	sb (r1+2),r5                                   
 801be78:	29 61 00 40 	lw r1,(r11+64)                                 
 801be7c:	28 21 00 1c 	lw r1,(r1+28)                                  
 801be80:	b4 2c 60 00 	add r12,r1,r12                                 
 801be84:	2b 81 00 48 	lw r1,(sp+72)                                  
 801be88:	31 81 00 03 	sb (r12+3),r1                                  
 801be8c:	29 6c 00 08 	lw r12,(r11+8)                                 
 801be90:	2b 82 00 48 	lw r2,(sp+72)                                  
 801be94:	31 71 00 38 	sb (r11+56),r17                                
 801be98:	e3 ff ff 7a 	bi 801bc80 <rtems_rfs_block_map_grow+0xd4>     
         * Doubly indirect tables are being used.                     
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no singly_block;                              
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
 801be9c:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 801bea0:	fb ff 96 55 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
 801bea4:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
         * Doubly indirect tables are being used.                     
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no singly_block;                              
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
 801bea8:	b8 20 a8 00 	mv r21,r1                                      <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
 801beac:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 801beb0:	f8 00 6c 60 	calli 8037030 <__umodsi3>                      <== NOT EXECUTED
 801beb4:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
         * Allocate a new block for a singly indirect table if direct is 0 as
         * it is the first entry of a new block. We may also need to allocate a
         * doubly indirect block as well. Both always occur when direct is 0
         * and the doubly indirect block when singly is 0.            
         */                                                           
        if (direct == 0)                                              
 801beb8:	5d e0 00 26 	bne r15,r0,801bf50 <rtems_rfs_block_map_grow+0x3a4><== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_block_map_indirect_alloc (fs, map,           
 801bebc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bec0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801bec4:	ba c0 18 00 	mv r3,r22                                      <== NOT EXECUTED
 801bec8:	bb 20 20 00 	mv r4,r25                                      <== NOT EXECUTED
 801becc:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
 801bed0:	fb ff fb fb 	calli 801aebc <rtems_rfs_block_map_indirect_alloc><== NOT EXECUTED
 801bed4:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                   &map->singly_buffer,
                                                   &singly_block,     
                                                   false);            
          if (rc > 0)                                                 
 801bed8:	4d e1 00 02 	bge r15,r1,801bee0 <rtems_rfs_block_map_grow+0x334><== NOT EXECUTED
 801bedc:	e3 ff ff a2 	bi 801bd64 <rtems_rfs_block_map_grow+0x1b8>    <== NOT EXECUTED
                                                                      
          /*                                                          
           * Allocate a new block for a doubly indirect table if singly is 0 as
           * it is the first entry of a new singly indirect block.    
           */                                                         
          if ((singly == 0) ||                                        
 801bee0:	46 00 00 05 	be r16,r0,801bef4 <rtems_rfs_block_map_grow+0x348><== NOT EXECUTED
              ((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS)))  
 801bee4:	66 13 00 05 	cmpei r19,r16,5                                <== NOT EXECUTED
 801bee8:	66 a1 00 00 	cmpei r1,r21,0                                 <== NOT EXECUTED
                                                                      
          /*                                                          
           * Allocate a new block for a doubly indirect table if singly is 0 as
           * it is the first entry of a new singly indirect block.    
           */                                                         
          if ((singly == 0) ||                                        
 801beec:	a2 61 98 00 	and r19,r19,r1                                 <== NOT EXECUTED
 801bef0:	46 60 00 57 	be r19,r0,801c04c <rtems_rfs_block_map_grow+0x4a0><== NOT EXECUTED
              ((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS)))  
          {                                                           
            bool upping;                                              
            upping = map->size.count == fs->block_map_singly_blocks;  
            rc = rtems_rfs_block_map_indirect_alloc (fs, map,         
 801bef4:	29 a1 00 38 	lw r1,(r13+56)                                 <== NOT EXECUTED
 801bef8:	29 65 00 08 	lw r5,(r11+8)                                  <== NOT EXECUTED
 801befc:	36 b5 00 08 	addi r21,r21,8                                 <== NOT EXECUTED
 801bf00:	b6 b5 a8 00 	add r21,r21,r21                                <== NOT EXECUTED
 801bf04:	b6 b5 a8 00 	add r21,r21,r21                                <== NOT EXECUTED
 801bf08:	e4 a1 28 00 	cmpe r5,r5,r1                                  <== NOT EXECUTED
 801bf0c:	b5 75 a8 00 	add r21,r11,r21                                <== NOT EXECUTED
 801bf10:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bf14:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801bf18:	bb 00 18 00 	mv r3,r24                                      <== NOT EXECUTED
 801bf1c:	36 a4 00 04 	addi r4,r21,4                                  <== NOT EXECUTED
 801bf20:	fb ff fb e7 	calli 801aebc <rtems_rfs_block_map_indirect_alloc><== NOT EXECUTED
 801bf24:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                     &map->doubly_buffer,
                                                     &map->blocks[doubly],
                                                     upping);         
            if (rc > 0)                                               
 801bf28:	4c 01 ff 94 	bge r0,r1,801bd78 <rtems_rfs_block_map_grow+0x1cc><== NOT EXECUTED
          {                                                           
            rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
                                                  map->blocks[doubly], true);
            if (rc > 0)                                               
            {                                                         
              rtems_rfs_group_bitmap_free (fs, false, singly_block);  
 801bf2c:	2b 83 00 44 	lw r3,(sp+68)                                  <== NOT EXECUTED
 801bf30:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bf34:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801bf38:	fb ff ce 8e 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
              rtems_rfs_group_bitmap_free (fs, false, block);         
 801bf3c:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801bf40:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bf44:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801bf48:	fb ff ce 8a 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
              return rc;                                              
 801bf4c:	e3 ff ff 57 	bi 801bca8 <rtems_rfs_block_map_grow+0xfc>     <== NOT EXECUTED
                                      singly,                         
                                      singly_block);                  
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,                   
 801bf50:	36 a1 00 08 	addi r1,r21,8                                  <== NOT EXECUTED
 801bf54:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bf58:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 801bf5c:	b5 61 08 00 	add r1,r11,r1                                  <== NOT EXECUTED
 801bf60:	28 23 00 04 	lw r3,(r1+4)                                   <== NOT EXECUTED
 801bf64:	bb 00 10 00 	mv r2,r24                                      <== NOT EXECUTED
 801bf68:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bf6c:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801bf70:	f8 00 02 35 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 801bf74:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                &map->doubly_buffer,  
                                                map->blocks[doubly],  
                                                true);                
          if (rc > 0)                                                 
 801bf78:	4c 01 00 02 	bge r0,r1,801bf80 <rtems_rfs_block_map_grow+0x3d4><== NOT EXECUTED
 801bf7c:	e3 ff ff 7a 	bi 801bd64 <rtems_rfs_block_map_grow+0x1b8>    <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
            return rc;                                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
 801bf80:	29 61 00 4c 	lw r1,(r11+76)                                 <== NOT EXECUTED
 801bf84:	b6 10 80 00 	add r16,r16,r16                                <== NOT EXECUTED
 801bf88:	b6 10 80 00 	add r16,r16,r16                                <== NOT EXECUTED
 801bf8c:	28 21 00 1c 	lw r1,(r1+28)                                  <== NOT EXECUTED
 801bf90:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 801bf94:	b4 30 80 00 	add r16,r1,r16                                 <== NOT EXECUTED
 801bf98:	42 01 00 00 	lbu r1,(r16+0)                                 <== NOT EXECUTED
 801bf9c:	42 0c 00 03 	lbu r12,(r16+3)                                <== NOT EXECUTED
 801bfa0:	f8 00 6b 7d 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801bfa4:	b9 81 60 00 	or r12,r12,r1                                  <== NOT EXECUTED
 801bfa8:	42 01 00 01 	lbu r1,(r16+1)                                 <== NOT EXECUTED
 801bfac:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801bfb0:	f8 00 6b 79 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801bfb4:	42 05 00 02 	lbu r5,(r16+2)                                 <== NOT EXECUTED
 801bfb8:	b9 81 08 00 	or r1,r12,r1                                   <== NOT EXECUTED
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801bfbc:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
            return rc;                                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
 801bfc0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfc4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfc8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfcc:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfd0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfd4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfd8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfdc:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801bfe0:	b8 25 28 00 	or r5,r1,r5                                    <== NOT EXECUTED
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801bfe4:	b8 a0 18 00 	mv r3,r5                                       <== NOT EXECUTED
 801bfe8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801bfec:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
            return rc;                                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
 801bff0:	5b 85 00 44 	sw (sp+68),r5                                  <== NOT EXECUTED
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801bff4:	f8 00 02 14 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 801bff8:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                singly_block, true);  
          if (rc > 0)                                                 
 801bffc:	4c 0c ff 82 	bge r0,r12,801be04 <rtems_rfs_block_map_grow+0x258><== NOT EXECUTED
 801c000:	e3 ff ff 59 	bi 801bd64 <rtems_rfs_block_map_grow+0x1b8>    <== NOT EXECUTED
                                                   &map->blocks[singly],
                                                   upping);           
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,  &map->singly_buffer,
 801c004:	36 73 00 08 	addi r19,r19,8                                 
 801c008:	b6 73 98 00 	add r19,r19,r19                                
 801c00c:	b6 73 98 00 	add r19,r19,r19                                
 801c010:	b5 73 98 00 	add r19,r11,r19                                
 801c014:	2a 63 00 04 	lw r3,(r19+4)                                  
 801c018:	b9 a0 08 00 	mv r1,r13                                      
 801c01c:	ba c0 10 00 	mv r2,r22                                      
 801c020:	34 04 00 01 	mvi r4,1                                       
 801c024:	f8 00 02 08 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801c028:	b8 20 60 00 	mv r12,r1                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                                singly_block, true);  
          if (rc > 0)                                                 
 801c02c:	4c 0c ff 76 	bge r0,r12,801be04 <rtems_rfs_block_map_grow+0x258>
 801c030:	e3 ff ff 4d 	bi 801bd64 <rtems_rfs_block_map_grow+0x1b8>    <== NOT EXECUTED
                          rtems_rfs_block_no*    new_block)           
{                                                                     
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
 801c034:	29 63 00 08 	lw r3,(r11+8)                                  <== NOT EXECUTED
 801c038:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c03c:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 801c040:	38 21 ab 18 	ori r1,r1,0xab18                               <== NOT EXECUTED
 801c044:	f8 00 23 15 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c048:	e3 ff fe f2 	bi 801bc10 <rtems_rfs_block_map_grow+0x64>     <== NOT EXECUTED
              return rc;                                              
            }                                                         
          }                                                           
          else                                                        
          {                                                           
            rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
 801c04c:	36 b5 00 08 	addi r21,r21,8                                 <== NOT EXECUTED
 801c050:	b6 b5 a8 00 	add r21,r21,r21                                <== NOT EXECUTED
 801c054:	b6 b5 a8 00 	add r21,r21,r21                                <== NOT EXECUTED
 801c058:	b5 75 a8 00 	add r21,r11,r21                                <== NOT EXECUTED
 801c05c:	2a a3 00 04 	lw r3,(r21+4)                                  <== NOT EXECUTED
 801c060:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801c064:	bb 00 10 00 	mv r2,r24                                      <== NOT EXECUTED
 801c068:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801c06c:	f8 00 01 f6 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 801c070:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
                                                  map->blocks[doubly], true);
            if (rc > 0)                                               
 801c074:	4e 61 ff 41 	bge r19,r1,801bd78 <rtems_rfs_block_map_grow+0x1cc><== NOT EXECUTED
 801c078:	e3 ff ff ad 	bi 801bf2c <rtems_rfs_block_map_grow+0x380>    <== NOT EXECUTED
                                                                      

0801aebc <rtems_rfs_block_map_indirect_alloc>: rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, rtems_rfs_buffer_handle* buffer, rtems_rfs_block_no* block, bool upping) {
 801aebc:	37 9c ff d8 	addi sp,sp,-40                                 
 801aec0:	5b 8b 00 24 	sw (sp+36),r11                                 
 801aec4:	5b 8c 00 20 	sw (sp+32),r12                                 
 801aec8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 801aecc:	5b 8e 00 18 	sw (sp+24),r14                                 
 801aed0:	5b 8f 00 14 	sw (sp+20),r15                                 
 801aed4:	5b 90 00 10 	sw (sp+16),r16                                 
 801aed8:	5b 91 00 0c 	sw (sp+12),r17                                 
 801aedc:	5b 92 00 08 	sw (sp+8),r18                                  
 801aee0:	5b 9d 00 04 	sw (sp+4),ra                                   
 801aee4:	b8 40 68 00 	mv r13,r2                                      
  int                  rc;                                            
  /*                                                                  
   * Save the new block locally because upping can have *block pointing to the
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
 801aee8:	28 42 00 1c 	lw r2,(r2+28)                                  
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system*   fs,      
                                    rtems_rfs_block_map*     map,     
                                    rtems_rfs_buffer_handle* buffer,  
                                    rtems_rfs_block_no*      block,   
                                    bool                     upping)  
{                                                                     
 801aeec:	b8 60 60 00 	mv r12,r3                                      
 801aef0:	b8 80 78 00 	mv r15,r4                                      
  int                  rc;                                            
  /*                                                                  
   * Save the new block locally because upping can have *block pointing to the
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
 801aef4:	34 03 00 00 	mvi r3,0                                       
 801aef8:	37 84 00 28 	addi r4,sp,40                                  
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system*   fs,      
                                    rtems_rfs_block_map*     map,     
                                    rtems_rfs_buffer_handle* buffer,  
                                    rtems_rfs_block_no*      block,   
                                    bool                     upping)  
{                                                                     
 801aefc:	b8 20 70 00 	mv r14,r1                                      
 801af00:	b8 a0 80 00 	mv r16,r5                                      
  int                  rc;                                            
  /*                                                                  
   * Save the new block locally because upping can have *block pointing to the
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
 801af04:	fb ff d1 ea 	calli 800f6ac <rtems_rfs_group_bitmap_alloc>   
 801af08:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801af0c:	48 20 00 0c 	bg r1,r0,801af3c <rtems_rfs_block_map_indirect_alloc+0x80><== NEVER TAKEN
    return rc;                                                        
  rc = rtems_rfs_buffer_handle_request (fs, buffer, new_block, false);
 801af10:	2b 83 00 28 	lw r3,(sp+40)                                  
 801af14:	b9 c0 08 00 	mv r1,r14                                      
 801af18:	b9 80 10 00 	mv r2,r12                                      
 801af1c:	34 04 00 00 	mvi r4,0                                       
 801af20:	f8 00 06 49 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801af24:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801af28:	4c 01 00 11 	bge r0,r1,801af6c <rtems_rfs_block_map_indirect_alloc+0xb0><== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_group_bitmap_free (fs, false, new_block);               
 801af2c:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 801af30:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801af34:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801af38:	fb ff d2 8e 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
  *block = new_block;                                                 
  map->last_map_block = new_block;                                    
  return 0;                                                           
}                                                                     
 801af3c:	b9 60 08 00 	mv r1,r11                                      
 801af40:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801af44:	2b 8b 00 24 	lw r11,(sp+36)                                 
 801af48:	2b 8c 00 20 	lw r12,(sp+32)                                 
 801af4c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 801af50:	2b 8e 00 18 	lw r14,(sp+24)                                 
 801af54:	2b 8f 00 14 	lw r15,(sp+20)                                 
 801af58:	2b 90 00 10 	lw r16,(sp+16)                                 
 801af5c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 801af60:	2b 92 00 08 	lw r18,(sp+8)                                  
 801af64:	37 9c 00 28 	addi sp,sp,40                                  
 801af68:	c3 a0 00 00 	ret                                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_group_bitmap_free (fs, false, new_block);               
    return rc;                                                        
  }                                                                   
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
 801af6c:	29 81 00 08 	lw r1,(r12+8)                                  
 801af70:	29 c3 00 08 	lw r3,(r14+8)                                  
 801af74:	34 02 00 ff 	mvi r2,255                                     
 801af78:	28 21 00 1c 	lw r1,(r1+28)                                  
 801af7c:	f8 00 26 ab 	calli 8024a28 <memset>                         
  if (upping)                                                         
 801af80:	5e 00 00 08 	bne r16,r0,801afa0 <rtems_rfs_block_map_indirect_alloc+0xe4><== ALWAYS TAKEN
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
  *block = new_block;                                                 
 801af84:	2b 81 00 28 	lw r1,(sp+40)                                  
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
 801af88:	34 02 00 01 	mvi r2,1                                       
 801af8c:	31 82 00 00 	sb (r12+0),r2                                  
  *block = new_block;                                                 
 801af90:	59 e1 00 00 	sw (r15+0),r1                                  
  map->last_map_block = new_block;                                    
 801af94:	59 a1 00 1c 	sw (r13+28),r1                                 
  return 0;                                                           
 801af98:	34 0b 00 00 	mvi r11,0                                      
 801af9c:	e3 ff ff e8 	bi 801af3c <rtems_rfs_block_map_indirect_alloc+0x80>
  }                                                                   
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
  if (upping)                                                         
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
 801afa0:	34 01 00 00 	mvi r1,0                                       
 801afa4:	34 02 20 00 	mvi r2,8192                                    
 801afa8:	fb ff dc 86 	calli 80121c0 <rtems_rfs_trace>                
 801afac:	5c 20 00 30 	bne r1,r0,801b06c <rtems_rfs_block_map_indirect_alloc+0x1b0><== NEVER TAKEN
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
 801afb0:	b9 a0 70 00 	mv r14,r13                                     
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system*   fs,      
                                    rtems_rfs_block_map*     map,     
                                    rtems_rfs_buffer_handle* buffer,  
                                    rtems_rfs_block_no*      block,   
                                    bool                     upping)  
{                                                                     
 801afb4:	34 0b 00 00 	mvi r11,0                                      
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
 801afb8:	34 12 00 01 	mvi r18,1                                      
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
 801afbc:	34 11 00 14 	mvi r17,20                                     
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
 801afc0:	29 83 00 08 	lw r3,(r12+8)                                  
 801afc4:	29 c1 00 24 	lw r1,(r14+36)                                 
 801afc8:	34 02 00 18 	mvi r2,24                                      
 801afcc:	28 70 00 1c 	lw r16,(r3+28)                                 
 801afd0:	fb ff 99 d6 	calli 8001728 <__lshrsi3>                      
 801afd4:	34 02 00 10 	mvi r2,16                                      
 801afd8:	b6 0b 80 00 	add r16,r16,r11                                
 801afdc:	32 01 00 00 	sb (r16+0),r1                                  
 801afe0:	29 83 00 08 	lw r3,(r12+8)                                  
 801afe4:	29 c1 00 24 	lw r1,(r14+36)                                 
 801afe8:	28 70 00 1c 	lw r16,(r3+28)                                 
 801afec:	fb ff 99 cf 	calli 8001728 <__lshrsi3>                      
 801aff0:	b6 0b 80 00 	add r16,r16,r11                                
 801aff4:	32 01 00 01 	sb (r16+1),r1                                  
 801aff8:	29 c1 00 24 	lw r1,(r14+36)                                 
 801affc:	29 82 00 08 	lw r2,(r12+8)                                  
 801b000:	00 21 00 01 	srui r1,r1,1                                   
 801b004:	28 42 00 1c 	lw r2,(r2+28)                                  
 801b008:	00 21 00 01 	srui r1,r1,1                                   
 801b00c:	00 21 00 01 	srui r1,r1,1                                   
 801b010:	b4 4b 10 00 	add r2,r2,r11                                  
 801b014:	00 21 00 01 	srui r1,r1,1                                   
 801b018:	00 21 00 01 	srui r1,r1,1                                   
 801b01c:	00 21 00 01 	srui r1,r1,1                                   
 801b020:	00 21 00 01 	srui r1,r1,1                                   
 801b024:	00 21 00 01 	srui r1,r1,1                                   
 801b028:	30 41 00 02 	sb (r2+2),r1                                   
 801b02c:	29 81 00 08 	lw r1,(r12+8)                                  
 801b030:	29 c2 00 24 	lw r2,(r14+36)                                 
 801b034:	35 ce 00 04 	addi r14,r14,4                                 
 801b038:	28 21 00 1c 	lw r1,(r1+28)                                  
 801b03c:	b4 2b 08 00 	add r1,r1,r11                                  
 801b040:	30 22 00 03 	sb (r1+3),r2                                   
 801b044:	31 92 00 00 	sb (r12+0),r18                                 
 801b048:	35 6b 00 04 	addi r11,r11,4                                 
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
 801b04c:	5d 71 ff dd 	bne r11,r17,801afc0 <rtems_rfs_block_map_indirect_alloc+0x104><== NEVER TAKEN
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
 801b050:	35 a1 00 24 	addi r1,r13,36                                 
 801b054:	59 a0 00 24 	sw (r13+36),r0                                 
 801b058:	58 20 00 04 	sw (r1+4),r0                                   
 801b05c:	58 20 00 08 	sw (r1+8),r0                                   
 801b060:	58 20 00 0c 	sw (r1+12),r0                                  
 801b064:	58 20 00 10 	sw (r1+16),r0                                  
 801b068:	e3 ff ff c7 	bi 801af84 <rtems_rfs_block_map_indirect_alloc+0xc8>
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
  if (upping)                                                         
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
 801b06c:	29 a2 00 08 	lw r2,(r13+8)                                  <== NOT EXECUTED
 801b070:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801b074:	38 21 aa e4 	ori r1,r1,0xaae4                               <== NOT EXECUTED
 801b078:	f8 00 27 08 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801b07c:	e3 ff ff cd 	bi 801afb0 <rtems_rfs_block_map_indirect_alloc+0xf4><== NOT EXECUTED
                                                                      

0801b080 <rtems_rfs_block_map_indirect_shrink.clone.11>: * @param indirect The index index in the inode's block table. * @param index The index in the indirect table of the block. * @return int The error number (errno). No error if 0. */ static int rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system* fs,
 801b080:	37 9c ff dc 	addi sp,sp,-36                                 
 801b084:	5b 8b 00 24 	sw (sp+36),r11                                 
 801b088:	5b 8c 00 20 	sw (sp+32),r12                                 
 801b08c:	5b 8d 00 1c 	sw (sp+28),r13                                 
 801b090:	5b 8e 00 18 	sw (sp+24),r14                                 
 801b094:	5b 8f 00 14 	sw (sp+20),r15                                 
 801b098:	5b 90 00 10 	sw (sp+16),r16                                 
 801b09c:	5b 91 00 0c 	sw (sp+12),r17                                 
 801b0a0:	5b 92 00 08 	sw (sp+8),r18                                  
 801b0a4:	5b 9d 00 04 	sw (sp+4),ra                                   
 801b0a8:	b8 20 90 00 	mv r18,r1                                      
 801b0ac:	b8 40 78 00 	mv r15,r2                                      
   * block to be freed and the indirect block is now also free, or we have only
   * one indirect table and we can fit the remaining blocks into the inode,
   * then either move to the next indirect block or move the remaining blocks
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
 801b0b0:	44 a0 00 36 	be r5,r0,801b188 <rtems_rfs_block_map_indirect_shrink.clone.11+0x108><== NEVER TAKEN
      ((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))         
 801b0b4:	64 a5 00 05 	cmpei r5,r5,5                                  
 801b0b8:	64 84 00 00 	cmpei r4,r4,0                                  
                                     rtems_rfs_block_map*     map,    
                                     rtems_rfs_buffer_handle* buffer, 
                                     rtems_rfs_block_no       indirect,
                                     rtems_rfs_block_no       index)  
{                                                                     
  int rc = 0;                                                         
 801b0bc:	34 01 00 00 	mvi r1,0                                       
   * block to be freed and the indirect block is now also free, or we have only
   * one indirect table and we can fit the remaining blocks into the inode,
   * then either move to the next indirect block or move the remaining blocks
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
 801b0c0:	a0 a4 20 00 	and r4,r5,r4                                   
 801b0c4:	44 80 00 26 	be r4,r0,801b15c <rtems_rfs_block_map_indirect_shrink.clone.11+0xdc>
      ((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))         
  {                                                                   
    rtems_rfs_block_no block_to_free = map->blocks[indirect];         
 801b0c8:	28 61 00 00 	lw r1,(r3+0)                                   
 801b0cc:	28 50 00 24 	lw r16,(r2+36)                                 
 801b0d0:	b8 40 68 00 	mv r13,r2                                      
 801b0d4:	28 2b 00 1c 	lw r11,(r1+28)                                 
 801b0d8:	34 0c 00 00 	mvi r12,0                                      
    {                                                                 
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
 801b0dc:	34 11 00 05 	mvi r17,5                                      
        map->blocks[b] = rtems_rfs_block_get_number (buffer, b);      
 801b0e0:	41 61 00 00 	lbu r1,(r11+0)                                 
 801b0e4:	34 02 00 18 	mvi r2,24                                      
    {                                                                 
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
 801b0e8:	35 8c 00 01 	addi r12,r12,1                                 
        map->blocks[b] = rtems_rfs_block_get_number (buffer, b);      
 801b0ec:	f8 00 6f 2a 	calli 8036d94 <__ashlsi3>                      
 801b0f0:	b8 20 70 00 	mv r14,r1                                      
 801b0f4:	41 61 00 01 	lbu r1,(r11+1)                                 
 801b0f8:	34 02 00 10 	mvi r2,16                                      
 801b0fc:	f8 00 6f 26 	calli 8036d94 <__ashlsi3>                      
 801b100:	41 64 00 02 	lbu r4,(r11+2)                                 
 801b104:	41 66 00 03 	lbu r6,(r11+3)                                 
 801b108:	b9 c1 28 00 	or r5,r14,r1                                   
 801b10c:	b4 84 20 00 	add r4,r4,r4                                   
 801b110:	b4 84 20 00 	add r4,r4,r4                                   
 801b114:	b4 84 20 00 	add r4,r4,r4                                   
 801b118:	b4 84 20 00 	add r4,r4,r4                                   
 801b11c:	b4 84 20 00 	add r4,r4,r4                                   
 801b120:	b4 84 20 00 	add r4,r4,r4                                   
 801b124:	b4 84 20 00 	add r4,r4,r4                                   
 801b128:	b8 a6 28 00 	or r5,r5,r6                                    
 801b12c:	b4 84 20 00 	add r4,r4,r4                                   
 801b130:	b8 a4 20 00 	or r4,r5,r4                                    
 801b134:	59 a4 00 24 	sw (r13+36),r4                                 
    {                                                                 
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
 801b138:	35 6b 00 04 	addi r11,r11,4                                 
 801b13c:	35 ad 00 04 	addi r13,r13,4                                 
 801b140:	5d 91 ff e8 	bne r12,r17,801b0e0 <rtems_rfs_block_map_indirect_shrink.clone.11+0x60>
       * One less singly indirect block in the inode.                 
       */                                                             
      map->blocks[indirect] = 0;                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
 801b144:	ba 40 08 00 	mv r1,r18                                      
 801b148:	34 02 00 00 	mvi r2,0                                       
 801b14c:	ba 00 18 00 	mv r3,r16                                      
 801b150:	fb ff d2 08 	calli 800f970 <rtems_rfs_group_bitmap_free>    
    if (rc > 0)                                                       
 801b154:	48 20 00 02 	bg r1,r0,801b15c <rtems_rfs_block_map_indirect_shrink.clone.11+0xdc><== NEVER TAKEN
      return rc;                                                      
                                                                      
    map->last_map_block = block_to_free;                              
 801b158:	59 f0 00 1c 	sw (r15+28),r16                                
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 801b15c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b160:	2b 8b 00 24 	lw r11,(sp+36)                                 
 801b164:	2b 8c 00 20 	lw r12,(sp+32)                                 
 801b168:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 801b16c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 801b170:	2b 8f 00 14 	lw r15,(sp+20)                                 
 801b174:	2b 90 00 10 	lw r16,(sp+16)                                 
 801b178:	2b 91 00 0c 	lw r17,(sp+12)                                 
 801b17c:	2b 92 00 08 	lw r18,(sp+8)                                  
 801b180:	37 9c 00 24 	addi sp,sp,36                                  
 801b184:	c3 a0 00 00 	ret                                            
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
      ((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))         
  {                                                                   
    rtems_rfs_block_no block_to_free = map->blocks[indirect];         
 801b188:	34 84 00 08 	addi r4,r4,8                                   <== NOT EXECUTED
 801b18c:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 801b190:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 801b194:	b4 44 20 00 	add r4,r2,r4                                   <== NOT EXECUTED
 801b198:	28 90 00 04 	lw r16,(r4+4)                                  <== NOT EXECUTED
       * One less singly indirect block in the inode.                 
       */                                                             
      map->blocks[indirect] = 0;                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
 801b19c:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
    else                                                              
    {                                                                 
      /*                                                              
       * One less singly indirect block in the inode.                 
       */                                                             
      map->blocks[indirect] = 0;                                      
 801b1a0:	58 80 00 04 	sw (r4+4),r0                                   <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
 801b1a4:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801b1a8:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 801b1ac:	fb ff d1 f1 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
    if (rc > 0)                                                       
 801b1b0:	48 20 ff eb 	bg r1,r0,801b15c <rtems_rfs_block_map_indirect_shrink.clone.11+0xdc><== NOT EXECUTED
      return rc;                                                      
                                                                      
    map->last_map_block = block_to_free;                              
 801b1b4:	59 f0 00 1c 	sw (r15+28),r16                                <== NOT EXECUTED
 801b1b8:	e3 ff ff e9 	bi 801b15c <rtems_rfs_block_map_indirect_shrink.clone.11+0xdc><== NOT EXECUTED
                                                                      

0801b374 <rtems_rfs_block_map_open>: int rtems_rfs_block_map_open (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* inode, rtems_rfs_block_map* map) {
 801b374:	37 9c ff d4 	addi sp,sp,-44                                 
 801b378:	5b 8b 00 2c 	sw (sp+44),r11                                 
 801b37c:	5b 8c 00 28 	sw (sp+40),r12                                 
 801b380:	5b 8d 00 24 	sw (sp+36),r13                                 
 801b384:	5b 8e 00 20 	sw (sp+32),r14                                 
 801b388:	5b 8f 00 1c 	sw (sp+28),r15                                 
 801b38c:	5b 90 00 18 	sw (sp+24),r16                                 
 801b390:	5b 91 00 14 	sw (sp+20),r17                                 
 801b394:	5b 92 00 10 	sw (sp+16),r18                                 
 801b398:	5b 93 00 0c 	sw (sp+12),r19                                 
 801b39c:	5b 94 00 08 	sw (sp+8),r20                                  
 801b3a0:	5b 9d 00 04 	sw (sp+4),ra                                   
   * Set the count to 0 so at least find fails, then open the handle and make
   * sure the inode has been loaded into memory. If we did not load the inode
   * do not unload it. The caller may assume it is still loaded when we return.
   */                                                                 
                                                                      
  map->dirty = false;                                                 
 801b3a4:	30 60 00 00 	sb (r3+0),r0                                   
  map->inode = NULL;                                                  
 801b3a8:	58 60 00 04 	sw (r3+4),r0                                   
 * @param size A pointer to the block size.                           
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)            
{                                                                     
  size->count = 0;                                                    
 801b3ac:	58 60 00 08 	sw (r3+8),r0                                   
  size->offset = 0;                                                   
 801b3b0:	58 60 00 0c 	sw (r3+12),r0                                  
 * @param bpos A pointer to the block position.                       
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)             
{                                                                     
  bpos->bno = 0;                                                      
 801b3b4:	58 60 00 10 	sw (r3+16),r0                                  
  bpos->boff = 0;                                                     
 801b3b8:	58 60 00 14 	sw (r3+20),r0                                  
  bpos->block = 0;                                                    
 801b3bc:	58 60 00 18 	sw (r3+24),r0                                  
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801b3c0:	30 60 00 38 	sb (r3+56),r0                                  
  handle->bnum  = 0;                                                  
 801b3c4:	58 60 00 3c 	sw (r3+60),r0                                  
  handle->buffer = NULL;                                              
 801b3c8:	58 60 00 40 	sw (r3+64),r0                                  
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801b3cc:	30 60 00 44 	sb (r3+68),r0                                  
  handle->bnum  = 0;                                                  
 801b3d0:	58 60 00 48 	sw (r3+72),r0                                  
  handle->buffer = NULL;                                              
 801b3d4:	58 60 00 4c 	sw (r3+76),r0                                  
                                                                      
int                                                                   
rtems_rfs_block_map_open (rtems_rfs_file_system*  fs,                 
                          rtems_rfs_inode_handle* inode,              
                          rtems_rfs_block_map*    map)                
{                                                                     
 801b3d8:	b8 60 58 00 	mv r11,r3                                      
 801b3dc:	b8 20 90 00 	mv r18,r1                                      
 801b3e0:	b8 40 88 00 	mv r17,r2                                      
    return rc;                                                        
  rc = rtems_rfs_buffer_handle_open (fs, &map->doubly_buffer);        
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_load (fs, inode);                              
 801b3e4:	fb ff d2 3c 	calli 800fcd4 <rtems_rfs_inode_load>           
 801b3e8:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 801b3ec:	4c 01 00 0e 	bge r0,r1,801b424 <rtems_rfs_block_map_open+0xb0><== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801b3f0:	35 62 00 38 	addi r2,r11,56                                 <== NOT EXECUTED
 801b3f4:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
 801b3f8:	f8 00 04 a1 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
 801b3fc:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 801b400:	31 60 00 38 	sb (r11+56),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801b404:	59 60 00 3c 	sw (r11+60),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801b408:	59 60 00 40 	sw (r11+64),r0                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801b40c:	35 62 00 44 	addi r2,r11,68                                 <== NOT EXECUTED
 801b410:	f8 00 04 9b 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  handle->dirty = false;                                              
 801b414:	31 60 00 44 	sb (r11+68),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801b418:	59 60 00 48 	sw (r11+72),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801b41c:	59 60 00 4c 	sw (r11+76),r0                                 <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &map->singly_buffer);          
    rtems_rfs_buffer_handle_close (fs, &map->doubly_buffer);          
    return rc;                                                        
 801b420:	e0 00 00 6f 	bi 801b5dc <rtems_rfs_block_map_open+0x268>    <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Extract the block and block count data from the inode into the targets
   * byte order.                                                      
   */                                                                 
  map->inode = inode;                                                 
 801b424:	2a 2f 00 0c 	lw r15,(r17+12)                                
 801b428:	b9 60 70 00 	mv r14,r11                                     
 801b42c:	59 71 00 04 	sw (r11+4),r17                                 
 801b430:	34 0d 00 00 	mvi r13,0                                      
 801b434:	35 f4 00 1c 	addi r20,r15,28                                
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
 801b438:	34 13 00 14 	mvi r19,20                                     
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
 801b43c:	b6 8d 60 00 	add r12,r20,r13                                
 801b440:	41 81 00 00 	lbu r1,(r12+0)                                 
 801b444:	41 90 00 03 	lbu r16,(r12+3)                                
 801b448:	34 02 00 18 	mvi r2,24                                      
 801b44c:	f8 00 6e 52 	calli 8036d94 <__ashlsi3>                      
 801b450:	ba 01 80 00 	or r16,r16,r1                                  
 801b454:	41 81 00 01 	lbu r1,(r12+1)                                 
 801b458:	34 02 00 10 	mvi r2,16                                      
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
 801b45c:	35 ad 00 04 	addi r13,r13,4                                 
 801b460:	f8 00 6e 4d 	calli 8036d94 <__ashlsi3>                      
 801b464:	41 84 00 02 	lbu r4,(r12+2)                                 
 801b468:	ba 01 18 00 	or r3,r16,r1                                   
 801b46c:	b4 84 20 00 	add r4,r4,r4                                   
 801b470:	b4 84 20 00 	add r4,r4,r4                                   
 801b474:	b4 84 20 00 	add r4,r4,r4                                   
 801b478:	b4 84 20 00 	add r4,r4,r4                                   
 801b47c:	b4 84 20 00 	add r4,r4,r4                                   
 801b480:	b4 84 20 00 	add r4,r4,r4                                   
 801b484:	b4 84 20 00 	add r4,r4,r4                                   
 801b488:	b4 84 20 00 	add r4,r4,r4                                   
 801b48c:	b8 64 20 00 	or r4,r3,r4                                    
 801b490:	59 c4 00 24 	sw (r14+36),r4                                 
 801b494:	35 ce 00 04 	addi r14,r14,4                                 
  /*                                                                  
   * Extract the block and block count data from the inode into the targets
   * byte order.                                                      
   */                                                                 
  map->inode = inode;                                                 
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
 801b498:	5d b3 ff e9 	bne r13,r19,801b43c <rtems_rfs_block_map_open+0xc8>
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801b49c:	41 e1 00 0c 	lbu r1,(r15+12)                                
 801b4a0:	35 ec 00 0c 	addi r12,r15,12                                
 801b4a4:	41 8e 00 03 	lbu r14,(r12+3)                                
 801b4a8:	34 02 00 18 	mvi r2,24                                      
 801b4ac:	f8 00 6e 3a 	calli 8036d94 <__ashlsi3>                      
 801b4b0:	b9 c1 70 00 	or r14,r14,r1                                  
 801b4b4:	41 81 00 01 	lbu r1,(r12+1)                                 
 801b4b8:	34 02 00 10 	mvi r2,16                                      
 * @return uint32_t The last map block number.                        
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)   
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_map_block);          
 801b4bc:	35 ed 00 30 	addi r13,r15,48                                
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801b4c0:	f8 00 6e 35 	calli 8036d94 <__ashlsi3>                      
 801b4c4:	41 83 00 02 	lbu r3,(r12+2)                                 
 801b4c8:	b9 c1 08 00 	or r1,r14,r1                                   
 * @return uint32_t The last map block number.                        
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)   
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_map_block);          
 801b4cc:	34 02 00 18 	mvi r2,24                                      
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801b4d0:	b4 63 18 00 	add r3,r3,r3                                   
 801b4d4:	b4 63 18 00 	add r3,r3,r3                                   
 801b4d8:	b4 63 18 00 	add r3,r3,r3                                   
 801b4dc:	b4 63 18 00 	add r3,r3,r3                                   
 801b4e0:	b4 63 18 00 	add r3,r3,r3                                   
 801b4e4:	b4 63 18 00 	add r3,r3,r3                                   
 801b4e8:	b4 63 18 00 	add r3,r3,r3                                   
 801b4ec:	b4 63 18 00 	add r3,r3,r3                                   
 801b4f0:	b8 23 18 00 	or r3,r1,r3                                    
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
  map->size.count = rtems_rfs_inode_get_block_count (inode);          
 801b4f4:	59 63 00 08 	sw (r11+8),r3                                  
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 801b4f8:	41 e3 00 0a 	lbu r3,(r15+10)                                
 801b4fc:	41 e1 00 0b 	lbu r1,(r15+11)                                
 * @return uint32_t The last data block number.                       
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)  
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_data_block);         
 801b500:	35 ec 00 34 	addi r12,r15,52                                
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 801b504:	b4 63 18 00 	add r3,r3,r3                                   
 801b508:	b4 63 18 00 	add r3,r3,r3                                   
 801b50c:	b4 63 18 00 	add r3,r3,r3                                   
 801b510:	b4 63 18 00 	add r3,r3,r3                                   
 801b514:	b4 63 18 00 	add r3,r3,r3                                   
 801b518:	b4 63 18 00 	add r3,r3,r3                                   
 801b51c:	b4 63 18 00 	add r3,r3,r3                                   
 801b520:	b4 63 18 00 	add r3,r3,r3                                   
  map->size.offset = rtems_rfs_inode_get_block_offset (inode);        
 801b524:	b8 61 18 00 	or r3,r3,r1                                    
 801b528:	59 63 00 0c 	sw (r11+12),r3                                 
 * @return uint32_t The last map block number.                        
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)   
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_map_block);          
 801b52c:	41 e1 00 30 	lbu r1,(r15+48)                                
 801b530:	41 ae 00 03 	lbu r14,(r13+3)                                
 801b534:	f8 00 6e 18 	calli 8036d94 <__ashlsi3>                      
 801b538:	b9 c1 70 00 	or r14,r14,r1                                  
 801b53c:	41 a1 00 01 	lbu r1,(r13+1)                                 
 801b540:	34 02 00 10 	mvi r2,16                                      
 801b544:	f8 00 6e 14 	calli 8036d94 <__ashlsi3>                      
 801b548:	41 a3 00 02 	lbu r3,(r13+2)                                 
 801b54c:	b9 c1 08 00 	or r1,r14,r1                                   
 * @return uint32_t The last data block number.                       
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)  
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_data_block);         
 801b550:	34 02 00 18 	mvi r2,24                                      
 * @return uint32_t The last map block number.                        
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)   
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_map_block);          
 801b554:	b4 63 18 00 	add r3,r3,r3                                   
 801b558:	b4 63 18 00 	add r3,r3,r3                                   
 801b55c:	b4 63 18 00 	add r3,r3,r3                                   
 801b560:	b4 63 18 00 	add r3,r3,r3                                   
 801b564:	b4 63 18 00 	add r3,r3,r3                                   
 801b568:	b4 63 18 00 	add r3,r3,r3                                   
 801b56c:	b4 63 18 00 	add r3,r3,r3                                   
 801b570:	b4 63 18 00 	add r3,r3,r3                                   
 801b574:	b8 23 18 00 	or r3,r1,r3                                    
  map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);   
 801b578:	59 63 00 1c 	sw (r11+28),r3                                 
 * @return uint32_t The last data block number.                       
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)  
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_data_block);         
 801b57c:	41 e1 00 34 	lbu r1,(r15+52)                                
 801b580:	41 8d 00 03 	lbu r13,(r12+3)                                
 801b584:	f8 00 6e 04 	calli 8036d94 <__ashlsi3>                      
 801b588:	b9 a1 68 00 	or r13,r13,r1                                  
 801b58c:	41 81 00 01 	lbu r1,(r12+1)                                 
 801b590:	34 02 00 10 	mvi r2,16                                      
 801b594:	f8 00 6e 00 	calli 8036d94 <__ashlsi3>                      
 801b598:	41 83 00 02 	lbu r3,(r12+2)                                 
 801b59c:	b9 a1 08 00 	or r1,r13,r1                                   
  map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 
                                                                      
  rc = rtems_rfs_inode_unload (fs, inode, false);                     
 801b5a0:	ba 20 10 00 	mv r2,r17                                      
 801b5a4:	b4 63 18 00 	add r3,r3,r3                                   
 801b5a8:	b4 63 18 00 	add r3,r3,r3                                   
 801b5ac:	b4 63 18 00 	add r3,r3,r3                                   
 801b5b0:	b4 63 18 00 	add r3,r3,r3                                   
 801b5b4:	b4 63 18 00 	add r3,r3,r3                                   
 801b5b8:	b4 63 18 00 	add r3,r3,r3                                   
 801b5bc:	b4 63 18 00 	add r3,r3,r3                                   
 801b5c0:	b4 63 18 00 	add r3,r3,r3                                   
 801b5c4:	b8 23 18 00 	or r3,r1,r3                                    
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
  map->size.count = rtems_rfs_inode_get_block_count (inode);          
  map->size.offset = rtems_rfs_inode_get_block_offset (inode);        
  map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);   
  map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 
 801b5c8:	59 63 00 20 	sw (r11+32),r3                                 
                                                                      
  rc = rtems_rfs_inode_unload (fs, inode, false);                     
 801b5cc:	ba 40 08 00 	mv r1,r18                                      
 801b5d0:	34 03 00 00 	mvi r3,0                                       
 801b5d4:	fb ff d2 45 	calli 800fee8 <rtems_rfs_inode_unload>         
 801b5d8:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  return rc;                                                          
}                                                                     
 801b5dc:	b9 80 08 00 	mv r1,r12                                      
 801b5e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801b5e4:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 801b5e8:	2b 8c 00 28 	lw r12,(sp+40)                                 
 801b5ec:	2b 8d 00 24 	lw r13,(sp+36)                                 
 801b5f0:	2b 8e 00 20 	lw r14,(sp+32)                                 
 801b5f4:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 801b5f8:	2b 90 00 18 	lw r16,(sp+24)                                 
 801b5fc:	2b 91 00 14 	lw r17,(sp+20)                                 
 801b600:	2b 92 00 10 	lw r18,(sp+16)                                 
 801b604:	2b 93 00 0c 	lw r19,(sp+12)                                 
 801b608:	2b 94 00 08 	lw r20,(sp+8)                                  
 801b60c:	37 9c 00 2c 	addi sp,sp,44                                  
 801b610:	c3 a0 00 00 	ret                                            
                                                                      

0801c07c <rtems_rfs_block_map_shrink>: int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, size_t blocks) {
 801c07c:	37 9c ff c0 	addi sp,sp,-64                                 
 801c080:	5b 8b 00 40 	sw (sp+64),r11                                 
 801c084:	5b 8c 00 3c 	sw (sp+60),r12                                 
 801c088:	5b 8d 00 38 	sw (sp+56),r13                                 
 801c08c:	5b 8e 00 34 	sw (sp+52),r14                                 
 801c090:	5b 8f 00 30 	sw (sp+48),r15                                 
 801c094:	5b 90 00 2c 	sw (sp+44),r16                                 
 801c098:	5b 91 00 28 	sw (sp+40),r17                                 
 801c09c:	5b 92 00 24 	sw (sp+36),r18                                 
 801c0a0:	5b 93 00 20 	sw (sp+32),r19                                 
 801c0a4:	5b 94 00 1c 	sw (sp+28),r20                                 
 801c0a8:	5b 95 00 18 	sw (sp+24),r21                                 
 801c0ac:	5b 96 00 14 	sw (sp+20),r22                                 
 801c0b0:	5b 97 00 10 	sw (sp+16),r23                                 
 801c0b4:	5b 98 00 0c 	sw (sp+12),r24                                 
 801c0b8:	5b 99 00 08 	sw (sp+8),r25                                  
 801c0bc:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c0c0:	b8 20 60 00 	mv r12,r1                                      
 801c0c4:	b8 40 58 00 	mv r11,r2                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
 801c0c8:	34 01 00 00 	mvi r1,0                                       
 801c0cc:	34 02 40 00 	mvi r2,16384                                   
                                                                      
int                                                                   
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,                
                            rtems_rfs_block_map*   map,               
                            size_t                 blocks)            
{                                                                     
 801c0d0:	b8 60 78 00 	mv r15,r3                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
 801c0d4:	fb ff d8 3b 	calli 80121c0 <rtems_rfs_trace>                
 801c0d8:	5c 20 00 d9 	bne r1,r0,801c43c <rtems_rfs_block_map_shrink+0x3c0><== NEVER TAKEN
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if (map->size.count == 0)                                           
 801c0dc:	29 6d 00 08 	lw r13,(r11+8)                                 
    return 0;                                                         
 801c0e0:	34 08 00 00 	mvi r8,0                                       
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if (map->size.count == 0)                                           
 801c0e4:	45 a0 00 2e 	be r13,r0,801c19c <rtems_rfs_block_map_shrink+0x120>
 801c0e8:	51 af 00 02 	bgeu r13,r15,801c0f0 <rtems_rfs_block_map_shrink+0x74><== ALWAYS TAKEN
 801c0ec:	b9 a0 78 00 	mv r15,r13                                     <== NOT EXECUTED
    return 0;                                                         
                                                                      
  if (blocks > map->size.count)                                       
    blocks = map->size.count;                                         
                                                                      
  while (blocks)                                                      
 801c0f0:	45 e0 00 20 	be r15,r0,801c170 <rtems_rfs_block_map_shrink+0xf4><== NEVER TAKEN
    rtems_rfs_block_no block_to_free;                                 
    int                rc;                                            
                                                                      
    block = map->size.count - 1;                                      
                                                                      
    if (block < RTEMS_RFS_INODE_BLOCKS)                               
 801c0f4:	34 13 00 04 	mvi r19,4                                      
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
 801c0f8:	35 77 00 44 	addi r23,r11,68                                
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801c0fc:	35 76 00 38 	addi r22,r11,56                                
int                                                                   
rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs,              
                              rtems_rfs_block_map*   map)             
{                                                                     
  return rtems_rfs_block_map_shrink (fs, map, map->size.count);       
}                                                                     
 801c100:	35 79 00 4c 	addi r25,r11,76                                
 801c104:	35 78 00 40 	addi r24,r11,64                                
    if (rc > 0)                                                       
      return rc;                                                      
    map->size.count--;                                                
    map->size.offset = 0;                                             
    map->last_data_block = block_to_free;                             
    map->dirty = true;                                                
 801c108:	34 14 00 01 	mvi r20,1                                      
  {                                                                   
    rtems_rfs_block_no block;                                         
    rtems_rfs_block_no block_to_free;                                 
    int                rc;                                            
                                                                      
    block = map->size.count - 1;                                      
 801c10c:	35 ae ff ff 	addi r14,r13,-1                                
                                                                      
    if (block < RTEMS_RFS_INODE_BLOCKS)                               
 801c110:	55 d3 00 36 	bgu r14,r19,801c1e8 <rtems_rfs_block_map_shrink+0x16c>
    {                                                                 
      /*                                                              
       * We have less than RTEMS_RFS_INODE_BLOCKS so they are held in the
       * inode.                                                       
       */                                                             
      block_to_free = map->blocks[block];                             
 801c114:	35 ad 00 07 	addi r13,r13,7                                 
 801c118:	b5 ad 68 00 	add r13,r13,r13                                
 801c11c:	b5 ad 68 00 	add r13,r13,r13                                
 801c120:	b5 6d 68 00 	add r13,r11,r13                                
 801c124:	29 ae 00 04 	lw r14,(r13+4)                                 
      map->blocks[block] = 0;                                         
 801c128:	59 a0 00 04 	sw (r13+4),r0                                  
      {                                                               
        rc = EIO;                                                     
        break;                                                        
      }                                                               
    }                                                                 
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
 801c12c:	b9 80 08 00 	mv r1,r12                                      
 801c130:	34 02 00 00 	mvi r2,0                                       
 801c134:	b9 c0 18 00 	mv r3,r14                                      
 801c138:	fb ff ce 0e 	calli 800f970 <rtems_rfs_group_bitmap_free>    
 801c13c:	b8 20 40 00 	mv r8,r1                                       
    if (rc > 0)                                                       
 801c140:	48 20 00 17 	bg r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== NEVER TAKEN
      return rc;                                                      
    map->size.count--;                                                
 801c144:	29 6d 00 08 	lw r13,(r11+8)                                 
    map->size.offset = 0;                                             
 801c148:	59 60 00 0c 	sw (r11+12),r0                                 
    map->last_data_block = block_to_free;                             
 801c14c:	59 6e 00 20 	sw (r11+32),r14                                
      }                                                               
    }                                                                 
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
    if (rc > 0)                                                       
      return rc;                                                      
    map->size.count--;                                                
 801c150:	35 ad ff ff 	addi r13,r13,-1                                
 801c154:	59 6d 00 08 	sw (r11+8),r13                                 
    map->size.offset = 0;                                             
    map->last_data_block = block_to_free;                             
    map->dirty = true;                                                
 801c158:	31 74 00 00 	sb (r11+0),r20                                 
    blocks--;                                                         
 801c15c:	35 ef ff ff 	addi r15,r15,-1                                
    return 0;                                                         
                                                                      
  if (blocks > map->size.count)                                       
    blocks = map->size.count;                                         
                                                                      
  while (blocks)                                                      
 801c160:	5d e0 ff eb 	bne r15,r0,801c10c <rtems_rfs_block_map_shrink+0x90>
    map->last_data_block = block_to_free;                             
    map->dirty = true;                                                
    blocks--;                                                         
  }                                                                   
                                                                      
  if (map->size.count == 0)                                           
 801c164:	5d a0 00 03 	bne r13,r0,801c170 <rtems_rfs_block_map_shrink+0xf4>
  {                                                                   
    map->last_map_block = 0;                                          
 801c168:	59 60 00 1c 	sw (r11+28),r0                                 
    map->last_data_block = 0;                                         
 801c16c:	59 60 00 20 	sw (r11+32),r0                                 
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
 801c170:	29 61 00 10 	lw r1,(r11+16)                                 
 801c174:	44 20 00 b8 	be r1,r0,801c454 <rtems_rfs_block_map_shrink+0x3d8>
 801c178:	5d a0 00 b7 	bne r13,r0,801c454 <rtems_rfs_block_map_shrink+0x3d8><== NEVER TAKEN
 801c17c:	29 61 00 0c 	lw r1,(r11+12)                                 
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
 801c180:	59 6d 00 10 	sw (r11+16),r13                                
 801c184:	59 61 00 14 	sw (r11+20),r1                                 
 801c188:	59 60 00 18 	sw (r11+24),r0                                 
                                                                      
  return 0;                                                           
 801c18c:	34 08 00 00 	mvi r8,0                                       
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
 801c190:	44 20 00 03 	be r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== ALWAYS TAKEN
 801c194:	35 ad ff ff 	addi r13,r13,-1                                <== NOT EXECUTED
 801c198:	59 6d 00 10 	sw (r11+16),r13                                <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
 801c19c:	b9 00 08 00 	mv r1,r8                                       
 801c1a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c1a4:	2b 8b 00 40 	lw r11,(sp+64)                                 
 801c1a8:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 801c1ac:	2b 8d 00 38 	lw r13,(sp+56)                                 
 801c1b0:	2b 8e 00 34 	lw r14,(sp+52)                                 
 801c1b4:	2b 8f 00 30 	lw r15,(sp+48)                                 
 801c1b8:	2b 90 00 2c 	lw r16,(sp+44)                                 
 801c1bc:	2b 91 00 28 	lw r17,(sp+40)                                 
 801c1c0:	2b 92 00 24 	lw r18,(sp+36)                                 
 801c1c4:	2b 93 00 20 	lw r19,(sp+32)                                 
 801c1c8:	2b 94 00 1c 	lw r20,(sp+28)                                 
 801c1cc:	2b 95 00 18 	lw r21,(sp+24)                                 
 801c1d0:	2b 96 00 14 	lw r22,(sp+20)                                 
 801c1d4:	2b 97 00 10 	lw r23,(sp+16)                                 
 801c1d8:	2b 98 00 0c 	lw r24,(sp+12)                                 
 801c1dc:	2b 99 00 08 	lw r25,(sp+8)                                  
 801c1e0:	37 9c 00 40 	addi sp,sp,64                                  
 801c1e4:	c3 a0 00 00 	ret                                            
       * table of block numbers.                                      
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = block % fs->blocks_per_block;                          
 801c1e8:	29 91 00 34 	lw r17,(r12+52)                                
 801c1ec:	b9 c0 08 00 	mv r1,r14                                      
 801c1f0:	ba 20 10 00 	mv r2,r17                                      
 801c1f4:	f8 00 6b 8f 	calli 8037030 <__umodsi3>                      
 801c1f8:	b8 20 80 00 	mv r16,r1                                      
      singly = block / fs->blocks_per_block;                          
 801c1fc:	ba 20 10 00 	mv r2,r17                                      
 801c200:	b9 c0 08 00 	mv r1,r14                                      
 801c204:	fb ff 95 7c 	calli 80017f4 <__udivsi3>                      
                                                                      
      if (block < fs->block_map_singly_blocks)                        
 801c208:	29 84 00 38 	lw r4,(r12+56)                                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = block % fs->blocks_per_block;                          
      singly = block / fs->blocks_per_block;                          
 801c20c:	b8 20 90 00 	mv r18,r1                                      
                                                                      
      if (block < fs->block_map_singly_blocks)                        
 801c210:	51 c4 00 2f 	bgeu r14,r4,801c2cc <rtems_rfs_block_map_shrink+0x250><== NEVER TAKEN
      {                                                               
        /*                                                            
         * Request the indirect block and then obtain the block number from the
         * indirect block.                                            
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801c214:	34 21 00 08 	addi r1,r1,8                                   
 801c218:	b4 21 08 00 	add r1,r1,r1                                   
 801c21c:	b4 21 08 00 	add r1,r1,r1                                   
 801c220:	b5 61 08 00 	add r1,r11,r1                                  
 801c224:	28 23 00 04 	lw r3,(r1+4)                                   
 801c228:	ba c0 10 00 	mv r2,r22                                      
 801c22c:	b9 80 08 00 	mv r1,r12                                      
 801c230:	34 04 00 01 	mvi r4,1                                       
 801c234:	f8 00 01 84 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801c238:	b8 20 40 00 	mv r8,r1                                       
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
 801c23c:	48 20 ff d8 	bg r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== NEVER TAKEN
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
 801c240:	29 61 00 40 	lw r1,(r11+64)                                 
 801c244:	b6 10 20 00 	add r4,r16,r16                                 
 801c248:	b4 84 20 00 	add r4,r4,r4                                   
 801c24c:	28 26 00 1c 	lw r6,(r1+28)                                  
                                                    direct);          
                                                                      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
 801c250:	ba 00 28 00 	mv r5,r16                                      
 801c254:	b9 80 08 00 	mv r1,r12                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
 801c258:	b4 c4 30 00 	add r6,r6,r4                                   
                                                    direct);          
                                                                      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
 801c25c:	b9 60 10 00 	mv r2,r11                                      
 801c260:	bb 00 18 00 	mv r3,r24                                      
 801c264:	ba 40 20 00 	mv r4,r18                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
 801c268:	40 d1 00 00 	lbu r17,(r6+0)                                 
 801c26c:	40 d0 00 01 	lbu r16,(r6+1)                                 
 801c270:	40 cd 00 02 	lbu r13,(r6+2)                                 
 801c274:	40 ce 00 03 	lbu r14,(r6+3)                                 
                                                    direct);          
                                                                      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
 801c278:	fb ff fb 82 	calli 801b080 <rtems_rfs_block_map_indirect_shrink.clone.11>
 801c27c:	b8 20 40 00 	mv r8,r1                                       
                                                  singly, direct);    
        if (rc)                                                       
 801c280:	5c 20 ff c7 	bne r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== NEVER TAKEN
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
 801c284:	34 02 00 18 	mvi r2,24                                      
 801c288:	ba 20 08 00 	mv r1,r17                                      
 801c28c:	f8 00 6a c2 	calli 8036d94 <__ashlsi3>                      
 801c290:	b9 c1 70 00 	or r14,r14,r1                                  
 801c294:	34 02 00 10 	mvi r2,16                                      
 801c298:	ba 00 08 00 	mv r1,r16                                      
 801c29c:	f8 00 6a be 	calli 8036d94 <__ashlsi3>                      
 801c2a0:	b5 ad 20 00 	add r4,r13,r13                                 
 801c2a4:	b4 84 20 00 	add r4,r4,r4                                   
 801c2a8:	b4 84 20 00 	add r4,r4,r4                                   
 801c2ac:	b4 84 20 00 	add r4,r4,r4                                   
 801c2b0:	b4 84 20 00 	add r4,r4,r4                                   
 801c2b4:	b4 84 20 00 	add r4,r4,r4                                   
 801c2b8:	b4 84 20 00 	add r4,r4,r4                                   
 801c2bc:	b9 c1 70 00 	or r14,r14,r1                                  
 801c2c0:	b4 84 20 00 	add r4,r4,r4                                   
 801c2c4:	b9 c4 70 00 	or r14,r14,r4                                  
 801c2c8:	e3 ff ff 99 	bi 801c12c <rtems_rfs_block_map_shrink+0xb0>   
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
                                                  singly, direct);    
        if (rc)                                                       
          return rc;                                                  
      }                                                               
      else if (block < fs->block_map_doubly_blocks)                   
 801c2cc:	29 82 00 3c 	lw r2,(r12+60)                                 <== NOT EXECUTED
 801c2d0:	51 c2 ff a5 	bgeu r14,r2,801c164 <rtems_rfs_block_map_shrink+0xe8><== NOT EXECUTED
         * value is still valid for doubly indirect tables.           
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
 801c2d4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 801c2d8:	fb ff 95 47 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
 801c2dc:	34 25 00 08 	addi r5,r1,8                                   <== NOT EXECUTED
 801c2e0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801c2e4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 801c2e8:	b5 65 28 00 	add r5,r11,r5                                  <== NOT EXECUTED
 801c2ec:	28 a3 00 04 	lw r3,(r5+4)                                   <== NOT EXECUTED
         * value is still valid for doubly indirect tables.           
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
 801c2f0:	b8 20 a8 00 	mv r21,r1                                      <== NOT EXECUTED
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
 801c2f4:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 801c2f8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801c2fc:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801c300:	f8 00 01 51 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 801c304:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
                                              map->blocks[doubly], true);
        if (rc > 0)                                                   
 801c308:	48 20 ff a5 	bg r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== NOT EXECUTED
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
        doubly_singly = singly % fs->blocks_per_block;                
 801c30c:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 801c310:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
 801c314:	f8 00 6b 47 	calli 8037030 <__umodsi3>                      <== NOT EXECUTED
 801c318:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
                                              map->blocks[doubly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        singly = rtems_rfs_block_get_number (&map->doubly_buffer,     
 801c31c:	29 61 00 4c 	lw r1,(r11+76)                                 <== NOT EXECUTED
 801c320:	b6 31 30 00 	add r6,r17,r17                                 <== NOT EXECUTED
 801c324:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c328:	28 2d 00 1c 	lw r13,(r1+28)                                 <== NOT EXECUTED
 801c32c:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 801c330:	b5 a6 68 00 	add r13,r13,r6                                 <== NOT EXECUTED
 801c334:	41 a1 00 00 	lbu r1,(r13+0)                                 <== NOT EXECUTED
 801c338:	41 b2 00 03 	lbu r18,(r13+3)                                <== NOT EXECUTED
 801c33c:	f8 00 6a 96 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801c340:	ba 41 90 00 	or r18,r18,r1                                  <== NOT EXECUTED
 801c344:	41 a1 00 01 	lbu r1,(r13+1)                                 <== NOT EXECUTED
 801c348:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801c34c:	f8 00 6a 92 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801c350:	41 a6 00 02 	lbu r6,(r13+2)                                 <== NOT EXECUTED
 801c354:	ba 41 90 00 	or r18,r18,r1                                  <== NOT EXECUTED
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801c358:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
                                              map->blocks[doubly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        singly = rtems_rfs_block_get_number (&map->doubly_buffer,     
 801c35c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c360:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c364:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c368:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c36c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c370:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c374:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c378:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801c37c:	ba 46 90 00 	or r18,r18,r6                                  <== NOT EXECUTED
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
 801c380:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801c384:	ba 40 18 00 	mv r3,r18                                      <== NOT EXECUTED
 801c388:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 801c38c:	f8 00 01 2e 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 801c390:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
                                              singly, true);          
        if (rc > 0)                                                   
 801c394:	48 20 ff 82 	bg r1,r0,801c19c <rtems_rfs_block_map_shrink+0x120><== NOT EXECUTED
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
 801c398:	29 61 00 40 	lw r1,(r11+64)                                 <== NOT EXECUTED
 801c39c:	b6 10 38 00 	add r7,r16,r16                                 <== NOT EXECUTED
 801c3a0:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3a4:	28 2d 00 1c 	lw r13,(r1+28)                                 <== NOT EXECUTED
 801c3a8:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 801c3ac:	b5 a7 68 00 	add r13,r13,r7                                 <== NOT EXECUTED
 801c3b0:	41 a1 00 00 	lbu r1,(r13+0)                                 <== NOT EXECUTED
 801c3b4:	41 ae 00 03 	lbu r14,(r13+3)                                <== NOT EXECUTED
 801c3b8:	f8 00 6a 77 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801c3bc:	b9 c1 70 00 	or r14,r14,r1                                  <== NOT EXECUTED
 801c3c0:	41 a1 00 01 	lbu r1,(r13+1)                                 <== NOT EXECUTED
 801c3c4:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801c3c8:	f8 00 6a 73 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801c3cc:	41 a7 00 02 	lbu r7,(r13+2)                                 <== NOT EXECUTED
 801c3d0:	b9 c1 70 00 	or r14,r14,r1                                  <== NOT EXECUTED
 801c3d4:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3d8:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3dc:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3e0:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3e4:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3e8:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3ec:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3f0:	b4 e7 38 00 	add r7,r7,r7                                   <== NOT EXECUTED
 801c3f4:	b9 c7 70 00 	or r14,r14,r7                                  <== NOT EXECUTED
                                                    direct);          
                                                                      
        if (direct == 0)                                              
 801c3f8:	5e 00 ff 4d 	bne r16,r0,801c12c <rtems_rfs_block_map_shrink+0xb0><== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_group_bitmap_free (fs, false, singly);       
 801c3fc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801c400:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801c404:	ba 40 18 00 	mv r3,r18                                      <== NOT EXECUTED
 801c408:	fb ff cd 5a 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
 801c40c:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
          if (rc > 0)                                                 
 801c410:	48 30 ff 63 	bg r1,r16,801c19c <rtems_rfs_block_map_shrink+0x120><== NOT EXECUTED
            return rc;                                                
                                                                      
          map->last_map_block = singly;                               
 801c414:	59 72 00 1c 	sw (r11+28),r18                                <== NOT EXECUTED
                                                                      
          rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer,
 801c418:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801c41c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801c420:	bb 20 18 00 	mv r3,r25                                      <== NOT EXECUTED
 801c424:	ba a0 20 00 	mv r4,r21                                      <== NOT EXECUTED
 801c428:	ba 20 28 00 	mv r5,r17                                      <== NOT EXECUTED
 801c42c:	fb ff fb 15 	calli 801b080 <rtems_rfs_block_map_indirect_shrink.clone.11><== NOT EXECUTED
 801c430:	b8 20 40 00 	mv r8,r1                                       <== NOT EXECUTED
                                                    doubly, doubly_singly);
          if (rc)                                                     
 801c434:	44 20 ff 3e 	be r1,r0,801c12c <rtems_rfs_block_map_shrink+0xb0><== NOT EXECUTED
 801c438:	e3 ff ff 59 	bi 801c19c <rtems_rfs_block_map_shrink+0x120>  <== NOT EXECUTED
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,                
                            rtems_rfs_block_map*   map,               
                            size_t                 blocks)            
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
 801c43c:	29 63 00 08 	lw r3,(r11+8)                                  <== NOT EXECUTED
 801c440:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c444:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 801c448:	38 21 ab 50 	ori r1,r1,0xab50                               <== NOT EXECUTED
 801c44c:	f8 00 22 13 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c450:	e3 ff ff 23 	bi 801c0dc <rtems_rfs_block_map_shrink+0x60>   <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
 801c454:	55 a1 00 02 	bgu r13,r1,801c45c <rtems_rfs_block_map_shrink+0x3e0>
 801c458:	e3 ff ff 49 	bi 801c17c <rtems_rfs_block_map_shrink+0x100>  
 801c45c:	35 a2 ff ff 	addi r2,r13,-1                                 
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
                                                                      
  return 0;                                                           
 801c460:	34 08 00 00 	mvi r8,0                                       
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
 801c464:	5c 22 ff 4e 	bne r1,r2,801c19c <rtems_rfs_block_map_shrink+0x120><== NEVER TAKEN
 801c468:	29 61 00 0c 	lw r1,(r11+12)                                 
 801c46c:	29 62 00 14 	lw r2,(r11+20)                                 
 801c470:	50 22 ff 4b 	bgeu r1,r2,801c19c <rtems_rfs_block_map_shrink+0x120><== NEVER TAKEN
 801c474:	e3 ff ff 43 	bi 801c180 <rtems_rfs_block_map_shrink+0x104>  
                                                                      

08023124 <rtems_rfs_buffer_bdbuf_release>: int rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer, bool modified) {
 8023124:	37 9c ff f4 	addi sp,sp,-12                                 
 8023128:	5b 8b 00 0c 	sw (sp+12),r11                                 
 802312c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8023130:	5b 9d 00 04 	sw (sp+4),ra                                   
 8023134:	b8 20 58 00 	mv r11,r1                                      
 8023138:	20 4c 00 ff 	andi r12,r2,0xff                               
  rtems_status_code sc;                                               
  int               rc = 0;                                           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
 802313c:	34 01 00 00 	mvi r1,0                                       
 8023140:	34 02 00 40 	mvi r2,64                                      
 8023144:	fb ff bc 1f 	calli 80121c0 <rtems_rfs_trace>                
 8023148:	44 20 00 0b 	be r1,r0,8023174 <rtems_rfs_buffer_bdbuf_release+0x50><== ALWAYS TAKEN
    printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n",
 802314c:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8023150:	29 62 00 34 	lw r2,(r11+52)                                 <== NOT EXECUTED
 8023154:	29 63 00 18 	lw r3,(r11+24)                                 <== NOT EXECUTED
 8023158:	38 84 9e a8 	ori r4,r4,0x9ea8                               <== NOT EXECUTED
 802315c:	45 80 00 03 	be r12,r0,8023168 <rtems_rfs_buffer_bdbuf_release+0x44><== NOT EXECUTED
 8023160:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 8023164:	38 84 c0 ec 	ori r4,r4,0xc0ec                               <== NOT EXECUTED
 8023168:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802316c:	38 21 c0 f8 	ori r1,r1,0xc0f8                               <== NOT EXECUTED
 8023170:	f8 00 06 ca 	calli 8024c98 <printf>                         <== NOT EXECUTED
            ((intptr_t) buffer->user),                                
            buffer->block, modified ? "(modified)" : "");             
                                                                      
  if (modified)                                                       
 8023174:	45 80 00 0b 	be r12,r0,80231a0 <rtems_rfs_buffer_bdbuf_release+0x7c>
    sc = rtems_bdbuf_release_modified (buffer);                       
 8023178:	b9 60 08 00 	mv r1,r11                                      
 802317c:	fb ff c6 ed 	calli 8014d30 <rtems_bdbuf_release_modified>   
int                                                                   
rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer,             
                                bool              modified)           
{                                                                     
  rtems_status_code sc;                                               
  int               rc = 0;                                           
 8023180:	7c 21 00 00 	cmpnei r1,r1,0                                 
 8023184:	c8 01 08 00 	sub r1,r0,r1                                   
#endif                                                                
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 8023188:	20 21 00 05 	andi r1,r1,0x5                                 
 802318c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023190:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8023194:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8023198:	37 9c 00 0c 	addi sp,sp,12                                  
 802319c:	c3 a0 00 00 	ret                                            
            buffer->block, modified ? "(modified)" : "");             
                                                                      
  if (modified)                                                       
    sc = rtems_bdbuf_release_modified (buffer);                       
  else                                                                
    sc = rtems_bdbuf_release (buffer);                                
 80231a0:	b9 60 08 00 	mv r1,r11                                      
 80231a4:	fb ff c6 a8 	calli 8014c44 <rtems_bdbuf_release>            
int                                                                   
rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer,             
                                bool              modified)           
{                                                                     
  rtems_status_code sc;                                               
  int               rc = 0;                                           
 80231a8:	7c 21 00 00 	cmpnei r1,r1,0                                 
 80231ac:	c8 01 08 00 	sub r1,r0,r1                                   
#endif                                                                
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 80231b0:	20 21 00 05 	andi r1,r1,0x5                                 
 80231b4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80231b8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80231bc:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80231c0:	37 9c 00 0c 	addi sp,sp,12                                  
 80231c4:	c3 a0 00 00 	ret                                            
                                                                      

0801ceb0 <rtems_rfs_buffer_close>: return 0; } int rtems_rfs_buffer_close (rtems_rfs_file_system* fs) {
 801ceb0:	37 9c ff f4 	addi sp,sp,-12                                 
 801ceb4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801ceb8:	5b 8c 00 08 	sw (sp+8),r12                                  
 801cebc:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
 801cec0:	34 02 00 10 	mvi r2,16                                      
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)                    
{                                                                     
 801cec4:	b8 20 58 00 	mv r11,r1                                      
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
 801cec8:	34 01 00 00 	mvi r1,0                                       
 801cecc:	fb ff d4 bd 	calli 80121c0 <rtems_rfs_trace>                
 801ced0:	5c 20 00 21 	bne r1,r0,801cf54 <rtems_rfs_buffer_close+0xa4><== NEVER TAKEN
                                                                      
  /*                                                                  
   * Change the block size to the media device size. It will release and sync
   * all buffers.                                                     
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
 801ced4:	29 62 00 10 	lw r2,(r11+16)                                 
 801ced8:	b9 60 08 00 	mv r1,r11                                      
 801cedc:	28 42 00 20 	lw r2,(r2+32)                                  
 801cee0:	fb ff ff ae 	calli 801cd98 <rtems_rfs_buffer_setblksize>    
 801cee4:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))     
 801cee8:	4c 01 00 05 	bge r0,r1,801cefc <rtems_rfs_buffer_close+0x4c><== ALWAYS TAKEN
 801ceec:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cef0:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801cef4:	fb ff d4 b3 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801cef8:	5c 20 00 1b 	bne r1,r0,801cf64 <rtems_rfs_buffer_close+0xb4><== NOT EXECUTED
    printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  if (close (fs->device) < 0)                                         
 801cefc:	29 61 00 0c 	lw r1,(r11+12)                                 
 801cf00:	fb ff a7 16 	calli 8006b58 <close>                          
 801cf04:	4c 20 00 0e 	bge r1,r0,801cf3c <rtems_rfs_buffer_close+0x8c><== ALWAYS TAKEN
  {                                                                   
    rc = errno;                                                       
 801cf08:	f8 00 1a 8f 	calli 8023944 <__errno>                        <== NOT EXECUTED
 801cf0c:	28 2c 00 00 	lw r12,(r1+0)                                  <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))               
 801cf10:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801cf14:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cf18:	fb ff d4 aa 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801cf1c:	44 20 00 08 	be r1,r0,801cf3c <rtems_rfs_buffer_close+0x8c> <== NOT EXECUTED
      printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n", 
 801cf20:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801cf24:	f8 00 24 18 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801cf28:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801cf2c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cf30:	38 21 b0 58 	ori r1,r1,0xb058                               <== NOT EXECUTED
 801cf34:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801cf38:	f8 00 1f 58 	calli 8024c98 <printf>                         <== NOT EXECUTED
              rc, strerror (rc));                                     
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 801cf3c:	b9 80 08 00 	mv r1,r12                                      
 801cf40:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cf44:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801cf48:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801cf4c:	37 9c 00 0c 	addi sp,sp,12                                  
 801cf50:	c3 a0 00 00 	ret                                            
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)                    
{                                                                     
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
    printf ("rtems-rfs: buffer-close: closing\n");                    
 801cf54:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cf58:	38 21 af f4 	ori r1,r1,0xaff4                               <== NOT EXECUTED
 801cf5c:	f8 00 20 17 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801cf60:	e3 ff ff dd 	bi 801ced4 <rtems_rfs_buffer_close+0x24>       <== NOT EXECUTED
   * all buffers.                                                     
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))     
    printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
 801cf64:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801cf68:	f8 00 24 07 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801cf6c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801cf70:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cf74:	38 21 b0 18 	ori r1,r1,0xb018                               <== NOT EXECUTED
 801cf78:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801cf7c:	f8 00 1f 47 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  if (close (fs->device) < 0)                                         
 801cf80:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 801cf84:	fb ff a6 f5 	calli 8006b58 <close>                          <== NOT EXECUTED
 801cf88:	4c 20 ff ed 	bge r1,r0,801cf3c <rtems_rfs_buffer_close+0x8c><== NOT EXECUTED
 801cf8c:	e3 ff ff df 	bi 801cf08 <rtems_rfs_buffer_close+0x58>       <== NOT EXECUTED
                                                                      

0801c67c <rtems_rfs_buffer_handle_release>: } int rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle) {
 801c67c:	37 9c ff ec 	addi sp,sp,-20                                 
 801c680:	5b 8b 00 14 	sw (sp+20),r11                                 
 801c684:	5b 8c 00 10 	sw (sp+16),r12                                 
 801c688:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801c68c:	5b 8e 00 08 	sw (sp+8),r14                                  
 801c690:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c694:	b8 40 58 00 	mv r11,r2                                      
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
 801c698:	28 42 00 08 	lw r2,(r2+8)                                   
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
 801c69c:	b8 20 60 00 	mv r12,r1                                      
  int rc = 0;                                                         
 801c6a0:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
 801c6a4:	44 40 00 0d 	be r2,r0,801c6d8 <rtems_rfs_buffer_handle_release+0x5c>
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
 801c6a8:	34 01 00 00 	mvi r1,0                                       
 801c6ac:	34 02 02 00 	mvi r2,512                                     
 801c6b0:	fb ff d6 c4 	calli 80121c0 <rtems_rfs_trace>                
 801c6b4:	5c 20 00 11 	bne r1,r0,801c6f8 <rtems_rfs_buffer_handle_release+0x7c><== NEVER TAKEN
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
 801c6b8:	29 61 00 08 	lw r1,(r11+8)                                  
 801c6bc:	28 2d 00 30 	lw r13,(r1+48)                                 
 801c6c0:	4c 0d 00 03 	bge r0,r13,801c6cc <rtems_rfs_buffer_handle_release+0x50><== NEVER TAKEN
      rtems_rfs_buffer_refs_down (handle);                            
 801c6c4:	35 ad ff ff 	addi r13,r13,-1                                
 801c6c8:	58 2d 00 30 	sw (r1+48),r13                                 
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
  int rc = 0;                                                         
 801c6cc:	34 0e 00 00 	mvi r14,0                                      
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
 801c6d0:	45 a0 00 1c 	be r13,r0,801c740 <rtems_rfs_buffer_handle_release+0xc4>
          rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
          fs->release_count++;                                        
        }                                                             
      }                                                               
    }                                                                 
    handle->buffer = NULL;                                            
 801c6d4:	59 60 00 08 	sw (r11+8),r0                                  
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 801c6d8:	b9 c0 08 00 	mv r1,r14                                      
 801c6dc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c6e0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801c6e4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801c6e8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801c6ec:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801c6f0:	37 9c 00 14 	addi sp,sp,20                                  
 801c6f4:	c3 a0 00 00 	ret                                            
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
      printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
 801c6f8:	41 61 00 00 	lbu r1,(r11+0)                                 <== NOT EXECUTED
 801c6fc:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801c700:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
 801c704:	38 63 9e a8 	ori r3,r3,0x9ea8                               <== NOT EXECUTED
 801c708:	44 20 00 03 	be r1,r0,801c714 <rtems_rfs_buffer_handle_release+0x98><== NOT EXECUTED
 801c70c:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801c710:	38 63 ac 08 	ori r3,r3,0xac08                               <== NOT EXECUTED
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
 801c714:	29 61 00 08 	lw r1,(r11+8)                                  <== NOT EXECUTED
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
      printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
 801c718:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 801c71c:	38 a5 9e a8 	ori r5,r5,0x9ea8                               <== NOT EXECUTED
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
 801c720:	28 24 00 30 	lw r4,(r1+48)                                  <== NOT EXECUTED
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
      printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
 801c724:	5c 80 00 03 	bne r4,r0,801c730 <rtems_rfs_buffer_handle_release+0xb4><== NOT EXECUTED
 801c728:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 801c72c:	38 a5 ac 10 	ori r5,r5,0xac10                               <== NOT EXECUTED
 801c730:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c734:	38 21 ac 20 	ori r1,r1,0xac20                               <== NOT EXECUTED
 801c738:	f8 00 21 58 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c73c:	e3 ff ff df 	bi 801c6b8 <rtems_rfs_buffer_handle_release+0x3c><== NOT EXECUTED
 801c740:	fb ff f0 2d 	calli 80187f4 <_Chain_Extract>                 
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
    {                                                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
 801c744:	29 82 00 50 	lw r2,(r12+80)                                 
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
 801c748:	29 81 00 00 	lw r1,(r12+0)                                  
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
    {                                                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
 801c74c:	34 42 ff ff 	addi r2,r2,-1                                  
 801c750:	59 82 00 50 	sw (r12+80),r2                                 
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
 801c754:	20 21 00 02 	andi r1,r1,0x2                                 
 801c758:	5c 2e 00 20 	bne r1,r14,801c7d8 <rtems_rfs_buffer_handle_release+0x15c>
         * head.                                                      
         *                                                            
         * This code stops a large series of transactions causing all the
         * buffers in the cache being held in queues of this file system.
         */                                                           
        if ((fs->release_count +                                      
 801c75c:	29 83 00 70 	lw r3,(r12+112)                                
 801c760:	29 81 00 60 	lw r1,(r12+96)                                 
 801c764:	29 82 00 40 	lw r2,(r12+64)                                 
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
  int rc = 0;                                                         
 801c768:	b9 a0 70 00 	mv r14,r13                                     
         * head.                                                      
         *                                                            
         * This code stops a large series of transactions causing all the
         * buffers in the cache being held in queues of this file system.
         */                                                           
        if ((fs->release_count +                                      
 801c76c:	b4 61 08 00 	add r1,r3,r1                                   
 801c770:	54 41 00 11 	bgu r2,r1,801c7b4 <rtems_rfs_buffer_handle_release+0x138>
             fs->release_modified_count) >= fs->max_held_buffers)     
        {                                                             
          rtems_rfs_buffer* buffer;                                   
          bool              modified;                                 
                                                                      
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
 801c774:	34 01 00 00 	mvi r1,0                                       
 801c778:	34 02 02 00 	mvi r2,512                                     
 801c77c:	fb ff d6 91 	calli 80121c0 <rtems_rfs_trace>                
 801c780:	5c 20 00 2a 	bne r1,r0,801c828 <rtems_rfs_buffer_handle_release+0x1ac><== NEVER TAKEN
            printf ("rtems-rfs: buffer-release: local cache overflow:"
                    " %" PRIu32 "\n", fs->release_count + fs->release_modified_count);
                                                                      
          if (fs->release_count > fs->release_modified_count)         
 801c784:	29 81 00 60 	lw r1,(r12+96)                                 
 801c788:	29 82 00 70 	lw r2,(r12+112)                                
 801c78c:	50 41 00 20 	bgeu r2,r1,801c80c <rtems_rfs_buffer_handle_release+0x190>
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 801c790:	35 81 00 54 	addi r1,r12,84                                 
 801c794:	fb ff b8 9f 	calli 800aa10 <_Chain_Get>                     
          {                                                           
            buffer = (rtems_rfs_buffer*) rtems_chain_get (&fs->release);
            fs->release_count--;                                      
 801c798:	29 82 00 60 	lw r2,(r12+96)                                 
 801c79c:	34 42 ff ff 	addi r2,r2,-1                                  
 801c7a0:	59 82 00 60 	sw (r12+96),r2                                 
            buffer =                                                  
              (rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
            fs->release_modified_count--;                             
            modified = true;                                          
          }                                                           
          buffer->user = (void*) 0;                                   
 801c7a4:	58 20 00 34 	sw (r1+52),r0                                  
          rc = rtems_rfs_buffer_io_release (buffer, modified);        
 801c7a8:	b9 a0 10 00 	mv r2,r13                                      
 801c7ac:	f8 00 1a 5e 	calli 8023124 <rtems_rfs_buffer_bdbuf_release> 
 801c7b0:	b8 20 70 00 	mv r14,r1                                      
        }                                                             
                                                                      
        if (rtems_rfs_buffer_dirty (handle))                          
 801c7b4:	41 61 00 00 	lbu r1,(r11+0)                                 
 801c7b8:	44 20 00 0e 	be r1,r0,801c7f0 <rtems_rfs_buffer_handle_release+0x174>
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
 801c7bc:	29 62 00 08 	lw r2,(r11+8)                                  
 801c7c0:	35 81 00 64 	addi r1,r12,100                                
 801c7c4:	fb ff b8 87 	calli 800a9e0 <_Chain_Append>                  
        {                                                             
          rtems_chain_append (&fs->release_modified,                  
                              rtems_rfs_buffer_link (handle));        
          fs->release_modified_count++;                               
 801c7c8:	29 81 00 70 	lw r1,(r12+112)                                
 801c7cc:	34 21 00 01 	addi r1,r1,1                                   
 801c7d0:	59 81 00 70 	sw (r12+112),r1                                
 801c7d4:	e3 ff ff c0 	bi 801c6d4 <rtems_rfs_buffer_handle_release+0x58>
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
      {                                                               
        handle->buffer->user = (void*) 0;                             
 801c7d8:	29 61 00 08 	lw r1,(r11+8)                                  
        rc = rtems_rfs_buffer_io_release (handle->buffer,             
 801c7dc:	41 62 00 00 	lbu r2,(r11+0)                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
      {                                                               
        handle->buffer->user = (void*) 0;                             
 801c7e0:	58 20 00 34 	sw (r1+52),r0                                  
        rc = rtems_rfs_buffer_io_release (handle->buffer,             
 801c7e4:	f8 00 1a 50 	calli 8023124 <rtems_rfs_buffer_bdbuf_release> 
 801c7e8:	b8 20 70 00 	mv r14,r1                                      
 801c7ec:	e3 ff ff ba 	bi 801c6d4 <rtems_rfs_buffer_handle_release+0x58>
 801c7f0:	29 62 00 08 	lw r2,(r11+8)                                  
 801c7f4:	35 81 00 54 	addi r1,r12,84                                 
 801c7f8:	fb ff b8 7a 	calli 800a9e0 <_Chain_Append>                  
          fs->release_modified_count++;                               
        }                                                             
        else                                                          
        {                                                             
          rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
          fs->release_count++;                                        
 801c7fc:	29 81 00 60 	lw r1,(r12+96)                                 
 801c800:	34 21 00 01 	addi r1,r1,1                                   
 801c804:	59 81 00 60 	sw (r12+96),r1                                 
 801c808:	e3 ff ff b3 	bi 801c6d4 <rtems_rfs_buffer_handle_release+0x58>
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 801c80c:	35 81 00 64 	addi r1,r12,100                                
 801c810:	fb ff b8 80 	calli 800aa10 <_Chain_Get>                     
          }                                                           
          else                                                        
          {                                                           
            buffer =                                                  
              (rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
            fs->release_modified_count--;                             
 801c814:	29 82 00 70 	lw r2,(r12+112)                                
 801c818:	34 0d 00 01 	mvi r13,1                                      
 801c81c:	34 42 ff ff 	addi r2,r2,-1                                  
 801c820:	59 82 00 70 	sw (r12+112),r2                                
 801c824:	e3 ff ff e0 	bi 801c7a4 <rtems_rfs_buffer_handle_release+0x128>
        {                                                             
          rtems_rfs_buffer* buffer;                                   
          bool              modified;                                 
                                                                      
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
            printf ("rtems-rfs: buffer-release: local cache overflow:"
 801c828:	29 83 00 70 	lw r3,(r12+112)                                <== NOT EXECUTED
 801c82c:	29 82 00 60 	lw r2,(r12+96)                                 <== NOT EXECUTED
 801c830:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c834:	38 21 ac 54 	ori r1,r1,0xac54                               <== NOT EXECUTED
 801c838:	b4 62 10 00 	add r2,r3,r2                                   <== NOT EXECUTED
 801c83c:	f8 00 21 17 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c840:	e3 ff ff d1 	bi 801c784 <rtems_rfs_buffer_handle_release+0x108><== NOT EXECUTED
                                                                      

0801c844 <rtems_rfs_buffer_handle_request>: int rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle, rtems_rfs_buffer_block block, bool read) {
 801c844:	37 9c ff e8 	addi sp,sp,-24                                 
 801c848:	5b 8b 00 18 	sw (sp+24),r11                                 
 801c84c:	5b 8c 00 14 	sw (sp+20),r12                                 
 801c850:	5b 8d 00 10 	sw (sp+16),r13                                 
 801c854:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801c858:	5b 8f 00 08 	sw (sp+8),r15                                  
 801c85c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c860:	b8 40 58 00 	mv r11,r2                                      
                                                                      
  /*                                                                  
   * If the handle has a buffer release it. This allows a handle to be reused
   * without needing to close then open it again.                     
   */                                                                 
  if (rtems_rfs_buffer_handle_has_block (handle))                     
 801c864:	28 42 00 08 	lw r2,(r2+8)                                   
int                                                                   
rtems_rfs_buffer_handle_request (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle,     
                                 rtems_rfs_buffer_block   block,      
                                 bool                     read)       
{                                                                     
 801c868:	b8 20 60 00 	mv r12,r1                                      
 801c86c:	b8 60 70 00 	mv r14,r3                                      
 801c870:	20 8f 00 ff 	andi r15,r4,0xff                               
                                                                      
  /*                                                                  
   * If the handle has a buffer release it. This allows a handle to be reused
   * without needing to close then open it again.                     
   */                                                                 
  if (rtems_rfs_buffer_handle_has_block (handle))                     
 801c874:	44 40 00 10 	be r2,r0,801c8b4 <rtems_rfs_buffer_handle_request+0x70>
  {                                                                   
    /*                                                                
     * Treat block 0 as special to handle the loading of the super block.
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
 801c878:	44 60 00 04 	be r3,r0,801c888 <rtems_rfs_buffer_handle_request+0x44><== NEVER TAKEN
 801c87c:	29 61 00 04 	lw r1,(r11+4)                                  
      return 0;                                                       
 801c880:	34 0d 00 00 	mvi r13,0                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    /*                                                                
     * Treat block 0 as special to handle the loading of the super block.
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
 801c884:	44 23 00 35 	be r1,r3,801c958 <rtems_rfs_buffer_handle_request+0x114>
      return 0;                                                       
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
 801c888:	34 01 00 00 	mvi r1,0                                       
 801c88c:	34 02 01 00 	mvi r2,256                                     
 801c890:	fb ff d6 4c 	calli 80121c0 <rtems_rfs_trace>                
 801c894:	5c 20 00 3a 	bne r1,r0,801c97c <rtems_rfs_buffer_handle_request+0x138><== NEVER TAKEN
      printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
              rtems_rfs_buffer_bnum (handle));                        
                                                                      
    rc = rtems_rfs_buffer_handle_release (fs, handle);                
 801c898:	b9 80 08 00 	mv r1,r12                                      
 801c89c:	b9 60 10 00 	mv r2,r11                                      
 801c8a0:	fb ff ff 77 	calli 801c67c <rtems_rfs_buffer_handle_release>
 801c8a4:	b8 20 68 00 	mv r13,r1                                      
    if (rc > 0)                                                       
 801c8a8:	48 20 00 2c 	bg r1,r0,801c958 <rtems_rfs_buffer_handle_request+0x114><== NEVER TAKEN
      return rc;                                                      
    handle->dirty = false;                                            
 801c8ac:	31 60 00 00 	sb (r11+0),r0                                  
    handle->bnum = 0;                                                 
 801c8b0:	59 60 00 04 	sw (r11+4),r0                                  
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
 801c8b4:	34 01 00 00 	mvi r1,0                                       
 801c8b8:	34 02 01 00 	mvi r2,256                                     
 801c8bc:	fb ff d6 41 	calli 80121c0 <rtems_rfs_trace>                
 801c8c0:	5c 20 00 49 	bne r1,r0,801c9e4 <rtems_rfs_buffer_handle_request+0x1a0><== NEVER TAKEN
   * currently attached to a handle. If it is share the access. A buffer could
   * be shared where different parts of the block have separate functions. An
   * example is an inode block and the file system needs to handle 2 inodes in
   * the same block at the same time.                                 
   */                                                                 
  if (fs->buffers_count)                                              
 801c8c4:	29 81 00 50 	lw r1,(r12+80)                                 
 801c8c8:	5c 20 00 35 	bne r1,r0,801c99c <rtems_rfs_buffer_handle_request+0x158>
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
 801c8cc:	29 6d 00 08 	lw r13,(r11+8)                                 
  /*                                                                  
   * If the buffer has not been found check the local cache of released
   * buffers. There are release and released modified lists to preserve the
   * state.                                                           
   */                                                                 
  if (!rtems_rfs_fs_no_local_cache (fs) &&                            
 801c8d0:	29 81 00 00 	lw r1,(r12+0)                                  
 801c8d4:	20 21 00 02 	andi r1,r1,0x2                                 
 801c8d8:	44 20 00 2e 	be r1,r0,801c990 <rtems_rfs_buffer_handle_request+0x14c>
  }                                                                   
                                                                      
  /*                                                                  
   * If not located we request the buffer from the I/O layer.         
   */                                                                 
  if (!rtems_rfs_buffer_handle_has_block (handle))                    
 801c8dc:	45 a0 00 47 	be r13,r0,801c9f8 <rtems_rfs_buffer_handle_request+0x1b4><== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   * Increase the reference count of the buffer.                      
   */                                                                 
  rtems_rfs_buffer_refs_up (handle);                                  
 801c8e0:	29 a3 00 30 	lw r3,(r13+48)                                 
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
 801c8e4:	b9 a0 10 00 	mv r2,r13                                      
 801c8e8:	35 81 00 44 	addi r1,r12,68                                 
 801c8ec:	34 63 00 01 	addi r3,r3,1                                   
 801c8f0:	59 a3 00 30 	sw (r13+48),r3                                 
 801c8f4:	fb ff b8 3b 	calli 800a9e0 <_Chain_Append>                  
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
 801c8f8:	29 82 00 50 	lw r2,(r12+80)                                 
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
 801c8fc:	29 63 00 08 	lw r3,(r11+8)                                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
 801c900:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   * Increase the reference count of the buffer.                      
   */                                                                 
  rtems_rfs_buffer_refs_up (handle);                                  
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
 801c904:	34 42 00 01 	addi r2,r2,1                                   
 801c908:	59 82 00 50 	sw (r12+80),r2                                 
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
 801c90c:	58 6e 00 34 	sw (r3+52),r14                                 
  handle->bnum = block;                                               
 801c910:	59 6e 00 04 	sw (r11+4),r14                                 
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
 801c914:	34 02 01 00 	mvi r2,256                                     
 801c918:	fb ff d6 2a 	calli 80121c0 <rtems_rfs_trace>                
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
            block, read ? "read" : "get", handle->buffer->block,      
            handle->buffer->references);                              
                                                                      
  return 0;                                                           
 801c91c:	34 0d 00 00 	mvi r13,0                                      
  fs->buffers_count++;                                                
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
 801c920:	44 20 00 0e 	be r1,r0,801c958 <rtems_rfs_buffer_handle_request+0x114><== ALWAYS TAKEN
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
 801c924:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801c928:	38 63 ac 8c 	ori r3,r3,0xac8c                               <== NOT EXECUTED
 801c92c:	45 e0 00 03 	be r15,r0,801c938 <rtems_rfs_buffer_handle_request+0xf4><== NOT EXECUTED
 801c930:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801c934:	38 63 a0 ec 	ori r3,r3,0xa0ec                               <== NOT EXECUTED
            block, read ? "read" : "get", handle->buffer->block,      
 801c938:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
 801c93c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c940:	38 21 ad 58 	ori r1,r1,0xad58                               <== NOT EXECUTED
 801c944:	28 44 00 18 	lw r4,(r2+24)                                  <== NOT EXECUTED
 801c948:	28 45 00 30 	lw r5,(r2+48)                                  <== NOT EXECUTED
 801c94c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
            block, read ? "read" : "get", handle->buffer->block,      
            handle->buffer->references);                              
                                                                      
  return 0;                                                           
 801c950:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
 801c954:	f8 00 20 d1 	calli 8024c98 <printf>                         <== NOT EXECUTED
            block, read ? "read" : "get", handle->buffer->block,      
            handle->buffer->references);                              
                                                                      
  return 0;                                                           
}                                                                     
 801c958:	b9 a0 08 00 	mv r1,r13                                      
 801c95c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c960:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801c964:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801c968:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801c96c:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801c970:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801c974:	37 9c 00 18 	addi sp,sp,24                                  
 801c978:	c3 a0 00 00 	ret                                            
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
      return 0;                                                       
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
 801c97c:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
 801c980:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c984:	38 21 ac 90 	ori r1,r1,0xac90                               <== NOT EXECUTED
 801c988:	f8 00 20 c4 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c98c:	e3 ff ff c3 	bi 801c898 <rtems_rfs_buffer_handle_request+0x54><== NOT EXECUTED
  /*                                                                  
   * If the buffer has not been found check the local cache of released
   * buffers. There are release and released modified lists to preserve the
   * state.                                                           
   */                                                                 
  if (!rtems_rfs_fs_no_local_cache (fs) &&                            
 801c990:	45 a1 00 34 	be r13,r1,801ca60 <rtems_rfs_buffer_handle_request+0x21c>
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
 801c994:	29 6d 00 08 	lw r13,(r11+8)                                 
 801c998:	e3 ff ff d2 	bi 801c8e0 <rtems_rfs_buffer_handle_request+0x9c>
  if (fs->buffers_count)                                              
  {                                                                   
    /*                                                                
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
 801c99c:	35 81 00 44 	addi r1,r12,68                                 
 801c9a0:	35 82 00 50 	addi r2,r12,80                                 
 801c9a4:	b9 c0 18 00 	mv r3,r14                                      
 801c9a8:	fb ff fe eb 	calli 801c554 <rtems_rfs_scan_chain>           
 801c9ac:	59 61 00 08 	sw (r11+8),r1                                  
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
 801c9b0:	34 0d 00 00 	mvi r13,0                                      
 801c9b4:	44 20 ff c7 	be r1,r0,801c8d0 <rtems_rfs_buffer_handle_request+0x8c>
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
 801c9b8:	34 01 00 00 	mvi r1,0                                       
 801c9bc:	34 02 01 00 	mvi r2,256                                     
 801c9c0:	fb ff d6 00 	calli 80121c0 <rtems_rfs_trace>                
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
 801c9c4:	44 20 ff c2 	be r1,r0,801c8cc <rtems_rfs_buffer_handle_request+0x88><== ALWAYS TAKEN
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
              rtems_rfs_buffer_refs (handle) + 1);                    
 801c9c8:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
 801c9cc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c9d0:	38 21 ac ec 	ori r1,r1,0xacec                               <== NOT EXECUTED
 801c9d4:	28 42 00 30 	lw r2,(r2+48)                                  <== NOT EXECUTED
 801c9d8:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
 801c9dc:	f8 00 20 af 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c9e0:	e3 ff ff bb 	bi 801c8cc <rtems_rfs_buffer_handle_request+0x88><== NOT EXECUTED
    handle->dirty = false;                                            
    handle->bnum = 0;                                                 
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 "\n", block); 
 801c9e4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c9e8:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801c9ec:	38 21 ac c4 	ori r1,r1,0xacc4                               <== NOT EXECUTED
 801c9f0:	f8 00 20 aa 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c9f4:	e3 ff ff b4 	bi 801c8c4 <rtems_rfs_buffer_handle_request+0x80><== NOT EXECUTED
  /*                                                                  
   * If not located we request the buffer from the I/O layer.         
   */                                                                 
  if (!rtems_rfs_buffer_handle_has_block (handle))                    
  {                                                                   
    rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer);
 801c9f8:	b9 80 08 00 	mv r1,r12                                      
 801c9fc:	b9 c0 10 00 	mv r2,r14                                      
 801ca00:	b9 e0 18 00 	mv r3,r15                                      
 801ca04:	35 64 00 08 	addi r4,r11,8                                  
 801ca08:	f8 00 19 b1 	calli 80230cc <rtems_rfs_buffer_bdbuf_request> 
 801ca0c:	b8 20 68 00 	mv r13,r1                                      
                                                                      
    if (rc > 0)                                                       
 801ca10:	4c 01 00 22 	bge r0,r1,801ca98 <rtems_rfs_buffer_handle_request+0x254><== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))    
 801ca14:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801ca18:	34 02 01 00 	mvi r2,256                                     <== NOT EXECUTED
 801ca1c:	fb ff d5 e9 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ca20:	44 20 ff ce 	be r1,r0,801c958 <rtems_rfs_buffer_handle_request+0x114><== NOT EXECUTED
        printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
 801ca24:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 801ca28:	39 6b ac 8c 	ori r11,r11,0xac8c                             <== NOT EXECUTED
 801ca2c:	45 e0 00 03 	be r15,r0,801ca38 <rtems_rfs_buffer_handle_request+0x1f4><== NOT EXECUTED
 801ca30:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 801ca34:	39 6b a0 ec 	ori r11,r11,0xa0ec                             <== NOT EXECUTED
 801ca38:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801ca3c:	f8 00 25 52 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ca40:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
 801ca44:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ca48:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801ca4c:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 801ca50:	b9 a0 20 00 	mv r4,r13                                      <== NOT EXECUTED
 801ca54:	38 21 ad 20 	ori r1,r1,0xad20                               <== NOT EXECUTED
 801ca58:	f8 00 20 90 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ca5c:	e3 ff ff bf 	bi 801c958 <rtems_rfs_buffer_handle_request+0x114><== NOT EXECUTED
      !rtems_rfs_buffer_handle_has_block (handle))                    
  {                                                                   
    /*                                                                
     * Check the local cache of released buffers.                     
     */                                                               
    if (fs->release_count)                                            
 801ca60:	29 81 00 60 	lw r1,(r12+96)                                 
 801ca64:	5c 2d 00 11 	bne r1,r13,801caa8 <rtems_rfs_buffer_handle_request+0x264>
      handle->buffer = rtems_rfs_scan_chain (&fs->release,            
                                             &fs->release_count,      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
 801ca68:	29 81 00 70 	lw r1,(r12+112)                                
 801ca6c:	44 20 ff e3 	be r1,r0,801c9f8 <rtems_rfs_buffer_handle_request+0x1b4>
        fs->release_modified_count)                                   
    {                                                                 
      handle->buffer = rtems_rfs_scan_chain (&fs->release_modified,   
 801ca70:	35 81 00 64 	addi r1,r12,100                                
 801ca74:	35 82 00 70 	addi r2,r12,112                                
 801ca78:	b9 c0 18 00 	mv r3,r14                                      
 801ca7c:	fb ff fe b6 	calli 801c554 <rtems_rfs_scan_chain>           
 801ca80:	59 61 00 08 	sw (r11+8),r1                                  
 801ca84:	b8 20 68 00 	mv r13,r1                                      
                                             &fs->release_modified_count,
                                             block);                  
      /*                                                              
       * If we found a buffer retain the dirty buffer state.          
       */                                                             
      if (rtems_rfs_buffer_handle_has_block (handle))                 
 801ca88:	44 20 ff dc 	be r1,r0,801c9f8 <rtems_rfs_buffer_handle_request+0x1b4>
        rtems_rfs_buffer_mark_dirty (handle);                         
 801ca8c:	34 01 00 01 	mvi r1,1                                       
 801ca90:	31 61 00 00 	sb (r11+0),r1                                  
 801ca94:	e3 ff ff 93 	bi 801c8e0 <rtems_rfs_buffer_handle_request+0x9c>
        printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
                block, read ? "read" : "get", rc, strerror (rc));     
      return rc;                                                      
    }                                                                 
                                                                      
    rtems_chain_set_off_chain (rtems_rfs_buffer_link(handle));        
 801ca98:	29 6d 00 08 	lw r13,(r11+8)                                 
 801ca9c:	59 a0 00 04 	sw (r13+4),r0                                  
 801caa0:	59 a0 00 00 	sw (r13+0),r0                                  
 801caa4:	e3 ff ff 8f 	bi 801c8e0 <rtems_rfs_buffer_handle_request+0x9c>
  {                                                                   
    /*                                                                
     * Check the local cache of released buffers.                     
     */                                                               
    if (fs->release_count)                                            
      handle->buffer = rtems_rfs_scan_chain (&fs->release,            
 801caa8:	35 81 00 54 	addi r1,r12,84                                 
 801caac:	35 82 00 60 	addi r2,r12,96                                 
 801cab0:	b9 c0 18 00 	mv r3,r14                                      
 801cab4:	fb ff fe a8 	calli 801c554 <rtems_rfs_scan_chain>           
 801cab8:	59 61 00 08 	sw (r11+8),r1                                  
                                             &fs->release_count,      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
 801cabc:	44 2d ff eb 	be r1,r13,801ca68 <rtems_rfs_buffer_handle_request+0x224>
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
 801cac0:	29 6d 00 08 	lw r13,(r11+8)                                 
 801cac4:	e3 ff ff 87 	bi 801c8e0 <rtems_rfs_buffer_handle_request+0x9c>
                                                                      

0801cac8 <rtems_rfs_buffer_open>: return rc; } int rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs) {
 801cac8:	37 9c ff a8 	addi sp,sp,-88                                 
 801cacc:	5b 8b 00 10 	sw (sp+16),r11                                 
 801cad0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801cad4:	5b 8d 00 08 	sw (sp+8),r13                                  
 801cad8:	5b 9d 00 04 	sw (sp+4),ra                                   
 801cadc:	b8 20 58 00 	mv r11,r1                                      
 801cae0:	b8 40 60 00 	mv r12,r2                                      
  struct stat st;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  int rv;                                                             
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
 801cae4:	34 01 00 00 	mvi r1,0                                       
 801cae8:	34 02 00 20 	mvi r2,32                                      
 801caec:	fb ff d5 b5 	calli 80121c0 <rtems_rfs_trace>                
 801caf0:	5c 20 00 3a 	bne r1,r0,801cbd8 <rtems_rfs_buffer_open+0x110><== NEVER TAKEN
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
                                                                      
  fs->device = open (name, O_RDWR);                                   
 801caf4:	b9 60 08 00 	mv r1,r11                                      
 801caf8:	34 02 00 02 	mvi r2,2                                       
 801cafc:	fb ff ac b9 	calli 8007de0 <open>                           
 801cb00:	59 81 00 0c 	sw (r12+12),r1                                 
  if (fs->device < 0)                                                 
 801cb04:	4c 20 00 10 	bge r1,r0,801cb44 <rtems_rfs_buffer_open+0x7c> <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cb08:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cb0c:	34 02 00 08 	mvi r2,8                                       <== NOT EXECUTED
 801cb10:	fb ff d5 ac 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot open file\n");          
    return ENXIO;                                                     
 801cb14:	34 0d 00 06 	mvi r13,6                                      <== NOT EXECUTED
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
                                                                      
  fs->device = open (name, O_RDWR);                                   
  if (fs->device < 0)                                                 
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cb18:	44 20 00 29 	be r1,r0,801cbbc <rtems_rfs_buffer_open+0xf4>  <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot open file\n");          
 801cb1c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cb20:	38 21 ad bc 	ori r1,r1,0xadbc                               <== NOT EXECUTED
 801cb24:	f8 00 21 25 	calli 8024fb8 <puts>                           <== NOT EXECUTED
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
            rtems_rfs_fs_media_block_size (fs));                      
                                                                      
  return 0;                                                           
}                                                                     
 801cb28:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801cb2c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801cb30:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 801cb34:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 801cb38:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 801cb3c:	37 9c 00 58 	addi sp,sp,88                                  <== NOT EXECUTED
 801cb40:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: cannot open file\n");          
    return ENXIO;                                                     
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
 801cb44:	37 82 00 14 	addi r2,sp,20                                  
 801cb48:	fb ff a8 61 	calli 8006ccc <fstat>                          
 801cb4c:	4c 20 00 0f 	bge r1,r0,801cb88 <rtems_rfs_buffer_open+0xc0> <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cb50:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cb54:	34 02 00 08 	mvi r2,8                                       <== NOT EXECUTED
 801cb58:	fb ff d5 9a 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",       
              name, strerror (errno));                                
    return ENXIO;                                                     
 801cb5c:	34 0d 00 06 	mvi r13,6                                      <== NOT EXECUTED
    return ENXIO;                                                     
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cb60:	44 20 00 17 	be r1,r0,801cbbc <rtems_rfs_buffer_open+0xf4>  <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",       
              name, strerror (errno));                                
 801cb64:	f8 00 1b 78 	calli 8023944 <__errno>                        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",       
 801cb68:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 801cb6c:	f8 00 25 06 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801cb70:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801cb74:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cb78:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801cb7c:	38 21 ad e8 	ori r1,r1,0xade8                               <== NOT EXECUTED
 801cb80:	f8 00 20 46 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801cb84:	e0 00 00 0e 	bi 801cbbc <rtems_rfs_buffer_open+0xf4>        <== NOT EXECUTED
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  /*                                                                  
   * Is the device a block device ?                                   
   */                                                                 
  if (!S_ISBLK (st.st_mode))                                          
 801cb88:	2b 82 00 20 	lw r2,(sp+32)                                  
 801cb8c:	34 01 60 00 	mvi r1,24576                                   
 801cb90:	20 42 f0 00 	andi r2,r2,0xf000                              
 801cb94:	44 41 00 16 	be r2,r1,801cbec <rtems_rfs_buffer_open+0x124> <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cb98:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cb9c:	34 02 00 08 	mvi r2,8                                       <== NOT EXECUTED
 801cba0:	fb ff d5 88 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name);
    return ENXIO;                                                     
 801cba4:	34 0d 00 06 	mvi r13,6                                      <== NOT EXECUTED
  /*                                                                  
   * Is the device a block device ?                                   
   */                                                                 
  if (!S_ISBLK (st.st_mode))                                          
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cba8:	44 20 00 05 	be r1,r0,801cbbc <rtems_rfs_buffer_open+0xf4>  <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name);
 801cbac:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cbb0:	38 21 ae 18 	ori r1,r1,0xae18                               <== NOT EXECUTED
 801cbb4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801cbb8:	f8 00 20 38 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
            rtems_rfs_fs_media_block_size (fs));                      
                                                                      
  return 0;                                                           
}                                                                     
 801cbbc:	b9 a0 08 00 	mv r1,r13                                      
 801cbc0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cbc4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801cbc8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801cbcc:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801cbd0:	37 9c 00 58 	addi sp,sp,88                                  
 801cbd4:	c3 a0 00 00 	ret                                            
#if RTEMS_RFS_USE_LIBBLOCK                                            
  int rv;                                                             
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
 801cbd8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cbdc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801cbe0:	38 21 ad 94 	ori r1,r1,0xad94                               <== NOT EXECUTED
 801cbe4:	f8 00 20 2d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801cbe8:	e3 ff ff c3 	bi 801caf4 <rtems_rfs_buffer_open+0x2c>        <== NOT EXECUTED
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
 801cbec:	78 03 08 03 	mvhi r3,0x803                                  
 801cbf0:	38 63 a2 74 	ori r3,r3,0xa274                               
 801cbf4:	28 62 00 00 	lw r2,(r3+0)                                   
 801cbf8:	29 81 00 0c 	lw r1,(r12+12)                                 
 801cbfc:	35 83 00 10 	addi r3,r12,16                                 
 801cc00:	fb ff a8 a5 	calli 8006e94 <ioctl>                          
                                                                      
  /*                                                                  
   * Check that device is registred as a block device and lock it.    
   */                                                                 
  rv = rtems_disk_fd_get_disk_device (fs->device, &fs->disk);         
  if (rv != 0)                                                        
 801cc04:	44 20 00 0a 	be r1,r0,801cc2c <rtems_rfs_buffer_open+0x164> <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cc08:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cc0c:	34 02 00 08 	mvi r2,8                                       <== NOT EXECUTED
 801cc10:	fb ff d5 6c 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot obtain the disk\n");    
    return ENXIO;                                                     
 801cc14:	34 0d 00 06 	mvi r13,6                                      <== NOT EXECUTED
   * Check that device is registred as a block device and lock it.    
   */                                                                 
  rv = rtems_disk_fd_get_disk_device (fs->device, &fs->disk);         
  if (rv != 0)                                                        
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
 801cc18:	44 20 ff e9 	be r1,r0,801cbbc <rtems_rfs_buffer_open+0xf4>  <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot obtain the disk\n");    
 801cc1c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cc20:	38 21 ae 4c 	ori r1,r1,0xae4c                               <== NOT EXECUTED
 801cc24:	f8 00 20 e5 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801cc28:	e3 ff ff e5 	bi 801cbbc <rtems_rfs_buffer_open+0xf4>        <== NOT EXECUTED
#else                                                                 
  fs->media_size = st.st_size;                                        
  strcat (fs->name, name);                                            
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
 801cc2c:	34 02 00 20 	mvi r2,32                                      
 801cc30:	fb ff d5 64 	calli 80121c0 <rtems_rfs_trace>                
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
            rtems_rfs_fs_media_block_size (fs));                      
                                                                      
  return 0;                                                           
 801cc34:	34 0d 00 00 	mvi r13,0                                      
#else                                                                 
  fs->media_size = st.st_size;                                        
  strcat (fs->name, name);                                            
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
 801cc38:	44 2d ff e1 	be r1,r13,801cbbc <rtems_rfs_buffer_open+0xf4> <== ALWAYS TAKEN
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
 801cc3c:	29 83 00 10 	lw r3,(r12+16)                                 <== NOT EXECUTED
  fs->media_size = st.st_size;                                        
  strcat (fs->name, name);                                            
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
 801cc40:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cc44:	38 21 ae 7c 	ori r1,r1,0xae7c                               <== NOT EXECUTED
 801cc48:	28 62 00 1c 	lw r2,(r3+28)                                  <== NOT EXECUTED
 801cc4c:	28 63 00 20 	lw r3,(r3+32)                                  <== NOT EXECUTED
 801cc50:	f8 00 20 12 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801cc54:	e3 ff ff da 	bi 801cbbc <rtems_rfs_buffer_open+0xf4>        <== NOT EXECUTED
                                                                      

0801cd98 <rtems_rfs_buffer_setblksize>: return result; } int rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size) {
 801cd98:	37 9c ff f0 	addi sp,sp,-16                                 
 801cd9c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801cda0:	5b 8c 00 08 	sw (sp+8),r12                                  
 801cda4:	5b 9d 00 04 	sw (sp+4),ra                                   
 801cda8:	b8 20 58 00 	mv r11,r1                                      
 801cdac:	5b 82 00 10 	sw (sp+16),r2                                  
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))            
 801cdb0:	34 01 00 00 	mvi r1,0                                       
 801cdb4:	34 02 04 00 	mvi r2,1024                                    
 801cdb8:	fb ff d5 02 	calli 80121c0 <rtems_rfs_trace>                
 801cdbc:	5c 20 00 20 	bne r1,r0,801ce3c <rtems_rfs_buffer_setblksize+0xa4><== NEVER TAKEN
    printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size); 
                                                                      
  rc = rtems_rfs_buffers_release (fs);                                
 801cdc0:	b9 60 08 00 	mv r1,r11                                      
 801cdc4:	fb ff ff cd 	calli 801ccf8 <rtems_rfs_buffers_release>      
 801cdc8:	b8 20 60 00 	mv r12,r1                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
 801cdcc:	4c 01 00 05 	bge r0,r1,801cde0 <rtems_rfs_buffer_setblksize+0x48><== ALWAYS TAKEN
 801cdd0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cdd4:	34 02 04 00 	mvi r2,1024                                    <== NOT EXECUTED
 801cdd8:	fb ff d4 fa 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801cddc:	5c 20 00 1d 	bne r1,r0,801ce50 <rtems_rfs_buffer_setblksize+0xb8><== NOT EXECUTED
    printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_buffer_sync (fs);                                    
 801cde0:	b9 60 08 00 	mv r1,r11                                      
 801cde4:	fb ff ff 9d 	calli 801cc58 <rtems_rfs_buffer_sync>          
 801cde8:	b8 20 60 00 	mv r12,r1                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
 801cdec:	4c 01 00 05 	bge r0,r1,801ce00 <rtems_rfs_buffer_setblksize+0x68><== ALWAYS TAKEN
 801cdf0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801cdf4:	34 02 04 00 	mvi r2,1024                                    <== NOT EXECUTED
 801cdf8:	fb ff d4 f2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801cdfc:	5c 20 00 1d 	bne r1,r0,801ce70 <rtems_rfs_buffer_setblksize+0xd8><== NOT EXECUTED
    printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);     
 801ce00:	29 61 00 10 	lw r1,(r11+16)                                 
 801ce04:	78 03 08 03 	mvhi r3,0x803                                  
 801ce08:	38 63 a2 80 	ori r3,r3,0xa280                               
 801ce0c:	28 62 00 00 	lw r2,(r3+0)                                   
 801ce10:	28 24 00 38 	lw r4,(r1+56)                                  
 801ce14:	37 83 00 10 	addi r3,sp,16                                  
 801ce18:	d8 80 00 00 	call r4                                        
  if (rc < 0)                                                         
 801ce1c:	4c 20 00 03 	bge r1,r0,801ce28 <rtems_rfs_buffer_setblksize+0x90><== ALWAYS TAKEN
    rc = errno;                                                       
 801ce20:	f8 00 1a c9 	calli 8023944 <__errno>                        <== NOT EXECUTED
 801ce24:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
#endif                                                                
  return rc;                                                          
}                                                                     
 801ce28:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801ce2c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801ce30:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801ce34:	37 9c 00 10 	addi sp,sp,16                                  
 801ce38:	c3 a0 00 00 	ret                                            
rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size)  
{                                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))            
    printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size); 
 801ce3c:	2b 82 00 10 	lw r2,(sp+16)                                  <== NOT EXECUTED
 801ce40:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ce44:	38 21 af 48 	ori r1,r1,0xaf48                               <== NOT EXECUTED
 801ce48:	f8 00 1f 94 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ce4c:	e3 ff ff dd 	bi 801cdc0 <rtems_rfs_buffer_setblksize+0x28>  <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_buffers_release (fs);                                
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
    printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
 801ce50:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ce54:	f8 00 24 4c 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ce58:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801ce5c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ce60:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801ce64:	38 21 af 78 	ori r1,r1,0xaf78                               <== NOT EXECUTED
 801ce68:	f8 00 1f 8c 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ce6c:	e3 ff ff dd 	bi 801cde0 <rtems_rfs_buffer_setblksize+0x48>  <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_buffer_sync (fs);                                    
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
    printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
 801ce70:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ce74:	f8 00 24 44 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ce78:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801ce7c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ce80:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801ce84:	38 21 af b8 	ori r1,r1,0xafb8                               <== NOT EXECUTED
 801ce88:	f8 00 1f 84 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);     
 801ce8c:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 801ce90:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801ce94:	38 63 a2 80 	ori r3,r3,0xa280                               <== NOT EXECUTED
 801ce98:	28 62 00 00 	lw r2,(r3+0)                                   <== NOT EXECUTED
 801ce9c:	28 24 00 38 	lw r4,(r1+56)                                  <== NOT EXECUTED
 801cea0:	37 83 00 10 	addi r3,sp,16                                  <== NOT EXECUTED
 801cea4:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
  if (rc < 0)                                                         
 801cea8:	4c 20 ff e0 	bge r1,r0,801ce28 <rtems_rfs_buffer_setblksize+0x90><== NOT EXECUTED
 801ceac:	e3 ff ff dd 	bi 801ce20 <rtems_rfs_buffer_setblksize+0x88>  <== NOT EXECUTED
                                                                      

0801cc58 <rtems_rfs_buffer_sync>: return rc; } int rtems_rfs_buffer_sync (rtems_rfs_file_system* fs) {
 801cc58:	37 9c ff f0 	addi sp,sp,-16                                 
 801cc5c:	5b 8b 00 10 	sw (sp+16),r11                                 
 801cc60:	5b 8c 00 0c 	sw (sp+12),r12                                 
 801cc64:	5b 8d 00 08 	sw (sp+8),r13                                  
 801cc68:	5b 9d 00 04 	sw (sp+4),ra                                   
  int result = 0;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
 801cc6c:	34 02 00 20 	mvi r2,32                                      
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)                     
{                                                                     
 801cc70:	b8 20 58 00 	mv r11,r1                                      
  int result = 0;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
 801cc74:	34 01 00 00 	mvi r1,0                                       
 801cc78:	fb ff d5 52 	calli 80121c0 <rtems_rfs_trace>                
 801cc7c:	5c 20 00 1b 	bne r1,r0,801cce8 <rtems_rfs_buffer_sync+0x90> <== NEVER TAKEN
                                                                      
  /*                                                                  
   * @todo Split in the separate files for each type.                 
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
 801cc80:	29 61 00 10 	lw r1,(r11+16)                                 
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)                     
{                                                                     
  int result = 0;                                                     
 801cc84:	34 0d 00 00 	mvi r13,0                                      
                                                                      
  /*                                                                  
   * @todo Split in the separate files for each type.                 
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
 801cc88:	fb ff e0 b0 	calli 8014f48 <rtems_bdbuf_syncdev>            
 801cc8c:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 801cc90:	5c 20 00 0a 	bne r1,r0,801ccb8 <rtems_rfs_buffer_sync+0x60> <== NEVER TAKEN
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
              rtems_status_text (sc));                                
    result = EIO;                                                     
  }                                                                   
  rtems_disk_release (fs->disk);                                      
 801cc94:	29 61 00 10 	lw r1,(r11+16)                                 
 801cc98:	fb ff 97 9a 	calli 8002b00 <rtems_disk_release>             
      printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",   
              result, strerror (result));                             
  }                                                                   
#endif                                                                
  return result;                                                      
}                                                                     
 801cc9c:	b9 a0 08 00 	mv r1,r13                                      
 801cca0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cca4:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801cca8:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801ccac:	2b 8d 00 08 	lw r13,(sp+8)                                  
 801ccb0:	37 9c 00 10 	addi sp,sp,16                                  
 801ccb4:	c3 a0 00 00 	ret                                            
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
 801ccb8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801ccbc:	34 02 00 20 	mvi r2,32                                      <== NOT EXECUTED
 801ccc0:	fb ff d5 40 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
              rtems_status_text (sc));                                
    result = EIO;                                                     
 801ccc4:	34 0d 00 05 	mvi r13,5                                      <== NOT EXECUTED
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
 801ccc8:	44 20 ff f3 	be r1,r0,801cc94 <rtems_rfs_buffer_sync+0x3c>  <== NOT EXECUTED
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
 801cccc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ccd0:	fb ff e5 81 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 801ccd4:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 801ccd8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ccdc:	38 21 ae cc 	ori r1,r1,0xaecc                               <== NOT EXECUTED
 801cce0:	f8 00 1f ee 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801cce4:	e3 ff ff ec 	bi 801cc94 <rtems_rfs_buffer_sync+0x3c>        <== NOT EXECUTED
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-sync: syncing\n");                     
 801cce8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ccec:	38 21 ae ac 	ori r1,r1,0xaeac                               <== NOT EXECUTED
 801ccf0:	f8 00 20 b2 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801ccf4:	e3 ff ff e3 	bi 801cc80 <rtems_rfs_buffer_sync+0x28>        <== NOT EXECUTED
                                                                      

0801ccf8 <rtems_rfs_buffers_release>: return rrc; } int rtems_rfs_buffers_release (rtems_rfs_file_system* fs) {
 801ccf8:	37 9c ff f4 	addi sp,sp,-12                                 
 801ccfc:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801cd00:	5b 8c 00 08 	sw (sp+8),r12                                  
 801cd04:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
 801cd08:	34 02 00 40 	mvi r2,64                                      
  return rrc;                                                         
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffers_release (rtems_rfs_file_system* fs)                 
{                                                                     
 801cd0c:	b8 20 58 00 	mv r11,r1                                      
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
 801cd10:	34 01 00 00 	mvi r1,0                                       
 801cd14:	fb ff d5 2b 	calli 80121c0 <rtems_rfs_trace>                
 801cd18:	5c 20 00 19 	bne r1,r0,801cd7c <rtems_rfs_buffers_release+0x84><== NEVER TAKEN
    printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "         
            "release:%" PRIu32 " release-modified:%" PRIu32 "\n",     
            fs->buffers_count, fs->release_count, fs->release_modified_count);
                                                                      
  rc = rtems_rfs_release_chain (&fs->release,                         
 801cd1c:	34 03 00 00 	mvi r3,0                                       
 801cd20:	35 62 00 60 	addi r2,r11,96                                 
 801cd24:	35 61 00 54 	addi r1,r11,84                                 
 801cd28:	fb ff fd db 	calli 801c494 <rtems_rfs_release_chain>        
 801cd2c:	b8 20 60 00 	mv r12,r1                                      
 801cd30:	34 02 00 1f 	mvi r2,31                                      
 801cd34:	a4 20 08 00 	not r1,r1                                      
 801cd38:	f8 00 68 3e 	calli 8036e30 <__ashrsi3>                      
 801cd3c:	a1 81 60 00 	and r12,r12,r1                                 
                                &fs->release_count,                   
                                false);                               
  if ((rc > 0) && (rrc == 0))                                         
    rrc = rc;                                                         
  rc = rtems_rfs_release_chain (&fs->release_modified,                
 801cd40:	35 62 00 70 	addi r2,r11,112                                
 801cd44:	34 03 00 01 	mvi r3,1                                       
 801cd48:	35 61 00 64 	addi r1,r11,100                                
 801cd4c:	fb ff fd d2 	calli 801c494 <rtems_rfs_release_chain>        
                                &fs->release_modified_count,          
                                true);                                
  if ((rc > 0) && (rrc == 0))                                         
 801cd50:	65 83 00 00 	cmpei r3,r12,0                                 
 801cd54:	68 22 00 00 	cmpgi r2,r1,0                                  
 801cd58:	a0 62 10 00 	and r2,r3,r2                                   
 801cd5c:	44 40 00 02 	be r2,r0,801cd64 <rtems_rfs_buffers_release+0x6c><== ALWAYS TAKEN
 801cd60:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    rrc = rc;                                                         
                                                                      
  return rrc;                                                         
}                                                                     
 801cd64:	b9 80 08 00 	mv r1,r12                                      
 801cd68:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801cd6c:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801cd70:	2b 8c 00 08 	lw r12,(sp+8)                                  
 801cd74:	37 9c 00 0c 	addi sp,sp,12                                  
 801cd78:	c3 a0 00 00 	ret                                            
{                                                                     
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
    printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "         
 801cd7c:	29 62 00 50 	lw r2,(r11+80)                                 <== NOT EXECUTED
 801cd80:	29 63 00 60 	lw r3,(r11+96)                                 <== NOT EXECUTED
 801cd84:	29 64 00 70 	lw r4,(r11+112)                                <== NOT EXECUTED
 801cd88:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801cd8c:	38 21 ae fc 	ori r1,r1,0xaefc                               <== NOT EXECUTED
 801cd90:	f8 00 1f c2 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801cd94:	e3 ff ff e2 	bi 801cd1c <rtems_rfs_buffers_release+0x24>    <== NOT EXECUTED
                                                                      

0801d588 <rtems_rfs_dir_add_entry>: rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, const char* name, size_t length, rtems_rfs_ino ino) {
 801d588:	37 9c ff 3c 	addi sp,sp,-196                                
 801d58c:	5b 8b 00 44 	sw (sp+68),r11                                 
 801d590:	5b 8c 00 40 	sw (sp+64),r12                                 
 801d594:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801d598:	5b 8e 00 38 	sw (sp+56),r14                                 
 801d59c:	5b 8f 00 34 	sw (sp+52),r15                                 
 801d5a0:	5b 90 00 30 	sw (sp+48),r16                                 
 801d5a4:	5b 91 00 2c 	sw (sp+44),r17                                 
 801d5a8:	5b 92 00 28 	sw (sp+40),r18                                 
 801d5ac:	5b 93 00 24 	sw (sp+36),r19                                 
 801d5b0:	5b 94 00 20 	sw (sp+32),r20                                 
 801d5b4:	5b 95 00 1c 	sw (sp+28),r21                                 
 801d5b8:	5b 96 00 18 	sw (sp+24),r22                                 
 801d5bc:	5b 97 00 14 	sw (sp+20),r23                                 
 801d5c0:	5b 98 00 10 	sw (sp+16),r24                                 
 801d5c4:	5b 99 00 0c 	sw (sp+12),r25                                 
 801d5c8:	5b 9b 00 08 	sw (sp+8),fp                                   
 801d5cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 801d5d0:	b8 20 68 00 	mv r13,r1                                      
 801d5d4:	5b 82 00 4c 	sw (sp+76),r2                                  
  rtems_rfs_block_map     map;                                        
  rtems_rfs_block_pos     bpos;                                       
  rtems_rfs_buffer_handle buffer;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
 801d5d8:	34 01 00 00 	mvi r1,0                                       
 801d5dc:	78 02 20 00 	mvhi r2,0x2000                                 
rtems_rfs_dir_add_entry (rtems_rfs_file_system*  fs,                  
                         rtems_rfs_inode_handle* dir,                 
                         const char*             name,                
                         size_t                  length,              
                         rtems_rfs_ino           ino)                 
{                                                                     
 801d5e0:	b8 60 b0 00 	mv r22,r3                                      
 801d5e4:	b8 80 98 00 	mv r19,r4                                      
 801d5e8:	5b 85 00 50 	sw (sp+80),r5                                  
  rtems_rfs_block_map     map;                                        
  rtems_rfs_block_pos     bpos;                                       
  rtems_rfs_buffer_handle buffer;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
 801d5ec:	fb ff d2 f5 	calli 80121c0 <rtems_rfs_trace>                
 801d5f0:	5c 20 00 af 	bne r1,r0,801d8ac <rtems_rfs_dir_add_entry+0x324><== NEVER TAKEN
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (", len=%zd\n", length);                                   
  }                                                                   
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
 801d5f4:	2b 82 00 4c 	lw r2,(sp+76)                                  
 801d5f8:	b9 a0 08 00 	mv r1,r13                                      
 801d5fc:	37 83 00 5c 	addi r3,sp,92                                  
 801d600:	fb ff f7 5d 	calli 801b374 <rtems_rfs_block_map_open>       
 801d604:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 801d608:	48 20 00 42 	bg r1,r0,801d710 <rtems_rfs_dir_add_entry+0x188><== NEVER TAKEN
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
 801d60c:	36 62 00 0a 	addi r2,r19,10                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801d610:	33 80 00 ac 	sb (sp+172),r0                                 
  handle->bnum  = 0;                                                  
 801d614:	5b 80 00 b0 	sw (sp+176),r0                                 
  handle->buffer = NULL;                                              
 801d618:	5b 80 00 b4 	sw (sp+180),r0                                 
 * @param bpos A pointer to the block position.                       
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)             
{                                                                     
  bpos->bno = 0;                                                      
 801d61c:	5b 80 00 b8 	sw (sp+184),r0                                 
  bpos->boff = 0;                                                     
 801d620:	5b 80 00 bc 	sw (sp+188),r0                                 
  bpos->block = 0;                                                    
 801d624:	5b 80 00 c0 	sw (sp+192),r0                                 
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801d628:	38 14 ff ff 	mvu r20,0xffff                                 
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801d62c:	34 15 00 0a 	mvi r21,10                                     
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
 801d630:	5b 82 00 54 	sw (sp+84),r2                                  
 801d634:	5b 93 00 58 	sw (sp+88),r19                                 
    /*                                                                
     * Locate the first block. If an error the block will be 0. If the map is
     * empty which happens when creating a directory and adding the first entry
     * the seek will return ENXIO. In this case we need to grow the directory.
     */                                                               
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
 801d638:	b9 a0 08 00 	mv r1,r13                                      
 801d63c:	37 82 00 5c 	addi r2,sp,92                                  
 801d640:	37 83 00 b8 	addi r3,sp,184                                 
 801d644:	37 84 00 c4 	addi r4,sp,196                                 
 801d648:	fb ff f8 aa 	calli 801b8f0 <rtems_rfs_block_map_find>       
    if (rc > 0)                                                       
 801d64c:	4c 01 00 f5 	bge r0,r1,801da20 <rtems_rfs_dir_add_entry+0x498>
    {                                                                 
      if (rc != ENXIO)                                                
 801d650:	34 05 00 06 	mvi r5,6                                       
 801d654:	5c 25 00 f6 	bne r1,r5,801da2c <rtems_rfs_dir_add_entry+0x4a4><== NEVER TAKEN
      }                                                               
                                                                      
      /*                                                              
       * We have reached the end of the directory so add a block.     
       */                                                             
      rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);            
 801d658:	b9 a0 08 00 	mv r1,r13                                      
 801d65c:	37 82 00 5c 	addi r2,sp,92                                  
 801d660:	34 03 00 01 	mvi r3,1                                       
 801d664:	37 84 00 c4 	addi r4,sp,196                                 
 801d668:	fb ff f9 51 	calli 801bbac <rtems_rfs_block_map_grow>       
      if (rc > 0)                                                     
 801d66c:	4c 01 00 11 	bge r0,r1,801d6b0 <rtems_rfs_dir_add_entry+0x128><== ALWAYS TAKEN
 801d670:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
 801d674:	78 02 20 00 	mvhi r2,0x2000                                 <== NOT EXECUTED
 801d678:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d67c:	fb ff d2 d1 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d680:	44 20 00 1b 	be r1,r0,801d6ec <rtems_rfs_dir_add_entry+0x164><== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
 801d684:	2b 82 00 4c 	lw r2,(sp+76)                                  <== NOT EXECUTED
 801d688:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801d68c:	28 4b 00 08 	lw r11,(r2+8)                                  <== NOT EXECUTED
 801d690:	f8 00 22 3d 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d694:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801d698:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d69c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801d6a0:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 801d6a4:	38 21 b3 c4 	ori r1,r1,0xb3c4                               <== NOT EXECUTED
 801d6a8:	f8 00 1d 7c 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d6ac:	e0 00 00 10 	bi 801d6ec <rtems_rfs_dir_add_entry+0x164>     <== NOT EXECUTED
                                                                      
      /*                                                              
       * We have reached the end of the directory so add a block.     
       */                                                             
      rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);            
      if (rc > 0)                                                     
 801d6b0:	34 04 00 00 	mvi r4,0                                       
                  "block map grow failed for ino %" PRIu32 ": %d: %s\n",
                  rtems_rfs_inode_ino (dir), rc, strerror (rc));      
        break;                                                        
      }                                                               
                                                                      
      read = false;                                                   
 801d6b4:	34 0c 00 00 	mvi r12,0                                      
    }                                                                 
                                                                      
    bpos.bno++;                                                       
 801d6b8:	2b 85 00 b8 	lw r5,(sp+184)                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
 801d6bc:	2b 83 00 c4 	lw r3,(sp+196)                                 
 801d6c0:	b9 a0 08 00 	mv r1,r13                                      
      }                                                               
                                                                      
      read = false;                                                   
    }                                                                 
                                                                      
    bpos.bno++;                                                       
 801d6c4:	34 a5 00 01 	addi r5,r5,1                                   
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
 801d6c8:	37 82 00 ac 	addi r2,sp,172                                 
      }                                                               
                                                                      
      read = false;                                                   
    }                                                                 
                                                                      
    bpos.bno++;                                                       
 801d6cc:	5b 85 00 b8 	sw (sp+184),r5                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
 801d6d0:	fb ff fc 5d 	calli 801c844 <rtems_rfs_buffer_handle_request>
    if (rc > 0)                                                       
 801d6d4:	4c 01 00 23 	bge r0,r1,801d760 <rtems_rfs_dir_add_entry+0x1d8><== ALWAYS TAKEN
 801d6d8:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))            
 801d6dc:	78 02 20 00 	mvhi r2,0x2000                                 <== NOT EXECUTED
 801d6e0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d6e4:	fb ff d2 b7 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d6e8:	5c 20 00 e1 	bne r1,r0,801da6c <rtems_rfs_dir_add_entry+0x4e4><== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801d6ec:	37 82 00 ac 	addi r2,sp,172                                 <== NOT EXECUTED
 801d6f0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801d6f4:	fb ff fb e2 	calli 801c67c <rtems_rfs_buffer_handle_release>
      offset += elength;                                              
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
 801d6f8:	b9 a0 08 00 	mv r1,r13                                      
 801d6fc:	37 82 00 5c 	addi r2,sp,92                                  
  handle->dirty = false;                                              
 801d700:	33 80 00 ac 	sb (sp+172),r0                                 
  handle->bnum  = 0;                                                  
 801d704:	5b 80 00 b0 	sw (sp+176),r0                                 
  handle->buffer = NULL;                                              
 801d708:	5b 80 00 b4 	sw (sp+180),r0                                 
 801d70c:	fb ff f7 c2 	calli 801b614 <rtems_rfs_block_map_close>      
  return rc;                                                          
}                                                                     
 801d710:	b9 80 08 00 	mv r1,r12                                      
 801d714:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801d718:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801d71c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801d720:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801d724:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801d728:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801d72c:	2b 90 00 30 	lw r16,(sp+48)                                 
 801d730:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801d734:	2b 92 00 28 	lw r18,(sp+40)                                 
 801d738:	2b 93 00 24 	lw r19,(sp+36)                                 
 801d73c:	2b 94 00 20 	lw r20,(sp+32)                                 
 801d740:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801d744:	2b 96 00 18 	lw r22,(sp+24)                                 
 801d748:	2b 97 00 14 	lw r23,(sp+20)                                 
 801d74c:	2b 98 00 10 	lw r24,(sp+16)                                 
 801d750:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801d754:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801d758:	37 9c 00 c4 	addi sp,sp,196                                 
 801d75c:	c3 a0 00 00 	ret                                            
                "block buffer req failed for ino %" PRIu32 ": %d: %s\n",
                rtems_rfs_inode_ino (dir), rc, strerror (rc));        
      break;                                                          
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
 801d760:	2b 81 00 b4 	lw r1,(sp+180)                                 
 801d764:	28 2b 00 1c 	lw r11,(r1+28)                                 
                                                                      
    if (!read)                                                        
 801d768:	45 80 00 64 	be r12,r0,801d8f8 <rtems_rfs_dir_add_entry+0x370>
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
                                                                      
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d76c:	29 b3 00 08 	lw r19,(r13+8)                                 
 801d770:	36 72 ff f6 	addi r18,r19,-10                               
 801d774:	46 40 ff b1 	be r18,r0,801d638 <rtems_rfs_dir_add_entry+0xb0><== NEVER TAKEN
 801d778:	34 05 00 00 	mvi r5,0                                       
 801d77c:	34 11 00 00 	mvi r17,0                                      
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801d780:	41 61 00 08 	lbu r1,(r11+8)                                 
 801d784:	41 6f 00 09 	lbu r15,(r11+9)                                
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801d788:	41 63 00 00 	lbu r3,(r11+0)                                 
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801d78c:	b4 21 08 00 	add r1,r1,r1                                   
 801d790:	b4 21 08 00 	add r1,r1,r1                                   
 801d794:	b4 21 08 00 	add r1,r1,r1                                   
 801d798:	b4 21 08 00 	add r1,r1,r1                                   
 801d79c:	b4 21 08 00 	add r1,r1,r1                                   
 801d7a0:	b4 21 08 00 	add r1,r1,r1                                   
 801d7a4:	b4 21 08 00 	add r1,r1,r1                                   
 801d7a8:	b4 21 08 00 	add r1,r1,r1                                   
 801d7ac:	b8 2f 78 00 	or r15,r1,r15                                  
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801d7b0:	34 02 00 18 	mvi r2,24                                      
 801d7b4:	41 70 00 01 	lbu r16,(r11+1)                                
 801d7b8:	41 6e 00 02 	lbu r14,(r11+2)                                
 801d7bc:	b8 60 08 00 	mv r1,r3                                       
 801d7c0:	41 6c 00 03 	lbu r12,(r11+3)                                
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801d7c4:	35 78 00 08 	addi r24,r11,8                                 
 801d7c8:	35 77 00 09 	addi r23,r11,9                                 
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801d7cc:	35 64 00 01 	addi r4,r11,1                                  
 801d7d0:	35 7b 00 02 	addi fp,r11,2                                  
 801d7d4:	35 79 00 03 	addi r25,r11,3                                 
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801d7d8:	45 f4 00 4d 	be r15,r20,801d90c <rtems_rfs_dir_add_entry+0x384>
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801d7dc:	f8 00 65 6e 	calli 8036d94 <__ashlsi3>                      
 801d7e0:	b9 81 60 00 	or r12,r12,r1                                  
 801d7e4:	34 02 00 10 	mvi r2,16                                      
 801d7e8:	ba 00 08 00 	mv r1,r16                                      
 801d7ec:	f8 00 65 6a 	calli 8036d94 <__ashlsi3>                      
 801d7f0:	b5 ce 10 00 	add r2,r14,r14                                 
 801d7f4:	b4 42 10 00 	add r2,r2,r2                                   
 801d7f8:	b4 42 10 00 	add r2,r2,r2                                   
 801d7fc:	b4 42 10 00 	add r2,r2,r2                                   
 801d800:	b4 42 10 00 	add r2,r2,r2                                   
 801d804:	b4 42 10 00 	add r2,r2,r2                                   
 801d808:	b4 42 10 00 	add r2,r2,r2                                   
 801d80c:	b9 81 08 00 	or r1,r12,r1                                   
 801d810:	b4 42 10 00 	add r2,r2,r2                                   
 801d814:	b8 22 10 00 	or r2,r1,r2                                    
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801d818:	64 41 00 00 	cmpei r1,r2,0                                  
 801d81c:	4e af 00 08 	bge r21,r15,801d83c <rtems_rfs_dir_add_entry+0x2b4><== NEVER TAKEN
 801d820:	29 a3 00 1c 	lw r3,(r13+28)                                 
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
        return EIO;                                                   
      }                                                               
                                                                      
      entry  += elength;                                              
 801d824:	b5 6f 58 00 	add r11,r11,r15                                
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801d828:	f1 e3 18 00 	cmpgeu r3,r15,r3                               
 801d82c:	b8 23 08 00 	or r1,r1,r3                                    
 801d830:	5c 20 00 03 	bne r1,r0,801d83c <rtems_rfs_dir_add_entry+0x2b4><== NEVER TAKEN
 801d834:	29 a1 00 14 	lw r1,(r13+20)                                 
 801d838:	50 22 00 19 	bgeu r1,r2,801d89c <rtems_rfs_dir_add_entry+0x314><== ALWAYS TAKEN
 801d83c:	b8 40 60 00 	mv r12,r2                                      <== NOT EXECUTED
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
 801d840:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d844:	78 02 20 00 	mvhi r2,0x2000                                 <== NOT EXECUTED
 801d848:	fb ff d2 5e 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d84c:	44 20 00 09 	be r1,r0,801d870 <rtems_rfs_dir_add_entry+0x2e8><== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
 801d850:	2b 85 00 4c 	lw r5,(sp+76)                                  <== NOT EXECUTED
 801d854:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d858:	38 21 b4 54 	ori r1,r1,0xb454                               <== NOT EXECUTED
 801d85c:	28 a2 00 08 	lw r2,(r5+8)                                   <== NOT EXECUTED
 801d860:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 801d864:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 801d868:	ba 20 28 00 	mv r5,r17                                      <== NOT EXECUTED
 801d86c:	f8 00 1d 0b 	calli 8024c98 <printf>                         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801d870:	37 82 00 ac 	addi r2,sp,172                                 <== NOT EXECUTED
 801d874:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801d878:	fb ff fb 81 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
                  rtems_rfs_inode_ino (dir), elength, eino, offset);  
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
 801d87c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801d880:	37 82 00 5c 	addi r2,sp,92                                  <== NOT EXECUTED
  handle->dirty = false;                                              
 801d884:	33 80 00 ac 	sb (sp+172),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801d888:	5b 80 00 b0 	sw (sp+176),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801d88c:	5b 80 00 b4 	sw (sp+180),r0                                 <== NOT EXECUTED
        return EIO;                                                   
 801d890:	34 0c 00 05 	mvi r12,5                                      <== NOT EXECUTED
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
          printf ("rtems-rfs: dir-add-entry: "                        
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
                  rtems_rfs_inode_ino (dir), elength, eino, offset);  
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
 801d894:	fb ff f7 60 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
        return EIO;                                                   
 801d898:	e3 ff ff 9e 	bi 801d710 <rtems_rfs_dir_add_entry+0x188>     <== NOT EXECUTED
      }                                                               
                                                                      
      entry  += elength;                                              
      offset += elength;                                              
 801d89c:	b6 2f 88 00 	add r17,r17,r15                                
    if (!read)                                                        
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
                                                                      
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d8a0:	ba 20 28 00 	mv r5,r17                                      
 801d8a4:	52 32 ff 65 	bgeu r17,r18,801d638 <rtems_rfs_dir_add_entry+0xb0><== NEVER TAKEN
 801d8a8:	e3 ff ff b6 	bi 801d780 <rtems_rfs_dir_add_entry+0x1f8>     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
 801d8ac:	2b 81 00 4c 	lw r1,(sp+76)                                  <== NOT EXECUTED
 801d8b0:	28 22 00 08 	lw r2,(r1+8)                                   <== NOT EXECUTED
 801d8b4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d8b8:	38 21 b3 44 	ori r1,r1,0xb344                               <== NOT EXECUTED
 801d8bc:	f8 00 1c f7 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
 801d8c0:	46 60 00 09 	be r19,r0,801d8e4 <rtems_rfs_dir_add_entry+0x35c><== NOT EXECUTED
 801d8c4:	34 06 00 00 	mvi r6,0                                       <== NOT EXECUTED
 801d8c8:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 801d8cc:	b6 c6 30 00 	add r6,r22,r6                                  <== NOT EXECUTED
 801d8d0:	40 c1 00 00 	lbu r1,(r6+0)                                  <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
 801d8d4:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 801d8d8:	f8 00 1d 76 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
 801d8dc:	b9 60 30 00 	mv r6,r11                                      <== NOT EXECUTED
 801d8e0:	56 6b ff fb 	bgu r19,r11,801d8cc <rtems_rfs_dir_add_entry+0x344><== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (", len=%zd\n", length);                                   
 801d8e4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d8e8:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801d8ec:	38 21 b3 70 	ori r1,r1,0xb370                               <== NOT EXECUTED
 801d8f0:	f8 00 1c ea 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d8f4:	e3 ff ff 40 	bi 801d5f4 <rtems_rfs_dir_add_entry+0x6c>      <== NOT EXECUTED
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
                                                                      
    if (!read)                                                        
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
 801d8f8:	29 a3 00 08 	lw r3,(r13+8)                                  
 801d8fc:	b9 60 08 00 	mv r1,r11                                      
 801d900:	34 02 00 ff 	mvi r2,255                                     
 801d904:	f8 00 1c 49 	calli 8024a28 <memset>                         
 801d908:	e3 ff ff 99 	bi 801d76c <rtems_rfs_dir_add_entry+0x1e4>     
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
 801d90c:	2b 81 00 54 	lw r1,(sp+84)                                  
            (rtems_rfs_fs_block_size (fs) - offset))                  
 801d910:	ca 65 28 00 	sub r5,r19,r5                                  
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
 801d914:	50 25 ff 49 	bgeu r1,r5,801d638 <rtems_rfs_dir_add_entry+0xb0><== NEVER TAKEN
 801d918:	2b 93 00 58 	lw r19,(sp+88)                                 
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
 801d91c:	ba c0 08 00 	mv r1,r22                                      
 801d920:	5b 84 00 48 	sw (sp+72),r4                                  
 801d924:	ba 60 10 00 	mv r2,r19                                      
 801d928:	f8 00 16 28 	calli 80231c8 <rtems_rfs_dir_hash>             
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
 801d92c:	34 02 00 18 	mvi r2,24                                      
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
 801d930:	b8 20 60 00 	mv r12,r1                                      
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
 801d934:	fb ff 8f 7d 	calli 8001728 <__lshrsi3>                      
 801d938:	31 61 00 04 	sb (r11+4),r1                                  
 801d93c:	34 02 00 10 	mvi r2,16                                      
 801d940:	b9 80 08 00 	mv r1,r12                                      
 801d944:	fb ff 8f 79 	calli 8001728 <__lshrsi3>                      
 801d948:	01 83 00 01 	srui r3,r12,1                                  
 801d94c:	31 6c 00 07 	sb (r11+7),r12                                 
 801d950:	00 63 00 01 	srui r3,r3,1                                   
 801d954:	31 61 00 05 	sb (r11+5),r1                                  
 801d958:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d95c:	2b 81 00 50 	lw r1,(sp+80)                                  
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
 801d960:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d964:	34 02 00 18 	mvi r2,24                                      
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
 801d968:	00 63 00 01 	srui r3,r3,1                                   
                                          RTEMS_RFS_DIR_ENTRY_SIZE + length);
          memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);    
          rtems_rfs_buffer_mark_dirty (&buffer);                      
          rtems_rfs_buffer_handle_close (fs, &buffer);                
          rtems_rfs_block_map_close (fs, &map);                       
          return 0;                                                   
 801d96c:	34 0c 00 00 	mvi r12,0                                      
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
 801d970:	00 63 00 01 	srui r3,r3,1                                   
 801d974:	00 63 00 01 	srui r3,r3,1                                   
 801d978:	00 63 00 01 	srui r3,r3,1                                   
 801d97c:	31 63 00 06 	sb (r11+6),r3                                  
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d980:	fb ff 8f 6a 	calli 8001728 <__lshrsi3>                      
 801d984:	31 61 00 00 	sb (r11+0),r1                                  
 801d988:	2b 81 00 50 	lw r1,(sp+80)                                  
 801d98c:	34 02 00 10 	mvi r2,16                                      
 801d990:	fb ff 8f 66 	calli 8001728 <__lshrsi3>                      
 801d994:	2b 82 00 50 	lw r2,(sp+80)                                  
          rtems_rfs_dir_set_entry_length (entry,                      
 801d998:	2b 85 00 54 	lw r5,(sp+84)                                  
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d99c:	2b 84 00 48 	lw r4,(sp+72)                                  
 801d9a0:	00 43 00 01 	srui r3,r2,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9a4:	20 a2 ff ff 	andi r2,r5,0xffff                              
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9a8:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9ac:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9b0:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9b4:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9b8:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9bc:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9c0:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9c4:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9c8:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9cc:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9d0:	00 63 00 01 	srui r3,r3,1                                   
 801d9d4:	30 81 00 00 	sb (r4+0),r1                                   
 801d9d8:	00 63 00 01 	srui r3,r3,1                                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9dc:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9e0:	33 63 00 00 	sb (fp+0),r3                                   
 801d9e4:	2b 81 00 50 	lw r1,(sp+80)                                  
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9e8:	00 42 00 01 	srui r2,r2,1                                   
                                          RTEMS_RFS_DIR_ENTRY_SIZE + length);
          memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);    
 801d9ec:	ba 60 18 00 	mv r3,r19                                      
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9f0:	00 42 00 01 	srui r2,r2,1                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
 801d9f4:	33 21 00 00 	sb (r25+0),r1                                  
          rtems_rfs_dir_set_entry_length (entry,                      
 801d9f8:	33 02 00 00 	sb (r24+0),r2                                  
 801d9fc:	32 e5 00 00 	sb (r23+0),r5                                  
                                          RTEMS_RFS_DIR_ENTRY_SIZE + length);
          memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);    
 801da00:	ba c0 10 00 	mv r2,r22                                      
 801da04:	35 61 00 0a 	addi r1,r11,10                                 
 801da08:	f8 00 1b 7a 	calli 80247f0 <memcpy>                         
          rtems_rfs_buffer_mark_dirty (&buffer);                      
 801da0c:	34 03 00 01 	mvi r3,1                                       
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801da10:	37 82 00 ac 	addi r2,sp,172                                 
 801da14:	b9 a0 08 00 	mv r1,r13                                      
 801da18:	33 83 00 ac 	sb (sp+172),r3                                 
 801da1c:	e3 ff ff 36 	bi 801d6f4 <rtems_rfs_dir_add_entry+0x16c>     
     * Locate the first block. If an error the block will be 0. If the map is
     * empty which happens when creating a directory and adding the first entry
     * the seek will return ENXIO. In this case we need to grow the directory.
     */                                                               
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
    if (rc > 0)                                                       
 801da20:	34 04 00 01 	mvi r4,1                                       
  while (true)                                                        
  {                                                                   
    rtems_rfs_block_no block;                                         
    uint8_t*           entry;                                         
    int                offset;                                        
    bool               read = true;                                   
 801da24:	34 0c 00 01 	mvi r12,1                                      
 801da28:	e3 ff ff 24 	bi 801d6b8 <rtems_rfs_dir_add_entry+0x130>     
 801da2c:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
    if (rc > 0)                                                       
    {                                                                 
      if (rc != ENXIO)                                                
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
 801da30:	78 02 20 00 	mvhi r2,0x2000                                 <== NOT EXECUTED
 801da34:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801da38:	fb ff d1 e2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801da3c:	44 20 ff 2c 	be r1,r0,801d6ec <rtems_rfs_dir_add_entry+0x164><== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
 801da40:	2b 81 00 4c 	lw r1,(sp+76)                                  <== NOT EXECUTED
 801da44:	28 2b 00 08 	lw r11,(r1+8)                                  <== NOT EXECUTED
 801da48:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801da4c:	f8 00 21 4e 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801da50:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801da54:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801da58:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801da5c:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 801da60:	38 21 b3 7c 	ori r1,r1,0xb37c                               <== NOT EXECUTED
 801da64:	f8 00 1c 8d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801da68:	e3 ff ff 21 	bi 801d6ec <rtems_rfs_dir_add_entry+0x164>     <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))            
        printf ("rtems-rfs: dir-add-entry: "                          
 801da6c:	2b 85 00 4c 	lw r5,(sp+76)                                  <== NOT EXECUTED
 801da70:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801da74:	28 ab 00 08 	lw r11,(r5+8)                                  <== NOT EXECUTED
 801da78:	f8 00 21 43 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801da7c:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801da80:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801da84:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801da88:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 801da8c:	38 21 b4 0c 	ori r1,r1,0xb40c                               <== NOT EXECUTED
 801da90:	f8 00 1c 82 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801da94:	e3 ff ff 16 	bi 801d6ec <rtems_rfs_dir_add_entry+0x164>     <== NOT EXECUTED
                                                                      

0801da98 <rtems_rfs_dir_del_entry>: int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_ino ino, uint32_t offset) {
 801da98:	37 9c ff 54 	addi sp,sp,-172                                
 801da9c:	5b 8b 00 44 	sw (sp+68),r11                                 
 801daa0:	5b 8c 00 40 	sw (sp+64),r12                                 
 801daa4:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801daa8:	5b 8e 00 38 	sw (sp+56),r14                                 
 801daac:	5b 8f 00 34 	sw (sp+52),r15                                 
 801dab0:	5b 90 00 30 	sw (sp+48),r16                                 
 801dab4:	5b 91 00 2c 	sw (sp+44),r17                                 
 801dab8:	5b 92 00 28 	sw (sp+40),r18                                 
 801dabc:	5b 93 00 24 	sw (sp+36),r19                                 
 801dac0:	5b 94 00 20 	sw (sp+32),r20                                 
 801dac4:	5b 95 00 1c 	sw (sp+28),r21                                 
 801dac8:	5b 96 00 18 	sw (sp+24),r22                                 
 801dacc:	5b 97 00 14 	sw (sp+20),r23                                 
 801dad0:	5b 98 00 10 	sw (sp+16),r24                                 
 801dad4:	5b 99 00 0c 	sw (sp+12),r25                                 
 801dad8:	5b 9b 00 08 	sw (sp+8),fp                                   
 801dadc:	5b 9d 00 04 	sw (sp+4),ra                                   
 801dae0:	b8 20 68 00 	mv r13,r1                                      
 801dae4:	b8 40 a8 00 	mv r21,r2                                      
  rtems_rfs_block_no      block;                                      
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
 801dae8:	34 01 00 00 	mvi r1,0                                       
 801daec:	78 02 40 00 	mvhi r2,0x4000                                 
int                                                                   
rtems_rfs_dir_del_entry (rtems_rfs_file_system*  fs,                  
                         rtems_rfs_inode_handle* dir,                 
                         rtems_rfs_ino           ino,                 
                         uint32_t                offset)              
{                                                                     
 801daf0:	b8 60 90 00 	mv r18,r3                                      
 801daf4:	b8 80 b0 00 	mv r22,r4                                      
  rtems_rfs_block_no      block;                                      
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
 801daf8:	fb ff d1 b2 	calli 80121c0 <rtems_rfs_trace>                
 801dafc:	5c 20 00 2a 	bne r1,r0,801dba4 <rtems_rfs_dir_del_entry+0x10c><== NEVER TAKEN
    printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
            rtems_rfs_inode_ino (dir), ino, offset);                  
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
 801db00:	37 93 00 50 	addi r19,sp,80                                 
 801db04:	b9 a0 08 00 	mv r1,r13                                      
 801db08:	ba a0 10 00 	mv r2,r21                                      
 801db0c:	ba 60 18 00 	mv r3,r19                                      
 801db10:	fb ff f6 19 	calli 801b374 <rtems_rfs_block_map_open>       
 801db14:	b8 20 80 00 	mv r16,r1                                      
  if (rc > 0)                                                         
 801db18:	48 20 00 0f 	bg r1,r0,801db54 <rtems_rfs_dir_del_entry+0xbc><== NEVER TAKEN
    return rc;                                                        
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
 801db1c:	b9 a0 08 00 	mv r1,r13                                      
 801db20:	ba 60 10 00 	mv r2,r19                                      
 801db24:	34 03 00 00 	mvi r3,0                                       
 801db28:	ba c0 20 00 	mv r4,r22                                      
 801db2c:	37 85 00 ac 	addi r5,sp,172                                 
 801db30:	fb ff f7 dd 	calli 801baa4 <rtems_rfs_block_map_seek>       
 801db34:	b8 20 80 00 	mv r16,r1                                      
  if (rc > 0)                                                         
 801db38:	4c 01 00 22 	bge r0,r1,801dbc0 <rtems_rfs_dir_del_entry+0x128><== ALWAYS TAKEN
  {                                                                   
    if (rc == ENXIO)                                                  
 801db3c:	34 01 00 06 	mvi r1,6                                       <== NOT EXECUTED
 801db40:	5e 01 00 02 	bne r16,r1,801db48 <rtems_rfs_dir_del_entry+0xb0><== NOT EXECUTED
      rc = ENOENT;                                                    
 801db44:	34 10 00 02 	mvi r16,2                                      <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
 801db48:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801db4c:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801db50:	fb ff f6 b1 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
 801db54:	ba 00 08 00 	mv r1,r16                                      
 801db58:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801db5c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801db60:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801db64:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801db68:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801db6c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801db70:	2b 90 00 30 	lw r16,(sp+48)                                 
 801db74:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801db78:	2b 92 00 28 	lw r18,(sp+40)                                 
 801db7c:	2b 93 00 24 	lw r19,(sp+36)                                 
 801db80:	2b 94 00 20 	lw r20,(sp+32)                                 
 801db84:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801db88:	2b 96 00 18 	lw r22,(sp+24)                                 
 801db8c:	2b 97 00 14 	lw r23,(sp+20)                                 
 801db90:	2b 98 00 10 	lw r24,(sp+16)                                 
 801db94:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801db98:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801db9c:	37 9c 00 ac 	addi sp,sp,172                                 
 801dba0:	c3 a0 00 00 	ret                                            
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
    printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
 801dba4:	2a a2 00 08 	lw r2,(r21+8)                                  <== NOT EXECUTED
 801dba8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801dbac:	ba 40 18 00 	mv r3,r18                                      <== NOT EXECUTED
 801dbb0:	ba c0 20 00 	mv r4,r22                                      <== NOT EXECUTED
 801dbb4:	38 21 b4 9c 	ori r1,r1,0xb49c                               <== NOT EXECUTED
 801dbb8:	f8 00 1c 38 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801dbbc:	e3 ff ff d1 	bi 801db00 <rtems_rfs_dir_del_entry+0x68>      <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Only search if the offset is 0 else we are at that position.     
   */                                                                 
  search = offset ? false : true;                                     
 801dbc0:	66 d8 00 00 	cmpei r24,r22,0                                
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801dbc4:	33 80 00 a0 	sb (sp+160),r0                                 
  handle->bnum  = 0;                                                  
 801dbc8:	5b 80 00 a4 	sw (sp+164),r0                                 
  handle->buffer = NULL;                                              
 801dbcc:	5b 80 00 a8 	sw (sp+168),r0                                 
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801dbd0:	38 19 ff ff 	mvu r25,0xffff                                 
  while (rc == 0)                                                     
  {                                                                   
    uint8_t* entry;                                                   
    int      eoffset;                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
 801dbd4:	2b 83 00 ac 	lw r3,(sp+172)                                 
 801dbd8:	b9 a0 08 00 	mv r1,r13                                      
 801dbdc:	37 82 00 a0 	addi r2,sp,160                                 
 801dbe0:	34 04 00 01 	mvi r4,1                                       
 801dbe4:	fb ff fb 18 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801dbe8:	b8 20 80 00 	mv r16,r1                                      
    if (rc > 0)                                                       
 801dbec:	4c 01 00 0f 	bge r0,r1,801dc28 <rtems_rfs_dir_del_entry+0x190><== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))            
 801dbf0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801dbf4:	78 02 40 00 	mvhi r2,0x4000                                 <== NOT EXECUTED
 801dbf8:	fb ff d1 72 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801dbfc:	44 20 00 48 	be r1,r0,801dd1c <rtems_rfs_dir_del_entry+0x284><== NOT EXECUTED
        printf ("rtems-rfs: dir-del-entry: "                          
 801dc00:	2a ab 00 08 	lw r11,(r21+8)                                 <== NOT EXECUTED
 801dc04:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 801dc08:	f8 00 20 df 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801dc0c:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801dc10:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801dc14:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801dc18:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 801dc1c:	38 21 b4 d8 	ori r1,r1,0xb4d8                               <== NOT EXECUTED
 801dc20:	f8 00 1c 1e 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801dc24:	e0 00 00 3e 	bi 801dd1c <rtems_rfs_dir_del_entry+0x284>     <== NOT EXECUTED
                                                                      
    /*                                                                
     * If we are searching start at the beginning of the block. If not searching
     * skip to the offset in the block.                               
     */                                                               
    if (search)                                                       
 801dc28:	47 00 00 4d 	be r24,r0,801dd5c <rtems_rfs_dir_del_entry+0x2c4><== ALWAYS TAKEN
 801dc2c:	29 a1 00 08 	lw r1,(r13+8)                                  <== NOT EXECUTED
      eoffset = 0;                                                    
 801dc30:	34 0e 00 00 	mvi r14,0                                      <== NOT EXECUTED
                                                                      
    /*                                                                
     * If we are searching start at the beginning of the block. If not searching
     * skip to the offset in the block.                               
     */                                                               
    if (search)                                                       
 801dc34:	5b 81 00 4c 	sw (sp+76),r1                                  <== NOT EXECUTED
 801dc38:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801dc3c:	2b 83 00 4c 	lw r3,(sp+76)                                  
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
 801dc40:	2b 82 00 a8 	lw r2,(sp+168)                                 
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801dc44:	34 77 ff f6 	addi r23,r3,-10                                
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
 801dc48:	28 4b 00 1c 	lw r11,(r2+28)                                 
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801dc4c:	50 37 00 4a 	bgeu r1,r23,801dd74 <rtems_rfs_dir_del_entry+0x2dc><== NEVER TAKEN
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
 801dc50:	b5 61 58 00 	add r11,r11,r1                                 
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801dc54:	41 67 00 08 	lbu r7,(r11+8)                                 
 801dc58:	41 6c 00 09 	lbu r12,(r11+9)                                
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801dc5c:	41 65 00 00 	lbu r5,(r11+0)                                 
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801dc60:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc64:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc68:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc6c:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc70:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc74:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc78:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc7c:	b4 e7 38 00 	add r7,r7,r7                                   
 801dc80:	35 63 00 08 	addi r3,r11,8                                  
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801dc84:	41 74 00 01 	lbu r20,(r11+1)                                
 801dc88:	41 71 00 02 	lbu r17,(r11+2)                                
 801dc8c:	41 6f 00 03 	lbu r15,(r11+3)                                
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801dc90:	b8 ec 60 00 	or r12,r7,r12                                  
 801dc94:	5b 83 00 48 	sw (sp+72),r3                                  
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801dc98:	34 02 00 18 	mvi r2,24                                      
 801dc9c:	b8 a0 08 00 	mv r1,r5                                       
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801dca0:	35 7b 00 09 	addi fp,r11,9                                  
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801dca4:	45 99 00 34 	be r12,r25,801dd74 <rtems_rfs_dir_del_entry+0x2dc><== NEVER TAKEN
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801dca8:	f8 00 64 3b 	calli 8036d94 <__ashlsi3>                      
 801dcac:	b9 e1 78 00 	or r15,r15,r1                                  
 801dcb0:	34 02 00 10 	mvi r2,16                                      
 801dcb4:	ba 80 08 00 	mv r1,r20                                      
 801dcb8:	f8 00 64 37 	calli 8036d94 <__ashlsi3>                      
 801dcbc:	b6 31 40 00 	add r8,r17,r17                                 
 801dcc0:	b5 08 40 00 	add r8,r8,r8                                   
 801dcc4:	b5 08 40 00 	add r8,r8,r8                                   
 801dcc8:	b5 08 40 00 	add r8,r8,r8                                   
 801dccc:	b5 08 40 00 	add r8,r8,r8                                   
 801dcd0:	b5 08 40 00 	add r8,r8,r8                                   
 801dcd4:	b5 08 40 00 	add r8,r8,r8                                   
 801dcd8:	b9 e1 78 00 	or r15,r15,r1                                  
 801dcdc:	b5 08 40 00 	add r8,r8,r8                                   
 801dce0:	b9 e8 78 00 	or r15,r15,r8                                  
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801dce4:	34 01 00 0a 	mvi r1,10                                      
 801dce8:	65 e3 00 00 	cmpei r3,r15,0                                 
 801dcec:	4c 2c 00 07 	bge r1,r12,801dd08 <rtems_rfs_dir_del_entry+0x270><== NEVER TAKEN
 801dcf0:	29 a5 00 1c 	lw r5,(r13+28)                                 
 801dcf4:	f1 85 28 00 	cmpgeu r5,r12,r5                               
 801dcf8:	b8 65 18 00 	or r3,r3,r5                                    
 801dcfc:	5c 60 00 03 	bne r3,r0,801dd08 <rtems_rfs_dir_del_entry+0x270><== NEVER TAKEN
 801dd00:	29 a1 00 14 	lw r1,(r13+20)                                 
 801dd04:	50 2f 00 10 	bgeu r1,r15,801dd44 <rtems_rfs_dir_del_entry+0x2ac><== ALWAYS TAKEN
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
 801dd08:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801dd0c:	78 02 40 00 	mvhi r2,0x4000                                 <== NOT EXECUTED
 801dd10:	fb ff d1 2c 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801dd14:	5c 20 00 22 	bne r1,r0,801dd9c <rtems_rfs_dir_del_entry+0x304><== NOT EXECUTED
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
 801dd18:	34 10 00 05 	mvi r16,5                                      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801dd1c:	37 82 00 a0 	addi r2,sp,160                                 <== NOT EXECUTED
 801dd20:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801dd24:	fb ff fa 56 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
 801dd28:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801dd2c:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 801dd30:	33 80 00 a0 	sb (sp+160),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801dd34:	5b 80 00 a4 	sw (sp+164),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801dd38:	5b 80 00 a8 	sw (sp+168),r0                                 <== NOT EXECUTED
 801dd3c:	fb ff f6 36 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
  return rc;                                                          
 801dd40:	e3 ff ff 85 	bi 801db54 <rtems_rfs_dir_del_entry+0xbc>      <== NOT EXECUTED
                  rtems_rfs_inode_ino (dir), elength, eino, block, eoffset);
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      if (ino == rtems_rfs_dir_entry_ino (entry))                     
 801dd44:	46 4f 00 1f 	be r18,r15,801ddc0 <rtems_rfs_dir_del_entry+0x328><== ALWAYS TAKEN
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      entry   += elength;                                             
      eoffset += elength;                                             
 801dd48:	b5 cc 70 00 	add r14,r14,r12                                <== NOT EXECUTED
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
        return 0;                                                     
      }                                                               
                                                                      
      if (!search)                                                    
 801dd4c:	47 00 ff f3 	be r24,r0,801dd18 <rtems_rfs_dir_del_entry+0x280><== NOT EXECUTED
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801dd50:	51 d7 00 09 	bgeu r14,r23,801dd74 <rtems_rfs_dir_del_entry+0x2dc><== NOT EXECUTED
      {                                                               
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      entry   += elength;                                             
 801dd54:	b5 6c 58 00 	add r11,r11,r12                                <== NOT EXECUTED
 801dd58:	e3 ff ff bf 	bi 801dc54 <rtems_rfs_dir_del_entry+0x1bc>     <== NOT EXECUTED
     * skip to the offset in the block.                               
     */                                                               
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
 801dd5c:	29 a2 00 08 	lw r2,(r13+8)                                  
 801dd60:	ba c0 08 00 	mv r1,r22                                      
 801dd64:	5b 82 00 4c 	sw (sp+76),r2                                  
 801dd68:	f8 00 64 b2 	calli 8037030 <__umodsi3>                      
 801dd6c:	b8 20 70 00 	mv r14,r1                                      
 801dd70:	e3 ff ff b3 	bi 801dc3c <rtems_rfs_dir_del_entry+0x1a4>     
                                                                      
      entry   += elength;                                             
      eoffset += elength;                                             
    }                                                                 
                                                                      
    if (rc == 0)                                                      
 801dd74:	5e 00 ff ea 	bne r16,r0,801dd1c <rtems_rfs_dir_del_entry+0x284><== NOT EXECUTED
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
 801dd78:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801dd7c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801dd80:	37 83 00 ac 	addi r3,sp,172                                 <== NOT EXECUTED
 801dd84:	fb ff f7 7d 	calli 801bb78 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
      if (rc == ENXIO)                                                
 801dd88:	34 02 00 06 	mvi r2,6                                       <== NOT EXECUTED
      eoffset += elength;                                             
    }                                                                 
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
 801dd8c:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
      if (rc == ENXIO)                                                
 801dd90:	44 22 00 62 	be r1,r2,801df18 <rtems_rfs_dir_del_entry+0x480><== NOT EXECUTED
  /*                                                                  
   * Only search if the offset is 0 else we are at that position.     
   */                                                                 
  search = offset ? false : true;                                     
                                                                      
  while (rc == 0)                                                     
 801dd94:	44 20 ff 90 	be r1,r0,801dbd4 <rtems_rfs_dir_del_entry+0x13c><== NOT EXECUTED
 801dd98:	e3 ff ff e1 	bi 801dd1c <rtems_rfs_dir_del_entry+0x284>     <== NOT EXECUTED
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801dd9c:	2a a2 00 08 	lw r2,(r21+8)                                  <== NOT EXECUTED
 801dda0:	2b 85 00 ac 	lw r5,(sp+172)                                 <== NOT EXECUTED
 801dda4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801dda8:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 801ddac:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 801ddb0:	b9 c0 30 00 	mv r6,r14                                      <== NOT EXECUTED
 801ddb4:	38 21 b5 20 	ori r1,r1,0xb520                               <== NOT EXECUTED
 801ddb8:	f8 00 1b b8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ddbc:	e3 ff ff d7 	bi 801dd18 <rtems_rfs_dir_del_entry+0x280>     <== NOT EXECUTED
      }                                                               
                                                                      
      if (ino == rtems_rfs_dir_entry_ino (entry))                     
      {                                                               
        uint32_t remaining;                                           
        remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength);
 801ddc0:	2b 82 00 4c 	lw r2,(sp+76)                                  
 801ddc4:	b5 cc 78 00 	add r15,r14,r12                                
        memmove (entry, entry + elength, remaining);                  
 801ddc8:	b9 60 08 00 	mv r1,r11                                      
      }                                                               
                                                                      
      if (ino == rtems_rfs_dir_entry_ino (entry))                     
      {                                                               
        uint32_t remaining;                                           
        remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength);
 801ddcc:	c8 4f 78 00 	sub r15,r2,r15                                 
        memmove (entry, entry + elength, remaining);                  
 801ddd0:	b9 e0 18 00 	mv r3,r15                                      
 801ddd4:	b5 6c 10 00 	add r2,r11,r12                                 
 801ddd8:	f8 00 1a c7 	calli 80248f4 <memmove>                        
        memset (entry + remaining, 0xff, elength);                    
 801dddc:	34 02 00 ff 	mvi r2,255                                     
 801dde0:	b5 6f 08 00 	add r1,r11,r15                                 
 801dde4:	b9 80 18 00 	mv r3,r12                                      
 801dde8:	f8 00 1b 10 	calli 8024a28 <memset>                         
         * block and it is the last block in the map shrink the map.  
         *                                                            
         * @note We could check again to see if the new end block in the map is
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
 801ddec:	2b 81 00 48 	lw r1,(sp+72)                                  
 801ddf0:	43 6b 00 00 	lbu r11,(fp+0)                                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
 801ddf4:	78 02 40 00 	mvhi r2,0x4000                                 
         * block and it is the last block in the map shrink the map.  
         *                                                            
         * @note We could check again to see if the new end block in the map is
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
 801ddf8:	40 23 00 00 	lbu r3,(r1+0)                                  
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
 801ddfc:	34 01 00 00 	mvi r1,0                                       
         * block and it is the last block in the map shrink the map.  
         *                                                            
         * @note We could check again to see if the new end block in the map is
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
 801de00:	b4 63 18 00 	add r3,r3,r3                                   
 801de04:	b4 63 18 00 	add r3,r3,r3                                   
 801de08:	b4 63 18 00 	add r3,r3,r3                                   
 801de0c:	b4 63 18 00 	add r3,r3,r3                                   
 801de10:	b4 63 18 00 	add r3,r3,r3                                   
 801de14:	b4 63 18 00 	add r3,r3,r3                                   
 801de18:	b4 63 18 00 	add r3,r3,r3                                   
 801de1c:	b4 63 18 00 	add r3,r3,r3                                   
 801de20:	b8 6b 58 00 	or r11,r3,r11                                  
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
 801de24:	fb ff d0 e7 	calli 80121c0 <rtems_rfs_trace>                
 801de28:	44 20 00 0f 	be r1,r0,801de64 <rtems_rfs_dir_del_entry+0x3cc><== ALWAYS TAKEN
          printf ("rtems-rfs: dir-del-entry: "                        
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
 801de2c:	2b 81 00 60 	lw r1,(sp+96)                                  <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801de30:	2b 84 00 ac 	lw r4,(sp+172)                                 <== NOT EXECUTED
 801de34:	44 20 00 3b 	be r1,r0,801df20 <rtems_rfs_dir_del_entry+0x488><== NOT EXECUTED
 801de38:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
 801de3c:	78 06 08 03 	mvhi r6,0x803                                  <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
 801de40:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801de44:	38 c6 a0 70 	ori r6,r6,0xa070                               <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
 801de48:	44 22 00 3b 	be r1,r2,801df34 <rtems_rfs_dir_del_entry+0x49c><== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801de4c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801de50:	38 21 b5 6c 	ori r1,r1,0xb56c                               <== NOT EXECUTED
 801de54:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 801de58:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 801de5c:	b9 c0 28 00 	mv r5,r14                                      <== NOT EXECUTED
 801de60:	f8 00 1b 8e 	calli 8024c98 <printf>                         <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
                                                                      
        if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&                 
 801de64:	38 01 ff ff 	mvu r1,0xffff                                  
 801de68:	e5 61 58 00 	cmpe r11,r11,r1                                
            (eoffset == 0) && rtems_rfs_block_map_last (&map))        
 801de6c:	65 ce 00 00 	cmpei r14,r14,0                                
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
                                                                      
        if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&                 
 801de70:	a1 6e 58 00 	and r11,r11,r14                                
 801de74:	45 60 00 06 	be r11,r0,801de8c <rtems_rfs_dir_del_entry+0x3f4><== ALWAYS TAKEN
            (eoffset == 0) && rtems_rfs_block_map_last (&map))        
 801de78:	2b 81 00 60 	lw r1,(sp+96)                                  <== NOT EXECUTED
 801de7c:	44 20 00 11 	be r1,r0,801dec0 <rtems_rfs_dir_del_entry+0x428><== NOT EXECUTED
 801de80:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
 801de84:	34 42 ff ff 	addi r2,r2,-1                                  <== NOT EXECUTED
 801de88:	44 22 00 10 	be r1,r2,801dec8 <rtems_rfs_dir_del_entry+0x430><== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801de8c:	37 82 00 a0 	addi r2,sp,160                                 
                      "block map shrink failed for ino %" PRIu32 ": %d: %s\n",
                      rtems_rfs_inode_ino (dir), rc, strerror (rc));  
          }                                                           
        }                                                             
                                                                      
        rtems_rfs_buffer_mark_dirty (&buffer);                        
 801de90:	34 03 00 01 	mvi r3,1                                       
 801de94:	b9 a0 08 00 	mv r1,r13                                      
 801de98:	33 83 00 a0 	sb (sp+160),r3                                 
 801de9c:	fb ff f9 f8 	calli 801c67c <rtems_rfs_buffer_handle_release>
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
 801dea0:	b9 a0 08 00 	mv r1,r13                                      
 801dea4:	ba 60 10 00 	mv r2,r19                                      
  handle->dirty = false;                                              
 801dea8:	33 80 00 a0 	sb (sp+160),r0                                 
  handle->bnum  = 0;                                                  
 801deac:	5b 80 00 a4 	sw (sp+164),r0                                 
  handle->buffer = NULL;                                              
 801deb0:	5b 80 00 a8 	sw (sp+168),r0                                 
        return 0;                                                     
 801deb4:	34 10 00 00 	mvi r16,0                                      
          }                                                           
        }                                                             
                                                                      
        rtems_rfs_buffer_mark_dirty (&buffer);                        
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
 801deb8:	fb ff f5 d7 	calli 801b614 <rtems_rfs_block_map_close>      
        return 0;                                                     
 801debc:	e3 ff ff 26 	bi 801db54 <rtems_rfs_dir_del_entry+0xbc>      
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
                                                                      
        if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&                 
            (eoffset == 0) && rtems_rfs_block_map_last (&map))        
 801dec0:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
 801dec4:	5c 41 ff f0 	bne r2,r1,801de84 <rtems_rfs_dir_del_entry+0x3ec><== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_block_map_shrink (fs, &map, 1);              
 801dec8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801decc:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801ded0:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 801ded4:	fb ff f8 6a 	calli 801c07c <rtems_rfs_block_map_shrink>     <== NOT EXECUTED
 801ded8:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
          if (rc > 0)                                                 
 801dedc:	4c 01 ff ec 	bge r0,r1,801de8c <rtems_rfs_dir_del_entry+0x3f4><== NOT EXECUTED
          {                                                           
            if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))      
 801dee0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801dee4:	78 02 40 00 	mvhi r2,0x4000                                 <== NOT EXECUTED
 801dee8:	fb ff d0 b6 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801deec:	44 20 ff e8 	be r1,r0,801de8c <rtems_rfs_dir_del_entry+0x3f4><== NOT EXECUTED
              printf ("rtems-rfs: dir-del-entry: "                    
 801def0:	2a ac 00 08 	lw r12,(r21+8)                                 <== NOT EXECUTED
 801def4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801def8:	f8 00 20 23 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801defc:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801df00:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801df04:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801df08:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 801df0c:	38 21 b5 cc 	ori r1,r1,0xb5cc                               <== NOT EXECUTED
 801df10:	f8 00 1b 62 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801df14:	e3 ff ff de 	bi 801de8c <rtems_rfs_dir_del_entry+0x3f4>     <== NOT EXECUTED
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
 801df18:	34 10 00 02 	mvi r16,2                                      <== NOT EXECUTED
 801df1c:	e3 ff ff 80 	bi 801dd1c <rtems_rfs_dir_del_entry+0x284>     <== NOT EXECUTED
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
 801df20:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801df24:	78 06 08 03 	mvhi r6,0x803                                  <== NOT EXECUTED
 801df28:	38 c6 9b d0 	ori r6,r6,0x9bd0                               <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
 801df2c:	44 41 ff c8 	be r2,r1,801de4c <rtems_rfs_dir_del_entry+0x3b4><== NOT EXECUTED
 801df30:	e3 ff ff c3 	bi 801de3c <rtems_rfs_dir_del_entry+0x3a4>     <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
 801df34:	78 06 08 03 	mvhi r6,0x803                                  <== NOT EXECUTED
 801df38:	38 c6 9b d0 	ori r6,r6,0x9bd0                               <== NOT EXECUTED
 801df3c:	e3 ff ff c4 	bi 801de4c <rtems_rfs_dir_del_entry+0x3b4>     <== NOT EXECUTED
                                                                      

0801e3bc <rtems_rfs_dir_empty>: } int rtems_rfs_dir_empty (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir) {
 801e3bc:	37 9c ff 58 	addi sp,sp,-168                                
 801e3c0:	5b 8b 00 44 	sw (sp+68),r11                                 
 801e3c4:	5b 8c 00 40 	sw (sp+64),r12                                 
 801e3c8:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801e3cc:	5b 8e 00 38 	sw (sp+56),r14                                 
 801e3d0:	5b 8f 00 34 	sw (sp+52),r15                                 
 801e3d4:	5b 90 00 30 	sw (sp+48),r16                                 
 801e3d8:	5b 91 00 2c 	sw (sp+44),r17                                 
 801e3dc:	5b 92 00 28 	sw (sp+40),r18                                 
 801e3e0:	5b 93 00 24 	sw (sp+36),r19                                 
 801e3e4:	5b 94 00 20 	sw (sp+32),r20                                 
 801e3e8:	5b 95 00 1c 	sw (sp+28),r21                                 
 801e3ec:	5b 96 00 18 	sw (sp+24),r22                                 
 801e3f0:	5b 97 00 14 	sw (sp+20),r23                                 
 801e3f4:	5b 98 00 10 	sw (sp+16),r24                                 
 801e3f8:	5b 99 00 0c 	sw (sp+12),r25                                 
 801e3fc:	5b 9b 00 08 	sw (sp+8),fp                                   
 801e400:	5b 9d 00 04 	sw (sp+4),ra                                   
 801e404:	b8 20 68 00 	mv r13,r1                                      
 801e408:	b8 40 d8 00 	mv fp,r2                                       
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  bool                    empty;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
 801e40c:	34 01 00 00 	mvi r1,0                                       
 801e410:	78 02 80 00 	mvhi r2,0x8000                                 
 801e414:	fb ff cf 6b 	calli 80121c0 <rtems_rfs_trace>                
 801e418:	5c 20 00 27 	bne r1,r0,801e4b4 <rtems_rfs_dir_empty+0xf8>   <== NEVER TAKEN
    printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
                                                                      
  empty = true;                                                       
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
 801e41c:	37 99 00 4c 	addi r25,sp,76                                 
 801e420:	b9 a0 08 00 	mv r1,r13                                      
 801e424:	bb 60 10 00 	mv r2,fp                                       
 801e428:	bb 20 18 00 	mv r3,r25                                      
 801e42c:	fb ff f3 d2 	calli 801b374 <rtems_rfs_block_map_open>       
 801e430:	b8 20 98 00 	mv r19,r1                                      
  if (rc > 0)                                                         
 801e434:	48 20 00 0c 	bg r1,r0,801e464 <rtems_rfs_dir_empty+0xa8>    <== NEVER TAKEN
    return rc;                                                        
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);                
 801e438:	b9 a0 08 00 	mv r1,r13                                      
 801e43c:	bb 20 10 00 	mv r2,r25                                      
 801e440:	34 03 00 00 	mvi r3,0                                       
 801e444:	34 04 00 00 	mvi r4,0                                       
 801e448:	37 85 00 a8 	addi r5,sp,168                                 
 801e44c:	fb ff f5 96 	calli 801baa4 <rtems_rfs_block_map_seek>       
 801e450:	b8 20 98 00 	mv r19,r1                                      
  if (rc > 0)                                                         
 801e454:	4c 01 00 1d 	bge r0,r1,801e4c8 <rtems_rfs_dir_empty+0x10c>  <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_block_map_close (fs, &map);                             
 801e458:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801e45c:	bb 20 10 00 	mv r2,r25                                      <== NOT EXECUTED
 801e460:	fb ff f4 6d 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
    rc = ENOTEMPTY;                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
 801e464:	ba 60 08 00 	mv r1,r19                                      
 801e468:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801e46c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801e470:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801e474:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801e478:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801e47c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801e480:	2b 90 00 30 	lw r16,(sp+48)                                 
 801e484:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801e488:	2b 92 00 28 	lw r18,(sp+40)                                 
 801e48c:	2b 93 00 24 	lw r19,(sp+36)                                 
 801e490:	2b 94 00 20 	lw r20,(sp+32)                                 
 801e494:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801e498:	2b 96 00 18 	lw r22,(sp+24)                                 
 801e49c:	2b 97 00 14 	lw r23,(sp+20)                                 
 801e4a0:	2b 98 00 10 	lw r24,(sp+16)                                 
 801e4a4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801e4a8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801e4ac:	37 9c 00 a8 	addi sp,sp,168                                 
 801e4b0:	c3 a0 00 00 	ret                                            
  rtems_rfs_block_no      block;                                      
  bool                    empty;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
    printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
 801e4b4:	2b 62 00 08 	lw r2,(fp+8)                                   <== NOT EXECUTED
 801e4b8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e4bc:	38 21 b6 f0 	ori r1,r1,0xb6f0                               <== NOT EXECUTED
 801e4c0:	f8 00 19 f6 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e4c4:	e3 ff ff d6 	bi 801e41c <rtems_rfs_dir_empty+0x60>          <== NOT EXECUTED
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
          printf ("rtems-rfs: dir-empty: "                            
 801e4c8:	78 01 08 03 	mvhi r1,0x803                                  
 801e4cc:	38 21 b7 10 	ori r1,r1,0xb710                               
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801e4d0:	33 80 00 9c 	sb (sp+156),r0                                 
  handle->bnum  = 0;                                                  
 801e4d4:	5b 80 00 a0 	sw (sp+160),r0                                 
  handle->buffer = NULL;                                              
 801e4d8:	5b 80 00 a4 	sw (sp+164),r0                                 
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801e4dc:	38 15 ff ff 	mvu r21,0xffff                                 
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801e4e0:	34 16 00 0a 	mvi r22,10                                     
                                                                      
      /*                                                              
       * Ignore the current (.) and parent (..) entries. Anything else means
       * the directory is not empty.                                  
       */                                                             
      if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||             
 801e4e4:	34 17 00 0b 	mvi r23,11                                     
           (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.')) &&               
 801e4e8:	34 18 00 0c 	mvi r24,12                                     
          ((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 2)) ||             
 801e4ec:	34 11 00 2e 	mvi r17,46                                     
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
          printf ("rtems-rfs: dir-empty: "                            
 801e4f0:	5b 81 00 48 	sw (sp+72),r1                                  
  while (empty)                                                       
  {                                                                   
    uint8_t* entry;                                                   
    int      offset;                                                  
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
 801e4f4:	2b 83 00 a8 	lw r3,(sp+168)                                 
 801e4f8:	b9 a0 08 00 	mv r1,r13                                      
 801e4fc:	37 82 00 9c 	addi r2,sp,156                                 
 801e500:	34 04 00 01 	mvi r4,1                                       
 801e504:	fb ff f8 d0 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801e508:	b8 20 98 00 	mv r19,r1                                      
    if (rc > 0)                                                       
 801e50c:	48 20 00 4c 	bg r1,r0,801e63c <rtems_rfs_dir_empty+0x280>   <== NEVER TAKEN
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801e510:	29 b4 00 08 	lw r20,(r13+8)                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
 801e514:	2b 82 00 a4 	lw r2,(sp+164)                                 
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801e518:	36 94 ff f6 	addi r20,r20,-10                               
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
 801e51c:	28 4b 00 1c 	lw r11,(r2+28)                                 
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801e520:	46 80 00 2f 	be r20,r0,801e5dc <rtems_rfs_dir_empty+0x220>  <== NEVER TAKEN
 801e524:	34 0f 00 00 	mvi r15,0                                      
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801e528:	41 64 00 08 	lbu r4,(r11+8)                                 
 801e52c:	41 6c 00 09 	lbu r12,(r11+9)                                
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801e530:	41 65 00 00 	lbu r5,(r11+0)                                 
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
 801e534:	b4 84 20 00 	add r4,r4,r4                                   
 801e538:	b4 84 20 00 	add r4,r4,r4                                   
 801e53c:	b4 84 20 00 	add r4,r4,r4                                   
 801e540:	b4 84 20 00 	add r4,r4,r4                                   
 801e544:	b4 84 20 00 	add r4,r4,r4                                   
 801e548:	b4 84 20 00 	add r4,r4,r4                                   
 801e54c:	b4 84 20 00 	add r4,r4,r4                                   
 801e550:	b4 84 20 00 	add r4,r4,r4                                   
 801e554:	b8 8c 60 00 	or r12,r4,r12                                  
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801e558:	41 72 00 01 	lbu r18,(r11+1)                                
 801e55c:	41 70 00 02 	lbu r16,(r11+2)                                
 801e560:	41 6e 00 03 	lbu r14,(r11+3)                                
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
 801e564:	45 95 00 1e 	be r12,r21,801e5dc <rtems_rfs_dir_empty+0x220> 
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
 801e568:	34 02 00 18 	mvi r2,24                                      
 801e56c:	b8 a0 08 00 	mv r1,r5                                       
 801e570:	f8 00 62 09 	calli 8036d94 <__ashlsi3>                      
 801e574:	b9 c1 70 00 	or r14,r14,r1                                  
 801e578:	34 02 00 10 	mvi r2,16                                      
 801e57c:	ba 40 08 00 	mv r1,r18                                      
 801e580:	f8 00 62 05 	calli 8036d94 <__ashlsi3>                      
 801e584:	b6 10 30 00 	add r6,r16,r16                                 
 801e588:	b4 c6 30 00 	add r6,r6,r6                                   
 801e58c:	b4 c6 30 00 	add r6,r6,r6                                   
 801e590:	b4 c6 30 00 	add r6,r6,r6                                   
 801e594:	b4 c6 30 00 	add r6,r6,r6                                   
 801e598:	b4 c6 30 00 	add r6,r6,r6                                   
 801e59c:	b4 c6 30 00 	add r6,r6,r6                                   
 801e5a0:	b9 c1 70 00 	or r14,r14,r1                                  
 801e5a4:	b4 c6 30 00 	add r6,r6,r6                                   
 801e5a8:	b9 c6 70 00 	or r14,r14,r6                                  
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801e5ac:	4e cc 00 08 	bge r22,r12,801e5cc <rtems_rfs_dir_empty+0x210><== NEVER TAKEN
 801e5b0:	29 a4 00 1c 	lw r4,(r13+28)                                 
 801e5b4:	65 c5 00 00 	cmpei r5,r14,0                                 
 801e5b8:	f1 84 20 00 	cmpgeu r4,r12,r4                               
 801e5bc:	b8 a4 20 00 	or r4,r5,r4                                    
 801e5c0:	5c 80 00 03 	bne r4,r0,801e5cc <rtems_rfs_dir_empty+0x210>  <== NEVER TAKEN
 801e5c4:	29 a4 00 14 	lw r4,(r13+20)                                 
 801e5c8:	50 8e 00 0f 	bgeu r4,r14,801e604 <rtems_rfs_dir_empty+0x248><== ALWAYS TAKEN
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
 801e5cc:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 801e5d0:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801e5d4:	fb ff ce fb 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801e5d8:	5c 20 00 23 	bne r1,r0,801e664 <rtems_rfs_dir_empty+0x2a8>  <== NOT EXECUTED
      offset += elength;                                              
    }                                                                 
                                                                      
    if (empty)                                                        
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
 801e5dc:	b9 a0 08 00 	mv r1,r13                                      
 801e5e0:	bb 20 10 00 	mv r2,r25                                      
 801e5e4:	37 83 00 a8 	addi r3,sp,168                                 
 801e5e8:	fb ff f5 64 	calli 801bb78 <rtems_rfs_block_map_next_block> 
 801e5ec:	b8 20 98 00 	mv r19,r1                                      
      if (rc > 0)                                                     
 801e5f0:	4c 01 ff c1 	bge r0,r1,801e4f4 <rtems_rfs_dir_empty+0x138>  <== NEVER TAKEN
      {                                                               
        if (rc == ENXIO)                                              
 801e5f4:	7c 21 00 06 	cmpnei r1,r1,6                                 
 801e5f8:	c8 01 08 00 	sub r1,r0,r1                                   
 801e5fc:	a2 61 98 00 	and r19,r19,r1                                 
 801e600:	e0 00 00 0f 	bi 801e63c <rtems_rfs_dir_empty+0x280>         
                                                                      
      /*                                                              
       * Ignore the current (.) and parent (..) entries. Anything else means
       * the directory is not empty.                                  
       */                                                             
      if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||             
 801e604:	45 97 00 0a 	be r12,r23,801e62c <rtems_rfs_dir_empty+0x270> 
           (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.')) &&               
 801e608:	5d 98 00 0b 	bne r12,r24,801e634 <rtems_rfs_dir_empty+0x278>
          ((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 2)) ||             
 801e60c:	41 64 00 0a 	lbu r4,(r11+10)                                
 801e610:	5c 91 00 09 	bne r4,r17,801e634 <rtems_rfs_dir_empty+0x278> <== NEVER TAKEN
           (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.') ||                
 801e614:	41 64 00 0b 	lbu r4,(r11+11)                                
 801e618:	5c 91 00 07 	bne r4,r17,801e634 <rtems_rfs_dir_empty+0x278> <== NEVER TAKEN
        empty = false;                                                
        break;                                                        
      }                                                               
                                                                      
      entry  += elength;                                              
      offset += elength;                                              
 801e61c:	b5 ec 78 00 	add r15,r15,r12                                
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801e620:	51 f4 ff ef 	bgeu r15,r20,801e5dc <rtems_rfs_dir_empty+0x220><== NEVER TAKEN
      {                                                               
        empty = false;                                                
        break;                                                        
      }                                                               
                                                                      
      entry  += elength;                                              
 801e624:	b5 6c 58 00 	add r11,r11,r12                                
 801e628:	e3 ff ff c0 	bi 801e528 <rtems_rfs_dir_empty+0x16c>         
                                                                      
      /*                                                              
       * Ignore the current (.) and parent (..) entries. Anything else means
       * the directory is not empty.                                  
       */                                                             
      if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||             
 801e62c:	41 64 00 0a 	lbu r4,(r11+10)                                
 801e630:	44 91 ff fb 	be r4,r17,801e61c <rtems_rfs_dir_empty+0x260>  <== ALWAYS TAKEN
        break;                                                        
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ((rc == 0) && !empty)                                            
 801e634:	5e 60 00 02 	bne r19,r0,801e63c <rtems_rfs_dir_empty+0x280> <== NEVER TAKEN
    rc = ENOTEMPTY;                                                   
 801e638:	34 13 00 5a 	mvi r19,90                                     
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801e63c:	37 82 00 9c 	addi r2,sp,156                                 
 801e640:	b9 a0 08 00 	mv r1,r13                                      
 801e644:	fb ff f8 0e 	calli 801c67c <rtems_rfs_buffer_handle_release>
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
 801e648:	b9 a0 08 00 	mv r1,r13                                      
 801e64c:	bb 20 10 00 	mv r2,r25                                      
  handle->dirty = false;                                              
 801e650:	33 80 00 9c 	sb (sp+156),r0                                 
  handle->bnum  = 0;                                                  
 801e654:	5b 80 00 a0 	sw (sp+160),r0                                 
  handle->buffer = NULL;                                              
 801e658:	5b 80 00 a4 	sw (sp+164),r0                                 
 801e65c:	fb ff f3 ee 	calli 801b614 <rtems_rfs_block_map_close>      
  return rc;                                                          
 801e660:	e3 ff ff 81 	bi 801e464 <rtems_rfs_dir_empty+0xa8>          
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
          printf ("rtems-rfs: dir-empty: "                            
 801e664:	2b 62 00 08 	lw r2,(fp+8)                                   <== NOT EXECUTED
 801e668:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 801e66c:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 801e670:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 801e674:	b9 e0 28 00 	mv r5,r15                                      <== NOT EXECUTED
 801e678:	f8 00 19 88 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e67c:	e3 ff ff d8 	bi 801e5dc <rtems_rfs_dir_empty+0x220>         <== NOT EXECUTED
                                                                      

080231c8 <rtems_rfs_dir_hash>: */ #define initval (20010928) uint32_t rtems_rfs_dir_hash (const void *key, size_t length) {
 80231c8:	37 9c ff d4 	addi sp,sp,-44                                 
 80231cc:	5b 8b 00 2c 	sw (sp+44),r11                                 
 80231d0:	5b 8c 00 28 	sw (sp+40),r12                                 
 80231d4:	5b 8d 00 24 	sw (sp+36),r13                                 
 80231d8:	5b 8e 00 20 	sw (sp+32),r14                                 
 80231dc:	5b 8f 00 1c 	sw (sp+28),r15                                 
 80231e0:	5b 90 00 18 	sw (sp+24),r16                                 
 80231e4:	5b 91 00 14 	sw (sp+20),r17                                 
 80231e8:	5b 92 00 10 	sw (sp+16),r18                                 
 80231ec:	5b 93 00 0c 	sw (sp+12),r19                                 
 80231f0:	5b 94 00 08 	sw (sp+8),r20                                  
 80231f4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80231f8:	b8 40 90 00 	mv r18,r2                                      
  uint32_t a,b,c;                             /* internal state */    
  union { const void *ptr; size_t i; } u;     /* needed for Mac Powerbook G4 */
                                                                      
  /* Set up the internal state */                                     
  a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;              
 80231fc:	78 02 08 03 	mvhi r2,0x803                                  
 8023200:	38 42 c1 2c 	ori r2,r2,0xc12c                               
 8023204:	28 4f 00 00 	lw r15,(r2+0)                                  
        break;                                                        
      case 0 : return c;                     /* zero length requires no mixing */
    }                                                                 
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
 8023208:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
 802320c:	34 01 00 0c 	mvi r1,12                                      
{                                                                     
  uint32_t a,b,c;                             /* internal state */    
  union { const void *ptr; size_t i; } u;     /* needed for Mac Powerbook G4 */
                                                                      
  /* Set up the internal state */                                     
  a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;              
 8023210:	b6 4f 78 00 	add r15,r18,r15                                
 8023214:	b9 e0 70 00 	mv r14,r15                                     
 8023218:	b9 e0 88 00 	mv r17,r15                                     
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
 802321c:	50 32 00 89 	bgeu r1,r18,8023440 <rtems_rfs_dir_hash+0x278> 
 8023220:	34 14 00 0c 	mvi r20,12                                     
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
 8023224:	41 8b 00 01 	lbu r11,(r12+1)                                
      a += ((uint32_t)k[2])<<16;                                      
 8023228:	41 81 00 02 	lbu r1,(r12+2)                                 
 802322c:	34 02 00 10 	mvi r2,16                                      
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
 8023230:	b5 6b 58 00 	add r11,r11,r11                                
 8023234:	b5 6b 58 00 	add r11,r11,r11                                
 8023238:	b5 6b 58 00 	add r11,r11,r11                                
 802323c:	b5 6b 58 00 	add r11,r11,r11                                
 8023240:	b5 6b 58 00 	add r11,r11,r11                                
 8023244:	b5 6b 58 00 	add r11,r11,r11                                
 8023248:	b5 6b 58 00 	add r11,r11,r11                                
      a += ((uint32_t)k[2])<<16;                                      
 802324c:	f8 00 4e d2 	calli 8036d94 <__ashlsi3>                      
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
 8023250:	b5 6b 58 00 	add r11,r11,r11                                
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
 8023254:	b5 61 58 00 	add r11,r11,r1                                 
 8023258:	41 90 00 00 	lbu r16,(r12+0)                                
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
 802325c:	41 81 00 03 	lbu r1,(r12+3)                                 
 8023260:	34 02 00 18 	mvi r2,24                                      
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
 8023264:	b5 70 80 00 	add r16,r11,r16                                
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
 8023268:	f8 00 4e cb 	calli 8036d94 <__ashlsi3>                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
 802326c:	41 8b 00 05 	lbu r11,(r12+5)                                
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
 8023270:	b6 01 80 00 	add r16,r16,r1                                 
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
 8023274:	41 81 00 06 	lbu r1,(r12+6)                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
 8023278:	b5 6b 58 00 	add r11,r11,r11                                
 802327c:	b5 6b 58 00 	add r11,r11,r11                                
 8023280:	b5 6b 58 00 	add r11,r11,r11                                
 8023284:	b5 6b 58 00 	add r11,r11,r11                                
 8023288:	b5 6b 58 00 	add r11,r11,r11                                
 802328c:	b5 6b 58 00 	add r11,r11,r11                                
      b += ((uint32_t)k[6])<<16;                                      
 8023290:	34 02 00 10 	mvi r2,16                                      
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
 8023294:	b5 6b 58 00 	add r11,r11,r11                                
      b += ((uint32_t)k[6])<<16;                                      
 8023298:	f8 00 4e bf 	calli 8036d94 <__ashlsi3>                      
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
 802329c:	b5 6b 58 00 	add r11,r11,r11                                
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
 80232a0:	b5 61 58 00 	add r11,r11,r1                                 
 80232a4:	41 93 00 04 	lbu r19,(r12+4)                                
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
 80232a8:	41 81 00 07 	lbu r1,(r12+7)                                 
 80232ac:	34 02 00 18 	mvi r2,24                                      
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
 80232b0:	b5 73 98 00 	add r19,r11,r19                                
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
 80232b4:	f8 00 4e b8 	calli 8036d94 <__ashlsi3>                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
 80232b8:	41 8b 00 09 	lbu r11,(r12+9)                                
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
 80232bc:	b6 61 98 00 	add r19,r19,r1                                 
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
 80232c0:	41 81 00 0a 	lbu r1,(r12+10)                                
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
 80232c4:	b5 6b 58 00 	add r11,r11,r11                                
 80232c8:	b5 6b 58 00 	add r11,r11,r11                                
 80232cc:	b5 6b 58 00 	add r11,r11,r11                                
 80232d0:	b5 6b 58 00 	add r11,r11,r11                                
 80232d4:	b5 6b 58 00 	add r11,r11,r11                                
 80232d8:	b5 6b 58 00 	add r11,r11,r11                                
      c += ((uint32_t)k[10])<<16;                                     
 80232dc:	34 02 00 10 	mvi r2,16                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
 80232e0:	b5 6b 58 00 	add r11,r11,r11                                
      c += ((uint32_t)k[10])<<16;                                     
 80232e4:	f8 00 4e ac 	calli 8036d94 <__ashlsi3>                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
 80232e8:	b5 6b 58 00 	add r11,r11,r11                                
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
 80232ec:	b5 61 58 00 	add r11,r11,r1                                 
 80232f0:	41 8d 00 08 	lbu r13,(r12+8)                                
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
 80232f4:	41 81 00 0b 	lbu r1,(r12+11)                                
 80232f8:	34 02 00 18 	mvi r2,24                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
 80232fc:	b5 6d 68 00 	add r13,r11,r13                                
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
 8023300:	f8 00 4e a5 	calli 8036d94 <__ashlsi3>                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
 8023304:	b5 a1 68 00 	add r13,r13,r1                                 
      c += ((uint32_t)k[11])<<24;                                     
 8023308:	b5 af 68 00 	add r13,r13,r15                                
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
 802330c:	b6 6e 98 00 	add r19,r19,r14                                
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
 8023310:	b5 ad 70 00 	add r14,r13,r13                                
 8023314:	b5 ce 70 00 	add r14,r14,r14                                
 8023318:	34 02 00 1c 	mvi r2,28                                      
 802331c:	b9 a0 08 00 	mv r1,r13                                      
 8023320:	b5 ce 70 00 	add r14,r14,r14                                
 8023324:	fb ff 79 01 	calli 8001728 <__lshrsi3>                      
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
 8023328:	b6 11 80 00 	add r16,r16,r17                                
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
 802332c:	b5 ce 70 00 	add r14,r14,r14                                
 8023330:	b9 c1 08 00 	or r1,r14,r1                                   
 8023334:	ca 0d 80 00 	sub r16,r16,r13                                
 8023338:	9a 01 80 00 	xor r16,r16,r1                                 
 802333c:	b6 10 58 00 	add r11,r16,r16                                
 8023340:	b5 6b 58 00 	add r11,r11,r11                                
 8023344:	b5 6b 58 00 	add r11,r11,r11                                
 8023348:	b5 6b 58 00 	add r11,r11,r11                                
 802334c:	34 02 00 1a 	mvi r2,26                                      
 8023350:	ba 00 08 00 	mv r1,r16                                      
 8023354:	b5 6b 58 00 	add r11,r11,r11                                
 8023358:	fb ff 78 f4 	calli 8001728 <__lshrsi3>                      
 802335c:	b5 6b 58 00 	add r11,r11,r11                                
 8023360:	b9 61 08 00 	or r1,r11,r1                                   
 8023364:	ca 70 78 00 	sub r15,r19,r16                                
 8023368:	98 2f 78 00 	xor r15,r1,r15                                 
 802336c:	b5 ef 58 00 	add r11,r15,r15                                
 8023370:	b5 6b 58 00 	add r11,r11,r11                                
 8023374:	b5 6b 58 00 	add r11,r11,r11                                
 8023378:	b5 6b 58 00 	add r11,r11,r11                                
 802337c:	b5 6b 58 00 	add r11,r11,r11                                
 8023380:	b5 6b 58 00 	add r11,r11,r11                                
 8023384:	34 02 00 18 	mvi r2,24                                      
 8023388:	b9 e0 08 00 	mv r1,r15                                      
 802338c:	b5 6b 58 00 	add r11,r11,r11                                
 8023390:	fb ff 78 e6 	calli 8001728 <__lshrsi3>                      
 8023394:	b5 b3 68 00 	add r13,r13,r19                                
 8023398:	b5 6b 58 00 	add r11,r11,r11                                
 802339c:	b9 61 08 00 	or r1,r11,r1                                   
 80233a0:	c9 af 58 00 	sub r11,r13,r15                                
 80233a4:	98 2b 58 00 	xor r11,r1,r11                                 
 80233a8:	34 02 00 10 	mvi r2,16                                      
 80233ac:	b9 60 08 00 	mv r1,r11                                      
 80233b0:	f8 00 4e 79 	calli 8036d94 <__ashlsi3>                      
 80233b4:	b8 20 88 00 	mv r17,r1                                      
 80233b8:	34 02 00 10 	mvi r2,16                                      
 80233bc:	b9 60 08 00 	mv r1,r11                                      
 80233c0:	fb ff 78 da 	calli 8001728 <__lshrsi3>                      
 80233c4:	b6 0d 80 00 	add r16,r16,r13                                
 80233c8:	ba 21 08 00 	or r1,r17,r1                                   
 80233cc:	ca 0b 88 00 	sub r17,r16,r11                                
 80233d0:	98 31 88 00 	xor r17,r1,r17                                 
 80233d4:	34 02 00 13 	mvi r2,19                                      
 80233d8:	ba 20 08 00 	mv r1,r17                                      
 80233dc:	f8 00 4e 6e 	calli 8036d94 <__ashlsi3>                      
 80233e0:	b8 20 70 00 	mv r14,r1                                      
 80233e4:	34 02 00 0d 	mvi r2,13                                      
 80233e8:	ba 20 08 00 	mv r1,r17                                      
 80233ec:	fb ff 78 cf 	calli 8001728 <__lshrsi3>                      
 80233f0:	b5 f0 78 00 	add r15,r15,r16                                
 80233f4:	b9 c1 08 00 	or r1,r14,r1                                   
 80233f8:	c9 f1 70 00 	sub r14,r15,r17                                
 80233fc:	98 2e 70 00 	xor r14,r1,r14                                 
 8023400:	b5 ce 68 00 	add r13,r14,r14                                
 8023404:	b5 ad 68 00 	add r13,r13,r13                                
 8023408:	b9 c0 08 00 	mv r1,r14                                      
 802340c:	b5 ad 68 00 	add r13,r13,r13                                
 8023410:	34 02 00 1c 	mvi r2,28                                      
 8023414:	b5 6f 58 00 	add r11,r11,r15                                
 8023418:	b5 ad 68 00 	add r13,r13,r13                                
 802341c:	fb ff 78 c3 	calli 8001728 <__lshrsi3>                      
 8023420:	b6 2b 88 00 	add r17,r17,r11                                
 8023424:	b9 a1 08 00 	or r1,r13,r1                                   
 8023428:	c9 6e 58 00 	sub r11,r11,r14                                
      length -= 12;                                                   
 802342c:	36 52 ff f4 	addi r18,r18,-12                               
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
 8023430:	98 2b 78 00 	xor r15,r1,r11                                 
 8023434:	b5 d1 70 00 	add r14,r14,r17                                
      length -= 12;                                                   
      k += 12;                                                        
 8023438:	35 8c 00 0c 	addi r12,r12,12                                
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
 802343c:	56 54 ff 7a 	bgu r18,r20,8023224 <rtems_rfs_dir_hash+0x5c>  <== NEVER TAKEN
      length -= 12;                                                   
      k += 12;                                                        
    }                                                                 
                                                                      
    /*-------------------------------- last block: affect all 32 bits of (c) */
    switch(length)                   /* all the case statements fall through */
 8023440:	34 01 00 0c 	mvi r1,12                                      
 8023444:	56 41 00 91 	bgu r18,r1,8023688 <rtems_rfs_dir_hash+0x4c0>  <== NEVER TAKEN
 8023448:	78 01 08 03 	mvhi r1,0x803                                  
 802344c:	b6 52 90 00 	add r18,r18,r18                                
 8023450:	38 21 c1 30 	ori r1,r1,0xc130                               
 8023454:	b6 52 90 00 	add r18,r18,r18                                
 8023458:	b4 32 90 00 	add r18,r1,r18                                 
 802345c:	2a 41 00 00 	lw r1,(r18+0)                                  
 8023460:	c0 20 00 00 	b r1                                           
    {                                                                 
      case 12: c+=((uint32_t)k[11])<<24;                              
 8023464:	41 81 00 0b 	lbu r1,(r12+11)                                
 8023468:	34 02 00 18 	mvi r2,24                                      
 802346c:	f8 00 4e 4a 	calli 8036d94 <__ashlsi3>                      
 8023470:	b5 e1 78 00 	add r15,r15,r1                                 
      case 11: c+=((uint32_t)k[10])<<16;                              
 8023474:	41 81 00 0a 	lbu r1,(r12+10)                                
 8023478:	34 02 00 10 	mvi r2,16                                      
 802347c:	f8 00 4e 46 	calli 8036d94 <__ashlsi3>                      
 8023480:	b5 e1 78 00 	add r15,r15,r1                                 
      case 10: c+=((uint32_t)k[9])<<8;                                
 8023484:	41 81 00 09 	lbu r1,(r12+9)                                 
 8023488:	b4 21 08 00 	add r1,r1,r1                                   
 802348c:	b4 21 08 00 	add r1,r1,r1                                   
 8023490:	b4 21 08 00 	add r1,r1,r1                                   
 8023494:	b4 21 08 00 	add r1,r1,r1                                   
 8023498:	b4 21 08 00 	add r1,r1,r1                                   
 802349c:	b4 21 08 00 	add r1,r1,r1                                   
 80234a0:	b4 21 08 00 	add r1,r1,r1                                   
 80234a4:	b4 21 08 00 	add r1,r1,r1                                   
 80234a8:	b5 e1 78 00 	add r15,r15,r1                                 
      case 9 : c+=k[8];                                               
 80234ac:	41 81 00 08 	lbu r1,(r12+8)                                 
 80234b0:	b5 e1 78 00 	add r15,r15,r1                                 
      case 8 : b+=((uint32_t)k[7])<<24;                               
 80234b4:	41 81 00 07 	lbu r1,(r12+7)                                 
 80234b8:	34 02 00 18 	mvi r2,24                                      
 80234bc:	f8 00 4e 36 	calli 8036d94 <__ashlsi3>                      
 80234c0:	b5 c1 70 00 	add r14,r14,r1                                 
      case 7 : b+=((uint32_t)k[6])<<16;                               
 80234c4:	41 81 00 06 	lbu r1,(r12+6)                                 
 80234c8:	34 02 00 10 	mvi r2,16                                      
 80234cc:	f8 00 4e 32 	calli 8036d94 <__ashlsi3>                      
 80234d0:	b5 c1 70 00 	add r14,r14,r1                                 
      case 6 : b+=((uint32_t)k[5])<<8;                                
 80234d4:	41 81 00 05 	lbu r1,(r12+5)                                 
 80234d8:	b4 21 08 00 	add r1,r1,r1                                   
 80234dc:	b4 21 08 00 	add r1,r1,r1                                   
 80234e0:	b4 21 08 00 	add r1,r1,r1                                   
 80234e4:	b4 21 08 00 	add r1,r1,r1                                   
 80234e8:	b4 21 08 00 	add r1,r1,r1                                   
 80234ec:	b4 21 08 00 	add r1,r1,r1                                   
 80234f0:	b4 21 08 00 	add r1,r1,r1                                   
 80234f4:	b4 21 08 00 	add r1,r1,r1                                   
 80234f8:	b5 c1 70 00 	add r14,r14,r1                                 
      case 5 : b+=k[4];                                               
 80234fc:	41 81 00 04 	lbu r1,(r12+4)                                 
 8023500:	b5 c1 70 00 	add r14,r14,r1                                 
      case 4 : a+=((uint32_t)k[3])<<24;                               
 8023504:	41 81 00 03 	lbu r1,(r12+3)                                 
 8023508:	34 02 00 18 	mvi r2,24                                      
 802350c:	f8 00 4e 22 	calli 8036d94 <__ashlsi3>                      
 8023510:	b6 21 88 00 	add r17,r17,r1                                 
      case 3 : a+=((uint32_t)k[2])<<16;                               
 8023514:	41 81 00 02 	lbu r1,(r12+2)                                 
 8023518:	34 02 00 10 	mvi r2,16                                      
 802351c:	f8 00 4e 1e 	calli 8036d94 <__ashlsi3>                      
 8023520:	b6 21 88 00 	add r17,r17,r1                                 
      case 2 : a+=((uint32_t)k[1])<<8;                                
 8023524:	41 81 00 01 	lbu r1,(r12+1)                                 
 8023528:	b4 21 08 00 	add r1,r1,r1                                   
 802352c:	b4 21 08 00 	add r1,r1,r1                                   
 8023530:	b4 21 08 00 	add r1,r1,r1                                   
 8023534:	b4 21 08 00 	add r1,r1,r1                                   
 8023538:	b4 21 08 00 	add r1,r1,r1                                   
 802353c:	b4 21 08 00 	add r1,r1,r1                                   
 8023540:	b4 21 08 00 	add r1,r1,r1                                   
 8023544:	b4 21 08 00 	add r1,r1,r1                                   
 8023548:	b6 21 88 00 	add r17,r17,r1                                 
      case 1 : a+=k[0];                                               
 802354c:	41 83 00 00 	lbu r3,(r12+0)                                 
        break;                                                        
      case 0 : return c;                                              
    }                                                                 
  }                                                                   
                                                                      
  final(a,b,c);                                                       
 8023550:	34 02 00 12 	mvi r2,18                                      
 8023554:	b9 c0 08 00 	mv r1,r14                                      
      case 6 : b+=((uint32_t)k[5])<<8;                                
      case 5 : b+=k[4];                                               
      case 4 : a+=((uint32_t)k[3])<<24;                               
      case 3 : a+=((uint32_t)k[2])<<16;                               
      case 2 : a+=((uint32_t)k[1])<<8;                                
      case 1 : a+=k[0];                                               
 8023558:	b6 23 88 00 	add r17,r17,r3                                 
        break;                                                        
      case 0 : return c;                                              
    }                                                                 
  }                                                                   
                                                                      
  final(a,b,c);                                                       
 802355c:	fb ff 78 73 	calli 8001728 <__lshrsi3>                      
 8023560:	b8 20 58 00 	mv r11,r1                                      
 8023564:	34 02 00 0e 	mvi r2,14                                      
 8023568:	b9 c0 08 00 	mv r1,r14                                      
 802356c:	f8 00 4e 0a 	calli 8036d94 <__ashlsi3>                      
 8023570:	b9 61 08 00 	or r1,r11,r1                                   
 8023574:	99 ee 78 00 	xor r15,r15,r14                                
 8023578:	c9 e1 78 00 	sub r15,r15,r1                                 
 802357c:	34 02 00 0b 	mvi r2,11                                      
 8023580:	b9 e0 08 00 	mv r1,r15                                      
 8023584:	f8 00 4e 04 	calli 8036d94 <__ashlsi3>                      
 8023588:	b8 20 58 00 	mv r11,r1                                      
 802358c:	34 02 00 15 	mvi r2,21                                      
 8023590:	b9 e0 08 00 	mv r1,r15                                      
 8023594:	fb ff 78 65 	calli 8001728 <__lshrsi3>                      
 8023598:	b9 61 08 00 	or r1,r11,r1                                   
 802359c:	99 f1 88 00 	xor r17,r15,r17                                
 80235a0:	ca 21 88 00 	sub r17,r17,r1                                 
 80235a4:	34 02 00 19 	mvi r2,25                                      
 80235a8:	ba 20 08 00 	mv r1,r17                                      
 80235ac:	f8 00 4d fa 	calli 8036d94 <__ashlsi3>                      
 80235b0:	02 23 00 01 	srui r3,r17,1                                  
 80235b4:	9a 2e 70 00 	xor r14,r17,r14                                
 80235b8:	00 63 00 01 	srui r3,r3,1                                   
 80235bc:	34 02 00 10 	mvi r2,16                                      
 80235c0:	00 63 00 01 	srui r3,r3,1                                   
 80235c4:	00 63 00 01 	srui r3,r3,1                                   
 80235c8:	00 63 00 01 	srui r3,r3,1                                   
 80235cc:	00 63 00 01 	srui r3,r3,1                                   
 80235d0:	00 63 00 01 	srui r3,r3,1                                   
 80235d4:	b8 23 08 00 	or r1,r1,r3                                    
 80235d8:	c9 c1 70 00 	sub r14,r14,r1                                 
 80235dc:	b9 c0 08 00 	mv r1,r14                                      
 80235e0:	f8 00 4d ed 	calli 8036d94 <__ashlsi3>                      
 80235e4:	b8 20 60 00 	mv r12,r1                                      
 80235e8:	34 02 00 10 	mvi r2,16                                      
 80235ec:	b9 c0 08 00 	mv r1,r14                                      
 80235f0:	fb ff 78 4e 	calli 8001728 <__lshrsi3>                      
 80235f4:	99 cf 78 00 	xor r15,r14,r15                                
 80235f8:	b9 81 08 00 	or r1,r12,r1                                   
 80235fc:	c9 e1 60 00 	sub r12,r15,r1                                 
 8023600:	b5 8c 58 00 	add r11,r12,r12                                
 8023604:	b5 6b 58 00 	add r11,r11,r11                                
 8023608:	34 02 00 1c 	mvi r2,28                                      
 802360c:	b5 6b 58 00 	add r11,r11,r11                                
 8023610:	b9 80 08 00 	mv r1,r12                                      
 8023614:	fb ff 78 45 	calli 8001728 <__lshrsi3>                      
 8023618:	b5 6b 58 00 	add r11,r11,r11                                
 802361c:	b9 61 08 00 	or r1,r11,r1                                   
 8023620:	99 91 58 00 	xor r11,r12,r17                                
 8023624:	c9 61 58 00 	sub r11,r11,r1                                 
 8023628:	34 02 00 0e 	mvi r2,14                                      
 802362c:	b9 60 08 00 	mv r1,r11                                      
 8023630:	f8 00 4d d9 	calli 8036d94 <__ashlsi3>                      
 8023634:	b8 20 68 00 	mv r13,r1                                      
 8023638:	34 02 00 12 	mvi r2,18                                      
 802363c:	b9 60 08 00 	mv r1,r11                                      
 8023640:	fb ff 78 3a 	calli 8001728 <__lshrsi3>                      
 8023644:	b9 a1 08 00 	or r1,r13,r1                                   
 8023648:	99 6e 70 00 	xor r14,r11,r14                                
 802364c:	c9 c1 70 00 	sub r14,r14,r1                                 
 8023650:	34 02 00 18 	mvi r2,24                                      
 8023654:	b9 c0 08 00 	mv r1,r14                                      
 8023658:	f8 00 4d cf 	calli 8036d94 <__ashlsi3>                      
 802365c:	01 c2 00 01 	srui r2,r14,1                                  
 8023660:	99 cc 78 00 	xor r15,r14,r12                                
 8023664:	00 42 00 01 	srui r2,r2,1                                   
 8023668:	00 42 00 01 	srui r2,r2,1                                   
 802366c:	00 42 00 01 	srui r2,r2,1                                   
 8023670:	00 42 00 01 	srui r2,r2,1                                   
 8023674:	00 42 00 01 	srui r2,r2,1                                   
 8023678:	00 42 00 01 	srui r2,r2,1                                   
 802367c:	00 42 00 01 	srui r2,r2,1                                   
 8023680:	b8 22 08 00 	or r1,r1,r2                                    
 8023684:	c9 e1 78 00 	sub r15,r15,r1                                 
  return c;                                                           
}                                                                     
 8023688:	b9 e0 08 00 	mv r1,r15                                      
 802368c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023690:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8023694:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8023698:	2b 8d 00 24 	lw r13,(sp+36)                                 
 802369c:	2b 8e 00 20 	lw r14,(sp+32)                                 
 80236a0:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 80236a4:	2b 90 00 18 	lw r16,(sp+24)                                 
 80236a8:	2b 91 00 14 	lw r17,(sp+20)                                 
 80236ac:	2b 92 00 10 	lw r18,(sp+16)                                 
 80236b0:	2b 93 00 0c 	lw r19,(sp+12)                                 
 80236b4:	2b 94 00 08 	lw r20,(sp+8)                                  
 80236b8:	37 9c 00 2c 	addi sp,sp,44                                  
 80236bc:	c3 a0 00 00 	ret                                            
                                                                      

0801cf90 <rtems_rfs_dir_lookup_ino>: rtems_rfs_inode_handle* inode, const char* name, int length, rtems_rfs_ino* ino, uint32_t* offset) {
 801cf90:	37 9c ff 38 	addi sp,sp,-200                                
 801cf94:	5b 8b 00 44 	sw (sp+68),r11                                 
 801cf98:	5b 8c 00 40 	sw (sp+64),r12                                 
 801cf9c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801cfa0:	5b 8e 00 38 	sw (sp+56),r14                                 
 801cfa4:	5b 8f 00 34 	sw (sp+52),r15                                 
 801cfa8:	5b 90 00 30 	sw (sp+48),r16                                 
 801cfac:	5b 91 00 2c 	sw (sp+44),r17                                 
 801cfb0:	5b 92 00 28 	sw (sp+40),r18                                 
 801cfb4:	5b 93 00 24 	sw (sp+36),r19                                 
 801cfb8:	5b 94 00 20 	sw (sp+32),r20                                 
 801cfbc:	5b 95 00 1c 	sw (sp+28),r21                                 
 801cfc0:	5b 96 00 18 	sw (sp+24),r22                                 
 801cfc4:	5b 97 00 14 	sw (sp+20),r23                                 
 801cfc8:	5b 98 00 10 	sw (sp+16),r24                                 
 801cfcc:	5b 99 00 0c 	sw (sp+12),r25                                 
 801cfd0:	5b 9b 00 08 	sw (sp+8),fp                                   
 801cfd4:	5b 9d 00 04 	sw (sp+4),ra                                   
 801cfd8:	b8 20 a8 00 	mv r21,r1                                      
 801cfdc:	5b 82 00 48 	sw (sp+72),r2                                  
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle entries;                                    
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
 801cfe0:	34 01 00 00 	mvi r1,0                                       
 801cfe4:	78 02 04 00 	mvhi r2,0x400                                  
                          rtems_rfs_inode_handle* inode,              
                          const char*             name,               
                          int                     length,             
                          rtems_rfs_ino*          ino,                
                          uint32_t*               offset)             
{                                                                     
 801cfe8:	5b 83 00 50 	sw (sp+80),r3                                  
 801cfec:	5b 84 00 4c 	sw (sp+76),r4                                  
 801cff0:	b8 a0 b0 00 	mv r22,r5                                      
 801cff4:	5b 86 00 54 	sw (sp+84),r6                                  
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle entries;                                    
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
 801cff8:	fb ff d4 72 	calli 80121c0 <rtems_rfs_trace>                
 801cffc:	5c 20 00 22 	bne r1,r0,801d084 <rtems_rfs_dir_lookup_ino+0xf4><== NEVER TAKEN
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
  }                                                                   
                                                                      
  *ino = RTEMS_RFS_EMPTY_INO;                                         
  *offset = 0;                                                        
 801d000:	2b 83 00 54 	lw r3,(sp+84)                                  
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
 801d004:	2b 82 00 48 	lw r2,(sp+72)                                  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
  }                                                                   
                                                                      
  *ino = RTEMS_RFS_EMPTY_INO;                                         
 801d008:	5a c0 00 00 	sw (r22+0),r0                                  
  *offset = 0;                                                        
 801d00c:	58 60 00 00 	sw (r3+0),r0                                   
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
 801d010:	ba a0 08 00 	mv r1,r21                                      
 801d014:	37 83 00 6c 	addi r3,sp,108                                 
 801d018:	fb ff f8 d7 	calli 801b374 <rtems_rfs_block_map_open>       
 801d01c:	b8 20 b8 00 	mv r23,r1                                      
  if (rc > 0)                                                         
 801d020:	4c 01 00 2d 	bge r0,r1,801d0d4 <rtems_rfs_dir_lookup_ino+0x144><== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))             
 801d024:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d028:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d02c:	fb ff d4 65 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d030:	5c 20 00 64 	bne r1,r0,801d1c0 <rtems_rfs_dir_lookup_ino+0x230><== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &entries);                       
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
 801d034:	ba e0 08 00 	mv r1,r23                                      
 801d038:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801d03c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801d040:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801d044:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801d048:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801d04c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801d050:	2b 90 00 30 	lw r16,(sp+48)                                 
 801d054:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801d058:	2b 92 00 28 	lw r18,(sp+40)                                 
 801d05c:	2b 93 00 24 	lw r19,(sp+36)                                 
 801d060:	2b 94 00 20 	lw r20,(sp+32)                                 
 801d064:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801d068:	2b 96 00 18 	lw r22,(sp+24)                                 
 801d06c:	2b 97 00 14 	lw r23,(sp+20)                                 
 801d070:	2b 98 00 10 	lw r24,(sp+16)                                 
 801d074:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801d078:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801d07c:	37 9c 00 c8 	addi sp,sp,200                                 
 801d080:	c3 a0 00 00 	ret                                            
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
 801d084:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 801d088:	28 22 00 08 	lw r2,(r1+8)                                   <== NOT EXECUTED
 801d08c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d090:	38 21 b0 8c 	ori r1,r1,0xb08c                               <== NOT EXECUTED
 801d094:	f8 00 1f 01 	calli 8024c98 <printf>                         <== NOT EXECUTED
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
 801d098:	2b 82 00 4c 	lw r2,(sp+76)                                  <== NOT EXECUTED
 801d09c:	4c 02 00 09 	bge r0,r2,801d0c0 <rtems_rfs_dir_lookup_ino+0x130><== NOT EXECUTED
 801d0a0:	2b 8c 00 50 	lw r12,(sp+80)                                 <== NOT EXECUTED
 801d0a4:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
 801d0a8:	b8 40 68 00 	mv r13,r2                                      <== NOT EXECUTED
#define rtems_rfs_dir_entry_valid(_f, _l, _i) \                       
  (((_l) <= RTEMS_RFS_DIR_ENTRY_SIZE) || ((_l) >= rtems_rfs_fs_max_name (_f)) \
   || (_i < RTEMS_RFS_ROOT_INO) || (_i > rtems_rfs_fs_inodes (_f)))   
                                                                      
int                                                                   
rtems_rfs_dir_lookup_ino (rtems_rfs_file_system*  fs,                 
 801d0ac:	b5 8b 08 00 	add r1,r12,r11                                 <== NOT EXECUTED
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
 801d0b0:	40 21 00 00 	lbu r1,(r1+0)                                  <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
 801d0b4:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 801d0b8:	f8 00 1f 7e 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
 801d0bc:	49 ab ff fc 	bg r13,r11,801d0ac <rtems_rfs_dir_lookup_ino+0x11c><== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
 801d0c0:	2b 82 00 4c 	lw r2,(sp+76)                                  <== NOT EXECUTED
 801d0c4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d0c8:	38 21 b0 c4 	ori r1,r1,0xb0c4                               <== NOT EXECUTED
 801d0cc:	f8 00 1e f3 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d0d0:	e3 ff ff cc 	bi 801d000 <rtems_rfs_dir_lookup_ino+0x70>     <== NOT EXECUTED
    uint32_t           hash;                                          
                                                                      
    /*                                                                
     * Calculate the hash of the look up string.                      
     */                                                               
    hash = rtems_rfs_dir_hash (name, length);                         
 801d0d4:	2b 82 00 4c 	lw r2,(sp+76)                                  
 801d0d8:	2b 81 00 50 	lw r1,(sp+80)                                  
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801d0dc:	33 80 00 bc 	sb (sp+188),r0                                 
  handle->bnum  = 0;                                                  
 801d0e0:	5b 80 00 c0 	sw (sp+192),r0                                 
  handle->buffer = NULL;                                              
 801d0e4:	5b 80 00 c4 	sw (sp+196),r0                                 
 801d0e8:	f8 00 18 38 	calli 80231c8 <rtems_rfs_dir_hash>             
 801d0ec:	b8 20 d8 00 	mv fp,r1                                       
                                                                      
    /*                                                                
     * Locate the first block. The map points to the start after open so just
     * seek 0. If an error the block will be 0.                       
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
 801d0f0:	37 82 00 6c 	addi r2,sp,108                                 
 801d0f4:	ba a0 08 00 	mv r1,r21                                      
 801d0f8:	34 03 00 00 	mvi r3,0                                       
 801d0fc:	34 04 00 00 	mvi r4,0                                       
 801d100:	37 85 00 c8 	addi r5,sp,200                                 
 801d104:	fb ff fa 68 	calli 801baa4 <rtems_rfs_block_map_seek>       
 801d108:	b8 20 b8 00 	mv r23,r1                                      
    if (rc > 0)                                                       
 801d10c:	48 20 00 38 	bg r1,r0,801d1ec <rtems_rfs_dir_lookup_ino+0x25c><== NEVER TAKEN
    while ((rc == 0) && block)                                        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
 801d110:	78 02 08 03 	mvhi r2,0x803                                  
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d114:	78 03 08 03 	mvhi r3,0x803                                  
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
        if ((rc > 0) && (rc != ENXIO))                                
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d118:	78 01 08 03 	mvhi r1,0x803                                  
    while ((rc == 0) && block)                                        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
 801d11c:	38 42 b1 4c 	ori r2,r2,0xb14c                               
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d120:	38 63 b2 14 	ori r3,r3,0xb214                               
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
        if ((rc > 0) && (rc != ENXIO))                                
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d124:	38 21 b2 bc 	ori r1,r1,0xb2bc                               
    while ((rc == 0) && block)                                        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
 801d128:	5b 82 00 64 	sw (sp+100),r2                                 
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d12c:	34 18 00 0a 	mvi r24,10                                     
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
                                                                      
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
 801d130:	38 19 ff ff 	mvu r25,0xffff                                 
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d134:	5b 83 00 60 	sw (sp+96),r3                                  
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
        if ((rc > 0) && (rc != ENXIO))                                
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d138:	5b 81 00 68 	sw (sp+104),r1                                 
 801d13c:	5b 97 00 5c 	sw (sp+92),r23                                 
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    while ((rc == 0) && block)                                        
 801d140:	2b 82 00 5c 	lw r2,(sp+92)                                  
 801d144:	5c 40 01 0f 	bne r2,r0,801d580 <rtems_rfs_dir_lookup_ino+0x5f0><== NEVER TAKEN
 801d148:	2b 84 00 c8 	lw r4,(sp+200)                                 
 801d14c:	44 82 00 fd 	be r4,r2,801d540 <rtems_rfs_dir_lookup_ino+0x5b0><== NEVER TAKEN
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
 801d150:	34 01 00 00 	mvi r1,0                                       
 801d154:	78 02 04 00 	mvhi r2,0x400                                  
 801d158:	fb ff d4 1a 	calli 80121c0 <rtems_rfs_trace>                
 801d15c:	5c 20 00 c9 	bne r1,r0,801d480 <rtems_rfs_dir_lookup_ino+0x4f0><== NEVER TAKEN
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
                rtems_rfs_inode_ino (inode), map.bpos.bno);           
                                                                      
      rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
 801d160:	2b 83 00 c8 	lw r3,(sp+200)                                 
 801d164:	ba a0 08 00 	mv r1,r21                                      
 801d168:	37 82 00 bc 	addi r2,sp,188                                 
 801d16c:	34 04 00 01 	mvi r4,1                                       
 801d170:	fb ff fd b5 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801d174:	b8 20 b8 00 	mv r23,r1                                      
      if (rc > 0)                                                     
 801d178:	4c 01 00 2d 	bge r0,r1,801d22c <rtems_rfs_dir_lookup_ino+0x29c><== ALWAYS TAKEN
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))         
 801d17c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d180:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d184:	fb ff d4 0f 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d188:	44 20 00 1f 	be r1,r0,801d204 <rtems_rfs_dir_lookup_ino+0x274><== NOT EXECUTED
          printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " block=%" PRId32 ": %d: %s\n",
 801d18c:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 801d190:	2b 8b 00 c8 	lw r11,(sp+200)                                <== NOT EXECUTED
 801d194:	28 2c 00 08 	lw r12,(r1+8)                                  <== NOT EXECUTED
 801d198:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 801d19c:	f8 00 23 7a 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d1a0:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
 801d1a4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d1a8:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801d1ac:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 801d1b0:	ba e0 20 00 	mv r4,r23                                      <== NOT EXECUTED
 801d1b4:	38 21 b1 84 	ori r1,r1,0xb184                               <== NOT EXECUTED
 801d1b8:	f8 00 1e b8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d1bc:	e0 00 00 12 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))             
      printf ("rtems-rfs: dir-lookup-ino: map open failed for ino %" PRIu32 ": %d: %s",
 801d1c0:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 801d1c4:	28 2b 00 08 	lw r11,(r1+8)                                  <== NOT EXECUTED
 801d1c8:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 801d1cc:	f8 00 23 6e 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d1d0:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801d1d4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d1d8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801d1dc:	ba e0 18 00 	mv r3,r23                                      <== NOT EXECUTED
 801d1e0:	38 21 b0 d0 	ori r1,r1,0xb0d0                               <== NOT EXECUTED
 801d1e4:	f8 00 1e ad 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d1e8:	e3 ff ff 93 	bi 801d034 <rtems_rfs_dir_lookup_ino+0xa4>     <== NOT EXECUTED
     * seek 0. If an error the block will be 0.                       
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
 801d1ec:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d1f0:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d1f4:	fb ff d3 f3 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d1f8:	5c 20 00 b6 	bne r1,r0,801d4d0 <rtems_rfs_dir_lookup_ino+0x540><== NOT EXECUTED
        printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
                rc, strerror (rc));                                   
      if (rc == ENXIO)                                                
 801d1fc:	34 01 00 06 	mvi r1,6                                       <== NOT EXECUTED
 801d200:	46 e1 00 82 	be r23,r1,801d408 <rtems_rfs_dir_lookup_ino+0x478><== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801d204:	37 82 00 bc 	addi r2,sp,188                                 
 801d208:	ba a0 08 00 	mv r1,r21                                      
 801d20c:	fb ff fd 1c 	calli 801c67c <rtems_rfs_buffer_handle_release>
                rtems_rfs_inode_ino (inode), rc, strerror (rc));      
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &entries);                       
  rtems_rfs_block_map_close (fs, &map);                               
 801d210:	ba a0 08 00 	mv r1,r21                                      
 801d214:	37 82 00 6c 	addi r2,sp,108                                 
  handle->dirty = false;                                              
 801d218:	33 80 00 bc 	sb (sp+188),r0                                 
  handle->bnum  = 0;                                                  
 801d21c:	5b 80 00 c0 	sw (sp+192),r0                                 
  handle->buffer = NULL;                                              
 801d220:	5b 80 00 c4 	sw (sp+196),r0                                 
 801d224:	fb ff f8 fc 	calli 801b614 <rtems_rfs_block_map_close>      
  return rc;                                                          
 801d228:	e3 ff ff 83 	bi 801d034 <rtems_rfs_dir_lookup_ino+0xa4>     
      /*                                                              
       * Search the block to see if the name matches. A hash of 0xffff or 0x0
       * means the entry is empty.                                    
       */                                                             
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
 801d22c:	2b 84 00 c4 	lw r4,(sp+196)                                 
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d230:	2a b3 00 08 	lw r19,(r21+8)                                 
       * means the entry is empty.                                    
       */                                                             
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
 801d234:	5b 80 00 80 	sw (sp+128),r0                                 
      /*                                                              
       * Search the block to see if the name matches. A hash of 0xffff or 0x0
       * means the entry is empty.                                    
       */                                                             
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
 801d238:	28 8f 00 1c 	lw r15,(r4+28)                                 
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d23c:	46 78 00 66 	be r19,r24,801d3d4 <rtems_rfs_dir_lookup_ino+0x444><== NEVER TAKEN
 801d240:	5b 81 00 58 	sw (sp+88),r1                                  
 801d244:	ba 60 b8 00 	mv r23,r19                                     
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
 801d248:	41 e5 00 08 	lbu r5,(r15+8)                                 
 801d24c:	41 e4 00 09 	lbu r4,(r15+9)                                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d250:	41 e1 00 00 	lbu r1,(r15+0)                                 
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
 801d254:	b4 a5 28 00 	add r5,r5,r5                                   
 801d258:	b4 a5 28 00 	add r5,r5,r5                                   
 801d25c:	b4 a5 28 00 	add r5,r5,r5                                   
 801d260:	b4 a5 28 00 	add r5,r5,r5                                   
 801d264:	b4 a5 28 00 	add r5,r5,r5                                   
 801d268:	b4 a5 28 00 	add r5,r5,r5                                   
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d26c:	41 eb 00 03 	lbu r11,(r15+3)                                
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
 801d270:	b4 a5 28 00 	add r5,r5,r5                                   
 801d274:	b4 a5 28 00 	add r5,r5,r5                                   
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d278:	34 02 00 18 	mvi r2,24                                      
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
 801d27c:	b8 a4 a0 00 	or r20,r5,r4                                   
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d280:	f8 00 66 c5 	calli 8036d94 <__ashlsi3>                      
 801d284:	b9 61 58 00 	or r11,r11,r1                                  
 801d288:	41 e1 00 01 	lbu r1,(r15+1)                                 
 801d28c:	34 02 00 10 	mvi r2,16                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
 801d290:	41 ed 00 04 	lbu r13,(r15+4)                                
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d294:	f8 00 66 c0 	calli 8036d94 <__ashlsi3>                      
 801d298:	41 e4 00 02 	lbu r4,(r15+2)                                 
 801d29c:	b9 61 30 00 	or r6,r11,r1                                   
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
 801d2a0:	41 ee 00 05 	lbu r14,(r15+5)                                
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d2a4:	b4 84 20 00 	add r4,r4,r4                                   
 801d2a8:	b4 84 20 00 	add r4,r4,r4                                   
 801d2ac:	b4 84 20 00 	add r4,r4,r4                                   
 801d2b0:	b4 84 20 00 	add r4,r4,r4                                   
 801d2b4:	b4 84 20 00 	add r4,r4,r4                                   
 801d2b8:	b4 84 20 00 	add r4,r4,r4                                   
 801d2bc:	b4 84 20 00 	add r4,r4,r4                                   
 801d2c0:	b4 84 20 00 	add r4,r4,r4                                   
 801d2c4:	b8 c4 28 00 	or r5,r6,r4                                    
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
 801d2c8:	41 ec 00 06 	lbu r12,(r15+6)                                
 801d2cc:	41 f0 00 07 	lbu r16,(r15+7)                                
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
 801d2d0:	5a c5 00 00 	sw (r22+0),r5                                  
 801d2d4:	35 f2 00 01 	addi r18,r15,1                                 
 801d2d8:	35 f1 00 02 	addi r17,r15,2                                 
 801d2dc:	35 f3 00 03 	addi r19,r15,3                                 
                                                                      
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
 801d2e0:	46 99 00 3c 	be r20,r25,801d3d0 <rtems_rfs_dir_lookup_ino+0x440>
          break;                                                      
                                                                      
        if (rtems_rfs_dir_entry_valid (fs, elength, *ino))            
 801d2e4:	4f 14 00 06 	bge r24,r20,801d2fc <rtems_rfs_dir_lookup_ino+0x36c><== NEVER TAKEN
 801d2e8:	2a a7 00 1c 	lw r7,(r21+28)                                 
 801d2ec:	52 87 00 04 	bgeu r20,r7,801d2fc <rtems_rfs_dir_lookup_ino+0x36c><== NEVER TAKEN
 801d2f0:	44 a0 00 03 	be r5,r0,801d2fc <rtems_rfs_dir_lookup_ino+0x36c><== NEVER TAKEN
 801d2f4:	2a a7 00 14 	lw r7,(r21+20)                                 
 801d2f8:	50 e5 00 07 	bgeu r7,r5,801d314 <rtems_rfs_dir_lookup_ino+0x384><== ALWAYS TAKEN
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
 801d2fc:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d300:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d304:	fb ff d3 af 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d308:	5c 20 00 1d 	bne r1,r0,801d37c <rtems_rfs_dir_lookup_ino+0x3ec><== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
 801d30c:	34 17 00 05 	mvi r23,5                                      <== NOT EXECUTED
 801d310:	e3 ff ff bd 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
 801d314:	34 02 00 18 	mvi r2,24                                      
 801d318:	b9 a0 08 00 	mv r1,r13                                      
 801d31c:	f8 00 66 9e 	calli 8036d94 <__ashlsi3>                      
 801d320:	b8 20 58 00 	mv r11,r1                                      
 801d324:	34 02 00 10 	mvi r2,16                                      
 801d328:	b9 c0 08 00 	mv r1,r14                                      
 801d32c:	f8 00 66 9a 	calli 8036d94 <__ashlsi3>                      
 801d330:	b5 8c 20 00 	add r4,r12,r12                                 
 801d334:	b4 84 20 00 	add r4,r4,r4                                   
 801d338:	b4 84 20 00 	add r4,r4,r4                                   
 801d33c:	b4 84 20 00 	add r4,r4,r4                                   
 801d340:	b4 84 20 00 	add r4,r4,r4                                   
 801d344:	b4 84 20 00 	add r4,r4,r4                                   
 801d348:	b9 61 08 00 	or r1,r11,r1                                   
 801d34c:	b4 84 20 00 	add r4,r4,r4                                   
 801d350:	b8 30 30 00 	or r6,r1,r16                                   
 801d354:	b4 84 20 00 	add r4,r4,r4                                   
 801d358:	b8 c4 30 00 	or r6,r6,r4                                    
                    rtems_rfs_inode_ino (inode), elength, *ino, map.bpos.boff);
          rc = EIO;                                                   
          break;                                                      
        }                                                             
                                                                      
        if (ehash == hash)                                            
 801d35c:	44 db 00 12 	be r6,fp,801d3a4 <rtems_rfs_dir_lookup_ino+0x414>
            rtems_rfs_block_map_close (fs, &map);                     
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
 801d360:	2b 87 00 80 	lw r7,(sp+128)                                 
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d364:	36 e6 ff f6 	addi r6,r23,-10                                
            rtems_rfs_block_map_close (fs, &map);                     
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
 801d368:	b6 87 20 00 	add r4,r20,r7                                  
 801d36c:	5b 84 00 80 	sw (sp+128),r4                                 
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
 801d370:	50 86 00 18 	bgeu r4,r6,801d3d0 <rtems_rfs_dir_lookup_ino+0x440><== NEVER TAKEN
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
        entry += elength;                                             
 801d374:	b5 f4 78 00 	add r15,r15,r20                                
 801d378:	e3 ff ff b4 	bi 801d248 <rtems_rfs_dir_lookup_ino+0x2b8>    
          break;                                                      
                                                                      
        if (rtems_rfs_dir_entry_valid (fs, elength, *ino))            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d37c:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801d380:	2a c4 00 00 	lw r4,(r22+0)                                  <== NOT EXECUTED
 801d384:	2b 85 00 80 	lw r5,(sp+128)                                 <== NOT EXECUTED
 801d388:	28 62 00 08 	lw r2,(r3+8)                                   <== NOT EXECUTED
 801d38c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d390:	38 21 b1 c8 	ori r1,r1,0xb1c8                               <== NOT EXECUTED
 801d394:	ba 80 18 00 	mv r3,r20                                      <== NOT EXECUTED
 801d398:	f8 00 1e 40 	calli 8024c98 <printf>                         <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
 801d39c:	34 17 00 05 	mvi r23,5                                      <== NOT EXECUTED
 801d3a0:	e3 ff ff 99 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
          break;                                                      
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
 801d3a4:	34 01 00 00 	mvi r1,0                                       
 801d3a8:	78 02 08 00 	mvhi r2,0x800                                  
 801d3ac:	fb ff d3 85 	calli 80121c0 <rtems_rfs_trace>                
 801d3b0:	5c 20 00 18 	bne r1,r0,801d410 <rtems_rfs_dir_lookup_ino+0x480><== NEVER TAKEN
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
                                                                      
          if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
 801d3b4:	2b 82 00 50 	lw r2,(sp+80)                                  
 801d3b8:	2b 83 00 4c 	lw r3,(sp+76)                                  
 801d3bc:	35 e1 00 0a 	addi r1,r15,10                                 
 801d3c0:	f8 00 1c eb 	calli 802476c <memcmp>                         
 801d3c4:	44 20 00 4b 	be r1,r0,801d4f0 <rtems_rfs_dir_lookup_ino+0x560><== ALWAYS TAKEN
 801d3c8:	2a b7 00 08 	lw r23,(r21+8)                                 <== NOT EXECUTED
 801d3cc:	e3 ff ff e5 	bi 801d360 <rtems_rfs_dir_lookup_ino+0x3d0>    <== NOT EXECUTED
 801d3d0:	2b 97 00 58 	lw r23,(sp+88)                                 
                                                                      
        map.bpos.boff += elength;                                     
        entry += elength;                                             
      }                                                               
                                                                      
      if (rc == 0)                                                    
 801d3d4:	5e e0 ff 8c 	bne r23,r0,801d204 <rtems_rfs_dir_lookup_ino+0x274><== NEVER TAKEN
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
 801d3d8:	ba a0 08 00 	mv r1,r21                                      
 801d3dc:	37 82 00 6c 	addi r2,sp,108                                 
 801d3e0:	37 83 00 c8 	addi r3,sp,200                                 
 801d3e4:	fb ff f9 e5 	calli 801bb78 <rtems_rfs_block_map_next_block> 
        if ((rc > 0) && (rc != ENXIO))                                
 801d3e8:	7c 25 00 06 	cmpnei r5,r1,6                                 
 801d3ec:	68 24 00 00 	cmpgi r4,r1,0                                  
        entry += elength;                                             
      }                                                               
                                                                      
      if (rc == 0)                                                    
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
 801d3f0:	5b 81 00 5c 	sw (sp+92),r1                                  
        if ((rc > 0) && (rc != ENXIO))                                
 801d3f4:	a0 a4 20 00 	and r4,r5,r4                                   
 801d3f8:	5c 97 00 28 	bne r4,r23,801d498 <rtems_rfs_dir_lookup_ino+0x508><== NEVER TAKEN
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
                    "block map next block failed in ino %" PRIu32 ": %d: %s\n",
                    rtems_rfs_inode_ino (inode), rc, strerror (rc));  
        }                                                             
        if (rc == ENXIO)                                              
 801d3fc:	2b 83 00 5c 	lw r3,(sp+92)                                  
 801d400:	34 01 00 06 	mvi r1,6                                       
 801d404:	5c 61 ff 4f 	bne r3,r1,801d140 <rtems_rfs_dir_lookup_ino+0x1b0><== NEVER TAKEN
          rc = ENOENT;                                                
 801d408:	34 17 00 02 	mvi r23,2                                      
 801d40c:	e3 ff ff 7e 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
 801d410:	41 e1 00 00 	lbu r1,(r15+0)                                 <== NOT EXECUTED
 801d414:	42 6b 00 00 	lbu r11,(r19+0)                                <== NOT EXECUTED
 801d418:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 801d41c:	f8 00 66 5e 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d420:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
 801d424:	b9 61 58 00 	or r11,r11,r1                                  <== NOT EXECUTED
 801d428:	42 41 00 00 	lbu r1,(r18+0)                                 <== NOT EXECUTED
 801d42c:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d430:	28 6c 00 08 	lw r12,(r3+8)                                  <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
 801d434:	f8 00 66 58 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801d438:	42 26 00 00 	lbu r6,(r17+0)                                 <== NOT EXECUTED
 801d43c:	b9 61 38 00 	or r7,r11,r1                                   <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d440:	2b 83 00 7c 	lw r3,(sp+124)                                 <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
 801d444:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d448:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d44c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d450:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d454:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d458:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 801d45c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d460:	2b 81 00 60 	lw r1,(sp+96)                                  <== NOT EXECUTED
 801d464:	2b 84 00 80 	lw r4,(sp+128)                                 <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
 801d468:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d46c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801d470:	ba 80 28 00 	mv r5,r20                                      <== NOT EXECUTED
 801d474:	b8 e6 30 00 	or r6,r7,r6                                    <== NOT EXECUTED
 801d478:	f8 00 1e 08 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d47c:	e3 ff ff ce 	bi 801d3b4 <rtems_rfs_dir_lookup_ino+0x424>    <== NOT EXECUTED
    while ((rc == 0) && block)                                        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
 801d480:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801d484:	2b 81 00 64 	lw r1,(sp+100)                                 <== NOT EXECUTED
 801d488:	28 62 00 08 	lw r2,(r3+8)                                   <== NOT EXECUTED
 801d48c:	2b 83 00 7c 	lw r3,(sp+124)                                 <== NOT EXECUTED
 801d490:	f8 00 1e 02 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d494:	e3 ff ff 33 	bi 801d160 <rtems_rfs_dir_lookup_ino+0x1d0>    <== NOT EXECUTED
      if (rc == 0)                                                    
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
        if ((rc > 0) && (rc != ENXIO))                                
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
 801d498:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d49c:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d4a0:	fb ff d3 48 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d4a4:	44 20 ff 27 	be r1,r0,801d140 <rtems_rfs_dir_lookup_ino+0x1b0><== NOT EXECUTED
            printf ("rtems-rfs: dir-lookup-ino: "                     
 801d4a8:	2b 82 00 48 	lw r2,(sp+72)                                  <== NOT EXECUTED
 801d4ac:	2b 81 00 5c 	lw r1,(sp+92)                                  <== NOT EXECUTED
 801d4b0:	28 4b 00 08 	lw r11,(r2+8)                                  <== NOT EXECUTED
 801d4b4:	f8 00 22 b4 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d4b8:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801d4bc:	2b 83 00 5c 	lw r3,(sp+92)                                  <== NOT EXECUTED
 801d4c0:	2b 81 00 68 	lw r1,(sp+104)                                 <== NOT EXECUTED
 801d4c4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801d4c8:	f8 00 1d f4 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d4cc:	e3 ff ff 1d 	bi 801d140 <rtems_rfs_dir_lookup_ino+0x1b0>    <== NOT EXECUTED
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
 801d4d0:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 801d4d4:	f8 00 22 ac 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d4d8:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801d4dc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d4e0:	ba e0 10 00 	mv r2,r23                                      <== NOT EXECUTED
 801d4e4:	38 21 b1 10 	ori r1,r1,0xb110                               <== NOT EXECUTED
 801d4e8:	f8 00 1d ec 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d4ec:	e3 ff ff 44 	bi 801d1fc <rtems_rfs_dir_lookup_ino+0x26c>    <== NOT EXECUTED
 801d4f0:	b8 20 60 00 	mv r12,r1                                      
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
                                                                      
          if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
          {                                                           
            *offset = rtems_rfs_block_map_pos (fs, &map);             
 801d4f4:	37 82 00 7c 	addi r2,sp,124                                 
 801d4f8:	ba a0 08 00 	mv r1,r21                                      
 801d4fc:	2b 97 00 5c 	lw r23,(sp+92)                                 
 801d500:	fb ff f7 4c 	calli 801b230 <rtems_rfs_block_get_pos>        
 801d504:	2b 81 00 54 	lw r1,(sp+84)                                  
 801d508:	58 22 00 00 	sw (r1+0),r2                                   
                                                                      
            if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND))
 801d50c:	34 01 00 00 	mvi r1,0                                       
 801d510:	78 02 10 00 	mvhi r2,0x1000                                 
 801d514:	fb ff d3 2b 	calli 80121c0 <rtems_rfs_trace>                
 801d518:	44 2c ff 3b 	be r1,r12,801d204 <rtems_rfs_dir_lookup_ino+0x274><== ALWAYS TAKEN
              printf ("rtems-rfs: dir-lookup-ino: "                   
 801d51c:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801d520:	2b 81 00 54 	lw r1,(sp+84)                                  <== NOT EXECUTED
 801d524:	28 62 00 08 	lw r2,(r3+8)                                   <== NOT EXECUTED
 801d528:	28 24 00 00 	lw r4,(r1+0)                                   <== NOT EXECUTED
 801d52c:	2a c3 00 00 	lw r3,(r22+0)                                  <== NOT EXECUTED
 801d530:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d534:	38 21 b2 74 	ori r1,r1,0xb274                               <== NOT EXECUTED
 801d538:	f8 00 1d d8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d53c:	e3 ff ff 32 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
 801d540:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801d544:	78 02 04 00 	mvhi r2,0x400                                  <== NOT EXECUTED
 801d548:	fb ff d3 1e 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801d54c:	44 20 ff 70 	be r1,r0,801d30c <rtems_rfs_dir_lookup_ino+0x37c><== NOT EXECUTED
        printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n",
 801d550:	2b 83 00 48 	lw r3,(sp+72)                                  <== NOT EXECUTED
 801d554:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
 801d558:	34 17 00 05 	mvi r23,5                                      <== NOT EXECUTED
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n",
 801d55c:	28 6b 00 08 	lw r11,(r3+8)                                  <== NOT EXECUTED
 801d560:	f8 00 22 89 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801d564:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801d568:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801d56c:	38 21 b3 08 	ori r1,r1,0xb308                               <== NOT EXECUTED
 801d570:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801d574:	34 03 00 05 	mvi r3,5                                       <== NOT EXECUTED
 801d578:	f8 00 1d c8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801d57c:	e3 ff ff 22 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
 801d580:	2b 97 00 5c 	lw r23,(sp+92)                                 <== NOT EXECUTED
 801d584:	e3 ff ff 20 	bi 801d204 <rtems_rfs_dir_lookup_ino+0x274>    <== NOT EXECUTED
                                                                      

0801df40 <rtems_rfs_dir_read>: rtems_rfs_dir_read (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_pos_rel offset, struct dirent* dirent, size_t* length) {
 801df40:	37 9c ff 50 	addi sp,sp,-176                                
 801df44:	5b 8b 00 44 	sw (sp+68),r11                                 
 801df48:	5b 8c 00 40 	sw (sp+64),r12                                 
 801df4c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801df50:	5b 8e 00 38 	sw (sp+56),r14                                 
 801df54:	5b 8f 00 34 	sw (sp+52),r15                                 
 801df58:	5b 90 00 30 	sw (sp+48),r16                                 
 801df5c:	5b 91 00 2c 	sw (sp+44),r17                                 
 801df60:	5b 92 00 28 	sw (sp+40),r18                                 
 801df64:	5b 93 00 24 	sw (sp+36),r19                                 
 801df68:	5b 94 00 20 	sw (sp+32),r20                                 
 801df6c:	5b 95 00 1c 	sw (sp+28),r21                                 
 801df70:	5b 96 00 18 	sw (sp+24),r22                                 
 801df74:	5b 97 00 14 	sw (sp+20),r23                                 
 801df78:	5b 98 00 10 	sw (sp+16),r24                                 
 801df7c:	5b 99 00 0c 	sw (sp+12),r25                                 
 801df80:	5b 9b 00 08 	sw (sp+8),fp                                   
 801df84:	5b 9d 00 04 	sw (sp+4),ra                                   
 801df88:	b8 20 68 00 	mv r13,r1                                      
 801df8c:	b8 40 a0 00 	mv r20,r2                                      
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
 801df90:	34 01 00 00 	mvi r1,0                                       
 801df94:	78 02 80 00 	mvhi r2,0x8000                                 
rtems_rfs_dir_read (rtems_rfs_file_system*  fs,                       
                    rtems_rfs_inode_handle* dir,                      
                    rtems_rfs_pos_rel       offset,                   
                    struct dirent*          dirent,                   
                    size_t*                 length)                   
{                                                                     
 801df98:	b8 60 98 00 	mv r19,r3                                      
 801df9c:	b8 80 80 00 	mv r16,r4                                      
 801dfa0:	b8 a0 b0 00 	mv r22,r5                                      
 801dfa4:	b8 c0 70 00 	mv r14,r6                                      
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
 801dfa8:	fb ff d0 86 	calli 80121c0 <rtems_rfs_trace>                
 801dfac:	5c 20 00 46 	bne r1,r0,801e0c4 <rtems_rfs_dir_read+0x184>   <== NEVER TAKEN
    printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
            rtems_rfs_inode_ino (dir), offset);                       
                                                                      
  *length = 0;                                                        
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
 801dfb0:	37 8f 00 54 	addi r15,sp,84                                 
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
    printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
            rtems_rfs_inode_ino (dir), offset);                       
                                                                      
  *length = 0;                                                        
 801dfb4:	59 c0 00 00 	sw (r14+0),r0                                  
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
 801dfb8:	b9 a0 08 00 	mv r1,r13                                      
 801dfbc:	ba 80 10 00 	mv r2,r20                                      
 801dfc0:	b9 e0 18 00 	mv r3,r15                                      
 801dfc4:	fb ff f4 ec 	calli 801b374 <rtems_rfs_block_map_open>       
 801dfc8:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801dfcc:	48 20 00 2a 	bg r1,r0,801e074 <rtems_rfs_dir_read+0x134>    <== NEVER TAKEN
    return rc;                                                        
                                                                      
  if (((rtems_rfs_fs_block_size (fs) -                                
        (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
 801dfd0:	29 ab 00 08 	lw r11,(r13+8)                                 
 801dfd4:	34 03 00 00 	mvi r3,0                                       
 801dfd8:	ba 60 08 00 	mv r1,r19                                      
 801dfdc:	ba 00 10 00 	mv r2,r16                                      
 801dfe0:	b9 60 20 00 	mv r4,r11                                      
 801dfe4:	f8 00 50 bb 	calli 80322d0 <__moddi3>                       
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  if (((rtems_rfs_fs_block_size (fs) -                                
 801dfe8:	c9 62 10 00 	sub r2,r11,r2                                  
 801dfec:	f4 4b 18 00 	cmpgu r3,r2,r11                                
 801dff0:	c8 01 08 00 	sub r1,r0,r1                                   
 801dff4:	c8 23 08 00 	sub r1,r1,r3                                   
 801dff8:	48 20 00 12 	bg r1,r0,801e040 <rtems_rfs_dir_read+0x100>    <== NEVER TAKEN
 801dffc:	5c 20 00 03 	bne r1,r0,801e008 <rtems_rfs_dir_read+0xc8>    
 801e000:	34 01 00 0a 	mvi r1,10                                      
 801e004:	54 41 00 0f 	bgu r2,r1,801e040 <rtems_rfs_dir_read+0x100>   <== ALWAYS TAKEN
        (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
    offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *         
 801e008:	ba 60 08 00 	mv r1,r19                                      <== NOT EXECUTED
 801e00c:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 801e010:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801e014:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 801e018:	f8 00 4e ac 	calli 8031ac8 <__divdi3>                       <== NOT EXECUTED
 801e01c:	34 43 00 01 	addi r3,r2,1                                   <== NOT EXECUTED
 801e020:	f4 43 20 00 	cmpgu r4,r2,r3                                 <== NOT EXECUTED
 801e024:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 801e028:	b4 81 08 00 	add r1,r4,r1                                   <== NOT EXECUTED
 801e02c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801e030:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
 801e034:	f8 00 4e 01 	calli 8031838 <__muldi3>                       <== NOT EXECUTED
 801e038:	b8 20 98 00 	mv r19,r1                                      <== NOT EXECUTED
 801e03c:	b8 40 80 00 	mv r16,r2                                      <== NOT EXECUTED
              rtems_rfs_fs_block_size (fs));                          
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
 801e040:	b9 a0 08 00 	mv r1,r13                                      
 801e044:	b9 e0 10 00 	mv r2,r15                                      
 801e048:	ba 60 18 00 	mv r3,r19                                      
 801e04c:	ba 00 20 00 	mv r4,r16                                      
 801e050:	37 85 00 b0 	addi r5,sp,176                                 
 801e054:	fb ff f6 94 	calli 801baa4 <rtems_rfs_block_map_seek>       
 801e058:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801e05c:	4c 01 00 26 	bge r0,r1,801e0f4 <rtems_rfs_dir_read+0x1b4>   <== ALWAYS TAKEN
  {                                                                   
    if (rc == ENXIO)                                                  
 801e060:	34 01 00 06 	mvi r1,6                                       <== NOT EXECUTED
 801e064:	45 61 00 1f 	be r11,r1,801e0e0 <rtems_rfs_dir_read+0x1a0>   <== NOT EXECUTED
      rc = ENOENT;                                                    
    rtems_rfs_block_map_close (fs, &map);                             
 801e068:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801e06c:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 801e070:	fb ff f5 69 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
 801e074:	b9 60 08 00 	mv r1,r11                                      
 801e078:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801e07c:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801e080:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801e084:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801e088:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801e08c:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801e090:	2b 90 00 30 	lw r16,(sp+48)                                 
 801e094:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801e098:	2b 92 00 28 	lw r18,(sp+40)                                 
 801e09c:	2b 93 00 24 	lw r19,(sp+36)                                 
 801e0a0:	2b 94 00 20 	lw r20,(sp+32)                                 
 801e0a4:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801e0a8:	2b 96 00 18 	lw r22,(sp+24)                                 
 801e0ac:	2b 97 00 14 	lw r23,(sp+20)                                 
 801e0b0:	2b 98 00 10 	lw r24,(sp+16)                                 
 801e0b4:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801e0b8:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801e0bc:	37 9c 00 b0 	addi sp,sp,176                                 
 801e0c0:	c3 a0 00 00 	ret                                            
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
    printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
 801e0c4:	2a 82 00 08 	lw r2,(r20+8)                                  <== NOT EXECUTED
 801e0c8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e0cc:	ba 60 18 00 	mv r3,r19                                      <== NOT EXECUTED
 801e0d0:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 801e0d4:	38 21 b6 14 	ori r1,r1,0xb614                               <== NOT EXECUTED
 801e0d8:	f8 00 1a f0 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e0dc:	e3 ff ff b5 	bi 801dfb0 <rtems_rfs_dir_read+0x70>           <== NOT EXECUTED
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
  if (rc > 0)                                                         
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
    rtems_rfs_block_map_close (fs, &map);                             
 801e0e0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801e0e4:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
  if (rc > 0)                                                         
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
 801e0e8:	34 0b 00 02 	mvi r11,2                                      <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
 801e0ec:	fb ff f5 4a 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
 801e0f0:	e3 ff ff e1 	bi 801e074 <rtems_rfs_dir_read+0x134>          <== NOT EXECUTED
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
 801e0f4:	78 01 08 03 	mvhi r1,0x803                                  
 801e0f8:	38 21 b6 b8 	ori r1,r1,0xb6b8                               
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801e0fc:	33 80 00 a4 	sb (sp+164),r0                                 
  handle->bnum  = 0;                                                  
 801e100:	5b 80 00 a8 	sw (sp+168),r0                                 
  handle->buffer = NULL;                                              
 801e104:	5b 80 00 ac 	sw (sp+172),r0                                 
 801e108:	37 97 00 a4 	addi r23,sp,164                                
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
 801e10c:	38 18 ff ff 	mvu r24,0xffff                                 
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
 801e110:	5b 81 00 50 	sw (sp+80),r1                                  
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
    if (rc == ENXIO)                                                  
 801e114:	34 19 00 06 	mvi r25,6                                      
    uint8_t*      entry;                                              
    rtems_rfs_ino eino;                                               
    int           elength;                                            
    int           remaining;                                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
 801e118:	2b 83 00 b0 	lw r3,(sp+176)                                 
 801e11c:	ba e0 10 00 	mv r2,r23                                      
 801e120:	34 04 00 01 	mvi r4,1                                       
 801e124:	b9 a0 08 00 	mv r1,r13                                      
 801e128:	fb ff f9 c7 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801e12c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e130:	34 02 00 18 	mvi r2,24                                      
    rtems_rfs_ino eino;                                               
    int           elength;                                            
    int           remaining;                                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
 801e134:	4c 01 00 0b 	bge r0,r1,801e160 <rtems_rfs_dir_read+0x220>   <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801e138:	ba e0 10 00 	mv r2,r23                                      
 801e13c:	b9 a0 08 00 	mv r1,r13                                      
 801e140:	fb ff f9 4f 	calli 801c67c <rtems_rfs_buffer_handle_release>
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
 801e144:	b9 a0 08 00 	mv r1,r13                                      
 801e148:	b9 e0 10 00 	mv r2,r15                                      
  handle->dirty = false;                                              
 801e14c:	33 80 00 a4 	sb (sp+164),r0                                 
  handle->bnum  = 0;                                                  
 801e150:	5b 80 00 a8 	sw (sp+168),r0                                 
  handle->buffer = NULL;                                              
 801e154:	5b 80 00 ac 	sw (sp+172),r0                                 
 801e158:	fb ff f5 2f 	calli 801b614 <rtems_rfs_block_map_close>      
  return rc;                                                          
 801e15c:	e3 ff ff c6 	bi 801e074 <rtems_rfs_dir_read+0x134>          
      rtems_rfs_buffer_handle_close (fs, &buffer);                    
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
 801e160:	2b 83 00 ac 	lw r3,(sp+172)                                 
    entry += map.bpos.boff;                                           
 801e164:	2b 91 00 68 	lw r17,(sp+104)                                
      rtems_rfs_buffer_handle_close (fs, &buffer);                    
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
 801e168:	28 6c 00 1c 	lw r12,(r3+28)                                 
    entry += map.bpos.boff;                                           
 801e16c:	b5 91 60 00 	add r12,r12,r17                                
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
 801e170:	41 88 00 08 	lbu r8,(r12+8)                                 
 801e174:	41 92 00 09 	lbu r18,(r12+9)                                
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e178:	41 81 00 00 	lbu r1,(r12+0)                                 
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
 801e17c:	b5 08 40 00 	add r8,r8,r8                                   
 801e180:	b5 08 40 00 	add r8,r8,r8                                   
 801e184:	b5 08 40 00 	add r8,r8,r8                                   
 801e188:	b5 08 40 00 	add r8,r8,r8                                   
 801e18c:	b5 08 40 00 	add r8,r8,r8                                   
 801e190:	b5 08 40 00 	add r8,r8,r8                                   
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e194:	41 95 00 03 	lbu r21,(r12+3)                                
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
 801e198:	b5 08 40 00 	add r8,r8,r8                                   
 801e19c:	b5 08 40 00 	add r8,r8,r8                                   
 801e1a0:	b9 12 90 00 	or r18,r8,r18                                  
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e1a4:	f8 00 62 fc 	calli 8036d94 <__ashlsi3>                      
 801e1a8:	ba a1 a8 00 	or r21,r21,r1                                  
 801e1ac:	41 81 00 01 	lbu r1,(r12+1)                                 
 801e1b0:	35 83 00 01 	addi r3,r12,1                                  
 801e1b4:	34 02 00 10 	mvi r2,16                                      
 801e1b8:	5b 83 00 4c 	sw (sp+76),r3                                  
 801e1bc:	f8 00 62 f6 	calli 8036d94 <__ashlsi3>                      
 801e1c0:	41 87 00 02 	lbu r7,(r12+2)                                 
 801e1c4:	ba a1 18 00 	or r3,r21,r1                                   
      break;                                                          
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
 801e1c8:	78 02 80 00 	mvhi r2,0x8000                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e1cc:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1d0:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1d4:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1d8:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1dc:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1e0:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1e4:	b4 e7 38 00 	add r7,r7,r7                                   
 801e1e8:	b4 e7 38 00 	add r7,r7,r7                                   
      break;                                                          
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
 801e1ec:	34 01 00 00 	mvi r1,0                                       
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
 801e1f0:	b8 67 38 00 	or r7,r3,r7                                    
 801e1f4:	35 9b 00 02 	addi fp,r12,2                                  
 801e1f8:	35 95 00 03 	addi r21,r12,3                                 
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
 801e1fc:	5e 58 00 1d 	bne r18,r24,801e270 <rtems_rfs_dir_read+0x330> 
        printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
                dirent->d_off, dirent->d_ino, dirent->d_name);        
      break;                                                          
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
 801e200:	29 a4 00 08 	lw r4,(r13+8)                                  
 801e204:	29 c3 00 00 	lw r3,(r14+0)                                  
 801e208:	c8 91 88 00 	sub r17,r4,r17                                 
 801e20c:	b4 71 88 00 	add r17,r3,r17                                 
 801e210:	59 d1 00 00 	sw (r14+0),r17                                 
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
 801e214:	fb ff cf eb 	calli 80121c0 <rtems_rfs_trace>                
 801e218:	5c 20 00 09 	bne r1,r0,801e23c <rtems_rfs_dir_read+0x2fc>   <== NEVER TAKEN
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
 801e21c:	b9 a0 08 00 	mv r1,r13                                      
 801e220:	b9 e0 10 00 	mv r2,r15                                      
 801e224:	37 83 00 b0 	addi r3,sp,176                                 
 801e228:	fb ff f6 54 	calli 801bb78 <rtems_rfs_block_map_next_block> 
 801e22c:	b8 20 58 00 	mv r11,r1                                      
    if (rc == ENXIO)                                                  
 801e230:	44 39 00 0e 	be r1,r25,801e268 <rtems_rfs_dir_read+0x328>   <== ALWAYS TAKEN
                                                                      
  /*                                                                  
   * Look for an empty entry and if this is the last block that is the end of
   * the directory.                                                   
   */                                                                 
  while (rc == 0)                                                     
 801e234:	44 20 ff b9 	be r1,r0,801e118 <rtems_rfs_dir_read+0x1d8>    <== NOT EXECUTED
 801e238:	e3 ff ff c0 	bi 801e138 <rtems_rfs_dir_read+0x1f8>          <== NOT EXECUTED
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
 801e23c:	29 c4 00 00 	lw r4,(r14+0)                                  <== NOT EXECUTED
 801e240:	2b 81 00 50 	lw r1,(sp+80)                                  <== NOT EXECUTED
 801e244:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801e248:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 801e24c:	f8 00 1a 93 	calli 8024c98 <printf>                         <== NOT EXECUTED
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
 801e250:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801e254:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 801e258:	37 83 00 b0 	addi r3,sp,176                                 <== NOT EXECUTED
 801e25c:	fb ff f6 47 	calli 801bb78 <rtems_rfs_block_map_next_block> <== NOT EXECUTED
 801e260:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc == ENXIO)                                                  
 801e264:	5c 39 ff f4 	bne r1,r25,801e234 <rtems_rfs_dir_read+0x2f4>  <== NOT EXECUTED
      rc = ENOENT;                                                    
 801e268:	34 0b 00 02 	mvi r11,2                                      
 801e26c:	e3 ff ff b3 	bi 801e138 <rtems_rfs_dir_read+0x1f8>          
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
    {                                                                 
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
 801e270:	34 13 00 0a 	mvi r19,10                                     
 801e274:	4e 72 00 08 	bge r19,r18,801e294 <rtems_rfs_dir_read+0x354> <== NEVER TAKEN
 801e278:	29 a1 00 1c 	lw r1,(r13+28)                                 
 801e27c:	64 e2 00 00 	cmpei r2,r7,0                                  
 801e280:	f2 41 08 00 	cmpgeu r1,r18,r1                               
 801e284:	b8 22 08 00 	or r1,r1,r2                                    
 801e288:	5c 20 00 03 	bne r1,r0,801e294 <rtems_rfs_dir_read+0x354>   <== NEVER TAKEN
 801e28c:	29 a1 00 14 	lw r1,(r13+20)                                 
 801e290:	50 27 00 10 	bgeu r1,r7,801e2d0 <rtems_rfs_dir_read+0x390>  <== ALWAYS TAKEN
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))               
 801e294:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801e298:	78 02 80 00 	mvhi r2,0x8000                                 <== NOT EXECUTED
 801e29c:	5b 87 00 48 	sw (sp+72),r7                                  <== NOT EXECUTED
 801e2a0:	fb ff cf c8 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
          printf ("rtems-rfs: dir-read: "                             
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
                  rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
        rc = EIO;                                                     
 801e2a4:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
    {                                                                 
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))               
 801e2a8:	2b 87 00 48 	lw r7,(sp+72)                                  <== NOT EXECUTED
 801e2ac:	44 20 ff a3 	be r1,r0,801e138 <rtems_rfs_dir_read+0x1f8>    <== NOT EXECUTED
          printf ("rtems-rfs: dir-read: "                             
 801e2b0:	2a 82 00 08 	lw r2,(r20+8)                                  <== NOT EXECUTED
 801e2b4:	2b 85 00 68 	lw r5,(sp+104)                                 <== NOT EXECUTED
 801e2b8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e2bc:	ba 40 18 00 	mv r3,r18                                      <== NOT EXECUTED
 801e2c0:	b8 e0 20 00 	mv r4,r7                                       <== NOT EXECUTED
 801e2c4:	38 21 b6 40 	ori r1,r1,0xb640                               <== NOT EXECUTED
 801e2c8:	f8 00 1a 74 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e2cc:	e3 ff ff 9b 	bi 801e138 <rtems_rfs_dir_read+0x1f8>          <== NOT EXECUTED
                  rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
 801e2d0:	34 02 00 00 	mvi r2,0                                       
 801e2d4:	ba c0 08 00 	mv r1,r22                                      
 801e2d8:	34 03 01 0c 	mvi r3,268                                     
 801e2dc:	f8 00 19 d3 	calli 8024a28 <memset>                         
      dirent->d_off = offset;                                         
      dirent->d_reclen = sizeof (struct dirent);                      
                                                                      
      *length += elength;                                             
 801e2e0:	29 c1 00 00 	lw r1,(r14+0)                                  
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
      dirent->d_off = offset;                                         
      dirent->d_reclen = sizeof (struct dirent);                      
 801e2e4:	34 02 01 0c 	mvi r2,268                                     
 801e2e8:	0e c2 00 08 	sh (r22+8),r2                                  
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
      dirent->d_off = offset;                                         
 801e2ec:	5a d0 00 04 	sw (r22+4),r16                                 
      dirent->d_reclen = sizeof (struct dirent);                      
                                                                      
      *length += elength;                                             
 801e2f0:	b6 41 08 00 	add r1,r18,r1                                  
 801e2f4:	59 c1 00 00 	sw (r14+0),r1                                  
                                                                      
      remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
 801e2f8:	29 a2 00 08 	lw r2,(r13+8)                                  
 801e2fc:	c8 51 10 00 	sub r2,r2,r17                                  
 801e300:	c8 52 10 00 	sub r2,r2,r18                                  
                                                                      
      if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)                      
 801e304:	48 53 00 03 	bg r2,r19,801e310 <rtems_rfs_dir_read+0x3d0>   <== ALWAYS TAKEN
        *length += remaining;                                         
 801e308:	b4 41 08 00 	add r1,r2,r1                                   <== NOT EXECUTED
 801e30c:	59 c1 00 00 	sw (r14+0),r1                                  <== NOT EXECUTED
                                                                      
      elength -= RTEMS_RFS_DIR_ENTRY_SIZE;                            
 801e310:	36 52 ff f6 	addi r18,r18,-10                               
 801e314:	34 01 00 ff 	mvi r1,255                                     
 801e318:	4c 32 00 02 	bge r1,r18,801e320 <rtems_rfs_dir_read+0x3e0>  <== ALWAYS TAKEN
 801e31c:	34 12 00 ff 	mvi r18,255                                    <== NOT EXECUTED
      if (elength > NAME_MAX)                                         
        elength = NAME_MAX;                                           
                                                                      
      memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
 801e320:	36 ce 00 0c 	addi r14,r22,12                                
 801e324:	ba 40 18 00 	mv r3,r18                                      
 801e328:	35 82 00 0a 	addi r2,r12,10                                 
 801e32c:	b9 c0 08 00 	mv r1,r14                                      
 801e330:	f8 00 19 30 	calli 80247f0 <memcpy>                         
                                                                      
      dirent->d_ino = rtems_rfs_dir_entry_ino (entry);                
 801e334:	41 81 00 00 	lbu r1,(r12+0)                                 
 801e338:	34 02 00 18 	mvi r2,24                                      
 801e33c:	f8 00 62 96 	calli 8036d94 <__ashlsi3>                      
 801e340:	2b 82 00 4c 	lw r2,(sp+76)                                  
 801e344:	b8 20 60 00 	mv r12,r1                                      
 801e348:	40 41 00 00 	lbu r1,(r2+0)                                  
 801e34c:	34 02 00 10 	mvi r2,16                                      
 801e350:	f8 00 62 91 	calli 8036d94 <__ashlsi3>                      
 801e354:	43 62 00 00 	lbu r2,(fp+0)                                  
 801e358:	42 a3 00 00 	lbu r3,(r21+0)                                 
 801e35c:	b9 81 08 00 	or r1,r12,r1                                   
 801e360:	b4 42 10 00 	add r2,r2,r2                                   
 801e364:	b4 42 10 00 	add r2,r2,r2                                   
 801e368:	b4 42 10 00 	add r2,r2,r2                                   
 801e36c:	b4 42 10 00 	add r2,r2,r2                                   
 801e370:	b4 42 10 00 	add r2,r2,r2                                   
 801e374:	b4 42 10 00 	add r2,r2,r2                                   
 801e378:	b4 42 10 00 	add r2,r2,r2                                   
 801e37c:	b8 23 08 00 	or r1,r1,r3                                    
 801e380:	b4 42 10 00 	add r2,r2,r2                                   
 801e384:	b8 22 10 00 	or r2,r1,r2                                    
 801e388:	5a c2 00 00 	sw (r22+0),r2                                  
      dirent->d_namlen = elength;                                     
 801e38c:	0e d2 00 0a 	sh (r22+10),r18                                
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                 
 801e390:	34 01 00 00 	mvi r1,0                                       
 801e394:	78 02 80 00 	mvhi r2,0x8000                                 
 801e398:	fb ff cf 8a 	calli 80121c0 <rtems_rfs_trace>                
 801e39c:	44 20 ff 67 	be r1,r0,801e138 <rtems_rfs_dir_read+0x1f8>    <== ALWAYS TAKEN
        printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
 801e3a0:	2a c2 00 04 	lw r2,(r22+4)                                  <== NOT EXECUTED
 801e3a4:	2a c3 00 00 	lw r3,(r22+0)                                  <== NOT EXECUTED
 801e3a8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e3ac:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 801e3b0:	38 21 b6 84 	ori r1,r1,0xb684                               <== NOT EXECUTED
 801e3b4:	f8 00 1a 39 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e3b8:	e3 ff ff 60 	bi 801e138 <rtems_rfs_dir_read+0x1f8>          <== NOT EXECUTED
                                                                      

0801eab8 <rtems_rfs_file_close>: } int rtems_rfs_file_close (rtems_rfs_file_system* fs, rtems_rfs_file_handle* handle) {
 801eab8:	37 9c ff e4 	addi sp,sp,-28                                 
 801eabc:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801eac0:	5b 8c 00 18 	sw (sp+24),r12                                 
 801eac4:	5b 8d 00 14 	sw (sp+20),r13                                 
 801eac8:	5b 8e 00 10 	sw (sp+16),r14                                 
 801eacc:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801ead0:	5b 90 00 08 	sw (sp+8),r16                                  
 801ead4:	5b 9d 00 04 	sw (sp+4),ra                                   
 801ead8:	b8 20 68 00 	mv r13,r1                                      
 801eadc:	b8 40 58 00 	mv r11,r2                                      
  int rrc;                                                            
  int rc;                                                             
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
 801eae0:	34 01 00 10 	mvi r1,16                                      
 801eae4:	34 02 00 00 	mvi r2,0                                       
 801eae8:	fb ff cd b6 	calli 80121c0 <rtems_rfs_trace>                
 801eaec:	5c 20 00 9d 	bne r1,r0,801ed60 <rtems_rfs_file_close+0x2a8> <== NEVER TAKEN
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
            handle->shared->inode.ino);                               
                                                                      
  if (handle->shared->references > 0)                                 
 801eaf0:	29 6c 00 1c 	lw r12,(r11+28)                                
 801eaf4:	29 82 00 08 	lw r2,(r12+8)                                  
 801eaf8:	4c 02 00 03 	bge r0,r2,801eb04 <rtems_rfs_file_close+0x4c>  <== NEVER TAKEN
    handle->shared->references--;                                     
 801eafc:	34 42 ff ff 	addi r2,r2,-1                                  
 801eb00:	59 82 00 08 	sw (r12+8),r2                                  
                                                                      
  if (handle->shared->references == 0)                                
 801eb04:	5c 40 00 84 	bne r2,r0,801ed14 <rtems_rfs_file_close+0x25c> <== NEVER TAKEN
  {                                                                   
    if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))          
 801eb08:	29 8e 00 18 	lw r14,(r12+24)                                
 801eb0c:	45 c2 00 c2 	be r14,r2,801ee14 <rtems_rfs_file_close+0x35c> <== ALWAYS TAKEN
    if (rrc == 0)                                                     
    {                                                                 
      /*                                                              
       * @todo This could be clever and only update if different.     
       */                                                             
      rtems_rfs_inode_set_atime (&handle->shared->inode,              
 801eb10:	29 8f 00 8c 	lw r15,(r12+140)                               
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 801eb14:	34 02 00 18 	mvi r2,24                                      
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801eb18:	34 10 00 01 	mvi r16,1                                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 801eb1c:	b9 e0 08 00 	mv r1,r15                                      
 801eb20:	fb ff 8b 02 	calli 8001728 <__lshrsi3>                      
 801eb24:	31 c1 00 10 	sb (r14+16),r1                                 
 801eb28:	34 02 00 10 	mvi r2,16                                      
 801eb2c:	b9 e0 08 00 	mv r1,r15                                      
 801eb30:	fb ff 8a fe 	calli 8001728 <__lshrsi3>                      
 801eb34:	01 e3 00 01 	srui r3,r15,1                                  
 801eb38:	29 84 00 18 	lw r4,(r12+24)                                 
 801eb3c:	00 63 00 01 	srui r3,r3,1                                   
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 801eb40:	34 02 00 18 	mvi r2,24                                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 801eb44:	00 63 00 01 	srui r3,r3,1                                   
 801eb48:	30 81 00 11 	sb (r4+17),r1                                  
 801eb4c:	00 63 00 01 	srui r3,r3,1                                   
 801eb50:	29 81 00 18 	lw r1,(r12+24)                                 
 801eb54:	00 63 00 01 	srui r3,r3,1                                   
 801eb58:	00 63 00 01 	srui r3,r3,1                                   
 801eb5c:	00 63 00 01 	srui r3,r3,1                                   
 801eb60:	00 63 00 01 	srui r3,r3,1                                   
 801eb64:	30 23 00 12 	sb (r1+18),r3                                  
 801eb68:	29 81 00 18 	lw r1,(r12+24)                                 
 801eb6c:	30 2f 00 13 	sb (r1+19),r15                                 
                                 handle->shared->atime);              
      rtems_rfs_inode_set_mtime (&handle->shared->inode,              
 801eb70:	29 6e 00 1c 	lw r14,(r11+28)                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801eb74:	31 90 00 1c 	sb (r12+28),r16                                
 801eb78:	29 cc 00 90 	lw r12,(r14+144)                               
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 801eb7c:	29 cf 00 18 	lw r15,(r14+24)                                
 801eb80:	b9 80 08 00 	mv r1,r12                                      
 801eb84:	fb ff 8a e9 	calli 8001728 <__lshrsi3>                      
 801eb88:	31 e1 00 14 	sb (r15+20),r1                                 
 801eb8c:	34 02 00 10 	mvi r2,16                                      
 801eb90:	b9 80 08 00 	mv r1,r12                                      
 801eb94:	fb ff 8a e5 	calli 8001728 <__lshrsi3>                      
 801eb98:	01 83 00 01 	srui r3,r12,1                                  
 801eb9c:	29 c4 00 18 	lw r4,(r14+24)                                 
 801eba0:	00 63 00 01 	srui r3,r3,1                                   
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
 801eba4:	34 02 00 18 	mvi r2,24                                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 801eba8:	00 63 00 01 	srui r3,r3,1                                   
 801ebac:	30 81 00 15 	sb (r4+21),r1                                  
 801ebb0:	00 63 00 01 	srui r3,r3,1                                   
 801ebb4:	29 c1 00 18 	lw r1,(r14+24)                                 
 801ebb8:	00 63 00 01 	srui r3,r3,1                                   
 801ebbc:	00 63 00 01 	srui r3,r3,1                                   
 801ebc0:	00 63 00 01 	srui r3,r3,1                                   
 801ebc4:	00 63 00 01 	srui r3,r3,1                                   
 801ebc8:	30 23 00 16 	sb (r1+22),r3                                  
 801ebcc:	29 c1 00 18 	lw r1,(r14+24)                                 
 801ebd0:	30 2c 00 17 	sb (r1+23),r12                                 
                                 handle->shared->mtime);              
      rtems_rfs_inode_set_ctime (&handle->shared->inode,              
 801ebd4:	29 6c 00 1c 	lw r12,(r11+28)                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801ebd8:	31 d0 00 1c 	sb (r14+28),r16                                
 801ebdc:	29 8e 00 94 	lw r14,(r12+148)                               
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
 801ebe0:	29 8f 00 18 	lw r15,(r12+24)                                
 801ebe4:	b9 c0 08 00 	mv r1,r14                                      
 801ebe8:	fb ff 8a d0 	calli 8001728 <__lshrsi3>                      
 801ebec:	31 e1 00 18 	sb (r15+24),r1                                 
 801ebf0:	34 02 00 10 	mvi r2,16                                      
 801ebf4:	b9 c0 08 00 	mv r1,r14                                      
 801ebf8:	fb ff 8a cc 	calli 8001728 <__lshrsi3>                      
 801ebfc:	01 c2 00 01 	srui r2,r14,1                                  
 801ec00:	29 83 00 18 	lw r3,(r12+24)                                 
 801ec04:	00 42 00 01 	srui r2,r2,1                                   
 801ec08:	00 42 00 01 	srui r2,r2,1                                   
 801ec0c:	30 61 00 19 	sb (r3+25),r1                                  
 801ec10:	00 42 00 01 	srui r2,r2,1                                   
 801ec14:	29 81 00 18 	lw r1,(r12+24)                                 
 801ec18:	00 42 00 01 	srui r2,r2,1                                   
 801ec1c:	00 42 00 01 	srui r2,r2,1                                   
 801ec20:	00 42 00 01 	srui r2,r2,1                                   
 801ec24:	00 42 00 01 	srui r2,r2,1                                   
 801ec28:	30 22 00 1a 	sb (r1+26),r2                                  
 801ec2c:	29 81 00 18 	lw r1,(r12+24)                                 
 801ec30:	30 2e 00 1b 	sb (r1+27),r14                                 
                                 handle->shared->ctime);              
      if (!rtems_rfs_block_size_equal (&handle->shared->size,         
 801ec34:	29 62 00 1c 	lw r2,(r11+28)                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 801ec38:	31 90 00 1c 	sb (r12+28),r16                                
 801ec3c:	28 43 00 84 	lw r3,(r2+132)                                 
 801ec40:	28 41 00 3c 	lw r1,(r2+60)                                  
 801ec44:	44 61 00 6f 	be r3,r1,801ee00 <rtems_rfs_file_close+0x348>  <== ALWAYS TAKEN
 801ec48:	28 41 00 88 	lw r1,(r2+136)                                 <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size (rtems_rfs_block_map*  map,              
                              rtems_rfs_block_size* size)             
{                                                                     
  rtems_rfs_block_copy_size (&map->size, size);                       
 801ec4c:	58 41 00 40 	sw (r2+64),r1                                  <== NOT EXECUTED
  map->dirty = true;                                                  
 801ec50:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size (rtems_rfs_block_map*  map,              
                              rtems_rfs_block_size* size)             
{                                                                     
  rtems_rfs_block_copy_size (&map->size, size);                       
 801ec54:	58 43 00 3c 	sw (r2+60),r3                                  <== NOT EXECUTED
  map->dirty = true;                                                  
 801ec58:	30 41 00 34 	sb (r2+52),r1                                  <== NOT EXECUTED
 801ec5c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
                                       &handle->shared->map.size))    
        rtems_rfs_block_map_set_size (&handle->shared->map,           
                                      &handle->shared->size);         
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
 801ec60:	b9 a0 08 00 	mv r1,r13                                      
 801ec64:	34 42 00 34 	addi r2,r2,52                                  
 801ec68:	fb ff f2 6b 	calli 801b614 <rtems_rfs_block_map_close>      
 801ec6c:	b8 20 70 00 	mv r14,r1                                      
    if (rc > 0)                                                       
 801ec70:	4c 01 00 07 	bge r0,r1,801ec8c <rtems_rfs_file_close+0x1d4> <== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
 801ec74:	34 01 00 10 	mvi r1,16                                      <== NOT EXECUTED
 801ec78:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801ec7c:	fb ff cd 51 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ec80:	5c 20 00 55 	bne r1,r0,801edd4 <rtems_rfs_file_close+0x31c> <== NOT EXECUTED
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
      if (rrc == 0)                                                   
 801ec84:	5d 80 00 02 	bne r12,r0,801ec8c <rtems_rfs_file_close+0x1d4><== NOT EXECUTED
 801ec88:	b9 c0 60 00 	mv r12,r14                                     <== NOT EXECUTED
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
 801ec8c:	29 62 00 1c 	lw r2,(r11+28)                                 
 801ec90:	b9 a0 08 00 	mv r1,r13                                      
 801ec94:	34 42 00 0c 	addi r2,r2,12                                  
 801ec98:	fb ff c4 df 	calli 8010014 <rtems_rfs_inode_close>          
 801ec9c:	b8 20 70 00 	mv r14,r1                                      
    if (rc > 0)                                                       
 801eca0:	4c 01 00 41 	bge r0,r1,801eda4 <rtems_rfs_file_close+0x2ec> <== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
 801eca4:	34 01 00 10 	mvi r1,16                                      <== NOT EXECUTED
 801eca8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801ecac:	fb ff cd 45 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ecb0:	5c 20 00 32 	bne r1,r0,801ed78 <rtems_rfs_file_close+0x2c0> <== NOT EXECUTED
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
      if (rrc == 0)                                                   
 801ecb4:	5d 80 00 3c 	bne r12,r0,801eda4 <rtems_rfs_file_close+0x2ec><== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 801ecb8:	29 61 00 1c 	lw r1,(r11+28)                                 <== NOT EXECUTED
 801ecbc:	b9 c0 60 00 	mv r12,r14                                     <== NOT EXECUTED
 801ecc0:	fb ff e6 cd 	calli 80187f4 <_Chain_Extract>                 <== NOT EXECUTED
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rtems_chain_extract (&handle->shared->link);                      
    free (handle->shared);                                            
 801ecc4:	29 61 00 1c 	lw r1,(r11+28)                                 <== NOT EXECUTED
 801ecc8:	fb ff 9f d3 	calli 8006c14 <free>                           <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801eccc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801ecd0:	35 62 00 04 	addi r2,r11,4                                  <== NOT EXECUTED
 801ecd4:	fb ff f6 6a 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  handle->dirty = false;                                              
 801ecd8:	31 60 00 04 	sb (r11+4),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801ecdc:	59 60 00 08 	sw (r11+8),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801ece0:	59 60 00 0c 	sw (r11+12),r0                                 <== NOT EXECUTED
  if ((rrc == 0) && (rc > 0))                                         
    rrc = rc;                                                         
                                                                      
  if (rrc > 0)                                                        
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                 
 801ece4:	34 01 00 10 	mvi r1,16                                      <== NOT EXECUTED
 801ece8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801ecec:	fb ff cd 35 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ecf0:	44 20 00 10 	be r1,r0,801ed30 <rtems_rfs_file_close+0x278>  <== NOT EXECUTED
      printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
 801ecf4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801ecf8:	f8 00 1c a3 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ecfc:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801ed00:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ed04:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801ed08:	38 21 b8 d8 	ori r1,r1,0xb8d8                               <== NOT EXECUTED
 801ed0c:	f8 00 17 e3 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ed10:	e0 00 00 08 	bi 801ed30 <rtems_rfs_file_close+0x278>        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801ed14:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801ed18:	35 62 00 04 	addi r2,r11,4                                  <== NOT EXECUTED
 801ed1c:	fb ff f6 58 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
                      rtems_rfs_file_handle* handle)                  
{                                                                     
  int rrc;                                                            
  int rc;                                                             
                                                                      
  rrc = 0;                                                            
 801ed20:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 801ed24:	31 60 00 04 	sb (r11+4),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801ed28:	59 60 00 08 	sw (r11+8),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801ed2c:	59 60 00 0c 	sw (r11+12),r0                                 <== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                 
      printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
  }                                                                   
                                                                      
  free (handle);                                                      
 801ed30:	b9 60 08 00 	mv r1,r11                                      
 801ed34:	fb ff 9f b8 	calli 8006c14 <free>                           
                                                                      
  return rrc;                                                         
}                                                                     
 801ed38:	b9 80 08 00 	mv r1,r12                                      
 801ed3c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801ed40:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801ed44:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801ed48:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801ed4c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801ed50:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801ed54:	2b 90 00 08 	lw r16,(sp+8)                                  
 801ed58:	37 9c 00 1c 	addi sp,sp,28                                  
 801ed5c:	c3 a0 00 00 	ret                                            
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
            handle->shared->inode.ino);                               
 801ed60:	29 62 00 1c 	lw r2,(r11+28)                                 <== NOT EXECUTED
  int rc;                                                             
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
 801ed64:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ed68:	38 21 b8 38 	ori r1,r1,0xb838                               <== NOT EXECUTED
 801ed6c:	28 42 00 14 	lw r2,(r2+20)                                  <== NOT EXECUTED
 801ed70:	f8 00 17 ca 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ed74:	e3 ff ff 5f 	bi 801eaf0 <rtems_rfs_file_close+0x38>         <== NOT EXECUTED
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
 801ed78:	29 62 00 1c 	lw r2,(r11+28)                                 <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
 801ed7c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801ed80:	28 4f 00 14 	lw r15,(r2+20)                                 <== NOT EXECUTED
 801ed84:	f8 00 1c 80 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ed88:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801ed8c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ed90:	38 21 b8 9c 	ori r1,r1,0xb89c                               <== NOT EXECUTED
 801ed94:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 801ed98:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 801ed9c:	f8 00 17 bf 	calli 8024c98 <printf>                         <== NOT EXECUTED
                handle->shared->inode.ino, rc, strerror (rc));        
      if (rrc == 0)                                                   
 801eda0:	45 80 ff c6 	be r12,r0,801ecb8 <rtems_rfs_file_close+0x200> <== NOT EXECUTED
 801eda4:	29 61 00 1c 	lw r1,(r11+28)                                 
 801eda8:	fb ff e6 93 	calli 80187f4 <_Chain_Extract>                 
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rtems_chain_extract (&handle->shared->link);                      
    free (handle->shared);                                            
 801edac:	29 61 00 1c 	lw r1,(r11+28)                                 
 801edb0:	fb ff 9f 99 	calli 8006c14 <free>                           
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801edb4:	b9 a0 08 00 	mv r1,r13                                      
 801edb8:	35 62 00 04 	addi r2,r11,4                                  
 801edbc:	fb ff f6 30 	calli 801c67c <rtems_rfs_buffer_handle_release>
  handle->dirty = false;                                              
 801edc0:	31 60 00 04 	sb (r11+4),r0                                  
  handle->bnum  = 0;                                                  
 801edc4:	59 60 00 08 	sw (r11+8),r0                                  
  handle->buffer = NULL;                                              
 801edc8:	59 60 00 0c 	sw (r11+12),r0                                 
                                                                      
  rc = rtems_rfs_buffer_handle_close (fs, &handle->buffer);           
  if ((rrc == 0) && (rc > 0))                                         
    rrc = rc;                                                         
                                                                      
  if (rrc > 0)                                                        
 801edcc:	4c 0c ff d9 	bge r0,r12,801ed30 <rtems_rfs_file_close+0x278><== ALWAYS TAKEN
 801edd0:	e3 ff ff c5 	bi 801ece4 <rtems_rfs_file_close+0x22c>        <== NOT EXECUTED
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
 801edd4:	29 62 00 1c 	lw r2,(r11+28)                                 <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
 801edd8:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801eddc:	28 4f 00 14 	lw r15,(r2+20)                                 <== NOT EXECUTED
 801ede0:	f8 00 1c 69 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ede4:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 801ede8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801edec:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 801edf0:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 801edf4:	38 21 b8 60 	ori r1,r1,0xb860                               <== NOT EXECUTED
 801edf8:	f8 00 17 a8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801edfc:	e3 ff ff a2 	bi 801ec84 <rtems_rfs_file_close+0x1cc>        <== NOT EXECUTED
                                 handle->shared->atime);              
      rtems_rfs_inode_set_mtime (&handle->shared->inode,              
                                 handle->shared->mtime);              
      rtems_rfs_inode_set_ctime (&handle->shared->inode,              
                                 handle->shared->ctime);              
      if (!rtems_rfs_block_size_equal (&handle->shared->size,         
 801ee00:	28 41 00 88 	lw r1,(r2+136)                                 
 801ee04:	28 44 00 40 	lw r4,(r2+64)                                  
 801ee08:	34 0c 00 00 	mvi r12,0                                      
 801ee0c:	5c 24 ff 90 	bne r1,r4,801ec4c <rtems_rfs_file_close+0x194> <== NEVER TAKEN
 801ee10:	e3 ff ff 94 	bi 801ec60 <rtems_rfs_file_close+0x1a8>        
    handle->shared->references--;                                     
                                                                      
  if (handle->shared->references == 0)                                
  {                                                                   
    if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))          
      rrc = rtems_rfs_inode_load (fs, &handle->shared->inode);        
 801ee14:	35 82 00 0c 	addi r2,r12,12                                 
 801ee18:	b9 a0 08 00 	mv r1,r13                                      
 801ee1c:	fb ff c3 ae 	calli 800fcd4 <rtems_rfs_inode_load>           
 801ee20:	b8 20 60 00 	mv r12,r1                                      
                                                                      
    if (rrc == 0)                                                     
 801ee24:	44 20 00 03 	be r1,r0,801ee30 <rtems_rfs_file_close+0x378>  <== ALWAYS TAKEN
 801ee28:	29 62 00 1c 	lw r2,(r11+28)                                 <== NOT EXECUTED
 801ee2c:	e3 ff ff 8d 	bi 801ec60 <rtems_rfs_file_close+0x1a8>        <== NOT EXECUTED
 801ee30:	29 6c 00 1c 	lw r12,(r11+28)                                
 801ee34:	29 8e 00 18 	lw r14,(r12+24)                                
 801ee38:	e3 ff ff 36 	bi 801eb10 <rtems_rfs_file_close+0x58>         
                                                                      

0801f78c <rtems_rfs_file_get_shared>: if (shared->inode.ino == ino) return shared; node = rtems_chain_next (node); } return NULL; }
 801f78c:	28 23 00 74 	lw r3,(r1+116)                                 
 801f790:	34 24 00 78 	addi r4,r1,120                                 
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
 801f794:	34 01 00 00 	mvi r1,0                                       
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
 801f798:	44 64 00 0b 	be r3,r4,801f7c4 <rtems_rfs_file_get_shared+0x38>
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
 801f79c:	28 65 00 14 	lw r5,(r3+20)                                  
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
 801f7a0:	b8 60 08 00 	mv r1,r3                                       
    if (shared->inode.ino == ino)                                     
 801f7a4:	5c a2 00 05 	bne r5,r2,801f7b8 <rtems_rfs_file_get_shared+0x2c>
 801f7a8:	e0 00 00 08 	bi 801f7c8 <rtems_rfs_file_get_shared+0x3c>    
 801f7ac:	28 65 00 14 	lw r5,(r3+20)                                  <== NOT EXECUTED
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
 801f7b0:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
    if (shared->inode.ino == ino)                                     
 801f7b4:	44 a2 00 04 	be r5,r2,801f7c4 <rtems_rfs_file_get_shared+0x38><== NOT EXECUTED
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
}                                                                     
 801f7b8:	28 63 00 00 	lw r3,(r3+0)                                   
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
 801f7bc:	5c 64 ff fc 	bne r3,r4,801f7ac <rtems_rfs_file_get_shared+0x20><== NEVER TAKEN
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
 801f7c0:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801f7c4:	c3 a0 00 00 	ret                                            
 801f7c8:	c3 a0 00 00 	ret                                            
                                                                      

0801f05c <rtems_rfs_file_io_end>: int rtems_rfs_file_io_end (rtems_rfs_file_handle* handle, size_t size, bool read) {
 801f05c:	37 9c ff e4 	addi sp,sp,-28                                 
 801f060:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801f064:	5b 8c 00 18 	sw (sp+24),r12                                 
 801f068:	5b 8d 00 14 	sw (sp+20),r13                                 
 801f06c:	5b 8e 00 10 	sw (sp+16),r14                                 
 801f070:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801f074:	5b 90 00 08 	sw (sp+8),r16                                  
 801f078:	5b 9d 00 04 	sw (sp+4),ra                                   
 801f07c:	b8 20 58 00 	mv r11,r1                                      
 801f080:	b8 40 70 00 	mv r14,r2                                      
  bool atime;                                                         
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f084:	34 01 00 20 	mvi r1,32                                      
 801f088:	34 02 00 00 	mvi r2,0                                       
                                                                      
int                                                                   
rtems_rfs_file_io_end (rtems_rfs_file_handle* handle,                 
                       size_t                 size,                   
                       bool                   read)                   
{                                                                     
 801f08c:	20 6c 00 ff 	andi r12,r3,0xff                               
  bool atime;                                                         
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f090:	fb ff cc 4c 	calli 80121c0 <rtems_rfs_trace>                
 801f094:	44 20 00 09 	be r1,r0,801f0b8 <rtems_rfs_file_io_end+0x5c>  <== ALWAYS TAKEN
    printf ("rtems-rfs: file-io:   end: %s size=%zu\n",               
 801f098:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801f09c:	38 84 b9 00 	ori r4,r4,0xb900                               <== NOT EXECUTED
 801f0a0:	5d 80 00 28 	bne r12,r0,801f140 <rtems_rfs_file_io_end+0xe4><== NOT EXECUTED
 801f0a4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f0a8:	38 21 b9 bc 	ori r1,r1,0xb9bc                               <== NOT EXECUTED
 801f0ac:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 801f0b0:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 801f0b4:	f8 00 16 f9 	calli 8024c98 <printf>                         <== NOT EXECUTED
            read ? "read" : "write", size);                           
                                                                      
  if (rtems_rfs_buffer_handle_has_block (&handle->buffer))            
 801f0b8:	29 61 00 0c 	lw r1,(r11+12)                                 
 801f0bc:	44 20 00 27 	be r1,r0,801f158 <rtems_rfs_file_io_end+0xfc>  <== NEVER TAKEN
  {                                                                   
    if (!read)                                                        
 801f0c0:	45 80 00 1d 	be r12,r0,801f134 <rtems_rfs_file_io_end+0xd8> 
      rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));   
    rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 
 801f0c4:	29 61 00 1c 	lw r1,(r11+28)                                 
 801f0c8:	35 62 00 04 	addi r2,r11,4                                  
 801f0cc:	28 21 00 98 	lw r1,(r1+152)                                 
 801f0d0:	fb ff f5 6b 	calli 801c67c <rtems_rfs_buffer_handle_release>
 801f0d4:	b8 20 68 00 	mv r13,r1                                      
                                          rtems_rfs_file_buffer (handle));
    if (rc > 0)                                                       
 801f0d8:	4c 01 00 21 	bge r0,r1,801f15c <rtems_rfs_file_io_end+0x100><== ALWAYS TAKEN
    {                                                                 
      printf (                                                        
 801f0dc:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 801f0e0:	39 6b b9 00 	ori r11,r11,0xb900                             <== NOT EXECUTED
 801f0e4:	5d 80 00 1a 	bne r12,r0,801f14c <rtems_rfs_file_io_end+0xf0><== NOT EXECUTED
 801f0e8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801f0ec:	f8 00 1b a6 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801f0f0:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
 801f0f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f0f8:	38 21 b9 e4 	ori r1,r1,0xb9e4                               <== NOT EXECUTED
 801f0fc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801f100:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 801f104:	b9 a0 20 00 	mv r4,r13                                      <== NOT EXECUTED
 801f108:	f8 00 16 e4 	calli 8024c98 <printf>                         <== NOT EXECUTED
    handle->shared->size.offset =                                     
      rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));  
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 801f10c:	b9 a0 08 00 	mv r1,r13                                      
 801f110:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801f114:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801f118:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801f11c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801f120:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801f124:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801f128:	2b 90 00 08 	lw r16,(sp+8)                                  
 801f12c:	37 9c 00 1c 	addi sp,sp,28                                  
 801f130:	c3 a0 00 00 	ret                                            
            read ? "read" : "write", size);                           
                                                                      
  if (rtems_rfs_buffer_handle_has_block (&handle->buffer))            
  {                                                                   
    if (!read)                                                        
      rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));   
 801f134:	34 01 00 01 	mvi r1,1                                       
 801f138:	31 61 00 04 	sb (r11+4),r1                                  
 801f13c:	e3 ff ff e2 	bi 801f0c4 <rtems_rfs_file_io_end+0x68>        
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-io:   end: %s size=%zu\n",               
 801f140:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 801f144:	38 84 a0 ec 	ori r4,r4,0xa0ec                               <== NOT EXECUTED
 801f148:	e3 ff ff d7 	bi 801f0a4 <rtems_rfs_file_io_end+0x48>        <== NOT EXECUTED
      rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));   
    rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 
                                          rtems_rfs_file_buffer (handle));
    if (rc > 0)                                                       
    {                                                                 
      printf (                                                        
 801f14c:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 801f150:	39 6b a0 ec 	ori r11,r11,0xa0ec                             <== NOT EXECUTED
 801f154:	e3 ff ff e5 	bi 801f0e8 <rtems_rfs_file_io_end+0x8c>        <== NOT EXECUTED
                       bool                   read)                   
{                                                                     
  bool atime;                                                         
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
 801f158:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
 801f15c:	29 61 00 1c 	lw r1,(r11+28)                                 
   * increase the block number and adjust the offset.                 
   *                                                                  
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
 801f160:	29 63 00 14 	lw r3,(r11+20)                                 
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
 801f164:	28 22 00 98 	lw r2,(r1+152)                                 
   * increase the block number and adjust the offset.                 
   *                                                                  
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
 801f168:	b5 c3 70 00 	add r14,r14,r3                                 
 801f16c:	59 6e 00 14 	sw (r11+20),r14                                
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
 801f170:	28 42 00 08 	lw r2,(r2+8)                                   
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
                                                                      
  if (handle->bpos.boff >=                                            
 801f174:	54 4e 00 06 	bgu r2,r14,801f18c <rtems_rfs_file_io_end+0x130>
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
  {                                                                   
    handle->bpos.bno++;                                               
 801f178:	29 63 00 10 	lw r3,(r11+16)                                 
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
 801f17c:	c9 c2 70 00 	sub r14,r14,r2                                 
 801f180:	59 6e 00 14 	sw (r11+20),r14                                
  handle->bpos.boff += size;                                          
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
  {                                                                   
    handle->bpos.bno++;                                               
 801f184:	34 62 00 01 	addi r2,r3,1                                   
 801f188:	59 62 00 10 	sw (r11+16),r2                                 
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
 801f18c:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if (!read &&                                                        
 801f190:	5d 80 00 0a 	bne r12,r0,801f1b8 <rtems_rfs_file_io_end+0x15c>
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
 801f194:	29 62 00 10 	lw r2,(r11+16)                                 
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
 801f198:	5c 4c 00 47 	bne r2,r12,801f2b4 <rtems_rfs_file_io_end+0x258>
 801f19c:	28 23 00 3c 	lw r3,(r1+60)                                  
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
 801f1a0:	54 62 00 3e 	bgu r3,r2,801f298 <rtems_rfs_file_io_end+0x23c><== ALWAYS TAKEN
 801f1a4:	29 62 00 14 	lw r2,(r11+20)                                 
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
 801f1a8:	58 22 00 40 	sw (r1+64),r2                                  
  map->dirty = true;                                                  
 801f1ac:	34 02 00 01 	mvi r2,1                                       
 801f1b0:	30 22 00 34 	sb (r1+52),r2                                  
                                    rtems_rfs_file_bpos (handle)))    
  {                                                                   
    rtems_rfs_block_map_set_size_offset (rtems_rfs_file_map (handle), 
                                         handle->bpos.boff);          
    length = true;                                                    
    mtime = true;                                                     
 801f1b4:	34 0e 00 01 	mvi r14,1                                      
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
 801f1b8:	29 61 00 00 	lw r1,(r11+0)                                  
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
 801f1bc:	34 10 00 00 	mvi r16,0                                      
                                         handle->bpos.boff);          
    length = true;                                                    
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
 801f1c0:	20 2f 00 01 	andi r15,r1,0x1                                
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
 801f1c4:	20 22 00 02 	andi r2,r1,0x2                                 
                                         handle->bpos.boff);          
    length = true;                                                    
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
 801f1c8:	19 ef 00 01 	xori r15,r15,0x1                               
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
 801f1cc:	5c 40 00 02 	bne r2,r0,801f1d4 <rtems_rfs_file_io_end+0x178><== NEVER TAKEN
 801f1d0:	21 d0 00 ff 	andi r16,r14,0xff                              
  length = rtems_rfs_file_update_length (handle) && length;           
 801f1d4:	20 23 00 04 	andi r3,r1,0x4                                 
 801f1d8:	64 63 00 00 	cmpei r3,r3,0                                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f1dc:	34 01 00 20 	mvi r1,32                                      
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
 801f1e0:	c8 03 18 00 	sub r3,r0,r3                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f1e4:	34 02 00 00 	mvi r2,0                                       
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
 801f1e8:	a1 c3 70 00 	and r14,r14,r3                                 
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f1ec:	fb ff cb f5 	calli 80121c0 <rtems_rfs_trace>                
 801f1f0:	5c 20 00 11 	bne r1,r0,801f234 <rtems_rfs_file_io_end+0x1d8><== NEVER TAKEN
    printf ("rtems-rfs: file-io:   end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
            handle->bpos.bno, handle->bpos.boff,                      
            atime ? 'A' : '-', mtime ? 'M' : '-', length ? 'L' : '-');
                                                                      
  if (atime || mtime)                                                 
 801f1f4:	5d e0 00 09 	bne r15,r0,801f218 <rtems_rfs_file_io_end+0x1bc><== ALWAYS TAKEN
 801f1f8:	5e 0f 00 08 	bne r16,r15,801f218 <rtems_rfs_file_io_end+0x1bc><== NOT EXECUTED
    if (read && atime)                                                
      handle->shared->atime = now;                                    
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
 801f1fc:	45 c0 ff c4 	be r14,r0,801f10c <rtems_rfs_file_io_end+0xb0> 
  {                                                                   
    handle->shared->size.count =                                      
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
 801f200:	29 61 00 1c 	lw r1,(r11+28)                                 
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
  {                                                                   
    handle->shared->size.count =                                      
 801f204:	28 23 00 3c 	lw r3,(r1+60)                                  
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
    handle->shared->size.offset =                                     
 801f208:	28 22 00 40 	lw r2,(r1+64)                                  
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
  {                                                                   
    handle->shared->size.count =                                      
 801f20c:	58 23 00 84 	sw (r1+132),r3                                 
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
    handle->shared->size.offset =                                     
 801f210:	58 22 00 88 	sw (r1+136),r2                                 
 801f214:	e3 ff ff be 	bi 801f10c <rtems_rfs_file_io_end+0xb0>        
            handle->bpos.bno, handle->bpos.boff,                      
            atime ? 'A' : '-', mtime ? 'M' : '-', length ? 'L' : '-');
                                                                      
  if (atime || mtime)                                                 
  {                                                                   
    time_t now = time (NULL);                                         
 801f218:	34 01 00 00 	mvi r1,0                                       
 801f21c:	f8 00 26 5b 	calli 8028b88 <time>                           
    if (read && atime)                                                
 801f220:	45 80 00 1a 	be r12,r0,801f288 <rtems_rfs_file_io_end+0x22c>
 801f224:	45 e0 ff f6 	be r15,r0,801f1fc <rtems_rfs_file_io_end+0x1a0><== NEVER TAKEN
      handle->shared->atime = now;                                    
 801f228:	29 62 00 1c 	lw r2,(r11+28)                                 
 801f22c:	58 41 00 8c 	sw (r2+140),r1                                 
 801f230:	e3 ff ff f3 	bi 801f1fc <rtems_rfs_file_io_end+0x1a0>       
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-io:   end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
 801f234:	65 e4 00 00 	cmpei r4,r15,0                                 <== NOT EXECUTED
 801f238:	66 05 00 00 	cmpei r5,r16,0                                 <== NOT EXECUTED
 801f23c:	65 c6 00 00 	cmpei r6,r14,0                                 <== NOT EXECUTED
 801f240:	34 01 ff ec 	mvi r1,-20                                     <== NOT EXECUTED
 801f244:	c8 04 20 00 	sub r4,r0,r4                                   <== NOT EXECUTED
 801f248:	a0 81 20 00 	and r4,r4,r1                                   <== NOT EXECUTED
 801f24c:	c8 05 28 00 	sub r5,r0,r5                                   <== NOT EXECUTED
 801f250:	34 01 ff e0 	mvi r1,-32                                     <== NOT EXECUTED
 801f254:	a0 a1 28 00 	and r5,r5,r1                                   <== NOT EXECUTED
 801f258:	c8 06 30 00 	sub r6,r0,r6                                   <== NOT EXECUTED
 801f25c:	34 01 ff e1 	mvi r1,-31                                     <== NOT EXECUTED
 801f260:	29 62 00 10 	lw r2,(r11+16)                                 <== NOT EXECUTED
 801f264:	29 63 00 14 	lw r3,(r11+20)                                 <== NOT EXECUTED
 801f268:	a0 c1 30 00 	and r6,r6,r1                                   <== NOT EXECUTED
 801f26c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f270:	34 84 00 41 	addi r4,r4,65                                  <== NOT EXECUTED
 801f274:	34 a5 00 4d 	addi r5,r5,77                                  <== NOT EXECUTED
 801f278:	34 c6 00 4c 	addi r6,r6,76                                  <== NOT EXECUTED
 801f27c:	38 21 ba 28 	ori r1,r1,0xba28                               <== NOT EXECUTED
 801f280:	f8 00 16 86 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801f284:	e3 ff ff dc 	bi 801f1f4 <rtems_rfs_file_io_end+0x198>       <== NOT EXECUTED
  if (atime || mtime)                                                 
  {                                                                   
    time_t now = time (NULL);                                         
    if (read && atime)                                                
      handle->shared->atime = now;                                    
    if (!read && mtime)                                               
 801f288:	46 0c ff dd 	be r16,r12,801f1fc <rtems_rfs_file_io_end+0x1a0>
      handle->shared->mtime = now;                                    
 801f28c:	29 62 00 1c 	lw r2,(r11+28)                                 
 801f290:	58 41 00 90 	sw (r2+144),r1                                 
 801f294:	e3 ff ff da 	bi 801f1fc <rtems_rfs_file_io_end+0x1a0>       
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
 801f298:	34 63 ff ff 	addi r3,r3,-1                                  
    handle->bpos.bno++;                                               
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
 801f29c:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  if (!read &&                                                        
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
 801f2a0:	5c 43 ff c6 	bne r2,r3,801f1b8 <rtems_rfs_file_io_end+0x15c>
 801f2a4:	29 62 00 14 	lw r2,(r11+20)                                 
 801f2a8:	28 23 00 40 	lw r3,(r1+64)                                  
 801f2ac:	50 62 ff c3 	bgeu r3,r2,801f1b8 <rtems_rfs_file_io_end+0x15c>
 801f2b0:	e3 ff ff be 	bi 801f1a8 <rtems_rfs_file_io_end+0x14c>       
 801f2b4:	28 23 00 3c 	lw r3,(r1+60)                                  
 801f2b8:	44 60 ff bb 	be r3,r0,801f1a4 <rtems_rfs_file_io_end+0x148> <== NEVER TAKEN
 801f2bc:	54 62 ff f7 	bgu r3,r2,801f298 <rtems_rfs_file_io_end+0x23c>
 801f2c0:	e3 ff ff b9 	bi 801f1a4 <rtems_rfs_file_io_end+0x148>       
                                                                      

0801f2c4 <rtems_rfs_file_io_release>: return rc; } int rtems_rfs_file_io_release (rtems_rfs_file_handle* handle) {
 801f2c4:	37 9c ff fc 	addi sp,sp,-4                                  
 801f2c8:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rc = 0;                                                         
  if (rtems_rfs_buffer_handle_has_block (&handle->buffer))            
 801f2cc:	28 23 00 0c 	lw r3,(r1+12)                                  
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_file_io_release (rtems_rfs_file_handle* handle)             
{                                                                     
 801f2d0:	b8 20 10 00 	mv r2,r1                                       
  int rc = 0;                                                         
 801f2d4:	34 01 00 00 	mvi r1,0                                       
  if (rtems_rfs_buffer_handle_has_block (&handle->buffer))            
 801f2d8:	44 60 00 05 	be r3,r0,801f2ec <rtems_rfs_file_io_release+0x28><== ALWAYS TAKEN
    rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 
 801f2dc:	28 41 00 1c 	lw r1,(r2+28)                                  <== NOT EXECUTED
 801f2e0:	34 42 00 04 	addi r2,r2,4                                   <== NOT EXECUTED
 801f2e4:	28 21 00 98 	lw r1,(r1+152)                                 <== NOT EXECUTED
 801f2e8:	fb ff f4 e5 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
                                          rtems_rfs_file_buffer (handle));
  return rc;                                                          
}                                                                     
 801f2ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801f2f0:	37 9c 00 04 	addi sp,sp,4                                   
 801f2f4:	c3 a0 00 00 	ret                                            
                                                                      

0801ee3c <rtems_rfs_file_io_start>: int rtems_rfs_file_io_start (rtems_rfs_file_handle* handle, size_t* available, bool read) {
 801ee3c:	37 9c ff e4 	addi sp,sp,-28                                 
 801ee40:	5b 8b 00 18 	sw (sp+24),r11                                 
 801ee44:	5b 8c 00 14 	sw (sp+20),r12                                 
 801ee48:	5b 8d 00 10 	sw (sp+16),r13                                 
 801ee4c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801ee50:	5b 8f 00 08 	sw (sp+8),r15                                  
 801ee54:	5b 9d 00 04 	sw (sp+4),ra                                   
 801ee58:	b8 20 58 00 	mv r11,r1                                      
 801ee5c:	b8 40 70 00 	mv r14,r2                                      
  size_t size;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801ee60:	34 01 00 20 	mvi r1,32                                      
 801ee64:	34 02 00 00 	mvi r2,0                                       
                                                                      
int                                                                   
rtems_rfs_file_io_start (rtems_rfs_file_handle* handle,               
                         size_t*                available,            
                         bool                   read)                 
{                                                                     
 801ee68:	20 6d 00 ff 	andi r13,r3,0xff                               
  size_t size;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801ee6c:	fb ff cc d5 	calli 80121c0 <rtems_rfs_trace>                
 801ee70:	44 20 00 0a 	be r1,r0,801ee98 <rtems_rfs_file_io_start+0x5c><== ALWAYS TAKEN
    printf ("rtems-rfs: file-io: start: %s pos=%" PRIu32 ":%" PRIu32 "\n",
 801ee74:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 801ee78:	38 a5 b9 00 	ori r5,r5,0xb900                               <== NOT EXECUTED
 801ee7c:	5d a0 00 2c 	bne r13,r0,801ef2c <rtems_rfs_file_io_start+0xf0><== NOT EXECUTED
 801ee80:	29 63 00 10 	lw r3,(r11+16)                                 <== NOT EXECUTED
 801ee84:	29 64 00 14 	lw r4,(r11+20)                                 <== NOT EXECUTED
 801ee88:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ee8c:	38 21 b9 08 	ori r1,r1,0xb908                               <== NOT EXECUTED
 801ee90:	b8 a0 10 00 	mv r2,r5                                       <== NOT EXECUTED
 801ee94:	f8 00 17 81 	calli 8024c98 <printf>                         <== NOT EXECUTED
            read ? "read" : "write",  handle->bpos.bno, handle->bpos.boff);
                                                                      
  if (!rtems_rfs_buffer_handle_has_block (&handle->buffer))           
 801ee98:	29 6f 00 0c 	lw r15,(r11+12)                                
 801ee9c:	45 e0 00 2c 	be r15,r0,801ef4c <rtems_rfs_file_io_start+0x110>
                                          block, request_read);       
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
 801eea0:	5d a0 00 1a 	bne r13,r0,801ef08 <rtems_rfs_file_io_start+0xcc><== NEVER TAKEN
 801eea4:	29 61 00 1c 	lw r1,(r11+28)                                 
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
    size = rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
  else                                                                
    size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));      
 801eea8:	28 21 00 98 	lw r1,(r1+152)                                 
 801eeac:	28 2d 00 08 	lw r13,(r1+8)                                  
                                                                      
  *available = size - rtems_rfs_file_block_offset (handle);           
 801eeb0:	29 63 00 14 	lw r3,(r11+20)                                 
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801eeb4:	34 01 00 20 	mvi r1,32                                      
 801eeb8:	34 02 00 00 	mvi r2,0                                       
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
    size = rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
  else                                                                
    size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));      
                                                                      
  *available = size - rtems_rfs_file_block_offset (handle);           
 801eebc:	c9 a3 18 00 	sub r3,r13,r3                                  
 801eec0:	59 c3 00 00 	sw (r14+0),r3                                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801eec4:	fb ff cc bf 	calli 80121c0 <rtems_rfs_trace>                
    printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",       
            *available, size);                                        
                                                                      
  return 0;                                                           
 801eec8:	34 0c 00 00 	mvi r12,0                                      
  else                                                                
    size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));      
                                                                      
  *available = size - rtems_rfs_file_block_offset (handle);           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801eecc:	44 20 00 06 	be r1,r0,801eee4 <rtems_rfs_file_io_start+0xa8><== ALWAYS TAKEN
    printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",       
 801eed0:	29 c2 00 00 	lw r2,(r14+0)                                  <== NOT EXECUTED
 801eed4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801eed8:	38 21 b9 8c 	ori r1,r1,0xb98c                               <== NOT EXECUTED
 801eedc:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 801eee0:	f8 00 17 6e 	calli 8024c98 <printf>                         <== NOT EXECUTED
            *available, size);                                        
                                                                      
  return 0;                                                           
}                                                                     
 801eee4:	b9 80 08 00 	mv r1,r12                                      
 801eee8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801eeec:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801eef0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801eef4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801eef8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801eefc:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801ef00:	37 9c 00 1c 	addi sp,sp,28                                  
 801ef04:	c3 a0 00 00 	ret                                            
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
 801ef08:	29 61 00 1c 	lw r1,(r11+28)                                 
 801ef0c:	28 22 00 44 	lw r2,(r1+68)                                  
 801ef10:	44 40 00 0a 	be r2,r0,801ef38 <rtems_rfs_file_io_start+0xfc>
 801ef14:	28 23 00 3c 	lw r3,(r1+60)                                  
 801ef18:	34 63 ff ff 	addi r3,r3,-1                                  
 801ef1c:	5c 43 ff e3 	bne r2,r3,801eea8 <rtems_rfs_file_io_start+0x6c>
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
 801ef20:	28 2d 00 40 	lw r13,(r1+64)                                 
 801ef24:	5d a0 ff e3 	bne r13,r0,801eeb0 <rtems_rfs_file_io_start+0x74>
 801ef28:	e3 ff ff e0 	bi 801eea8 <rtems_rfs_file_io_start+0x6c>      
                         bool                   read)                 
{                                                                     
  size_t size;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-io: start: %s pos=%" PRIu32 ":%" PRIu32 "\n",
 801ef2c:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 801ef30:	38 a5 a0 ec 	ori r5,r5,0xa0ec                               <== NOT EXECUTED
 801ef34:	e3 ff ff d3 	bi 801ee80 <rtems_rfs_file_io_start+0x44>      <== NOT EXECUTED
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
 801ef38:	28 23 00 3c 	lw r3,(r1+60)                                  
 801ef3c:	5c 62 ff f7 	bne r3,r2,801ef18 <rtems_rfs_file_io_start+0xdc><== ALWAYS TAKEN
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
 801ef40:	28 2d 00 40 	lw r13,(r1+64)                                 <== NOT EXECUTED
 801ef44:	5d a0 ff db 	bne r13,r0,801eeb0 <rtems_rfs_file_io_start+0x74><== NOT EXECUTED
 801ef48:	e3 ff ff d8 	bi 801eea8 <rtems_rfs_file_io_start+0x6c>      <== NOT EXECUTED
    bool                   request_read;                              
    int                    rc;                                        
                                                                      
    request_read = read;                                              
                                                                      
    rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),        
 801ef4c:	29 62 00 1c 	lw r2,(r11+28)                                 
 801ef50:	35 63 00 10 	addi r3,r11,16                                 
 801ef54:	37 84 00 1c 	addi r4,sp,28                                  
 801ef58:	28 41 00 98 	lw r1,(r2+152)                                 
 801ef5c:	34 42 00 34 	addi r2,r2,52                                  
 801ef60:	fb ff f2 64 	calli 801b8f0 <rtems_rfs_block_map_find>       
 801ef64:	b8 20 60 00 	mv r12,r1                                      
                                   rtems_rfs_file_map (handle),       
                                   rtems_rfs_file_bpos (handle),      
                                   &block);                           
    if (rc > 0)                                                       
 801ef68:	4d e1 00 07 	bge r15,r1,801ef84 <rtems_rfs_file_io_start+0x148>
    {                                                                 
      /*                                                              
       * Has the read reached the EOF ?                               
       */                                                             
      if (read && (rc == ENXIO))                                      
 801ef6c:	45 a0 00 29 	be r13,r0,801f010 <rtems_rfs_file_io_start+0x1d4><== ALWAYS TAKEN
 801ef70:	34 01 00 06 	mvi r1,6                                       <== NOT EXECUTED
 801ef74:	5d 81 ff dc 	bne r12,r1,801eee4 <rtems_rfs_file_io_start+0xa8><== NOT EXECUTED
      {                                                               
        *available = 0;                                               
 801ef78:	59 c0 00 00 	sw (r14+0),r0                                  <== NOT EXECUTED
        return 0;                                                     
 801ef7c:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 801ef80:	e3 ff ff d9 	bi 801eee4 <rtems_rfs_file_io_start+0xa8>      <== NOT EXECUTED
      /*                                                              
       * If this is a write check if the write starts within a block or the
       * amount of data is less than a block size. If it is read the block
       * rather than getting a block to fill.                         
       */                                                             
      if (!read &&                                                    
 801ef84:	34 0c 00 01 	mvi r12,1                                      
 801ef88:	34 0f 00 01 	mvi r15,1                                      
 801ef8c:	5d a0 00 0a 	bne r13,r0,801efb4 <rtems_rfs_file_io_start+0x178>
 801ef90:	29 61 00 14 	lw r1,(r11+20)                                 
 801ef94:	5c 2d 00 08 	bne r1,r13,801efb4 <rtems_rfs_file_io_start+0x178>
          (rtems_rfs_file_block_offset (handle) ||                    
           (*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
 801ef98:	29 61 00 1c 	lw r1,(r11+28)                                 
       * If this is a write check if the write starts within a block or the
       * amount of data is less than a block size. If it is read the block
       * rather than getting a block to fill.                         
       */                                                             
      if (!read &&                                                    
          (rtems_rfs_file_block_offset (handle) ||                    
 801ef9c:	29 c2 00 00 	lw r2,(r14+0)                                  
           (*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
 801efa0:	28 21 00 98 	lw r1,(r1+152)                                 
       * If this is a write check if the write starts within a block or the
       * amount of data is less than a block size. If it is read the block
       * rather than getting a block to fill.                         
       */                                                             
      if (!read &&                                                    
          (rtems_rfs_file_block_offset (handle) ||                    
 801efa4:	28 21 00 08 	lw r1,(r1+8)                                   
 801efa8:	54 22 00 03 	bgu r1,r2,801efb4 <rtems_rfs_file_io_start+0x178><== ALWAYS TAKEN
 801efac:	34 0c 00 00 	mvi r12,0                                      
 801efb0:	34 0f 00 00 	mvi r15,0                                      
           (*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
        request_read = true;                                          
    }                                                                 
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                    
 801efb4:	34 01 00 20 	mvi r1,32                                      
 801efb8:	34 02 00 00 	mvi r2,0                                       
 801efbc:	fb ff cc 81 	calli 80121c0 <rtems_rfs_trace>                
 801efc0:	44 20 00 0a 	be r1,r0,801efe8 <rtems_rfs_file_io_start+0x1ac><== ALWAYS TAKEN
      printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
 801efc4:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801efc8:	2b 82 00 1c 	lw r2,(sp+28)                                  <== NOT EXECUTED
 801efcc:	38 63 9b d0 	ori r3,r3,0x9bd0                               <== NOT EXECUTED
 801efd0:	5d e0 00 03 	bne r15,r0,801efdc <rtems_rfs_file_io_start+0x1a0><== NOT EXECUTED
 801efd4:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801efd8:	38 63 a0 70 	ori r3,r3,0xa070                               <== NOT EXECUTED
 801efdc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801efe0:	38 21 b9 54 	ori r1,r1,0xb954                               <== NOT EXECUTED
 801efe4:	f8 00 17 2d 	calli 8024c98 <printf>                         <== NOT EXECUTED
              block, request_read ? "yes" : "no");                    
                                                                      
    rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle), 
 801efe8:	29 61 00 1c 	lw r1,(r11+28)                                 
 801efec:	2b 83 00 1c 	lw r3,(sp+28)                                  
 801eff0:	b9 80 20 00 	mv r4,r12                                      
 801eff4:	28 21 00 98 	lw r1,(r1+152)                                 
 801eff8:	35 62 00 04 	addi r2,r11,4                                  
 801effc:	fb ff f6 12 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801f000:	b8 20 60 00 	mv r12,r1                                      
                                          rtems_rfs_file_buffer (handle),
                                          block, request_read);       
    if (rc > 0)                                                       
 801f004:	48 20 ff b8 	bg r1,r0,801eee4 <rtems_rfs_file_io_start+0xa8><== NEVER TAKEN
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
 801f008:	5d a0 ff c0 	bne r13,r0,801ef08 <rtems_rfs_file_io_start+0xcc>
 801f00c:	e3 ff ff a6 	bi 801eea4 <rtems_rfs_file_io_start+0x68>      
      {                                                               
        *available = 0;                                               
        return 0;                                                     
      }                                                               
                                                                      
      if (rc != ENXIO)                                                
 801f010:	34 01 00 06 	mvi r1,6                                       
 801f014:	5d 81 ff b4 	bne r12,r1,801eee4 <rtems_rfs_file_io_start+0xa8><== NEVER TAKEN
        return rc;                                                    
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                  
 801f018:	34 01 00 20 	mvi r1,32                                      
 801f01c:	34 02 00 00 	mvi r2,0                                       
 801f020:	fb ff cc 68 	calli 80121c0 <rtems_rfs_trace>                
 801f024:	5c 20 00 0a 	bne r1,r0,801f04c <rtems_rfs_file_io_start+0x210><== NEVER TAKEN
        printf ("rtems-rfs: file-io: start: grow\n");                 
                                                                      
      rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),      
 801f028:	29 62 00 1c 	lw r2,(r11+28)                                 
 801f02c:	34 03 00 01 	mvi r3,1                                       
 801f030:	37 84 00 1c 	addi r4,sp,28                                  
 801f034:	28 41 00 98 	lw r1,(r2+152)                                 
 801f038:	34 42 00 34 	addi r2,r2,52                                  
 801f03c:	fb ff f2 dc 	calli 801bbac <rtems_rfs_block_map_grow>       
 801f040:	b8 20 60 00 	mv r12,r1                                      
                                     rtems_rfs_file_map (handle),     
                                     1, &block);                      
      if (rc > 0)                                                     
 801f044:	48 20 ff a8 	bg r1,r0,801eee4 <rtems_rfs_file_io_start+0xa8><== NEVER TAKEN
 801f048:	e3 ff ff d9 	bi 801efac <rtems_rfs_file_io_start+0x170>     
                                                                      
      if (rc != ENXIO)                                                
        return rc;                                                    
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                  
        printf ("rtems-rfs: file-io: start: grow\n");                 
 801f04c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f050:	38 21 b9 34 	ori r1,r1,0xb934                               <== NOT EXECUTED
 801f054:	f8 00 17 d9 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801f058:	e3 ff ff f4 	bi 801f028 <rtems_rfs_file_io_start+0x1ec>     <== NOT EXECUTED
                                                                      

0801e680 <rtems_rfs_file_open>: int rtems_rfs_file_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, int oflag, rtems_rfs_file_handle** file) {
 801e680:	37 9c ff cc 	addi sp,sp,-52                                 
 801e684:	5b 8b 00 34 	sw (sp+52),r11                                 
 801e688:	5b 8c 00 30 	sw (sp+48),r12                                 
 801e68c:	5b 8d 00 2c 	sw (sp+44),r13                                 
 801e690:	5b 8e 00 28 	sw (sp+40),r14                                 
 801e694:	5b 8f 00 24 	sw (sp+36),r15                                 
 801e698:	5b 90 00 20 	sw (sp+32),r16                                 
 801e69c:	5b 91 00 1c 	sw (sp+28),r17                                 
 801e6a0:	5b 92 00 18 	sw (sp+24),r18                                 
 801e6a4:	5b 93 00 14 	sw (sp+20),r19                                 
 801e6a8:	5b 94 00 10 	sw (sp+16),r20                                 
 801e6ac:	5b 95 00 0c 	sw (sp+12),r21                                 
 801e6b0:	5b 96 00 08 	sw (sp+8),r22                                  
 801e6b4:	5b 9d 00 04 	sw (sp+4),ra                                   
 801e6b8:	b8 20 78 00 	mv r15,r1                                      
 801e6bc:	b8 40 68 00 	mv r13,r2                                      
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
 801e6c0:	34 01 00 08 	mvi r1,8                                       
 801e6c4:	34 02 00 00 	mvi r2,0                                       
int                                                                   
rtems_rfs_file_open (rtems_rfs_file_system*  fs,                      
                     rtems_rfs_ino           ino,                     
                     int                     oflag,                   
                     rtems_rfs_file_handle** file)                    
{                                                                     
 801e6c8:	b8 60 88 00 	mv r17,r3                                      
 801e6cc:	b8 80 80 00 	mv r16,r4                                      
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
 801e6d0:	fb ff ce bc 	calli 80121c0 <rtems_rfs_trace>                
 801e6d4:	5c 20 00 59 	bne r1,r0,801e838 <rtems_rfs_file_open+0x1b8>  <== NEVER TAKEN
    printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);          
                                                                      
  *file = NULL;                                                       
 801e6d8:	5a 00 00 00 	sw (r16+0),r0                                  
  /*                                                                  
   * Allocate a new handle and initialise it. Do this before we deal with the
   * shared node data so we do not have to be concerned with reference
   * counting.                                                        
   */                                                                 
  handle = malloc (sizeof (rtems_rfs_file_handle));                   
 801e6dc:	34 01 00 20 	mvi r1,32                                      
 801e6e0:	fb ff a3 41 	calli 80073e4 <malloc>                         
 801e6e4:	b8 20 58 00 	mv r11,r1                                      
  if (!handle)                                                        
    return ENOMEM;                                                    
 801e6e8:	34 0e 00 0c 	mvi r14,12                                     
   * Allocate a new handle and initialise it. Do this before we deal with the
   * shared node data so we do not have to be concerned with reference
   * counting.                                                        
   */                                                                 
  handle = malloc (sizeof (rtems_rfs_file_handle));                   
  if (!handle)                                                        
 801e6ec:	44 20 00 33 	be r1,r0,801e7b8 <rtems_rfs_file_open+0x138>   <== NEVER TAKEN
    if (shared->inode.ino == ino)                                     
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
}                                                                     
 801e6f0:	29 e5 00 74 	lw r5,(r15+116)                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
 801e6f4:	35 e2 00 78 	addi r2,r15,120                                
   */                                                                 
  handle = malloc (sizeof (rtems_rfs_file_handle));                   
  if (!handle)                                                        
    return ENOMEM;                                                    
                                                                      
  memset (handle, 0, sizeof (rtems_rfs_file_handle));                 
 801e6f8:	58 20 00 00 	sw (r1+0),r0                                   
 801e6fc:	58 20 00 04 	sw (r1+4),r0                                   
 801e700:	58 20 00 10 	sw (r1+16),r0                                  
 801e704:	58 20 00 14 	sw (r1+20),r0                                  
 801e708:	58 20 00 18 	sw (r1+24),r0                                  
 801e70c:	58 20 00 1c 	sw (r1+28),r0                                  
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
  handle->bnum  = 0;                                                  
 801e710:	58 20 00 08 	sw (r1+8),r0                                   
  handle->buffer = NULL;                                              
 801e714:	58 20 00 0c 	sw (r1+12),r0                                  
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
 801e718:	44 a2 00 0a 	be r5,r2,801e740 <rtems_rfs_file_open+0xc0>    
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
 801e71c:	28 a1 00 14 	lw r1,(r5+20)                                  
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
 801e720:	b8 a0 60 00 	mv r12,r5                                      
    if (shared->inode.ino == ino)                                     
 801e724:	5d a1 00 05 	bne r13,r1,801e738 <rtems_rfs_file_open+0xb8>  <== ALWAYS TAKEN
 801e728:	e0 00 00 34 	bi 801e7f8 <rtems_rfs_file_open+0x178>         <== NOT EXECUTED
 801e72c:	28 a6 00 14 	lw r6,(r5+20)                                  <== NOT EXECUTED
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
 801e730:	b8 a0 60 00 	mv r12,r5                                      <== NOT EXECUTED
    if (shared->inode.ino == ino)                                     
 801e734:	45 a6 00 31 	be r13,r6,801e7f8 <rtems_rfs_file_open+0x178>  <== NOT EXECUTED
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
}                                                                     
 801e738:	28 a5 00 00 	lw r5,(r5+0)                                   
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
 801e73c:	5c a2 ff fc 	bne r5,r2,801e72c <rtems_rfs_file_open+0xac>   <== NEVER TAKEN
  {                                                                   
    /*                                                                
     * None exists so create. Copy in the shared parts of the inode we hold in
     * memory.                                                        
     */                                                               
    shared = malloc (sizeof (rtems_rfs_file_shared));                 
 801e740:	34 01 00 9c 	mvi r1,156                                     
 801e744:	fb ff a3 28 	calli 80073e4 <malloc>                         
 801e748:	b8 20 90 00 	mv r18,r1                                      
 801e74c:	b8 20 60 00 	mv r12,r1                                      
    if (!shared)                                                      
 801e750:	44 20 00 47 	be r1,r0,801e86c <rtems_rfs_file_open+0x1ec>   <== NEVER TAKEN
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return ENOMEM;                                                  
    }                                                                 
                                                                      
    memset (shared, 0, sizeof (rtems_rfs_file_shared));               
 801e754:	34 02 00 00 	mvi r2,0                                       
 801e758:	34 03 00 9c 	mvi r3,156                                     
 801e75c:	f8 00 18 b3 	calli 8024a28 <memset>                         
                                                                      
    rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);        
 801e760:	36 53 00 0c 	addi r19,r18,12                                
 801e764:	b9 e0 08 00 	mv r1,r15                                      
 801e768:	b9 a0 10 00 	mv r2,r13                                      
 801e76c:	ba 60 18 00 	mv r3,r19                                      
 801e770:	34 04 00 01 	mvi r4,1                                       
 801e774:	fb ff c5 8e 	calli 800fdac <rtems_rfs_inode_open>           
 801e778:	b8 20 70 00 	mv r14,r1                                      
    if (rc > 0)                                                       
 801e77c:	4c 01 00 46 	bge r0,r1,801e894 <rtems_rfs_file_open+0x214>  <== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
 801e780:	34 01 00 08 	mvi r1,8                                       <== NOT EXECUTED
 801e784:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801e788:	fb ff ce 8e 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801e78c:	5c 20 00 30 	bne r1,r0,801e84c <rtems_rfs_file_open+0x1cc>  <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
        printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
                rc, strerror (rc));                                   
      rtems_rfs_inode_close (fs, &shared->inode);                     
      free (shared);                                                  
 801e790:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
 801e794:	fb ff a1 20 	calli 8006c14 <free>                           <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801e798:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801e79c:	35 62 00 04 	addi r2,r11,4                                  <== NOT EXECUTED
 801e7a0:	fb ff f7 b7 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
 801e7a4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 801e7a8:	31 60 00 04 	sb (r11+4),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801e7ac:	59 60 00 08 	sw (r11+8),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801e7b0:	59 60 00 0c 	sw (r11+12),r0                                 <== NOT EXECUTED
 801e7b4:	fb ff a1 18 	calli 8006c14 <free>                           <== NOT EXECUTED
  handle->shared = shared;                                            
                                                                      
  *file = handle;                                                     
                                                                      
  return 0;                                                           
}                                                                     
 801e7b8:	b9 c0 08 00 	mv r1,r14                                      
 801e7bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801e7c0:	2b 8b 00 34 	lw r11,(sp+52)                                 
 801e7c4:	2b 8c 00 30 	lw r12,(sp+48)                                 
 801e7c8:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 801e7cc:	2b 8e 00 28 	lw r14,(sp+40)                                 
 801e7d0:	2b 8f 00 24 	lw r15,(sp+36)                                 
 801e7d4:	2b 90 00 20 	lw r16,(sp+32)                                 
 801e7d8:	2b 91 00 1c 	lw r17,(sp+28)                                 
 801e7dc:	2b 92 00 18 	lw r18,(sp+24)                                 
 801e7e0:	2b 93 00 14 	lw r19,(sp+20)                                 
 801e7e4:	2b 94 00 10 	lw r20,(sp+16)                                 
 801e7e8:	2b 95 00 0c 	lw r21,(sp+12)                                 
 801e7ec:	2b 96 00 08 	lw r22,(sp+8)                                  
 801e7f0:	37 9c 00 34 	addi sp,sp,52                                  
 801e7f4:	c3 a0 00 00 	ret                                            
   * the reference count and return the pointer to the data.          
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, ino);                       
  if (shared)                                                         
  {                                                                   
    shared->references++;                                             
 801e7f8:	28 a3 00 08 	lw r3,(r5+8)                                   <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
 801e7fc:	34 01 00 08 	mvi r1,8                                       <== NOT EXECUTED
 801e800:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
   * the reference count and return the pointer to the data.          
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, ino);                       
  if (shared)                                                         
  {                                                                   
    shared->references++;                                             
 801e804:	34 63 00 01 	addi r3,r3,1                                   <== NOT EXECUTED
 801e808:	58 a3 00 08 	sw (r5+8),r3                                   <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
 801e80c:	fb ff ce 6d 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801e810:	44 20 00 05 	be r1,r0,801e824 <rtems_rfs_file_open+0x1a4>   <== NOT EXECUTED
      printf ("rtems-rfs: file-open: ino=%" PRId32 " shared\n", ino); 
 801e814:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e818:	38 21 b7 74 	ori r1,r1,0xb774                               <== NOT EXECUTED
 801e81c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 801e820:	f8 00 19 1e 	calli 8024c98 <printf>                         <== NOT EXECUTED
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
      printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
  }                                                                   
                                                                      
  handle->flags  = oflag;                                             
 801e824:	59 71 00 00 	sw (r11+0),r17                                 
  handle->shared = shared;                                            
 801e828:	59 6c 00 1c 	sw (r11+28),r12                                
                                                                      
  *file = handle;                                                     
 801e82c:	5a 0b 00 00 	sw (r16+0),r11                                 
                                                                      
  return 0;                                                           
 801e830:	34 0e 00 00 	mvi r14,0                                      
 801e834:	e3 ff ff e1 	bi 801e7b8 <rtems_rfs_file_open+0x138>         
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
    printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);          
 801e838:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e83c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 801e840:	38 21 b7 54 	ori r1,r1,0xb754                               <== NOT EXECUTED
 801e844:	f8 00 19 15 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e848:	e3 ff ff a4 	bi 801e6d8 <rtems_rfs_file_open+0x58>          <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);        
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
        printf ("rtems-rfs: file-open: inode open failed: %d: %s\n",  
 801e84c:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801e850:	f8 00 1d cd 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801e854:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801e858:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e85c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801e860:	38 21 b7 9c 	ori r1,r1,0xb79c                               <== NOT EXECUTED
 801e864:	f8 00 19 0d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801e868:	e3 ff ff ca 	bi 801e790 <rtems_rfs_file_open+0x110>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801e86c:	35 62 00 04 	addi r2,r11,4                                  <== NOT EXECUTED
 801e870:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801e874:	fb ff f7 82 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
     */                                                               
    shared = malloc (sizeof (rtems_rfs_file_shared));                 
    if (!shared)                                                      
    {                                                                 
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
 801e878:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 801e87c:	31 60 00 04 	sb (r11+4),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801e880:	59 60 00 08 	sw (r11+8),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801e884:	59 60 00 0c 	sw (r11+12),r0                                 <== NOT EXECUTED
      return ENOMEM;                                                  
 801e888:	34 0e 00 0c 	mvi r14,12                                     <== NOT EXECUTED
     */                                                               
    shared = malloc (sizeof (rtems_rfs_file_shared));                 
    if (!shared)                                                      
    {                                                                 
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
 801e88c:	fb ff a0 e2 	calli 8006c14 <free>                           <== NOT EXECUTED
      return ENOMEM;                                                  
 801e890:	e3 ff ff ca 	bi 801e7b8 <rtems_rfs_file_open+0x138>         <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map); 
 801e894:	b9 e0 08 00 	mv r1,r15                                      
 801e898:	ba 60 10 00 	mv r2,r19                                      
 801e89c:	36 43 00 34 	addi r3,r18,52                                 
 801e8a0:	fb ff f2 b5 	calli 801b374 <rtems_rfs_block_map_open>       
 801e8a4:	b8 20 70 00 	mv r14,r1                                      
    if (rc > 0)                                                       
 801e8a8:	4c 01 00 10 	bge r0,r1,801e8e8 <rtems_rfs_file_open+0x268>  <== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
 801e8ac:	34 01 00 08 	mvi r1,8                                       <== NOT EXECUTED
 801e8b0:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 801e8b4:	fb ff ce 43 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801e8b8:	44 20 00 08 	be r1,r0,801e8d8 <rtems_rfs_file_open+0x258>   <== NOT EXECUTED
        printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
 801e8bc:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801e8c0:	f8 00 1d b1 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801e8c4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801e8c8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801e8cc:	38 21 b7 d0 	ori r1,r1,0xb7d0                               <== NOT EXECUTED
 801e8d0:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801e8d4:	f8 00 18 f1 	calli 8024c98 <printf>                         <== NOT EXECUTED
                rc, strerror (rc));                                   
      rtems_rfs_inode_close (fs, &shared->inode);                     
 801e8d8:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 801e8dc:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801e8e0:	fb ff c5 cd 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
 801e8e4:	e3 ff ff ab 	bi 801e790 <rtems_rfs_file_open+0x110>         <== NOT EXECUTED
    if (shared->inode.ino == ino)                                     
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
}                                                                     
 801e8e8:	2a 4e 00 18 	lw r14,(r18+24)                                
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return rc;                                                      
    }                                                                 
                                                                      
    shared->references = 1;                                           
 801e8ec:	34 01 00 01 	mvi r1,1                                       
 801e8f0:	5a 41 00 08 	sw (r18+8),r1                                  
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801e8f4:	41 c1 00 0c 	lbu r1,(r14+12)                                
 801e8f8:	35 d2 00 0c 	addi r18,r14,12                                
 801e8fc:	42 54 00 03 	lbu r20,(r18+3)                                
 801e900:	34 02 00 18 	mvi r2,24                                      
 801e904:	f8 00 61 24 	calli 8036d94 <__ashlsi3>                      
 801e908:	ba 81 a0 00 	or r20,r20,r1                                  
 801e90c:	42 41 00 01 	lbu r1,(r18+1)                                 
 801e910:	34 02 00 10 	mvi r2,16                                      
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 801e914:	35 d5 00 10 	addi r21,r14,16                                
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801e918:	f8 00 61 1f 	calli 8036d94 <__ashlsi3>                      
 801e91c:	42 44 00 02 	lbu r4,(r18+2)                                 
 801e920:	ba 81 08 00 	or r1,r20,r1                                   
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 801e924:	34 02 00 18 	mvi r2,24                                      
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 801e928:	b4 84 20 00 	add r4,r4,r4                                   
 801e92c:	b4 84 20 00 	add r4,r4,r4                                   
 801e930:	b4 84 20 00 	add r4,r4,r4                                   
 801e934:	b4 84 20 00 	add r4,r4,r4                                   
 801e938:	b4 84 20 00 	add r4,r4,r4                                   
 801e93c:	b4 84 20 00 	add r4,r4,r4                                   
 801e940:	b4 84 20 00 	add r4,r4,r4                                   
 801e944:	b4 84 20 00 	add r4,r4,r4                                   
 801e948:	b8 24 08 00 	or r1,r1,r4                                    
    shared->size.count = rtems_rfs_inode_get_block_count (&shared->inode);
 801e94c:	59 81 00 84 	sw (r12+132),r1                                
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 801e950:	41 c1 00 0a 	lbu r1,(r14+10)                                
 801e954:	41 c3 00 0b 	lbu r3,(r14+11)                                
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 801e958:	35 d4 00 14 	addi r20,r14,20                                
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 801e95c:	b4 21 08 00 	add r1,r1,r1                                   
 801e960:	b4 21 08 00 	add r1,r1,r1                                   
 801e964:	b4 21 08 00 	add r1,r1,r1                                   
 801e968:	b4 21 08 00 	add r1,r1,r1                                   
 801e96c:	b4 21 08 00 	add r1,r1,r1                                   
 801e970:	b4 21 08 00 	add r1,r1,r1                                   
 801e974:	b4 21 08 00 	add r1,r1,r1                                   
 801e978:	b4 21 08 00 	add r1,r1,r1                                   
    shared->size.offset = rtems_rfs_inode_get_block_offset (&shared->inode);
 801e97c:	b8 23 08 00 	or r1,r1,r3                                    
 801e980:	59 81 00 88 	sw (r12+136),r1                                
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 801e984:	41 c1 00 10 	lbu r1,(r14+16)                                
 801e988:	42 b6 00 03 	lbu r22,(r21+3)                                
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 801e98c:	35 d2 00 18 	addi r18,r14,24                                
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 801e990:	f8 00 61 01 	calli 8036d94 <__ashlsi3>                      
 801e994:	ba c1 b0 00 	or r22,r22,r1                                  
 801e998:	42 a1 00 01 	lbu r1,(r21+1)                                 
 801e99c:	34 02 00 10 	mvi r2,16                                      
 801e9a0:	f8 00 60 fd 	calli 8036d94 <__ashlsi3>                      
 801e9a4:	42 a4 00 02 	lbu r4,(r21+2)                                 
 801e9a8:	ba c1 08 00 	or r1,r22,r1                                   
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 801e9ac:	34 02 00 18 	mvi r2,24                                      
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 801e9b0:	b4 84 20 00 	add r4,r4,r4                                   
 801e9b4:	b4 84 20 00 	add r4,r4,r4                                   
 801e9b8:	b4 84 20 00 	add r4,r4,r4                                   
 801e9bc:	b4 84 20 00 	add r4,r4,r4                                   
 801e9c0:	b4 84 20 00 	add r4,r4,r4                                   
 801e9c4:	b4 84 20 00 	add r4,r4,r4                                   
 801e9c8:	b4 84 20 00 	add r4,r4,r4                                   
 801e9cc:	b4 84 20 00 	add r4,r4,r4                                   
 801e9d0:	b8 24 08 00 	or r1,r1,r4                                    
    shared->atime = rtems_rfs_inode_get_atime (&shared->inode);       
 801e9d4:	59 81 00 8c 	sw (r12+140),r1                                
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 801e9d8:	41 c1 00 14 	lbu r1,(r14+20)                                
 801e9dc:	42 95 00 03 	lbu r21,(r20+3)                                
 801e9e0:	f8 00 60 ed 	calli 8036d94 <__ashlsi3>                      
 801e9e4:	ba a1 a8 00 	or r21,r21,r1                                  
 801e9e8:	42 81 00 01 	lbu r1,(r20+1)                                 
 801e9ec:	34 02 00 10 	mvi r2,16                                      
 801e9f0:	f8 00 60 e9 	calli 8036d94 <__ashlsi3>                      
 801e9f4:	42 84 00 02 	lbu r4,(r20+2)                                 
 801e9f8:	ba a1 08 00 	or r1,r21,r1                                   
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 801e9fc:	34 02 00 18 	mvi r2,24                                      
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 801ea00:	b4 84 20 00 	add r4,r4,r4                                   
 801ea04:	b4 84 20 00 	add r4,r4,r4                                   
 801ea08:	b4 84 20 00 	add r4,r4,r4                                   
 801ea0c:	b4 84 20 00 	add r4,r4,r4                                   
 801ea10:	b4 84 20 00 	add r4,r4,r4                                   
 801ea14:	b4 84 20 00 	add r4,r4,r4                                   
 801ea18:	b4 84 20 00 	add r4,r4,r4                                   
 801ea1c:	b4 84 20 00 	add r4,r4,r4                                   
 801ea20:	b8 24 08 00 	or r1,r1,r4                                    
    shared->mtime = rtems_rfs_inode_get_mtime (&shared->inode);       
 801ea24:	59 81 00 90 	sw (r12+144),r1                                
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 801ea28:	41 c1 00 18 	lbu r1,(r14+24)                                
 801ea2c:	42 4e 00 03 	lbu r14,(r18+3)                                
 801ea30:	f8 00 60 d9 	calli 8036d94 <__ashlsi3>                      
 801ea34:	b9 c1 70 00 	or r14,r14,r1                                  
 801ea38:	42 41 00 01 	lbu r1,(r18+1)                                 
 801ea3c:	34 02 00 10 	mvi r2,16                                      
 801ea40:	f8 00 60 d5 	calli 8036d94 <__ashlsi3>                      
 801ea44:	42 44 00 02 	lbu r4,(r18+2)                                 
 801ea48:	b9 c1 08 00 	or r1,r14,r1                                   
 801ea4c:	b9 80 10 00 	mv r2,r12                                      
 801ea50:	b4 84 20 00 	add r4,r4,r4                                   
 801ea54:	b4 84 20 00 	add r4,r4,r4                                   
 801ea58:	b4 84 20 00 	add r4,r4,r4                                   
 801ea5c:	b4 84 20 00 	add r4,r4,r4                                   
 801ea60:	b4 84 20 00 	add r4,r4,r4                                   
 801ea64:	b4 84 20 00 	add r4,r4,r4                                   
 801ea68:	b4 84 20 00 	add r4,r4,r4                                   
 801ea6c:	b4 84 20 00 	add r4,r4,r4                                   
 801ea70:	b8 24 08 00 	or r1,r1,r4                                    
    shared->ctime = rtems_rfs_inode_get_ctime (&shared->inode);       
 801ea74:	59 81 00 94 	sw (r12+148),r1                                
    shared->fs = fs;                                                  
 801ea78:	59 8f 00 98 	sw (r12+152),r15                               
 801ea7c:	35 e1 00 74 	addi r1,r15,116                                
 801ea80:	fb ff af d8 	calli 800a9e0 <_Chain_Append>                  
                                                                      
    rtems_chain_append (&fs->file_shares, &shared->link);             
                                                                      
    rtems_rfs_inode_unload (fs, &shared->inode, false);               
 801ea84:	ba 60 10 00 	mv r2,r19                                      
 801ea88:	b9 e0 08 00 	mv r1,r15                                      
 801ea8c:	34 03 00 00 	mvi r3,0                                       
 801ea90:	fb ff c5 16 	calli 800fee8 <rtems_rfs_inode_unload>         
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
 801ea94:	34 01 00 08 	mvi r1,8                                       
 801ea98:	34 02 00 00 	mvi r2,0                                       
 801ea9c:	fb ff cd c9 	calli 80121c0 <rtems_rfs_trace>                
 801eaa0:	44 20 ff 61 	be r1,r0,801e824 <rtems_rfs_file_open+0x1a4>   <== ALWAYS TAKEN
      printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
 801eaa4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801eaa8:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 801eaac:	38 21 b8 08 	ori r1,r1,0xb808                               <== NOT EXECUTED
 801eab0:	f8 00 18 7a 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801eab4:	e3 ff ff 5c 	bi 801e824 <rtems_rfs_file_open+0x1a4>         <== NOT EXECUTED
                                                                      

0801f2f8 <rtems_rfs_file_seek>: int rtems_rfs_file_seek (rtems_rfs_file_handle* handle, rtems_rfs_pos pos, rtems_rfs_pos* new_pos) {
 801f2f8:	37 9c ff e4 	addi sp,sp,-28                                 
 801f2fc:	5b 8b 00 18 	sw (sp+24),r11                                 
 801f300:	5b 8c 00 14 	sw (sp+20),r12                                 
 801f304:	5b 8d 00 10 	sw (sp+16),r13                                 
 801f308:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801f30c:	5b 8f 00 08 	sw (sp+8),r15                                  
 801f310:	5b 9d 00 04 	sw (sp+4),ra                                   
 801f314:	b8 20 58 00 	mv r11,r1                                      
 801f318:	b8 40 60 00 	mv r12,r2                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f31c:	34 01 00 20 	mvi r1,32                                      
 801f320:	34 02 00 00 	mvi r2,0                                       
                                                                      
int                                                                   
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,                   
                     rtems_rfs_pos          pos,                      
                     rtems_rfs_pos*         new_pos)                  
{                                                                     
 801f324:	b8 60 68 00 	mv r13,r3                                      
 801f328:	b8 80 70 00 	mv r14,r4                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f32c:	fb ff cb a5 	calli 80121c0 <rtems_rfs_trace>                
 801f330:	5c 20 00 33 	bne r1,r0,801f3fc <rtems_rfs_file_seek+0x104>  <== NEVER TAKEN
   *     file, this function does not itself extend the size of the file."
   *                                                                  
   * This means the file needs to set the file size to the pos only when a
   * write occurs.                                                    
   */                                                                 
  if (pos <= rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (handle),
 801f334:	29 62 00 1c 	lw r2,(r11+28)                                 
 801f338:	28 41 00 98 	lw r1,(r2+152)                                 
 801f33c:	34 42 00 84 	addi r2,r2,132                                 
 801f340:	fb ff ef f3 	calli 801b30c <rtems_rfs_block_get_size>       
 801f344:	55 81 00 25 	bgu r12,r1,801f3d8 <rtems_rfs_file_seek+0xe0>  <== NEVER TAKEN
 801f348:	45 81 00 2b 	be r12,r1,801f3f4 <rtems_rfs_file_seek+0xfc>   <== ALWAYS TAKEN
                                            handle->shared))          
  {                                                                   
    rtems_rfs_file_set_bpos (handle, pos);                            
 801f34c:	29 61 00 1c 	lw r1,(r11+28)                                 
 801f350:	35 6f 00 10 	addi r15,r11,16                                
 801f354:	b9 80 10 00 	mv r2,r12                                      
 801f358:	28 21 00 98 	lw r1,(r1+152)                                 
 801f35c:	b9 a0 18 00 	mv r3,r13                                      
 801f360:	b9 e0 20 00 	mv r4,r15                                      
 801f364:	fb ff ef 96 	calli 801b1bc <rtems_rfs_block_get_bpos>       
    /*                                                                
     * If the file has a block check if it maps to the current position and it
     * does not release it. That will force us to get the block at the new
     * position when the I/O starts.                                  
     */                                                               
    if (rtems_rfs_buffer_handle_has_block (&handle->buffer))          
 801f368:	29 61 00 0c 	lw r1,(r11+12)                                 
 801f36c:	44 20 00 10 	be r1,r0,801f3ac <rtems_rfs_file_seek+0xb4>    
    {                                                                 
      rtems_rfs_buffer_block block;                                   
      int                    rc;                                      
                                                                      
      rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),      
 801f370:	29 62 00 1c 	lw r2,(r11+28)                                 
 801f374:	b9 e0 18 00 	mv r3,r15                                      
 801f378:	37 84 00 1c 	addi r4,sp,28                                  
 801f37c:	28 41 00 98 	lw r1,(r2+152)                                 
 801f380:	34 42 00 34 	addi r2,r2,52                                  
 801f384:	fb ff f1 5b 	calli 801b8f0 <rtems_rfs_block_map_find>       
                                     rtems_rfs_file_map (handle),     
                                     rtems_rfs_file_bpos (handle),    
                                     &block);                         
      if (rc > 0)                                                     
 801f388:	48 20 00 0c 	bg r1,r0,801f3b8 <rtems_rfs_file_seek+0xc0>    <== NEVER TAKEN
        return rc;                                                    
      if (rtems_rfs_buffer_bnum (&handle->buffer) != block)           
 801f38c:	29 62 00 08 	lw r2,(r11+8)                                  
 801f390:	2b 81 00 1c 	lw r1,(sp+28)                                  
 801f394:	44 41 00 06 	be r2,r1,801f3ac <rtems_rfs_file_seek+0xb4>    <== ALWAYS TAKEN
      {                                                               
        rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
 801f398:	29 61 00 1c 	lw r1,(r11+28)                                 <== NOT EXECUTED
 801f39c:	35 62 00 04 	addi r2,r11,4                                  <== NOT EXECUTED
 801f3a0:	28 21 00 98 	lw r1,(r1+152)                                 <== NOT EXECUTED
 801f3a4:	fb ff f4 b6 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
                                              rtems_rfs_file_buffer (handle));
        if (rc > 0)                                                   
 801f3a8:	48 20 00 04 	bg r1,r0,801f3b8 <rtems_rfs_file_seek+0xc0>    <== NOT EXECUTED
    int rc = rtems_rfs_file_io_release (handle);                      
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  *new_pos = pos;                                                     
 801f3ac:	59 cc 00 00 	sw (r14+0),r12                                 
 801f3b0:	59 cd 00 04 	sw (r14+4),r13                                 
  return 0;                                                           
 801f3b4:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801f3b8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801f3bc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801f3c0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801f3c4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801f3c8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801f3cc:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801f3d0:	37 9c 00 1c 	addi sp,sp,28                                  
 801f3d4:	c3 a0 00 00 	ret                                            
  {                                                                   
    /*                                                                
     * The seek is outside the current file so release any buffer. A write will
     * extend the file.                                               
     */                                                               
    int rc = rtems_rfs_file_io_release (handle);                      
 801f3d8:	b9 60 08 00 	mv r1,r11                                      
 801f3dc:	fb ff ff ba 	calli 801f2c4 <rtems_rfs_file_io_release>      
    if (rc > 0)                                                       
 801f3e0:	48 20 ff f6 	bg r1,r0,801f3b8 <rtems_rfs_file_seek+0xc0>    <== NEVER TAKEN
      return rc;                                                      
  }                                                                   
                                                                      
  *new_pos = pos;                                                     
 801f3e4:	59 cc 00 00 	sw (r14+0),r12                                 
 801f3e8:	59 cd 00 04 	sw (r14+4),r13                                 
  return 0;                                                           
 801f3ec:	34 01 00 00 	mvi r1,0                                       
 801f3f0:	e3 ff ff f2 	bi 801f3b8 <rtems_rfs_file_seek+0xc0>          
   *     file, this function does not itself extend the size of the file."
   *                                                                  
   * This means the file needs to set the file size to the pos only when a
   * write occurs.                                                    
   */                                                                 
  if (pos <= rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (handle),
 801f3f4:	55 a2 ff f9 	bgu r13,r2,801f3d8 <rtems_rfs_file_seek+0xe0>  
 801f3f8:	e3 ff ff d5 	bi 801f34c <rtems_rfs_file_seek+0x54>          
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,                   
                     rtems_rfs_pos          pos,                      
                     rtems_rfs_pos*         new_pos)                  
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-seek: new=%" PRIu64 "\n", pos);          
 801f3fc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f400:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801f404:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 801f408:	38 21 ba 5c 	ori r1,r1,0xba5c                               <== NOT EXECUTED
 801f40c:	f8 00 16 23 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801f410:	e3 ff ff c9 	bi 801f334 <rtems_rfs_file_seek+0x3c>          <== NOT EXECUTED
                                                                      

0801f414 <rtems_rfs_file_set_size>: } int rtems_rfs_file_set_size (rtems_rfs_file_handle* handle, rtems_rfs_pos new_size) {
 801f414:	37 9c ff b8 	addi sp,sp,-72                                 
 801f418:	5b 8b 00 38 	sw (sp+56),r11                                 
 801f41c:	5b 8c 00 34 	sw (sp+52),r12                                 
 801f420:	5b 8d 00 30 	sw (sp+48),r13                                 
 801f424:	5b 8e 00 2c 	sw (sp+44),r14                                 
 801f428:	5b 8f 00 28 	sw (sp+40),r15                                 
 801f42c:	5b 90 00 24 	sw (sp+36),r16                                 
 801f430:	5b 91 00 20 	sw (sp+32),r17                                 
 801f434:	5b 92 00 1c 	sw (sp+28),r18                                 
 801f438:	5b 93 00 18 	sw (sp+24),r19                                 
 801f43c:	5b 94 00 14 	sw (sp+20),r20                                 
 801f440:	5b 95 00 10 	sw (sp+16),r21                                 
 801f444:	5b 96 00 0c 	sw (sp+12),r22                                 
 801f448:	5b 97 00 08 	sw (sp+8),r23                                  
 801f44c:	5b 9d 00 04 	sw (sp+4),ra                                   
 801f450:	b8 20 60 00 	mv r12,r1                                      
 801f454:	b8 40 80 00 	mv r16,r2                                      
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f458:	34 01 00 20 	mvi r1,32                                      
 801f45c:	34 02 00 00 	mvi r2,0                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,               
                         rtems_rfs_pos          new_size)             
{                                                                     
 801f460:	b8 60 78 00 	mv r15,r3                                      
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
 801f464:	29 8d 00 1c 	lw r13,(r12+28)                                
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
 801f468:	fb ff cb 56 	calli 80121c0 <rtems_rfs_trace>                
 801f46c:	5c 20 00 a1 	bne r1,r0,801f6f0 <rtems_rfs_file_set_size+0x2dc><== NEVER TAKEN
    printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
                                                                      
  size = rtems_rfs_file_size (handle);                                
 801f470:	29 82 00 1c 	lw r2,(r12+28)                                 
 801f474:	28 41 00 98 	lw r1,(r2+152)                                 
 801f478:	34 42 00 84 	addi r2,r2,132                                 
 801f47c:	fb ff ef a4 	calli 801b30c <rtems_rfs_block_get_size>       
  /*                                                                  
   * If the file is same size do nothing else grow or shrink it ?     
   *                                                                  
   * If the file does not change size do not update the times.        
   */                                                                 
  if (size != new_size)                                               
 801f480:	46 01 00 a6 	be r16,r1,801f718 <rtems_rfs_file_set_size+0x304><== ALWAYS TAKEN
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
 801f484:	ba 0f 70 00 	or r14,r16,r15                                 <== NOT EXECUTED
                                                                      
int                                                                   
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,               
                         rtems_rfs_pos          new_size)             
{                                                                     
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
 801f488:	35 b1 00 34 	addi r17,r13,52                                <== NOT EXECUTED
  if (size != new_size)                                               
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
 801f48c:	45 c0 00 a8 	be r14,r0,801f72c <rtems_rfs_file_set_size+0x318><== NOT EXECUTED
      if (rc > 0)                                                     
        return rc;                                                    
    }                                                                 
    else                                                              
    {                                                                 
      if (size < new_size)                                            
 801f490:	56 01 00 39 	bgu r16,r1,801f574 <rtems_rfs_file_set_size+0x160><== NEVER TAKEN
 801f494:	46 01 00 ad 	be r16,r1,801f748 <rtems_rfs_file_set_size+0x334><== ALWAYS TAKEN
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
 801f498:	29 8b 00 1c 	lw r11,(r12+28)                                
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
 801f49c:	35 e2 ff ff 	addi r2,r15,-1                                 
 801f4a0:	f5 e2 18 00 	cmpgu r3,r15,r2                                
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
 801f4a4:	29 72 00 98 	lw r18,(r11+152)                               
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
 801f4a8:	36 01 ff ff 	addi r1,r16,-1                                 
 801f4ac:	b4 61 08 00 	add r1,r3,r1                                   
 801f4b0:	2a 51 00 08 	lw r17,(r18+8)                                 
 801f4b4:	34 03 00 00 	mvi r3,0                                       
         */                                                           
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
 801f4b8:	29 ae 00 3c 	lw r14,(r13+60)                                
          (((new_size - 1) /                                          
 801f4bc:	ba 20 20 00 	mv r4,r17                                      
 801f4c0:	f8 00 4d 7f 	calli 8032abc <__udivdi3>                      
         * Shrink                                                     
         */                                                           
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
 801f4c4:	a4 40 10 00 	not r2,r2                                      
 801f4c8:	b4 4e 18 00 	add r3,r2,r14                                  
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
                                                                      
        offset =                                                      
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
                                                                      
        if (blocks)                                                   
 801f4cc:	5c 60 00 a8 	bne r3,r0,801f76c <rtems_rfs_file_set_size+0x358>
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
                                                                      
        offset =                                                      
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
 801f4d0:	34 03 00 00 	mvi r3,0                                       
 801f4d4:	ba 00 08 00 	mv r1,r16                                      
 801f4d8:	b9 e0 10 00 	mv r2,r15                                      
 801f4dc:	ba 20 20 00 	mv r4,r17                                      
 801f4e0:	f8 00 4f 65 	calli 8033274 <__umoddi3>                      
            return rc;                                                
        }                                                             
                                                                      
        rtems_rfs_block_map_set_size_offset (map, offset);            
                                                                      
        if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
 801f4e4:	29 81 00 10 	lw r1,(r12+16)                                 
 801f4e8:	34 03 00 01 	mvi r3,1                                       
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
 801f4ec:	59 a2 00 40 	sw (r13+64),r2                                 
  map->dirty = true;                                                  
 801f4f0:	31 a3 00 34 	sb (r13+52),r3                                 
 801f4f4:	44 20 00 97 	be r1,r0,801f750 <rtems_rfs_file_set_size+0x33c>
 801f4f8:	5d c0 00 96 	bne r14,r0,801f750 <rtems_rfs_file_set_size+0x33c><== ALWAYS TAKEN
                                          rtems_rfs_block_map_size (map)))
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
 801f4fc:	59 8e 00 10 	sw (r12+16),r14                                
 801f500:	59 82 00 14 	sw (r12+20),r2                                 
 801f504:	59 80 00 18 	sw (r12+24),r0                                 
 801f508:	44 40 00 03 	be r2,r0,801f514 <rtems_rfs_file_set_size+0x100><== NEVER TAKEN
 801f50c:	35 c1 ff ff 	addi r1,r14,-1                                 
 801f510:	59 81 00 10 	sw (r12+16),r1                                 
 801f514:	b9 60 a0 00 	mv r20,r11                                     
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f518:	29 81 00 00 	lw r1,(r12+0)                                  
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
                                         rtems_rfs_file_bpos (handle));
      }                                                               
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
 801f51c:	5a 8e 00 84 	sw (r20+132),r14                               
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
 801f520:	5a 82 00 88 	sw (r20+136),r2                                
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f524:	20 21 00 02 	andi r1,r1,0x2                                 
      handle->shared->mtime = time (NULL);                            
  }                                                                   
                                                                      
  return 0;                                                           
 801f528:	34 0b 00 00 	mvi r11,0                                      
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f52c:	44 20 00 68 	be r1,r0,801f6cc <rtems_rfs_file_set_size+0x2b8><== ALWAYS TAKEN
      handle->shared->mtime = time (NULL);                            
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 801f530:	b9 60 08 00 	mv r1,r11                                      
 801f534:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801f538:	2b 8b 00 38 	lw r11,(sp+56)                                 
 801f53c:	2b 8c 00 34 	lw r12,(sp+52)                                 
 801f540:	2b 8d 00 30 	lw r13,(sp+48)                                 
 801f544:	2b 8e 00 2c 	lw r14,(sp+44)                                 
 801f548:	2b 8f 00 28 	lw r15,(sp+40)                                 
 801f54c:	2b 90 00 24 	lw r16,(sp+36)                                 
 801f550:	2b 91 00 20 	lw r17,(sp+32)                                 
 801f554:	2b 92 00 1c 	lw r18,(sp+28)                                 
 801f558:	2b 93 00 18 	lw r19,(sp+24)                                 
 801f55c:	2b 94 00 14 	lw r20,(sp+20)                                 
 801f560:	2b 95 00 10 	lw r21,(sp+16)                                 
 801f564:	2b 96 00 0c 	lw r22,(sp+12)                                 
 801f568:	2b 97 00 08 	lw r23,(sp+8)                                  
 801f56c:	37 9c 00 48 	addi sp,sp,72                                  
 801f570:	c3 a0 00 00 	ret                                            
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
 801f574:	29 94 00 1c 	lw r20,(r12+28)                                
         */                                                           
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
 801f578:	c9 e2 70 00 	sub r14,r15,r2                                 
 801f57c:	f5 cf 78 00 	cmpgu r15,r14,r15                              
 801f580:	ca 01 80 00 	sub r16,r16,r1                                 
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
 801f584:	2a 82 00 98 	lw r2,(r20+152)                                
         */                                                           
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
 801f588:	ca 0f 78 00 	sub r15,r16,r15                                
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
 801f58c:	b9 ee 08 00 	or r1,r15,r14                                  
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
 801f590:	ba 80 58 00 	mv r11,r20                                     
 801f594:	28 50 00 08 	lw r16,(r2+8)                                  
        read_block = false;                                           
                                                                      
        while (count)                                                 
 801f598:	34 16 00 00 	mvi r22,0                                      
 801f59c:	37 95 00 3c 	addi r21,sp,60                                 
          if (rc > 0)                                                 
          {                                                           
            /*                                                        
             * Have we reached the EOF ?                              
             */                                                       
            if (rc != ENXIO)                                          
 801f5a0:	34 17 00 06 	mvi r23,6                                      
 801f5a4:	34 12 00 01 	mvi r18,1                                      
          }                                                           
                                                                      
          /*                                                          
           * Only read the block if the length is not the block size. 
           */                                                         
          rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
 801f5a8:	35 93 00 04 	addi r19,r12,4                                 
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
 801f5ac:	5c 20 00 03 	bne r1,r0,801f5b8 <rtems_rfs_file_set_size+0x1a4><== ALWAYS TAKEN
 801f5b0:	e0 00 00 3f 	bi 801f6ac <rtems_rfs_file_set_size+0x298>     <== NOT EXECUTED
 801f5b4:	29 8b 00 1c 	lw r11,(r12+28)                                
          /*                                                          
           * Get the block position for the current end of the file as seen by
           * the map. If not found and the EOF grow the map then fill the block
           * with 0.                                                  
           */                                                         
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map), &bpos);
 801f5b8:	29 a1 00 3c 	lw r1,(r13+60)                                 
 801f5bc:	29 a2 00 40 	lw r2,(r13+64)                                 
 801f5c0:	5b 80 00 44 	sw (sp+68),r0                                  
 801f5c4:	5b 81 00 3c 	sw (sp+60),r1                                  
 801f5c8:	5b 82 00 40 	sw (sp+64),r2                                  
 801f5cc:	44 40 00 03 	be r2,r0,801f5d8 <rtems_rfs_file_set_size+0x1c4>
 801f5d0:	34 21 ff ff 	addi r1,r1,-1                                  
 801f5d4:	5b 81 00 3c 	sw (sp+60),r1                                  
          rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),  
 801f5d8:	29 61 00 98 	lw r1,(r11+152)                                
 801f5dc:	ba 20 10 00 	mv r2,r17                                      
 801f5e0:	ba a0 18 00 	mv r3,r21                                      
 801f5e4:	37 84 00 48 	addi r4,sp,72                                  
 801f5e8:	fb ff f0 c2 	calli 801b8f0 <rtems_rfs_block_map_find>       
 801f5ec:	b8 20 58 00 	mv r11,r1                                      
                                         map, &bpos, &block);         
          if (rc > 0)                                                 
 801f5f0:	4c 01 00 0a 	bge r0,r1,801f618 <rtems_rfs_file_set_size+0x204>
          {                                                           
            /*                                                        
             * Have we reached the EOF ?                              
             */                                                       
            if (rc != ENXIO)                                          
 801f5f4:	5c 37 ff cf 	bne r1,r23,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
              return rc;                                              
                                                                      
            rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
 801f5f8:	29 81 00 1c 	lw r1,(r12+28)                                 
 801f5fc:	ba 20 10 00 	mv r2,r17                                      
 801f600:	34 03 00 01 	mvi r3,1                                       
 801f604:	28 21 00 98 	lw r1,(r1+152)                                 
 801f608:	37 84 00 48 	addi r4,sp,72                                  
 801f60c:	fb ff f1 68 	calli 801bbac <rtems_rfs_block_map_grow>       
 801f610:	b8 20 58 00 	mv r11,r1                                      
                                           map, 1, &block);           
            if (rc > 0)                                               
 801f614:	48 20 ff c7 	bg r1,r0,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
              return rc;                                              
          }                                                           
                                                                      
          if (count < (length - bpos.boff))                           
 801f618:	2b 81 00 40 	lw r1,(sp+64)                                  
 801f61c:	ca 01 10 00 	sub r2,r16,r1                                  
 801f620:	5c 0f 00 02 	bne r0,r15,801f628 <rtems_rfs_file_set_size+0x214><== NEVER TAKEN
 801f624:	54 4e 00 2d 	bgu r2,r14,801f6d8 <rtems_rfs_file_set_size+0x2c4>
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
 801f628:	59 a0 00 40 	sw (r13+64),r0                                 
  map->dirty = true;                                                  
 801f62c:	31 b2 00 34 	sb (r13+52),r18                                
 801f630:	ba c0 20 00 	mv r4,r22                                      
          }                                                           
                                                                      
          /*                                                          
           * Only read the block if the length is not the block size. 
           */                                                         
          rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
 801f634:	29 81 00 1c 	lw r1,(r12+28)                                 
 801f638:	2b 83 00 48 	lw r3,(sp+72)                                  
 801f63c:	ba 60 10 00 	mv r2,r19                                      
 801f640:	28 21 00 98 	lw r1,(r1+152)                                 
 801f644:	fb ff f4 80 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801f648:	b8 20 58 00 	mv r11,r1                                      
                                                rtems_rfs_file_buffer (handle),
                                                block, read_block);   
          if (rc > 0)                                                 
 801f64c:	48 20 ff b9 	bg r1,r0,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
            return rc;                                                
                                                                      
          dst = rtems_rfs_buffer_data (&handle->buffer);              
 801f650:	29 83 00 0c 	lw r3,(r12+12)                                 
          memset (dst + bpos.boff, 0, length - bpos.boff);            
 801f654:	2b 81 00 40 	lw r1,(sp+64)                                  
 801f658:	34 02 00 00 	mvi r2,0                                       
 801f65c:	28 64 00 1c 	lw r4,(r3+28)                                  
 801f660:	ca 01 18 00 	sub r3,r16,r1                                  
 801f664:	b4 81 08 00 	add r1,r4,r1                                   
 801f668:	f8 00 14 f0 	calli 8024a28 <memset>                         
                                                                      
          rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
                                                                      
          rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
 801f66c:	29 81 00 1c 	lw r1,(r12+28)                                 
            return rc;                                                
                                                                      
          dst = rtems_rfs_buffer_data (&handle->buffer);              
          memset (dst + bpos.boff, 0, length - bpos.boff);            
                                                                      
          rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
 801f670:	31 92 00 04 	sb (r12+4),r18                                 
                                                                      
          rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
 801f674:	ba 60 10 00 	mv r2,r19                                      
 801f678:	28 21 00 98 	lw r1,(r1+152)                                 
 801f67c:	fb ff f4 00 	calli 801c67c <rtems_rfs_buffer_handle_release>
 801f680:	b8 20 58 00 	mv r11,r1                                      
                                                rtems_rfs_file_buffer (handle));
          if (rc > 0)                                                 
 801f684:	48 20 ff ab 	bg r1,r0,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
            return rc;                                                
                                                                      
          count -= length - bpos.boff;                                
 801f688:	2b 81 00 40 	lw r1,(sp+64)                                  
 801f68c:	ca 01 08 00 	sub r1,r16,r1                                  
 801f690:	c9 c1 08 00 	sub r1,r14,r1                                  
 801f694:	f4 2e 10 00 	cmpgu r2,r1,r14                                
 801f698:	b8 20 70 00 	mv r14,r1                                      
 801f69c:	c9 e2 78 00 	sub r15,r15,r2                                 
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
 801f6a0:	b9 e1 08 00 	or r1,r15,r1                                   
 801f6a4:	5c 20 ff c4 	bne r1,r0,801f5b4 <rtems_rfs_file_set_size+0x1a0>
 801f6a8:	29 94 00 1c 	lw r20,(r12+28)                                
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f6ac:	29 81 00 00 	lw r1,(r12+0)                                  
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
 801f6b0:	29 ae 00 3c 	lw r14,(r13+60)                                
 801f6b4:	29 a2 00 40 	lw r2,(r13+64)                                 
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f6b8:	20 21 00 02 	andi r1,r1,0x2                                 
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
                                         rtems_rfs_file_bpos (handle));
      }                                                               
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
 801f6bc:	5a 8e 00 84 	sw (r20+132),r14                               
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
 801f6c0:	5a 82 00 88 	sw (r20+136),r2                                
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
      handle->shared->mtime = time (NULL);                            
  }                                                                   
                                                                      
  return 0;                                                           
 801f6c4:	34 0b 00 00 	mvi r11,0                                      
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
 801f6c8:	5c 20 ff 9a 	bne r1,r0,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
      handle->shared->mtime = time (NULL);                            
 801f6cc:	f8 00 25 2f 	calli 8028b88 <time>                           
 801f6d0:	5a 81 00 90 	sw (r20+144),r1                                
 801f6d4:	e3 ff ff 97 	bi 801f530 <rtems_rfs_file_set_size+0x11c>     
              return rc;                                              
          }                                                           
                                                                      
          if (count < (length - bpos.boff))                           
          {                                                           
            length = count + bpos.boff;                               
 801f6d8:	b4 2e 80 00 	add r16,r1,r14                                 
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
 801f6dc:	59 b0 00 40 	sw (r13+64),r16                                
  map->dirty = true;                                                  
 801f6e0:	31 b2 00 34 	sb (r13+52),r18                                
 801f6e4:	34 04 00 01 	mvi r4,1                                       
            read_block = true;                                        
 801f6e8:	34 16 00 01 	mvi r22,1                                      
 801f6ec:	e3 ff ff d2 	bi 801f634 <rtems_rfs_file_set_size+0x220>     
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
 801f6f0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f6f4:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 801f6f8:	38 21 ba 7c 	ori r1,r1,0xba7c                               <== NOT EXECUTED
 801f6fc:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 801f700:	f8 00 15 66 	calli 8024c98 <printf>                         <== NOT EXECUTED
                                                                      
  size = rtems_rfs_file_size (handle);                                
 801f704:	29 82 00 1c 	lw r2,(r12+28)                                 <== NOT EXECUTED
 801f708:	28 41 00 98 	lw r1,(r2+152)                                 <== NOT EXECUTED
 801f70c:	34 42 00 84 	addi r2,r2,132                                 <== NOT EXECUTED
 801f710:	fb ff ee ff 	calli 801b30c <rtems_rfs_block_get_size>       <== NOT EXECUTED
  /*                                                                  
   * If the file is same size do nothing else grow or shrink it ?     
   *                                                                  
   * If the file does not change size do not update the times.        
   */                                                                 
  if (size != new_size)                                               
 801f714:	5e 01 ff 5c 	bne r16,r1,801f484 <rtems_rfs_file_set_size+0x70><== NOT EXECUTED
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
      handle->shared->mtime = time (NULL);                            
  }                                                                   
                                                                      
  return 0;                                                           
 801f718:	34 0b 00 00 	mvi r11,0                                      
  /*                                                                  
   * If the file is same size do nothing else grow or shrink it ?     
   *                                                                  
   * If the file does not change size do not update the times.        
   */                                                                 
  if (size != new_size)                                               
 801f71c:	45 e2 ff 85 	be r15,r2,801f530 <rtems_rfs_file_set_size+0x11c>
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
 801f720:	ba 0f 70 00 	or r14,r16,r15                                 
                                                                      
int                                                                   
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,               
                         rtems_rfs_pos          new_size)             
{                                                                     
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
 801f724:	35 b1 00 34 	addi r17,r13,52                                
  if (size != new_size)                                               
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
 801f728:	5d c0 ff 5a 	bne r14,r0,801f490 <rtems_rfs_file_set_size+0x7c>
    {                                                                 
      rc = rtems_rfs_block_map_free_all (rtems_rfs_file_fs (handle), map);
 801f72c:	29 81 00 1c 	lw r1,(r12+28)                                 
 801f730:	ba 20 10 00 	mv r2,r17                                      
 801f734:	28 21 00 98 	lw r1,(r1+152)                                 
 801f738:	fb ff f3 50 	calli 801c478 <rtems_rfs_block_map_free_all>   
 801f73c:	b8 20 58 00 	mv r11,r1                                      
      if (rc > 0)                                                     
 801f740:	48 2e ff 7c 	bg r1,r14,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
 801f744:	e3 ff ff d9 	bi 801f6a8 <rtems_rfs_file_set_size+0x294>     
        return rc;                                                    
    }                                                                 
    else                                                              
    {                                                                 
      if (size < new_size)                                            
 801f748:	55 e2 ff 8b 	bgu r15,r2,801f574 <rtems_rfs_file_set_size+0x160>
 801f74c:	e3 ff ff 53 	bi 801f498 <rtems_rfs_file_set_size+0x84>      
            return rc;                                                
        }                                                             
                                                                      
        rtems_rfs_block_map_set_size_offset (map, offset);            
                                                                      
        if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
 801f750:	50 2e ff 6b 	bgeu r1,r14,801f4fc <rtems_rfs_file_set_size+0xe8><== NEVER TAKEN
 801f754:	35 c3 ff ff 	addi r3,r14,-1                                 
 801f758:	5c 23 ff 6f 	bne r1,r3,801f514 <rtems_rfs_file_set_size+0x100><== NEVER TAKEN
 801f75c:	29 81 00 14 	lw r1,(r12+20)                                 
 801f760:	54 22 ff 67 	bgu r1,r2,801f4fc <rtems_rfs_file_set_size+0xe8>
                                          rtems_rfs_block_map_size (map)))
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
 801f764:	b9 60 a0 00 	mv r20,r11                                     
 801f768:	e3 ff ff 6c 	bi 801f518 <rtems_rfs_file_set_size+0x104>     
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
                                                                      
        if (blocks)                                                   
        {                                                             
          int rc;                                                     
          rc = rtems_rfs_block_map_shrink (rtems_rfs_file_fs (handle),
 801f76c:	35 62 00 34 	addi r2,r11,52                                 
 801f770:	ba 40 08 00 	mv r1,r18                                      
 801f774:	fb ff f2 42 	calli 801c07c <rtems_rfs_block_map_shrink>     
                                           rtems_rfs_file_map (handle),
                                           blocks);                   
          if (rc > 0)                                                 
 801f778:	b8 20 58 00 	mv r11,r1                                      
 801f77c:	48 20 ff 6d 	bg r1,r0,801f530 <rtems_rfs_file_set_size+0x11c><== NEVER TAKEN
 801f780:	29 ae 00 3c 	lw r14,(r13+60)                                
 801f784:	29 8b 00 1c 	lw r11,(r12+28)                                
 801f788:	e3 ff ff 52 	bi 801f4d0 <rtems_rfs_file_set_size+0xbc>      
                                                                      

0800e3e4 <rtems_rfs_format>: return rc; } int rtems_rfs_format (const char* name, const rtems_rfs_format_config* config) {
 800e3e4:	37 9c fe e4 	addi sp,sp,-284                                
 800e3e8:	5b 8b 00 44 	sw (sp+68),r11                                 
 800e3ec:	5b 8c 00 40 	sw (sp+64),r12                                 
 800e3f0:	5b 8d 00 3c 	sw (sp+60),r13                                 
 800e3f4:	5b 8e 00 38 	sw (sp+56),r14                                 
 800e3f8:	5b 8f 00 34 	sw (sp+52),r15                                 
 800e3fc:	5b 90 00 30 	sw (sp+48),r16                                 
 800e400:	5b 91 00 2c 	sw (sp+44),r17                                 
 800e404:	5b 92 00 28 	sw (sp+40),r18                                 
 800e408:	5b 93 00 24 	sw (sp+36),r19                                 
 800e40c:	5b 94 00 20 	sw (sp+32),r20                                 
 800e410:	5b 95 00 1c 	sw (sp+28),r21                                 
 800e414:	5b 96 00 18 	sw (sp+24),r22                                 
 800e418:	5b 97 00 14 	sw (sp+20),r23                                 
 800e41c:	5b 98 00 10 	sw (sp+16),r24                                 
 800e420:	5b 99 00 0c 	sw (sp+12),r25                                 
 800e424:	5b 9b 00 08 	sw (sp+8),fp                                   
 800e428:	5b 9d 00 04 	sw (sp+4),ra                                   
 800e42c:	b8 40 70 00 	mv r14,r2                                      
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
 800e430:	40 42 00 15 	lbu r2,(r2+21)                                 
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
{                                                                     
 800e434:	b8 20 a8 00 	mv r21,r1                                      
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
 800e438:	5c 40 00 86 	bne r2,r0,800e650 <rtems_rfs_format+0x26c>     <== NEVER TAKEN
    printf ("rtems-rfs: format: %s\n", name);                         
                                                                      
  memset (&fs, 0, sizeof (rtems_rfs_file_system));                    
 800e43c:	37 8d 00 48 	addi r13,sp,72                                 
 800e440:	34 02 00 00 	mvi r2,0                                       
 800e444:	34 03 00 84 	mvi r3,132                                     
 800e448:	b9 a0 08 00 	mv r1,r13                                      
 800e44c:	f8 00 59 77 	calli 8024a28 <memset>                         
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800e450:	37 83 00 90 	addi r3,sp,144                                 
 800e454:	5b 83 00 8c 	sw (sp+140),r3                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800e458:	37 83 00 8c 	addi r3,sp,140                                 
 800e45c:	5b 83 00 94 	sw (sp+148),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800e460:	37 83 00 a0 	addi r3,sp,160                                 
 800e464:	5b 83 00 9c 	sw (sp+156),r3                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800e468:	37 83 00 9c 	addi r3,sp,156                                 
 800e46c:	5b 83 00 a4 	sw (sp+164),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800e470:	37 83 00 b0 	addi r3,sp,176                                 
 800e474:	5b 83 00 ac 	sw (sp+172),r3                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800e478:	37 83 00 ac 	addi r3,sp,172                                 
 800e47c:	5b 83 00 b4 	sw (sp+180),r3                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 800e480:	37 83 00 c0 	addi r3,sp,192                                 
 800e484:	5b 83 00 bc 	sw (sp+188),r3                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
 800e488:	37 83 00 bc 	addi r3,sp,188                                 
 800e48c:	5b 83 00 c4 	sw (sp+196),r3                                 
  rtems_chain_initialize_empty (&fs.buffers);                         
  rtems_chain_initialize_empty (&fs.release);                         
  rtems_chain_initialize_empty (&fs.release_modified);                
  rtems_chain_initialize_empty (&fs.file_shares);                     
                                                                      
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
 800e490:	34 03 00 05 	mvi r3,5                                       
 800e494:	5b 83 00 88 	sw (sp+136),r3                                 
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
 800e498:	ba a0 08 00 	mv r1,r21                                      
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
                                                                      
  fs.release_count = 0;                                               
  fs.release_modified_count = 0;                                      
                                                                      
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
 800e49c:	34 03 00 02 	mvi r3,2                                       
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
 800e4a0:	b9 a0 10 00 	mv r2,r13                                      
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
                                                                      
  fs.release_count = 0;                                               
  fs.release_modified_count = 0;                                      
                                                                      
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
 800e4a4:	5b 83 00 48 	sw (sp+72),r3                                  
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
 800e4a8:	f8 00 39 88 	calli 801cac8 <rtems_rfs_buffer_open>          
 800e4ac:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800e4b0:	4c 01 00 09 	bge r0,r1,800e4d4 <rtems_rfs_format+0xf0>      <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: buffer open failed: %d: %s\n",        
 800e4b4:	f8 00 5e b4 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800e4b8:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800e4bc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e4c0:	38 21 91 e4 	ori r1,r1,0x91e4                               <== NOT EXECUTED
 800e4c4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800e4c8:	f8 00 59 f4 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
 800e4cc:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800e4d0:	e0 00 00 4d 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Check the media.                                                 
   */                                                                 
  if (rtems_rfs_fs_media_block_size (&fs) == 0)                       
 800e4d4:	2b 81 00 58 	lw r1,(sp+88)                                  
 800e4d8:	28 2c 00 20 	lw r12,(r1+32)                                 
 800e4dc:	45 80 00 45 	be r12,r0,800e5f0 <rtems_rfs_format+0x20c>     <== NEVER TAKEN
                                                                      
static bool                                                           
rtems_rfs_check_config (rtems_rfs_file_system*         fs,            
                        const rtems_rfs_format_config* config)        
{                                                                     
  fs->block_size = config->block_size;                                
 800e4e0:	29 cb 00 00 	lw r11,(r14+0)                                 
 800e4e4:	5b 8b 00 50 	sw (sp+80),r11                                 
  if (!fs->block_size)                                                
 800e4e8:	45 60 00 85 	be r11,r0,800e6fc <rtems_rfs_format+0x318>     
                                                                      
    if (fs->block_size > (4 * 1024))                                  
      fs->block_size = (4 * 1024);                                    
  }                                                                   
                                                                      
  if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)     
 800e4ec:	b9 60 08 00 	mv r1,r11                                      
 800e4f0:	b9 80 10 00 	mv r2,r12                                      
 800e4f4:	f8 00 a2 cf 	calli 8037030 <__umodsi3>                      
 800e4f8:	5c 20 00 bf 	bne r1,r0,800e7f4 <rtems_rfs_format+0x410>     <== NEVER TAKEN
    printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
            fs->block_size, rtems_rfs_fs_media_block_size (fs));      
    return false;                                                     
  }                                                                   
                                                                      
  fs->group_blocks = config->group_blocks;                            
 800e4fc:	29 c2 00 04 	lw r2,(r14+4)                                  
 800e500:	5b 82 00 70 	sw (sp+112),r2                                 
  if (!fs->group_blocks)                                              
 800e504:	5c 41 00 58 	bne r2,r1,800e664 <rtems_rfs_format+0x280>     <== NEVER TAKEN
  {                                                                   
    /*                                                                
     * The number of blocks per group is defined by the number of bits in a
     * block.                                                         
     */                                                               
    fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);  
 800e508:	b5 6b 58 00 	add r11,r11,r11                                
 800e50c:	b5 6b 58 00 	add r11,r11,r11                                
 800e510:	b5 6b 58 00 	add r11,r11,r11                                
 800e514:	5b 8b 00 70 	sw (sp+112),r11                                
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    return false;                                                     
  }                                                                   
                                                                      
  fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;         
 800e518:	b9 a0 08 00 	mv r1,r13                                      
 800e51c:	f8 00 44 b6 	calli 801f7f4 <rtems_rfs_fs_media_size>        
 800e520:	2b 8c 00 50 	lw r12,(sp+80)                                 
 800e524:	34 03 00 00 	mvi r3,0                                       
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
 800e528:	34 11 00 01 	mvi r17,1                                      
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    return false;                                                     
  }                                                                   
                                                                      
  fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;         
 800e52c:	b9 80 20 00 	mv r4,r12                                      
 800e530:	f8 00 91 63 	calli 8032abc <__udivdi3>                      
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800e534:	b5 8c 58 00 	add r11,r12,r12                                
 800e538:	b5 6b 58 00 	add r11,r11,r11                                
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    return false;                                                     
  }                                                                   
                                                                      
  fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;         
 800e53c:	5b 82 00 4c 	sw (sp+76),r2                                  
 800e540:	b8 40 78 00 	mv r15,r2                                      
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800e544:	b5 6b 58 00 	add r11,r11,r11                                
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800e548:	44 40 00 05 	be r2,r0,800e55c <rtems_rfs_format+0x178>      <== NEVER TAKEN
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800e54c:	34 41 ff ff 	addi r1,r2,-1                                  
 800e550:	b9 60 10 00 	mv r2,r11                                      
 800e554:	fb ff cc a8 	calli 80017f4 <__udivsi3>                      
 800e558:	34 31 00 01 	addi r17,r1,1                                  
   * per block.                                                       
   */                                                                 
  fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs), 
                                            rtems_rfs_bits_per_block (fs));
                                                                      
  fs->group_inodes = config->group_inodes;                            
 800e55c:	29 d0 00 08 	lw r16,(r14+8)                                 
  /*                                                                  
   * The bits per block sets the upper limit for the number of blocks in a
   * group. The disk will be divided into groups which are the number of bits
   * per block.                                                       
   */                                                                 
  fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs), 
 800e560:	5b 91 00 6c 	sw (sp+108),r17                                
                                            rtems_rfs_bits_per_block (fs));
                                                                      
  fs->group_inodes = config->group_inodes;                            
  if (!fs->group_inodes)                                              
 800e564:	46 00 00 8a 	be r16,r0,800e78c <rtems_rfs_format+0x3a8>     <== ALWAYS TAKEN
 800e568:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800e56c:	34 02 00 38 	mvi r2,56                                      <== NOT EXECUTED
 800e570:	fb ff cc a1 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
 800e574:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
 800e578:	5b 81 00 78 	sw (sp+120),r1                                 <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800e57c:	36 01 ff ff 	addi r1,r16,-1                                 
 800e580:	b9 e0 10 00 	mv r2,r15                                      
 800e584:	fb ff cc 9c 	calli 80017f4 <__udivsi3>                      
 800e588:	34 21 00 01 	addi r1,r1,1                                   
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
  fs->group_inodes =                                                  
    rtems_rfs_rup_quotient (fs->group_inodes,                         
                            fs->inodes_per_block) * fs->inodes_per_block;
 800e58c:	b9 e0 10 00 	mv r2,r15                                      
 800e590:	fb ff cc 8d 	calli 80017c4 <__mulsi3>                       
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
  fs->group_inodes =                                                  
 800e594:	5b 81 00 74 	sw (sp+116),r1                                 
    rtems_rfs_rup_quotient (fs->group_inodes,                         
                            fs->inodes_per_block) * fs->inodes_per_block;
                                                                      
  if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
 800e598:	51 61 00 02 	bgeu r11,r1,800e5a0 <rtems_rfs_format+0x1bc>   <== ALWAYS TAKEN
    fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);  
 800e59c:	5b 8b 00 74 	sw (sp+116),r11                                <== NOT EXECUTED
                                                                      
  fs->max_name_length = config->max_name_length;                      
 800e5a0:	29 c1 00 10 	lw r1,(r14+16)                                 
 800e5a4:	5b 81 00 64 	sw (sp+100),r1                                 
  if (!fs->max_name_length)                                           
 800e5a8:	5c 20 00 03 	bne r1,r0,800e5b4 <rtems_rfs_format+0x1d0>     <== NEVER TAKEN
  {                                                                   
    fs->max_name_length = 512;                                        
 800e5ac:	34 01 02 00 	mvi r1,512                                     
 800e5b0:	5b 81 00 64 	sw (sp+100),r1                                 
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
                                                                      
  if (config->verbose)                                                
 800e5b4:	41 c1 00 15 	lbu r1,(r14+21)                                
 800e5b8:	5c 20 01 4d 	bne r1,r0,800eaec <rtems_rfs_format+0x708>     <== NEVER TAKEN
    printf ("rtems-rfs: format: groups = %u\n", fs.group_count);      
    printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
    printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
 800e5bc:	b9 a0 08 00 	mv r1,r13                                      
 800e5c0:	b9 80 10 00 	mv r2,r12                                      
 800e5c4:	f8 00 39 f5 	calli 801cd98 <rtems_rfs_buffer_setblksize>    
 800e5c8:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800e5cc:	4c 01 00 2f 	bge r0,r1,800e688 <rtems_rfs_format+0x2a4>     <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: setting block size failed: %d: %s\n", 
 800e5d0:	f8 00 5e 6d 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800e5d4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800e5d8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e5dc:	38 21 94 80 	ori r1,r1,0x9480                               <== NOT EXECUTED
 800e5e0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800e5e4:	f8 00 59 ad 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
 800e5e8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800e5ec:	e0 00 00 06 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
  /*                                                                  
   * Check the media.                                                 
   */                                                                 
  if (rtems_rfs_fs_media_block_size (&fs) == 0)                       
  {                                                                   
    printf ("rtems-rfs: media block is invalid: %" PRIu32 "\n",       
 800e5f0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e5f4:	38 21 92 14 	ori r1,r1,0x9214                               <== NOT EXECUTED
 800e5f8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 800e5fc:	f8 00 59 a7 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_media_block_size (&fs));                     
    return -1;                                                        
 800e600:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800e604:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800e608:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800e60c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800e610:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 800e614:	2b 8e 00 38 	lw r14,(sp+56)                                 
 800e618:	2b 8f 00 34 	lw r15,(sp+52)                                 
 800e61c:	2b 90 00 30 	lw r16,(sp+48)                                 
 800e620:	2b 91 00 2c 	lw r17,(sp+44)                                 
 800e624:	2b 92 00 28 	lw r18,(sp+40)                                 
 800e628:	2b 93 00 24 	lw r19,(sp+36)                                 
 800e62c:	2b 94 00 20 	lw r20,(sp+32)                                 
 800e630:	2b 95 00 1c 	lw r21,(sp+28)                                 
 800e634:	2b 96 00 18 	lw r22,(sp+24)                                 
 800e638:	2b 97 00 14 	lw r23,(sp+20)                                 
 800e63c:	2b 98 00 10 	lw r24,(sp+16)                                 
 800e640:	2b 99 00 0c 	lw r25,(sp+12)                                 
 800e644:	2b 9b 00 08 	lw fp,(sp+8)                                   
 800e648:	37 9c 01 1c 	addi sp,sp,284                                 
 800e64c:	c3 a0 00 00 	ret                                            
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
    printf ("rtems-rfs: format: %s\n", name);                         
 800e650:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e654:	ba a0 10 00 	mv r2,r21                                      <== NOT EXECUTED
 800e658:	38 21 91 cc 	ori r1,r1,0x91cc                               <== NOT EXECUTED
 800e65c:	f8 00 59 8f 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800e660:	e3 ff ff 77 	bi 800e43c <rtems_rfs_format+0x58>             <== NOT EXECUTED
     * block.                                                         
     */                                                               
    fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);  
  }                                                                   
                                                                      
  if (fs->group_blocks > rtems_rfs_bitmap_numof_bits (fs->block_size))
 800e664:	b5 6b 58 00 	add r11,r11,r11                                <== NOT EXECUTED
 800e668:	b5 6b 58 00 	add r11,r11,r11                                <== NOT EXECUTED
 800e66c:	b5 6b 58 00 	add r11,r11,r11                                <== NOT EXECUTED
 800e670:	51 62 ff aa 	bgeu r11,r2,800e518 <rtems_rfs_format+0x134>   <== NOT EXECUTED
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
 800e674:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e678:	38 21 92 7c 	ori r1,r1,0x927c                               <== NOT EXECUTED
 800e67c:	f8 00 5a 4f 	calli 8024fb8 <puts>                           <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
 800e680:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800e684:	e3 ff ff e0 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    printf ("rtems-rfs: write-superblock: handle open failed: %d: %s\n",
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, false);       
 800e688:	37 91 01 0c 	addi r17,sp,268                                
 800e68c:	b9 a0 08 00 	mv r1,r13                                      
 800e690:	ba 20 10 00 	mv r2,r17                                      
 800e694:	34 03 00 00 	mvi r3,0                                       
 800e698:	34 04 00 00 	mvi r4,0                                       
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800e69c:	33 80 01 0c 	sb (sp+268),r0                                 
  handle->bnum  = 0;                                                  
 800e6a0:	5b 80 01 10 	sw (sp+272),r0                                 
  handle->buffer = NULL;                                              
 800e6a4:	5b 80 01 14 	sw (sp+276),r0                                 
 800e6a8:	f8 00 38 67 	calli 801c844 <rtems_rfs_buffer_handle_request>
 800e6ac:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800e6b0:	4c 01 00 58 	bge r0,r1,800e810 <rtems_rfs_format+0x42c>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800e6b4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800e6b8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800e6bc:	f8 00 37 f0 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",  
 800e6c0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800e6c4:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800e6c8:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800e6cc:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800e6d0:	f8 00 5e 2d 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800e6d4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800e6d8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e6dc:	38 21 94 b8 	ori r1,r1,0x94b8                               <== NOT EXECUTED
 800e6e0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800e6e4:	f8 00 59 6d 	calli 8024c98 <printf>                         <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  if (!rtems_rfs_write_superblock (&fs))                              
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
 800e6e8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e6ec:	38 21 95 2c 	ori r1,r1,0x952c                               <== NOT EXECUTED
 800e6f0:	f8 00 5a 32 	calli 8024fb8 <puts>                           <== NOT EXECUTED
    return -1;                                                        
 800e6f4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800e6f8:	e3 ff ff c3 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
                        const rtems_rfs_format_config* config)        
{                                                                     
  fs->block_size = config->block_size;                                
  if (!fs->block_size)                                                
  {                                                                   
    uint64_t total_size = rtems_rfs_fs_media_size (fs);               
 800e6fc:	b9 a0 08 00 	mv r1,r13                                      
 800e700:	f8 00 44 3d 	calli 801f7f4 <rtems_rfs_fs_media_size>        
                                                                      
    if (total_size >= GIGS (1))                                       
 800e704:	5c 2b 00 0e 	bne r1,r11,800e73c <rtems_rfs_format+0x358>    <== NEVER TAKEN
 800e708:	78 04 08 03 	mvhi r4,0x803                                  
 800e70c:	38 84 99 e8 	ori r4,r4,0x99e8                               
 800e710:	28 83 00 00 	lw r3,(r4+0)                                   
 800e714:	54 43 00 0a 	bgu r2,r3,800e73c <rtems_rfs_format+0x358>     <== NEVER TAKEN
 800e718:	2b 8b 00 50 	lw r11,(sp+80)                                 
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fs->block_size = 1 << b;                                        
    }                                                                 
                                                                      
    if (fs->block_size < 512)                                         
 800e71c:	34 01 01 ff 	mvi r1,511                                     
 800e720:	55 61 01 5a 	bgu r11,r1,800ec88 <rtems_rfs_format+0x8a4>    <== NEVER TAKEN
      fs->block_size = 512;                                           
 800e724:	34 01 02 00 	mvi r1,512                                     
 800e728:	5b 81 00 50 	sw (sp+80),r1                                  
 800e72c:	2b 81 00 58 	lw r1,(sp+88)                                  
 800e730:	34 0b 02 00 	mvi r11,512                                    
 800e734:	28 2c 00 20 	lw r12,(r1+32)                                 
 800e738:	e3 ff ff 6d 	bi 800e4ec <rtems_rfs_format+0x108>            
  {                                                                   
    uint64_t total_size = rtems_rfs_fs_media_size (fs);               
                                                                      
    if (total_size >= GIGS (1))                                       
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
 800e73c:	78 03 00 10 	mvhi r3,0x10                                   <== NOT EXECUTED
 800e740:	b4 43 18 00 	add r3,r2,r3                                   <== NOT EXECUTED
 800e744:	f4 43 20 00 	cmpgu r4,r2,r3                                 <== NOT EXECUTED
 800e748:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 800e74c:	b4 81 08 00 	add r1,r4,r1                                   <== NOT EXECUTED
 800e750:	34 03 00 14 	mvi r3,20                                      <== NOT EXECUTED
 800e754:	f8 00 8c 89 	calli 8031978 <__lshrdi3>                      <== NOT EXECUTED
 800e758:	b8 40 78 00 	mv r15,r2                                      <== NOT EXECUTED
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
 800e75c:	34 0c 00 1f 	mvi r12,31                                     <== NOT EXECUTED
 800e760:	e0 00 00 02 	bi 800e768 <rtems_rfs_format+0x384>            <== NOT EXECUTED
 800e764:	45 81 02 73 	be r12,r1,800f130 <rtems_rfs_format+0xd4c>     <== NOT EXECUTED
        if ((gigs & (1 << b)) != 0)                                   
 800e768:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 800e76c:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 800e770:	f8 00 a1 89 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 800e774:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
 800e778:	a0 2f 08 00 	and r1,r1,r15                                  <== NOT EXECUTED
                                                                      
    if (total_size >= GIGS (1))                                       
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
 800e77c:	35 8c ff ff 	addi r12,r12,-1                                <== NOT EXECUTED
        if ((gigs & (1 << b)) != 0)                                   
 800e780:	44 20 ff f9 	be r1,r0,800e764 <rtems_rfs_format+0x380>      <== NOT EXECUTED
          break;                                                      
      fs->block_size = 1 << b;                                        
 800e784:	5b 8b 00 50 	sw (sp+80),r11                                 <== NOT EXECUTED
 800e788:	e3 ff ff e5 	bi 800e71c <rtems_rfs_format+0x338>            <== NOT EXECUTED
    int inode_overhead = RTEMS_RFS_INODE_OVERHEAD_PERCENTAGE;         
                                                                      
    /*                                                                
     * The number of inodes per group is set as a percentage.         
     */                                                               
    if (config->inode_overhead)                                       
 800e78c:	29 c2 00 0c 	lw r2,(r14+12)                                 
 800e790:	34 01 00 01 	mvi r1,1                                       
 800e794:	44 50 00 02 	be r2,r16,800e79c <rtems_rfs_format+0x3b8>     <== ALWAYS TAKEN
 800e798:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
rtems_rfs_inodes_from_percent (rtems_rfs_file_system* fs,             
                               int                    percentage)     
{                                                                     
  int blocks;                                                         
  blocks = ((rtems_rfs_fs_blocks (fs) -                               
             RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;          
 800e79c:	35 e2 ff ff 	addi r2,r15,-1                                 
 800e7a0:	fb ff cc 09 	calli 80017c4 <__mulsi3>                       
 800e7a4:	34 02 00 64 	mvi r2,100                                     
 800e7a8:	fb ff cc 13 	calli 80017f4 <__udivsi3>                      
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800e7ac:	34 10 00 01 	mvi r16,1                                      
 800e7b0:	44 20 00 05 	be r1,r0,800e7c4 <rtems_rfs_format+0x3e0>      
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800e7b4:	34 21 ff ff 	addi r1,r1,-1                                  
 800e7b8:	ba 20 10 00 	mv r2,r17                                      
 800e7bc:	fb ff cc 0e 	calli 80017f4 <__udivsi3>                      
 800e7c0:	34 30 00 01 	addi r16,r1,1                                  
{                                                                     
  int blocks;                                                         
  blocks = ((rtems_rfs_fs_blocks (fs) -                               
             RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;          
  blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);          
  return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
 800e7c4:	34 02 00 38 	mvi r2,56                                      
 800e7c8:	b9 80 08 00 	mv r1,r12                                      
 800e7cc:	fb ff cc 0a 	calli 80017f4 <__udivsi3>                      
 800e7d0:	b8 20 78 00 	mv r15,r1                                      
 800e7d4:	b9 e0 10 00 	mv r2,r15                                      
 800e7d8:	ba 00 08 00 	mv r1,r16                                      
 800e7dc:	fb ff cb fa 	calli 80017c4 <__mulsi3>                       
 800e7e0:	b8 20 80 00 	mv r16,r1                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
 800e7e4:	5b 8f 00 78 	sw (sp+120),r15                                
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800e7e8:	34 01 00 01 	mvi r1,1                                       
 800e7ec:	46 00 ff 68 	be r16,r0,800e58c <rtems_rfs_format+0x1a8>     <== NEVER TAKEN
 800e7f0:	e3 ff ff 63 	bi 800e57c <rtems_rfs_format+0x198>            
      fs->block_size = (4 * 1024);                                    
  }                                                                   
                                                                      
  if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)     
  {                                                                   
    printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
 800e7f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800e7f8:	38 21 92 3c 	ori r1,r1,0x923c                               <== NOT EXECUTED
 800e7fc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800e800:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800e804:	f8 00 59 25 	calli 8024c98 <printf>                         <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
 800e808:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800e80c:	e3 ff ff 7e 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",  
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
 800e810:	2b 81 01 14 	lw r1,(sp+276)                                 
                                                                      
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)           
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
 800e814:	2b 83 00 50 	lw r3,(sp+80)                                  
 800e818:	34 02 00 ff 	mvi r2,255                                     
    printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",  
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
 800e81c:	28 2b 00 1c 	lw r11,(r1+28)                                 
                                                                      
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)           
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
 800e820:	34 0c 00 01 	mvi r12,1                                      
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
                                                                      
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)           
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
 800e824:	b9 60 08 00 	mv r1,r11                                      
 800e828:	f8 00 58 80 	calli 8024a28 <memset>                         
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
 800e82c:	34 01 00 28 	mvi r1,40                                      
 800e830:	31 61 00 00 	sb (r11+0),r1                                  
 800e834:	34 01 00 09 	mvi r1,9                                       
 800e838:	31 61 00 01 	sb (r11+1),r1                                  
 800e83c:	34 01 00 20 	mvi r1,32                                      
 800e840:	31 61 00 02 	sb (r11+2),r1                                  
 800e844:	31 6c 00 03 	sb (r11+3),r12                                 
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
 800e848:	31 60 00 04 	sb (r11+4),r0                                  
 800e84c:	31 60 00 05 	sb (r11+5),r0                                  
 800e850:	31 60 00 06 	sb (r11+6),r0                                  
 800e854:	31 60 00 07 	sb (r11+7),r0                                  
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
 800e858:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800e85c:	34 02 00 18 	mvi r2,24                                      
 800e860:	fb ff cb b2 	calli 8001728 <__lshrsi3>                      
 800e864:	31 61 00 0c 	sb (r11+12),r1                                 
 800e868:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800e86c:	34 02 00 10 	mvi r2,16                                      
 800e870:	fb ff cb ae 	calli 8001728 <__lshrsi3>                      
 800e874:	31 61 00 0d 	sb (r11+13),r1                                 
 800e878:	2b 83 00 4c 	lw r3,(sp+76)                                  
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
 800e87c:	34 02 00 18 	mvi r2,24                                      
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
 800e880:	00 63 00 01 	srui r3,r3,1                                   
 800e884:	00 63 00 01 	srui r3,r3,1                                   
 800e888:	00 63 00 01 	srui r3,r3,1                                   
 800e88c:	00 63 00 01 	srui r3,r3,1                                   
 800e890:	00 63 00 01 	srui r3,r3,1                                   
 800e894:	00 63 00 01 	srui r3,r3,1                                   
 800e898:	00 63 00 01 	srui r3,r3,1                                   
 800e89c:	00 63 00 01 	srui r3,r3,1                                   
 800e8a0:	31 63 00 0e 	sb (r11+14),r3                                 
 800e8a4:	2b 81 00 4c 	lw r1,(sp+76)                                  
 800e8a8:	31 61 00 0f 	sb (r11+15),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
 800e8ac:	2b 81 00 50 	lw r1,(sp+80)                                  
 800e8b0:	fb ff cb 9e 	calli 8001728 <__lshrsi3>                      
 800e8b4:	31 61 00 08 	sb (r11+8),r1                                  
 800e8b8:	2b 81 00 50 	lw r1,(sp+80)                                  
 800e8bc:	34 02 00 10 	mvi r2,16                                      
 800e8c0:	fb ff cb 9a 	calli 8001728 <__lshrsi3>                      
 800e8c4:	31 61 00 09 	sb (r11+9),r1                                  
 800e8c8:	2b 83 00 50 	lw r3,(sp+80)                                  
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
 800e8cc:	34 02 00 18 	mvi r2,24                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
 800e8d0:	00 63 00 01 	srui r3,r3,1                                   
 800e8d4:	00 63 00 01 	srui r3,r3,1                                   
 800e8d8:	00 63 00 01 	srui r3,r3,1                                   
 800e8dc:	00 63 00 01 	srui r3,r3,1                                   
 800e8e0:	00 63 00 01 	srui r3,r3,1                                   
 800e8e4:	00 63 00 01 	srui r3,r3,1                                   
 800e8e8:	00 63 00 01 	srui r3,r3,1                                   
 800e8ec:	00 63 00 01 	srui r3,r3,1                                   
 800e8f0:	31 63 00 0a 	sb (r11+10),r3                                 
 800e8f4:	2b 81 00 50 	lw r1,(sp+80)                                  
 800e8f8:	31 61 00 0b 	sb (r11+11),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
 800e8fc:	2b 81 00 60 	lw r1,(sp+96)                                  
 800e900:	fb ff cb 8a 	calli 8001728 <__lshrsi3>                      
 800e904:	31 61 00 10 	sb (r11+16),r1                                 
 800e908:	2b 81 00 60 	lw r1,(sp+96)                                  
 800e90c:	34 02 00 10 	mvi r2,16                                      
 800e910:	fb ff cb 86 	calli 8001728 <__lshrsi3>                      
 800e914:	31 61 00 11 	sb (r11+17),r1                                 
 800e918:	2b 83 00 60 	lw r3,(sp+96)                                  
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
 800e91c:	34 02 00 18 	mvi r2,24                                      
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
 800e920:	00 63 00 01 	srui r3,r3,1                                   
 800e924:	00 63 00 01 	srui r3,r3,1                                   
 800e928:	00 63 00 01 	srui r3,r3,1                                   
 800e92c:	00 63 00 01 	srui r3,r3,1                                   
 800e930:	00 63 00 01 	srui r3,r3,1                                   
 800e934:	00 63 00 01 	srui r3,r3,1                                   
 800e938:	00 63 00 01 	srui r3,r3,1                                   
 800e93c:	00 63 00 01 	srui r3,r3,1                                   
 800e940:	31 63 00 12 	sb (r11+18),r3                                 
 800e944:	2b 81 00 60 	lw r1,(sp+96)                                  
 800e948:	31 61 00 13 	sb (r11+19),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
 800e94c:	2b 81 00 64 	lw r1,(sp+100)                                 
 800e950:	fb ff cb 76 	calli 8001728 <__lshrsi3>                      
 800e954:	31 61 00 14 	sb (r11+20),r1                                 
 800e958:	2b 81 00 64 	lw r1,(sp+100)                                 
 800e95c:	34 02 00 10 	mvi r2,16                                      
 800e960:	fb ff cb 72 	calli 8001728 <__lshrsi3>                      
 800e964:	31 61 00 15 	sb (r11+21),r1                                 
 800e968:	2b 83 00 64 	lw r3,(sp+100)                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
 800e96c:	34 02 00 18 	mvi r2,24                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
 800e970:	00 63 00 01 	srui r3,r3,1                                   
 800e974:	00 63 00 01 	srui r3,r3,1                                   
 800e978:	00 63 00 01 	srui r3,r3,1                                   
 800e97c:	00 63 00 01 	srui r3,r3,1                                   
 800e980:	00 63 00 01 	srui r3,r3,1                                   
 800e984:	00 63 00 01 	srui r3,r3,1                                   
 800e988:	00 63 00 01 	srui r3,r3,1                                   
 800e98c:	00 63 00 01 	srui r3,r3,1                                   
 800e990:	31 63 00 16 	sb (r11+22),r3                                 
 800e994:	2b 81 00 64 	lw r1,(sp+100)                                 
 800e998:	31 61 00 17 	sb (r11+23),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
 800e99c:	2b 81 00 6c 	lw r1,(sp+108)                                 
 800e9a0:	fb ff cb 62 	calli 8001728 <__lshrsi3>                      
 800e9a4:	31 61 00 18 	sb (r11+24),r1                                 
 800e9a8:	2b 81 00 6c 	lw r1,(sp+108)                                 
 800e9ac:	34 02 00 10 	mvi r2,16                                      
 800e9b0:	fb ff cb 5e 	calli 8001728 <__lshrsi3>                      
 800e9b4:	31 61 00 19 	sb (r11+25),r1                                 
 800e9b8:	2b 83 00 6c 	lw r3,(sp+108)                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
 800e9bc:	34 02 00 18 	mvi r2,24                                      
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
 800e9c0:	00 63 00 01 	srui r3,r3,1                                   
 800e9c4:	00 63 00 01 	srui r3,r3,1                                   
 800e9c8:	00 63 00 01 	srui r3,r3,1                                   
 800e9cc:	00 63 00 01 	srui r3,r3,1                                   
 800e9d0:	00 63 00 01 	srui r3,r3,1                                   
 800e9d4:	00 63 00 01 	srui r3,r3,1                                   
 800e9d8:	00 63 00 01 	srui r3,r3,1                                   
 800e9dc:	00 63 00 01 	srui r3,r3,1                                   
 800e9e0:	31 63 00 1a 	sb (r11+26),r3                                 
 800e9e4:	2b 81 00 6c 	lw r1,(sp+108)                                 
 800e9e8:	31 61 00 1b 	sb (r11+27),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
 800e9ec:	2b 81 00 70 	lw r1,(sp+112)                                 
 800e9f0:	fb ff cb 4e 	calli 8001728 <__lshrsi3>                      
 800e9f4:	31 61 00 1c 	sb (r11+28),r1                                 
 800e9f8:	2b 81 00 70 	lw r1,(sp+112)                                 
 800e9fc:	34 02 00 10 	mvi r2,16                                      
 800ea00:	fb ff cb 4a 	calli 8001728 <__lshrsi3>                      
 800ea04:	31 61 00 1d 	sb (r11+29),r1                                 
 800ea08:	2b 83 00 70 	lw r3,(sp+112)                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
 800ea0c:	34 02 00 18 	mvi r2,24                                      
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
 800ea10:	00 63 00 01 	srui r3,r3,1                                   
 800ea14:	00 63 00 01 	srui r3,r3,1                                   
 800ea18:	00 63 00 01 	srui r3,r3,1                                   
 800ea1c:	00 63 00 01 	srui r3,r3,1                                   
 800ea20:	00 63 00 01 	srui r3,r3,1                                   
 800ea24:	00 63 00 01 	srui r3,r3,1                                   
 800ea28:	00 63 00 01 	srui r3,r3,1                                   
 800ea2c:	00 63 00 01 	srui r3,r3,1                                   
 800ea30:	31 63 00 1e 	sb (r11+30),r3                                 
 800ea34:	2b 81 00 70 	lw r1,(sp+112)                                 
 800ea38:	31 61 00 1f 	sb (r11+31),r1                                 
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
 800ea3c:	2b 81 00 74 	lw r1,(sp+116)                                 
 800ea40:	fb ff cb 3a 	calli 8001728 <__lshrsi3>                      
 800ea44:	31 61 00 20 	sb (r11+32),r1                                 
 800ea48:	2b 81 00 74 	lw r1,(sp+116)                                 
 800ea4c:	34 02 00 10 	mvi r2,16                                      
 800ea50:	fb ff cb 36 	calli 8001728 <__lshrsi3>                      
 800ea54:	31 61 00 21 	sb (r11+33),r1                                 
 800ea58:	2b 83 00 74 	lw r3,(sp+116)                                 
  write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);    
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  rc = rtems_rfs_buffer_handle_release (fs, &handle);                 
 800ea5c:	b9 a0 08 00 	mv r1,r13                                      
 800ea60:	ba 20 10 00 	mv r2,r17                                      
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
 800ea64:	00 63 00 01 	srui r3,r3,1                                   
 800ea68:	00 63 00 01 	srui r3,r3,1                                   
 800ea6c:	00 63 00 01 	srui r3,r3,1                                   
 800ea70:	00 63 00 01 	srui r3,r3,1                                   
 800ea74:	00 63 00 01 	srui r3,r3,1                                   
 800ea78:	00 63 00 01 	srui r3,r3,1                                   
 800ea7c:	00 63 00 01 	srui r3,r3,1                                   
 800ea80:	00 63 00 01 	srui r3,r3,1                                   
 800ea84:	31 63 00 22 	sb (r11+34),r3                                 
 800ea88:	2b 83 00 74 	lw r3,(sp+116)                                 
  write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);    
 800ea8c:	31 60 00 24 	sb (r11+36),r0                                 
 800ea90:	31 60 00 25 	sb (r11+37),r0                                 
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
 800ea94:	31 63 00 23 	sb (r11+35),r3                                 
  write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);    
 800ea98:	34 03 00 38 	mvi r3,56                                      
 800ea9c:	31 60 00 26 	sb (r11+38),r0                                 
 800eaa0:	31 63 00 27 	sb (r11+39),r3                                 
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
 800eaa4:	33 8c 01 0c 	sb (sp+268),r12                                
                                                                      
  rc = rtems_rfs_buffer_handle_release (fs, &handle);                 
 800eaa8:	f8 00 36 f5 	calli 801c67c <rtems_rfs_buffer_handle_release>
 800eaac:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800eab0:	4c 01 00 a1 	bge r0,r1,800ed34 <rtems_rfs_format+0x950>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800eab4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800eab8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800eabc:	f8 00 36 f0 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("rtems-rfs: write-superblock: buffer release failed: %d: %s\n",
 800eac0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800eac4:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800eac8:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800eacc:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800ead0:	f8 00 5d 2d 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800ead4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800ead8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eadc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800eae0:	38 21 94 f0 	ori r1,r1,0x94f0                               <== NOT EXECUTED
 800eae4:	f8 00 58 6d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800eae8:	e3 ff ff 00 	bi 800e6e8 <rtems_rfs_format+0x304>            <== NOT EXECUTED
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
                                                                      
  if (config->verbose)                                                
  {                                                                   
    printf ("rtems-rfs: format: media size = %" PRIu64 "\n",          
 800eaec:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800eaf0:	f8 00 43 41 	calli 801f7f4 <rtems_rfs_fs_media_size>        <== NOT EXECUTED
 800eaf4:	b8 40 18 00 	mv r3,r2                                       <== NOT EXECUTED
 800eaf8:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 800eafc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb00:	38 21 92 ac 	ori r1,r1,0x92ac                               <== NOT EXECUTED
 800eb04:	f8 00 58 65 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_media_size (&fs));                           
    printf ("rtems-rfs: format: media blocks = %" PRIu32 "\n",        
 800eb08:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
 800eb0c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb10:	38 21 92 d4 	ori r1,r1,0x92d4                               <== NOT EXECUTED
 800eb14:	28 42 00 1c 	lw r2,(r2+28)                                  <== NOT EXECUTED
 800eb18:	f8 00 58 60 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_media_blocks (&fs));                         
    printf ("rtems-rfs: format: media block size = %" PRIu32 "\n",    
 800eb1c:	2b 82 00 58 	lw r2,(sp+88)                                  <== NOT EXECUTED
 800eb20:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb24:	38 21 92 fc 	ori r1,r1,0x92fc                               <== NOT EXECUTED
 800eb28:	28 42 00 20 	lw r2,(r2+32)                                  <== NOT EXECUTED
 800eb2c:	f8 00 58 5b 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_media_block_size (&fs));                     
    printf ("rtems-rfs: format: size = %" PRIu64 "\n",                
 800eb30:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800eb34:	f8 00 43 26 	calli 801f7cc <rtems_rfs_fs_size>              <== NOT EXECUTED
 800eb38:	b8 40 18 00 	mv r3,r2                                       <== NOT EXECUTED
 800eb3c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 800eb40:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb44:	38 21 93 28 	ori r1,r1,0x9328                               <== NOT EXECUTED
 800eb48:	f8 00 58 54 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_size (&fs));                                 
    printf ("rtems-rfs: format: blocks = %zu\n",                      
 800eb4c:	2b 82 00 4c 	lw r2,(sp+76)                                  <== NOT EXECUTED
 800eb50:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb54:	38 21 93 48 	ori r1,r1,0x9348                               <== NOT EXECUTED
 800eb58:	f8 00 58 50 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_fs_blocks (&fs));                               
    printf ("rtems-rfs: format: block size = %zu\n",                  
 800eb5c:	2b 82 00 50 	lw r2,(sp+80)                                  <== NOT EXECUTED
 800eb60:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb64:	38 21 93 6c 	ori r1,r1,0x936c                               <== NOT EXECUTED
 800eb68:	f8 00 58 4c 	calli 8024c98 <printf>                         <== NOT EXECUTED
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800eb6c:	2b 82 00 50 	lw r2,(sp+80)                                  <== NOT EXECUTED
            rtems_rfs_fs_size (&fs));                                 
    printf ("rtems-rfs: format: blocks = %zu\n",                      
            rtems_rfs_fs_blocks (&fs));                               
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
 800eb70:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb74:	38 21 93 94 	ori r1,r1,0x9394                               <== NOT EXECUTED
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800eb78:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 800eb7c:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 800eb80:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
            rtems_rfs_fs_size (&fs));                                 
    printf ("rtems-rfs: format: blocks = %zu\n",                      
            rtems_rfs_fs_blocks (&fs));                               
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
 800eb84:	f8 00 58 45 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
 800eb88:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eb8c:	34 02 00 38 	mvi r2,56                                      <== NOT EXECUTED
 800eb90:	38 21 93 bc 	ori r1,r1,0x93bc                               <== NOT EXECUTED
 800eb94:	f8 00 58 41 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
            fs.group_inodes * fs.group_count,                         
 800eb98:	2b 8b 00 74 	lw r11,(sp+116)                                <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
 800eb9c:	2b 82 00 6c 	lw r2,(sp+108)                                 <== NOT EXECUTED
 800eba0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800eba4:	fb ff cb 08 	calli 80017c4 <__mulsi3>                       <== NOT EXECUTED
static int                                                            
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)                  
{                                                                     
  int blocks;                                                         
  int bits_per_block;                                                 
  blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
 800eba8:	b5 6b 18 00 	add r3,r11,r11                                 <== NOT EXECUTED
 800ebac:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ebb0:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ebb4:	b4 63 20 00 	add r4,r3,r3                                   <== NOT EXECUTED
 800ebb8:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ebbc:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ebc0:	c8 83 80 00 	sub r16,r4,r3                                  <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
 800ebc4:	b8 20 98 00 	mv r19,r1                                      <== NOT EXECUTED
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)                  
{                                                                     
  int blocks;                                                         
  int bits_per_block;                                                 
  blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
                                  rtems_rfs_fs_block_size (fs));      
 800ebc8:	2b 8f 00 50 	lw r15,(sp+80)                                 <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800ebcc:	34 03 07 d0 	mvi r3,2000                                    <== NOT EXECUTED
 800ebd0:	5e 00 00 48 	bne r16,r0,800ecf0 <rtems_rfs_format+0x90c>    <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
 800ebd4:	2b 8c 00 4c 	lw r12,(sp+76)                                 <== NOT EXECUTED
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800ebd8:	b5 ef 58 00 	add r11,r15,r15                                <== NOT EXECUTED
 800ebdc:	b5 6b 58 00 	add r11,r11,r11                                <== NOT EXECUTED
 800ebe0:	b5 6b 58 00 	add r11,r11,r11                                <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
 800ebe4:	35 8c ff ff 	addi r12,r12,-1                                <== NOT EXECUTED
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
 800ebe8:	b9 60 88 00 	mv r17,r11                                     <== NOT EXECUTED
{                                                                     
  int blocks;                                                         
  int bits_per_block;                                                 
  blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
 800ebec:	b9 60 20 00 	mv r4,r11                                      <== NOT EXECUTED
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
 800ebf0:	51 8b 00 02 	bgeu r12,r11,800ebf8 <rtems_rfs_format+0x814>  <== NOT EXECUTED
    bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
 800ebf4:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
  return ((blocks + 1) * 100 * 10) / bits_per_block;                  
 800ebf8:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 800ebfc:	b8 60 08 00 	mv r1,r3                                       <== NOT EXECUTED
 800ec00:	f8 00 a0 b3 	calli 8036ecc <__divsi3>                       <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
 800ec04:	34 02 00 0a 	mvi r2,10                                      <== NOT EXECUTED
 800ec08:	f8 00 a0 b1 	calli 8036ecc <__divsi3>                       <== NOT EXECUTED
 800ec0c:	b8 20 90 00 	mv r18,r1                                      <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800ec10:	34 04 07 d0 	mvi r4,2000                                    <== NOT EXECUTED
 800ec14:	5e 00 00 25 	bne r16,r0,800eca8 <rtems_rfs_format+0x8c4>    <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
 800ec18:	51 8b 00 02 	bgeu r12,r11,800ec20 <rtems_rfs_format+0x83c>  <== NOT EXECUTED
    bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
 800ec1c:	b9 80 88 00 	mv r17,r12                                     <== NOT EXECUTED
  return ((blocks + 1) * 100 * 10) / bits_per_block;                  
 800ec20:	b8 80 08 00 	mv r1,r4                                       <== NOT EXECUTED
 800ec24:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800ec28:	f8 00 a0 a9 	calli 8036ecc <__divsi3>                       <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
 800ec2c:	34 02 00 0a 	mvi r2,10                                      <== NOT EXECUTED
 800ec30:	78 0b 08 03 	mvhi r11,0x803                                 <== NOT EXECUTED
 800ec34:	f8 00 a0 d6 	calli 8036f8c <__modsi3>                       <== NOT EXECUTED
 800ec38:	39 6b 93 e4 	ori r11,r11,0x93e4                             <== NOT EXECUTED
 800ec3c:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800ec40:	ba 40 18 00 	mv r3,r18                                      <== NOT EXECUTED
 800ec44:	ba 60 10 00 	mv r2,r19                                      <== NOT EXECUTED
 800ec48:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800ec4c:	f8 00 58 13 	calli 8024c98 <printf>                         <== NOT EXECUTED
            fs.group_inodes * fs.group_count,                         
            rtems_rfs_inode_overhead (&fs) / 10,                      
            rtems_rfs_inode_overhead (&fs) % 10);                     
    printf ("rtems-rfs: format: groups = %u\n", fs.group_count);      
 800ec50:	2b 82 00 6c 	lw r2,(sp+108)                                 <== NOT EXECUTED
 800ec54:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ec58:	38 21 94 10 	ori r1,r1,0x9410                               <== NOT EXECUTED
 800ec5c:	f8 00 58 0f 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
 800ec60:	2b 82 00 70 	lw r2,(sp+112)                                 <== NOT EXECUTED
 800ec64:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ec68:	38 21 94 30 	ori r1,r1,0x9430                               <== NOT EXECUTED
 800ec6c:	f8 00 58 0b 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
 800ec70:	2b 82 00 74 	lw r2,(sp+116)                                 <== NOT EXECUTED
 800ec74:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ec78:	38 21 94 58 	ori r1,r1,0x9458                               <== NOT EXECUTED
 800ec7c:	f8 00 58 07 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800ec80:	2b 8c 00 50 	lw r12,(sp+80)                                 <== NOT EXECUTED
 800ec84:	e3 ff fe 4e 	bi 800e5bc <rtems_rfs_format+0x1d8>            <== NOT EXECUTED
    }                                                                 
                                                                      
    if (fs->block_size < 512)                                         
      fs->block_size = 512;                                           
                                                                      
    if (fs->block_size > (4 * 1024))                                  
 800ec88:	34 01 10 00 	mvi r1,4096                                    <== NOT EXECUTED
 800ec8c:	55 61 00 02 	bgu r11,r1,800ec94 <rtems_rfs_format+0x8b0>    <== NOT EXECUTED
 800ec90:	e0 00 00 03 	bi 800ec9c <rtems_rfs_format+0x8b8>            <== NOT EXECUTED
      fs->block_size = (4 * 1024);                                    
 800ec94:	5b 81 00 50 	sw (sp+80),r1                                  <== NOT EXECUTED
 800ec98:	34 0b 10 00 	mvi r11,4096                                   <== NOT EXECUTED
 800ec9c:	2b 81 00 58 	lw r1,(sp+88)                                  <== NOT EXECUTED
 800eca0:	28 2c 00 20 	lw r12,(r1+32)                                 <== NOT EXECUTED
 800eca4:	e3 ff fe 12 	bi 800e4ec <rtems_rfs_format+0x108>            <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800eca8:	36 01 ff ff 	addi r1,r16,-1                                 <== NOT EXECUTED
 800ecac:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800ecb0:	fb ff ca d1 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800ecb4:	34 24 00 02 	addi r4,r1,2                                   <== NOT EXECUTED
 800ecb8:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ecbc:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ecc0:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ecc4:	b4 84 28 00 	add r5,r4,r4                                   <== NOT EXECUTED
 800ecc8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800eccc:	b4 85 20 00 	add r4,r4,r5                                   <== NOT EXECUTED
 800ecd0:	b4 84 28 00 	add r5,r4,r4                                   <== NOT EXECUTED
 800ecd4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800ecd8:	b4 85 28 00 	add r5,r4,r5                                   <== NOT EXECUTED
 800ecdc:	b4 a5 20 00 	add r4,r5,r5                                   <== NOT EXECUTED
 800ece0:	b4 84 20 00 	add r4,r4,r4                                   <== NOT EXECUTED
 800ece4:	b4 a4 20 00 	add r4,r5,r4                                   <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
 800ece8:	51 8b ff ce 	bgeu r12,r11,800ec20 <rtems_rfs_format+0x83c>  <== NOT EXECUTED
 800ecec:	e3 ff ff cc 	bi 800ec1c <rtems_rfs_format+0x838>            <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800ecf0:	36 01 ff ff 	addi r1,r16,-1                                 <== NOT EXECUTED
 800ecf4:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800ecf8:	fb ff ca bf 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800ecfc:	34 25 00 02 	addi r5,r1,2                                   <== NOT EXECUTED
 800ed00:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800ed04:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800ed08:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800ed0c:	b4 a5 18 00 	add r3,r5,r5                                   <== NOT EXECUTED
 800ed10:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ed14:	b4 a3 20 00 	add r4,r5,r3                                   <== NOT EXECUTED
 800ed18:	b4 84 18 00 	add r3,r4,r4                                   <== NOT EXECUTED
 800ed1c:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ed20:	b4 83 20 00 	add r4,r4,r3                                   <== NOT EXECUTED
 800ed24:	b4 84 18 00 	add r3,r4,r4                                   <== NOT EXECUTED
 800ed28:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 800ed2c:	b4 83 18 00 	add r3,r4,r3                                   <== NOT EXECUTED
 800ed30:	e3 ff ff a9 	bi 800ebd4 <rtems_rfs_format+0x7f0>            <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800ed34:	b9 a0 08 00 	mv r1,r13                                      
 800ed38:	ba 20 10 00 	mv r2,r17                                      
 800ed3c:	f8 00 36 50 	calli 801c67c <rtems_rfs_buffer_handle_release>
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
 800ed40:	2b 81 00 6c 	lw r1,(sp+108)                                 
 800ed44:	48 20 00 46 	bg r1,r0,800ee5c <rtems_rfs_format+0xa78>      <== ALWAYS TAKEN
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
                                                                      
  if (config->verbose)                                                
 800ed48:	41 c1 00 15 	lbu r1,(r14+21)                                
 800ed4c:	5c 20 00 41 	bne r1,r0,800ee50 <rtems_rfs_format+0xa6c>     <== NEVER TAKEN
    printf ("\n");                                                    
                                                                      
  rc = rtems_rfs_buffer_close (&fs);                                  
 800ed50:	b9 a0 08 00 	mv r1,r13                                      
 800ed54:	f8 00 38 57 	calli 801ceb0 <rtems_rfs_buffer_close>         
 800ed58:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800ed5c:	4c 01 00 09 	bge r0,r1,800ed80 <rtems_rfs_format+0x99c>     <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: buffer close failed: %d: %s\n",       
 800ed60:	f8 00 5c 89 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800ed64:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800ed68:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ed6c:	38 21 97 e4 	ori r1,r1,0x97e4                               <== NOT EXECUTED
 800ed70:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800ed74:	f8 00 57 c9 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
 800ed78:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800ed7c:	e3 ff fe 22 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
  int                    rc;                                          
                                                                      
  /*                                                                  
   * External API so returns -1.                                      
   */                                                                 
  rc = rtems_rfs_fs_open (name, NULL,                                 
 800ed80:	ba a0 08 00 	mv r1,r21                                      
 800ed84:	34 02 00 00 	mvi r2,0                                       
 800ed88:	34 03 00 06 	mvi r3,6                                       
 800ed8c:	34 04 00 00 	mvi r4,0                                       
 800ed90:	37 85 01 1c 	addi r5,sp,284                                 
 800ed94:	f8 00 42 a3 	calli 801f820 <rtems_rfs_fs_open>              
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
 800ed98:	4c 20 00 0d 	bge r1,r0,800edcc <rtems_rfs_format+0x9e8>     <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
            errno, strerror (errno));                                 
 800ed9c:	f8 00 52 ea 	calli 8023944 <__errno>                        <== NOT EXECUTED
  rc = rtems_rfs_fs_open (name, NULL,                                 
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
 800eda0:	28 2b 00 00 	lw r11,(r1+0)                                  <== NOT EXECUTED
            errno, strerror (errno));                                 
 800eda4:	f8 00 52 e8 	calli 8023944 <__errno>                        <== NOT EXECUTED
  rc = rtems_rfs_fs_open (name, NULL,                                 
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
 800eda8:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 800edac:	f8 00 5c 76 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800edb0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800edb4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800edb8:	38 21 98 14 	ori r1,r1,0x9814                               <== NOT EXECUTED
 800edbc:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800edc0:	f8 00 57 b6 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
 800edc4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800edc8:	e3 ff fe 0f 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
            errno, strerror (errno));                                 
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);          
 800edcc:	2b 81 01 1c 	lw r1,(sp+284)                                 
 800edd0:	34 02 00 01 	mvi r2,1                                       
 800edd4:	37 83 01 18 	addi r3,sp,280                                 
 800edd8:	f8 00 03 aa 	calli 800fc80 <rtems_rfs_inode_alloc>          
 800eddc:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800ede0:	4c 01 00 12 	bge r0,r1,800ee28 <rtems_rfs_format+0xa44>     <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: inode allocation failed: %d: %s\n",   
 800ede4:	f8 00 5c 68 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800ede8:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800edec:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800edf0:	38 21 98 48 	ori r1,r1,0x9848                               <== NOT EXECUTED
 800edf4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800edf8:	f8 00 57 a8 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    rtems_rfs_fs_close (fs);                                          
 800edfc:	2b 81 01 1c 	lw r1,(sp+284)                                 <== NOT EXECUTED
 800ee00:	f8 00 45 10 	calli 8020240 <rtems_rfs_fs_close>             <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_write_root_dir (name);                               
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
 800ee04:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800ee08:	f8 00 5c 5f 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800ee0c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800ee10:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ee14:	38 21 99 b4 	ori r1,r1,0x99b4                               <== NOT EXECUTED
 800ee18:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800ee1c:	f8 00 57 9f 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
 800ee20:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800ee24:	e3 ff fd f8 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
            rc, strerror (rc));                                       
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  if (ino != RTEMS_RFS_ROOT_INO)                                      
 800ee28:	2b 82 01 18 	lw r2,(sp+280)                                 
 800ee2c:	34 01 00 01 	mvi r1,1                                       
 800ee30:	44 41 00 c3 	be r2,r1,800f13c <rtems_rfs_format+0xd58>      <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
 800ee34:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ee38:	38 21 98 7c 	ori r1,r1,0x987c                               <== NOT EXECUTED
 800ee3c:	f8 00 57 97 	calli 8024c98 <printf>                         <== NOT EXECUTED
    rtems_rfs_fs_close (fs);                                          
 800ee40:	2b 81 01 1c 	lw r1,(sp+284)                                 <== NOT EXECUTED
 800ee44:	f8 00 44 ff 	calli 8020240 <rtems_rfs_fs_close>             <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
 800ee48:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800ee4c:	e3 ff fd ee 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
                                                                      
  if (config->verbose)                                                
    printf ("\n");                                                    
 800ee50:	34 01 00 0a 	mvi r1,10                                      <== NOT EXECUTED
 800ee54:	f8 00 58 17 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
 800ee58:	e3 ff ff be 	bi 800ed50 <rtems_rfs_format+0x96c>            <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800ee5c:	2b 83 00 4c 	lw r3,(sp+76)                                  
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
 800ee60:	41 d6 00 14 	lbu r22,(r14+20)                               
 800ee64:	41 d3 00 15 	lbu r19,(r14+21)                               
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
 800ee68:	2b 8c 00 70 	lw r12,(sp+112)                                
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800ee6c:	44 60 01 54 	be r3,r0,800f3bc <rtems_rfs_format+0xfd8>      <== NEVER TAKEN
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
                                                                      
  if (verbose)                                                        
    printf ("\rrtems-rfs: format: group %3d: base = %" PRId32 ", size = %zd",
 800ee70:	78 18 08 03 	mvhi r24,0x803                                 
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  if (verbose)                                                        
    printf (", blocks");                                              
 800ee74:	78 17 08 03 	mvhi r23,0x803                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  if (verbose)                                                        
    printf (", inodes");                                              
 800ee78:	78 1b 08 03 	mvhi fp,0x803                                  
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800ee7c:	34 0b 00 01 	mvi r11,1                                      
 800ee80:	34 12 00 00 	mvi r18,0                                      
 800ee84:	37 90 00 f4 	addi r16,sp,244                                
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
                                                                      
  if (verbose)                                                        
    printf ("\rrtems-rfs: format: group %3d: base = %" PRId32 ", size = %zd",
 800ee88:	3b 18 95 94 	ori r24,r24,0x9594                             
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  if (verbose)                                                        
    printf (", blocks");                                              
 800ee8c:	3a f7 95 cc 	ori r23,r23,0x95cc                             
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
            group, rc, strerror (rc));                                
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
 800ee90:	34 19 00 01 	mvi r25,1                                      
                                                                      
  if (verbose)                                                        
    printf (", inodes");                                              
 800ee94:	3b 7b 96 b4 	ori fp,fp,0x96b4                               
  /*                                                                  
   * Be nice to strange sizes of disks. These are embedded systems after all
   * and nice numbers do not always work out. Let the last block pick up the
   * remainder of the blocks.                                         
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
 800ee98:	b5 6c 20 00 	add r4,r11,r12                                 
 800ee9c:	50 64 00 02 	bgeu r3,r4,800eea4 <rtems_rfs_format+0xac0>    <== NEVER TAKEN
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
 800eea0:	c8 6b 60 00 	sub r12,r3,r11                                 
                                                                      
  if (verbose)                                                        
 800eea4:	5e 60 00 37 	bne r19,r0,800ef80 <rtems_rfs_format+0xb9c>    <== NEVER TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800eea8:	33 80 01 0c 	sb (sp+268),r0                                 
  handle->bnum  = 0;                                                  
 800eeac:	5b 80 01 10 	sw (sp+272),r0                                 
  handle->buffer = NULL;                                              
 800eeb0:	5b 80 01 14 	sw (sp+276),r0                                 
    printf (", blocks");                                              
                                                                      
  /*                                                                  
   * Open the block bitmap using the new buffer.                      
   */                                                                 
  rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,       
 800eeb4:	ba 00 08 00 	mv r1,r16                                      
 800eeb8:	b9 a0 10 00 	mv r2,r13                                      
 800eebc:	ba 20 18 00 	mv r3,r17                                      
 800eec0:	b9 80 20 00 	mv r4,r12                                      
 800eec4:	b9 60 28 00 	mv r5,r11                                      
 800eec8:	f8 00 2f 8e 	calli 801ad00 <rtems_rfs_bitmap_open>          
 800eecc:	b8 20 78 00 	mv r15,r1                                      
                              group_base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
  if (rc > 0)                                                         
 800eed0:	4c 01 00 11 	bge r0,r1,800ef14 <rtems_rfs_format+0xb30>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800eed4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800eed8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800eedc:	f8 00 35 e8 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: open block bitmap failed: %d: %s\n",
 800eee0:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800eee4:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800eee8:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800eeec:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800eef0:	f8 00 5c 25 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800eef4:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800eef8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800eefc:	38 21 95 d8 	ori r1,r1,0x95d8                               <== NOT EXECUTED
 800ef00:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800ef04:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 800ef08:	f8 00 57 64 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800ef0c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800ef10:	e3 ff fd bd 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Force the whole buffer to a known state. The bit map may not occupy the
   * whole block.                                                     
   */                                                                 
  memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
 800ef14:	2b 84 01 14 	lw r4,(sp+276)                                 
 800ef18:	2b 83 00 50 	lw r3,(sp+80)                                  
 800ef1c:	34 02 00 ff 	mvi r2,255                                     
 800ef20:	28 81 00 1c 	lw r1,(r4+28)                                  
 800ef24:	f8 00 56 c1 	calli 8024a28 <memset>                         
                                                                      
  /*                                                                  
   * Clear the bitmap.                                                
   */                                                                 
  rc = rtems_rfs_bitmap_map_clear_all (&bitmap);                      
 800ef28:	ba 00 08 00 	mv r1,r16                                      
 800ef2c:	f8 00 2e b0 	calli 801a9ec <rtems_rfs_bitmap_map_clear_all> 
 800ef30:	b8 20 78 00 	mv r15,r1                                      
  if (rc > 0)                                                         
 800ef34:	4c 01 00 1e 	bge r0,r1,800efac <rtems_rfs_format+0xbc8>     <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_bitmap_close (&bitmap);                                 
 800ef38:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 800ef3c:	f8 00 2f 92 	calli 801ad84 <rtems_rfs_bitmap_close>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800ef40:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800ef44:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800ef48:	f8 00 35 cd 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: block bitmap clear all failed: %d: %s\n",
 800ef4c:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800ef50:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800ef54:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800ef58:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800ef5c:	f8 00 5c 0a 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800ef60:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800ef64:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ef68:	38 21 96 20 	ori r1,r1,0x9620                               <== NOT EXECUTED
 800ef6c:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800ef70:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 800ef74:	f8 00 57 49 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800ef78:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800ef7c:	e3 ff fd a2 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
                                                                      
  if (verbose)                                                        
    printf ("\rrtems-rfs: format: group %3d: base = %" PRId32 ", size = %zd",
 800ef80:	bb 00 08 00 	mv r1,r24                                      <== NOT EXECUTED
 800ef84:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800ef88:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 800ef8c:	b9 80 20 00 	mv r4,r12                                      <== NOT EXECUTED
 800ef90:	f8 00 57 42 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  if (verbose)                                                        
    printf (", blocks");                                              
 800ef94:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800ef98:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800ef9c:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800efa0:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800efa4:	f8 00 57 3d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800efa8:	e3 ff ff c3 	bi 800eeb4 <rtems_rfs_format+0xad0>            <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Forced allocation of the block bitmap.                           
   */                                                                 
  rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
 800efac:	34 02 00 00 	mvi r2,0                                       
 800efb0:	ba 00 08 00 	mv r1,r16                                      
 800efb4:	f8 00 2d ba 	calli 801a69c <rtems_rfs_bitmap_map_set>       
                                                                      
  /*                                                                  
   * Forced allocation of the inode bitmap.                           
   */                                                                 
  rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
 800efb8:	34 02 00 01 	mvi r2,1                                       
 800efbc:	ba 00 08 00 	mv r1,r16                                      
 800efc0:	f8 00 2d b7 	calli 801a69c <rtems_rfs_bitmap_map_set>       
                                                                      
  /*                                                                  
   * Determine the number of inodes blocks in the group.              
   */                                                                 
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
 800efc4:	2b 83 00 74 	lw r3,(sp+116)                                 
 800efc8:	2b 82 00 78 	lw r2,(sp+120)                                 
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800efcc:	5c 60 00 36 	bne r3,r0,800f0a4 <rtems_rfs_format+0xcc0>     <== ALWAYS TAKEN
    return 1;                                                         
 800efd0:	34 14 00 01 	mvi r20,1                                      <== NOT EXECUTED
 800efd4:	34 0f 00 00 	mvi r15,0                                      
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
 800efd8:	35 e2 00 02 	addi r2,r15,2                                  
 800efdc:	ba 00 08 00 	mv r1,r16                                      
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
 800efe0:	35 ef 00 01 	addi r15,r15,1                                 
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
 800efe4:	f8 00 2d ae 	calli 801a69c <rtems_rfs_bitmap_map_set>       
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
 800efe8:	4a 8f ff fc 	bg r20,r15,800efd8 <rtems_rfs_format+0xbf4>    
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
                                                                      
  /*                                                                  
   * Close the block bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
 800efec:	ba 00 08 00 	mv r1,r16                                      
 800eff0:	f8 00 2f 65 	calli 801ad84 <rtems_rfs_bitmap_close>         
 800eff4:	b8 20 78 00 	mv r15,r1                                      
  if (rc > 0)                                                         
 800eff8:	4c 01 00 11 	bge r0,r1,800f03c <rtems_rfs_format+0xc58>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800effc:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f000:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f004:	f8 00 35 9e 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
 800f008:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f00c:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f010:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f014:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800f018:	f8 00 5b db 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f01c:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800f020:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f024:	38 21 96 6c 	ori r1,r1,0x966c                               <== NOT EXECUTED
 800f028:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f02c:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 800f030:	f8 00 57 1a 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f034:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f038:	e3 ff fd 73 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
            group, rc, strerror (rc));                                
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
 800f03c:	33 99 01 0c 	sb (sp+268),r25                                
                                                                      
  if (verbose)                                                        
 800f040:	5e 60 00 39 	bne r19,r0,800f124 <rtems_rfs_format+0xd40>    <== NEVER TAKEN
    printf (", inodes");                                              
                                                                      
  /*                                                                  
   * Open the inode bitmap using the old buffer. Should release any changes.
   */                                                                 
  rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,       
 800f044:	b9 80 20 00 	mv r4,r12                                      
 800f048:	ba 00 08 00 	mv r1,r16                                      
 800f04c:	b9 a0 10 00 	mv r2,r13                                      
 800f050:	ba 20 18 00 	mv r3,r17                                      
 800f054:	35 65 00 01 	addi r5,r11,1                                  
 800f058:	f8 00 2f 2a 	calli 801ad00 <rtems_rfs_bitmap_open>          
 800f05c:	b8 20 60 00 	mv r12,r1                                      
                              group_base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
  if (rc > 0)                                                         
 800f060:	4c 01 00 16 	bge r0,r1,800f0b8 <rtems_rfs_format+0xcd4>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f064:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f068:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f06c:	f8 00 35 84 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: open inode bitmap failed: %d: %s\n",
 800f070:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f074:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f078:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f07c:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800f080:	f8 00 5b c1 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f084:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800f088:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f08c:	38 21 96 c0 	ori r1,r1,0x96c0                               <== NOT EXECUTED
 800f090:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f094:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800f098:	f8 00 57 00 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f09c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f0a0:	e3 ff fd 59 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800f0a4:	34 61 ff ff 	addi r1,r3,-1                                  
 800f0a8:	fb ff c9 d3 	calli 80017f4 <__udivsi3>                      
 800f0ac:	34 34 00 01 	addi r20,r1,1                                  
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
 800f0b0:	4a 80 ff c9 	bg r20,r0,800efd4 <rtems_rfs_format+0xbf0>     <== ALWAYS TAKEN
 800f0b4:	e3 ff ff ce 	bi 800efec <rtems_rfs_format+0xc08>            <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Force the whole buffer to a known state. The bit map may not occupy the
   * whole block.                                                     
   */                                                                 
  memset (rtems_rfs_buffer_data (&handle), 0x00, rtems_rfs_fs_block_size (fs));
 800f0b8:	2b 81 01 14 	lw r1,(sp+276)                                 
 800f0bc:	2b 83 00 50 	lw r3,(sp+80)                                  
 800f0c0:	34 02 00 00 	mvi r2,0                                       
 800f0c4:	28 21 00 1c 	lw r1,(r1+28)                                  
 800f0c8:	f8 00 56 58 	calli 8024a28 <memset>                         
                                                                      
  /*                                                                  
   * Clear the inode bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_map_clear_all (&bitmap);                      
 800f0cc:	ba 00 08 00 	mv r1,r16                                      
 800f0d0:	f8 00 2e 47 	calli 801a9ec <rtems_rfs_bitmap_map_clear_all> 
 800f0d4:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 800f0d8:	4c 01 00 2e 	bge r0,r1,800f190 <rtems_rfs_format+0xdac>     <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_bitmap_close (&bitmap);                                 
 800f0dc:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 800f0e0:	f8 00 2f 29 	calli 801ad84 <rtems_rfs_bitmap_close>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f0e4:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f0e8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f0ec:	f8 00 35 64 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: inode bitmap" \     
 800f0f0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f0f4:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f0f8:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f0fc:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800f100:	f8 00 5b a1 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f104:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800f108:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f10c:	38 21 97 08 	ori r1,r1,0x9708                               <== NOT EXECUTED
 800f110:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f114:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800f118:	f8 00 56 e0 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f11c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f120:	e3 ff fd 39 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  if (verbose)                                                        
    printf (", inodes");                                              
 800f124:	bb 60 08 00 	mv r1,fp                                       <== NOT EXECUTED
 800f128:	f8 00 56 dc 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800f12c:	e3 ff ff c6 	bi 800f044 <rtems_rfs_format+0xc60>            <== NOT EXECUTED
                                                                      
    if (total_size >= GIGS (1))                                       
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
 800f130:	34 0b 00 01 	mvi r11,1                                      <== NOT EXECUTED
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fs->block_size = 1 << b;                                        
 800f134:	5b 8b 00 50 	sw (sp+80),r11                                 <== NOT EXECUTED
 800f138:	e3 ff fd 79 	bi 800e71c <rtems_rfs_format+0x338>            <== NOT EXECUTED
    printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 800f13c:	2b 81 01 1c 	lw r1,(sp+284)                                 
 800f140:	37 8c 00 cc 	addi r12,sp,204                                
 800f144:	34 02 00 01 	mvi r2,1                                       
 800f148:	b9 80 18 00 	mv r3,r12                                      
 800f14c:	34 04 00 01 	mvi r4,1                                       
 800f150:	f8 00 03 17 	calli 800fdac <rtems_rfs_inode_open>           
 800f154:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800f158:	4c 01 00 5e 	bge r0,r1,800f2d0 <rtems_rfs_format+0xeec>     <== ALWAYS TAKEN
  {                                                                   
    printf ("rtems-rfs: format: inode open failed: %d: %s\n",         
 800f15c:	f8 00 5b 8a 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f160:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f164:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f168:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800f16c:	38 21 98 b4 	ori r1,r1,0x98b4                               <== NOT EXECUTED
 800f170:	f8 00 56 ca 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
    rtems_rfs_group_bitmap_free (fs, true, ino);                      
 800f174:	2b 81 01 1c 	lw r1,(sp+284)                                 <== NOT EXECUTED
 800f178:	2b 83 01 18 	lw r3,(sp+280)                                 <== NOT EXECUTED
 800f17c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 800f180:	f8 00 01 fc 	calli 800f970 <rtems_rfs_group_bitmap_free>    <== NOT EXECUTED
    rtems_rfs_fs_close (fs);                                          
 800f184:	2b 81 01 1c 	lw r1,(sp+284)                                 <== NOT EXECUTED
 800f188:	f8 00 44 2e 	calli 8020240 <rtems_rfs_fs_close>             <== NOT EXECUTED
 800f18c:	e3 ff ff 1e 	bi 800ee04 <rtems_rfs_format+0xa20>            <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Close the inode bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
 800f190:	ba 00 08 00 	mv r1,r16                                      
 800f194:	f8 00 2e fc 	calli 801ad84 <rtems_rfs_bitmap_close>         
 800f198:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 800f19c:	4c 01 00 11 	bge r0,r1,800f1e0 <rtems_rfs_format+0xdfc>     <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f1a0:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f1a4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f1a8:	f8 00 35 35 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: close inode" \      
 800f1ac:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f1b0:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f1b4:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f1b8:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800f1bc:	f8 00 5b 72 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f1c0:	b8 20 20 00 	mv r4,r1                                       <== NOT EXECUTED
 800f1c4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f1c8:	38 21 97 54 	ori r1,r1,0x9754                               <== NOT EXECUTED
 800f1cc:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f1d0:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800f1d4:	f8 00 56 b1 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f1d8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f1dc:	e3 ff fd 0a 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    printf ("\nrtems-rfs: write-group: group %3d: close inode" \      
            " bitmap failed: %d: %s\n", group, rc, strerror (rc));    
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
 800f1e0:	33 99 01 0c 	sb (sp+268),r25                                
                                                                      
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
 800f1e4:	46 c0 00 25 	be r22,r0,800f278 <rtems_rfs_format+0xe94>     <== ALWAYS TAKEN
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
 800f1e8:	4c 14 00 24 	bge r0,r20,800f278 <rtems_rfs_format+0xe94>    <== NOT EXECUTED
 800f1ec:	35 6b 00 02 	addi r11,r11,2                                 <== NOT EXECUTED
 800f1f0:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
 800f1f4:	b5 6c 98 00 	add r19,r11,r12                                <== NOT EXECUTED
    {                                                                 
      rc = rtems_rfs_buffer_handle_request (fs, &handle,              
 800f1f8:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f1fc:	ba 60 18 00 	mv r3,r19                                      <== NOT EXECUTED
 800f200:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 800f204:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f208:	f8 00 35 8f 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 800f20c:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
                                                                      
      /*                                                              
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
 800f210:	34 02 00 ff 	mvi r2,255                                     <== NOT EXECUTED
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
 800f214:	35 8c 00 01 	addi r12,r12,1                                 <== NOT EXECUTED
    {                                                                 
      rc = rtems_rfs_buffer_handle_request (fs, &handle,              
                                            group_base + b + RTEMS_RFS_GROUP_INODE_BLOCK,
                                            false);                   
      if (rc > 0)                                                     
 800f218:	4c 01 00 12 	bge r0,r1,800f260 <rtems_rfs_format+0xe7c>     <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f21c:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 800f220:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f224:	f8 00 35 16 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
      {                                                               
        rtems_rfs_buffer_handle_close (fs, &handle);                  
        printf ("\nrtems-rfs: write-group: group %3d: block %" PRId32 " request failed: %d: %s\n",
 800f228:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f22c:	33 80 01 0c 	sb (sp+268),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f230:	5b 80 01 10 	sw (sp+272),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f234:	5b 80 01 14 	sw (sp+276),r0                                 <== NOT EXECUTED
 800f238:	f8 00 5b 53 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f23c:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
 800f240:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f244:	38 21 97 9c 	ori r1,r1,0x979c                               <== NOT EXECUTED
 800f248:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f24c:	ba 60 18 00 	mv r3,r19                                      <== NOT EXECUTED
 800f250:	b9 e0 20 00 	mv r4,r15                                      <== NOT EXECUTED
 800f254:	f8 00 56 91 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f258:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f25c:	e3 ff fc ea 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
                                                                      
      /*                                                              
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
 800f260:	2b 81 01 14 	lw r1,(sp+276)                                 <== NOT EXECUTED
 800f264:	2b 83 00 50 	lw r3,(sp+80)                                  <== NOT EXECUTED
 800f268:	28 21 00 1c 	lw r1,(r1+28)                                  <== NOT EXECUTED
 800f26c:	f8 00 55 ef 	calli 8024a28 <memset>                         <== NOT EXECUTED
                                                                      
      rtems_rfs_buffer_mark_dirty (&handle);                          
 800f270:	33 99 01 0c 	sb (sp+268),r25                                <== NOT EXECUTED
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
 800f274:	4a 8c ff e0 	bg r20,r12,800f1f4 <rtems_rfs_format+0xe10>    <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f278:	b9 a0 08 00 	mv r1,r13                                      
 800f27c:	ba 20 10 00 	mv r2,r17                                      
 800f280:	f8 00 34 ff 	calli 801c67c <rtems_rfs_buffer_handle_release>
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
 800f284:	2b 81 00 6c 	lw r1,(sp+108)                                 
 800f288:	36 52 00 01 	addi r18,r18,1                                 
 800f28c:	48 32 00 02 	bg r1,r18,800f294 <rtems_rfs_format+0xeb0>     <== NEVER TAKEN
 800f290:	e3 ff fe ae 	bi 800ed48 <rtems_rfs_format+0x964>            
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
 800f294:	2b 8c 00 70 	lw r12,(sp+112)                                <== NOT EXECUTED
 800f298:	ba 40 08 00 	mv r1,r18                                      <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
 800f29c:	41 d6 00 14 	lbu r22,(r14+20)                               <== NOT EXECUTED
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
 800f2a0:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 800f2a4:	fb ff c9 48 	calli 80017c4 <__mulsi3>                       <== NOT EXECUTED
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800f2a8:	2b 83 00 4c 	lw r3,(sp+76)                                  <== NOT EXECUTED
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
 800f2ac:	34 2b 00 01 	addi r11,r1,1                                  <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
 800f2b0:	41 d3 00 15 	lbu r19,(r14+21)                               <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800f2b4:	50 6b fe f9 	bgeu r3,r11,800ee98 <rtems_rfs_format+0xab4>   <== NOT EXECUTED
  {                                                                   
    printf ("rtems-rfs: write-group: group %d base beyond disk limit\n",
 800f2b8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f2bc:	38 21 95 58 	ori r1,r1,0x9558                               <== NOT EXECUTED
 800f2c0:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 800f2c4:	f8 00 56 75 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
 800f2c8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 800f2cc:	e3 ff fc ce 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
    rtems_rfs_group_bitmap_free (fs, true, ino);                      
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_initialise (&inode, 0,                         
 800f2d0:	b9 80 08 00 	mv r1,r12                                      
 800f2d4:	34 02 00 00 	mvi r2,0                                       
 800f2d8:	34 03 41 c9 	mvi r3,16841                                   
 800f2dc:	34 04 00 00 	mvi r4,0                                       
 800f2e0:	34 05 00 00 	mvi r5,0                                       
 800f2e4:	f8 00 04 0a 	calli 801030c <rtems_rfs_inode_initialise>     
 800f2e8:	b8 20 58 00 	mv r11,r1                                      
                                   (RTEMS_RFS_S_IFDIR | RTEMS_RFS_S_IRWXU |
                                    RTEMS_RFS_S_IXGRP | RTEMS_RFS_S_IXOTH),
                                   0, 0);                             
  if (rc > 0)                                                         
 800f2ec:	4c 01 00 07 	bge r0,r1,800f308 <rtems_rfs_format+0xf24>     <== ALWAYS TAKEN
    printf ("rtems-rfs: format: inode initialise failed: %d: %s\n",   
 800f2f0:	f8 00 5b 25 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f2f4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f2f8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f2fc:	38 21 98 e4 	ori r1,r1,0x98e4                               <== NOT EXECUTED
 800f300:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800f304:	f8 00 56 65 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, ino);             
 800f308:	2b 81 01 1c 	lw r1,(sp+284)                                 
 800f30c:	2b 85 01 18 	lw r5,(sp+280)                                 
 800f310:	78 03 08 03 	mvhi r3,0x803                                  
 800f314:	b9 80 10 00 	mv r2,r12                                      
 800f318:	38 63 7e 6c 	ori r3,r3,0x7e6c                               
 800f31c:	34 04 00 01 	mvi r4,1                                       
 800f320:	f8 00 38 9a 	calli 801d588 <rtems_rfs_dir_add_entry>        
 800f324:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800f328:	4c 01 00 07 	bge r0,r1,800f344 <rtems_rfs_format+0xf60>     <== ALWAYS TAKEN
    printf ("rtems-rfs: format: directory add failed: %d: %s\n",      
 800f32c:	f8 00 5b 16 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f330:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f334:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f338:	38 21 99 18 	ori r1,r1,0x9918                               <== NOT EXECUTED
 800f33c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800f340:	f8 00 56 56 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 800f344:	2b 81 01 1c 	lw r1,(sp+284)                                 
 800f348:	b9 80 10 00 	mv r2,r12                                      
 800f34c:	f8 00 03 32 	calli 8010014 <rtems_rfs_inode_close>          
 800f350:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 800f354:	4c 01 00 07 	bge r0,r1,800f370 <rtems_rfs_format+0xf8c>     <== ALWAYS TAKEN
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
 800f358:	f8 00 5b 0b 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f35c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f360:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f364:	38 21 99 4c 	ori r1,r1,0x994c                               <== NOT EXECUTED
 800f368:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800f36c:	f8 00 56 4b 	calli 8024c98 <printf>                         <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
 800f370:	2b 81 01 1c 	lw r1,(sp+284)                                 
 800f374:	f8 00 43 b3 	calli 8020240 <rtems_rfs_fs_close>             
 800f378:	b8 20 58 00 	mv r11,r1                                      
  if (rc < 0)                                                         
 800f37c:	4c 20 00 0d 	bge r1,r0,800f3b0 <rtems_rfs_format+0xfcc>     <== ALWAYS TAKEN
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
            errno, strerror (errno));                                 
 800f380:	f8 00 51 71 	calli 8023944 <__errno>                        <== NOT EXECUTED
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
  if (rc < 0)                                                         
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
 800f384:	28 2b 00 00 	lw r11,(r1+0)                                  <== NOT EXECUTED
            errno, strerror (errno));                                 
 800f388:	f8 00 51 6f 	calli 8023944 <__errno>                        <== NOT EXECUTED
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
  if (rc < 0)                                                         
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
 800f38c:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 800f390:	f8 00 5a fd 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f394:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f398:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f39c:	38 21 99 7c 	ori r1,r1,0x997c                               <== NOT EXECUTED
 800f3a0:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 800f3a4:	f8 00 56 3d 	calli 8024c98 <printf>                         <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
 800f3a8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800f3ac:	e3 ff fc 96 	bi 800e604 <rtems_rfs_format+0x220>            <== NOT EXECUTED
 800f3b0:	34 01 00 00 	mvi r1,0                                       
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_write_root_dir (name);                               
  if (rc > 0)                                                         
 800f3b4:	45 60 fc 94 	be r11,r0,800e604 <rtems_rfs_format+0x220>     <== ALWAYS TAKEN
 800f3b8:	e3 ff fe 93 	bi 800ee04 <rtems_rfs_format+0xa20>            <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
 800f3bc:	34 12 00 00 	mvi r18,0                                      <== NOT EXECUTED
 800f3c0:	e3 ff ff be 	bi 800f2b8 <rtems_rfs_format+0xed4>            <== NOT EXECUTED
                                                                      

08020240 <rtems_rfs_fs_close>: return 0; } int rtems_rfs_fs_close (rtems_rfs_file_system* fs) {
 8020240:	37 9c ff f0 	addi sp,sp,-16                                 
 8020244:	5b 8b 00 10 	sw (sp+16),r11                                 
 8020248:	5b 8c 00 0c 	sw (sp+12),r12                                 
 802024c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8020250:	5b 9d 00 04 	sw (sp+4),ra                                   
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
 8020254:	34 02 00 02 	mvi r2,2                                       
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_fs_close (rtems_rfs_file_system* fs)                        
{                                                                     
 8020258:	b8 20 58 00 	mv r11,r1                                      
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
 802025c:	34 01 00 00 	mvi r1,0                                       
 8020260:	fb ff c7 d8 	calli 80121c0 <rtems_rfs_trace>                
 8020264:	5c 20 00 18 	bne r1,r0,80202c4 <rtems_rfs_fs_close+0x84>    <== NEVER TAKEN
    printf ("rtems-rfs: close\n");                                    
                                                                      
  for (group = 0; group < fs->group_count; group++)                   
 8020268:	29 61 00 24 	lw r1,(r11+36)                                 
 802026c:	4c 01 00 0b 	bge r0,r1,8020298 <rtems_rfs_fs_close+0x58>    <== NEVER TAKEN
 8020270:	34 0d 00 00 	mvi r13,0                                      
 8020274:	34 0c 00 00 	mvi r12,0                                      
    rtems_rfs_group_close (fs, &fs->groups[group]);                   
 8020278:	29 62 00 20 	lw r2,(r11+32)                                 
 802027c:	b9 60 08 00 	mv r1,r11                                      
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
    printf ("rtems-rfs: close\n");                                    
                                                                      
  for (group = 0; group < fs->group_count; group++)                   
 8020280:	35 8c 00 01 	addi r12,r12,1                                 
    rtems_rfs_group_close (fs, &fs->groups[group]);                   
 8020284:	b4 4d 10 00 	add r2,r2,r13                                  
 8020288:	fb ff bc d9 	calli 800f5ec <rtems_rfs_group_close>          
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
    printf ("rtems-rfs: close\n");                                    
                                                                      
  for (group = 0; group < fs->group_count; group++)                   
 802028c:	29 61 00 24 	lw r1,(r11+36)                                 
 8020290:	35 ad 00 50 	addi r13,r13,80                                
 8020294:	48 2c ff f9 	bg r1,r12,8020278 <rtems_rfs_fs_close+0x38>    <== NEVER TAKEN
    rtems_rfs_group_close (fs, &fs->groups[group]);                   
                                                                      
  rtems_rfs_buffer_close (fs);                                        
 8020298:	b9 60 08 00 	mv r1,r11                                      
 802029c:	fb ff f3 05 	calli 801ceb0 <rtems_rfs_buffer_close>         
                                                                      
  free (fs);                                                          
 80202a0:	b9 60 08 00 	mv r1,r11                                      
 80202a4:	fb ff 9a 5c 	calli 8006c14 <free>                           
  return 0;                                                           
}                                                                     
 80202a8:	34 01 00 00 	mvi r1,0                                       
 80202ac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80202b0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80202b4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80202b8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80202bc:	37 9c 00 10 	addi sp,sp,16                                  
 80202c0:	c3 a0 00 00 	ret                                            
rtems_rfs_fs_close (rtems_rfs_file_system* fs)                        
{                                                                     
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
    printf ("rtems-rfs: close\n");                                    
 80202c4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80202c8:	38 21 bd cc 	ori r1,r1,0xbdcc                               <== NOT EXECUTED
 80202cc:	f8 00 13 3b 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 80202d0:	e3 ff ff e6 	bi 8020268 <rtems_rfs_fs_close+0x28>           <== NOT EXECUTED
                                                                      

0801f820 <rtems_rfs_fs_open>: rtems_rfs_fs_open (const char* name, void* user, uint32_t flags, uint32_t max_held_buffers, rtems_rfs_file_system** fs) {
 801f820:	37 9c ff a8 	addi sp,sp,-88                                 
 801f824:	5b 8b 00 24 	sw (sp+36),r11                                 
 801f828:	5b 8c 00 20 	sw (sp+32),r12                                 
 801f82c:	5b 8d 00 1c 	sw (sp+28),r13                                 
 801f830:	5b 8e 00 18 	sw (sp+24),r14                                 
 801f834:	5b 8f 00 14 	sw (sp+20),r15                                 
 801f838:	5b 90 00 10 	sw (sp+16),r16                                 
 801f83c:	5b 91 00 0c 	sw (sp+12),r17                                 
 801f840:	5b 92 00 08 	sw (sp+8),r18                                  
 801f844:	5b 9d 00 04 	sw (sp+4),ra                                   
 801f848:	b8 20 68 00 	mv r13,r1                                      
 801f84c:	b8 40 80 00 	mv r16,r2                                      
#endif                                                                
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
 801f850:	34 01 00 00 	mvi r1,0                                       
 801f854:	34 02 00 01 	mvi r2,1                                       
rtems_rfs_fs_open (const char*             name,                      
                   void*                   user,                      
                   uint32_t                flags,                     
                   uint32_t                max_held_buffers,          
                   rtems_rfs_file_system** fs)                        
{                                                                     
 801f858:	b8 60 70 00 	mv r14,r3                                      
 801f85c:	b8 80 78 00 	mv r15,r4                                      
 801f860:	b8 a0 60 00 	mv r12,r5                                      
#endif                                                                
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
 801f864:	fb ff ca 57 	calli 80121c0 <rtems_rfs_trace>                
 801f868:	5c 20 00 8e 	bne r1,r0,801faa0 <rtems_rfs_fs_open+0x280>    <== NEVER TAKEN
    printf ("rtems-rfs: open: %s\n", name);                           
                                                                      
  *fs = malloc (sizeof (rtems_rfs_file_system));                      
 801f86c:	34 01 00 84 	mvi r1,132                                     
 801f870:	fb ff 9e dd 	calli 80073e4 <malloc>                         
 801f874:	59 81 00 00 	sw (r12+0),r1                                  
 801f878:	b8 20 58 00 	mv r11,r1                                      
  if (!*fs)                                                           
 801f87c:	44 20 01 c4 	be r1,r0,801ff8c <rtems_rfs_fs_open+0x76c>     <== NEVER TAKEN
      printf ("rtems-rfs: open: no memory for file system data\n");   
    errno = ENOMEM;                                                   
    return -1;                                                        
  }                                                                   
                                                                      
  memset (*fs, 0, sizeof (rtems_rfs_file_system));                    
 801f880:	34 02 00 00 	mvi r2,0                                       
 801f884:	34 03 00 84 	mvi r3,132                                     
 801f888:	f8 00 14 68 	calli 8024a28 <memset>                         
                                                                      
  (*fs)->user = user;                                                 
 801f88c:	29 86 00 00 	lw r6,(r12+0)                                  
#endif                                                                
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, *fs);                             
 801f890:	b9 a0 08 00 	mv r1,r13                                      
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 801f894:	34 c2 00 74 	addi r2,r6,116                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 801f898:	34 ca 00 48 	addi r10,r6,72                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 801f89c:	34 c9 00 44 	addi r9,r6,68                                  
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 801f8a0:	34 c8 00 58 	addi r8,r6,88                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 801f8a4:	34 c7 00 54 	addi r7,r6,84                                  
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 801f8a8:	34 c5 00 68 	addi r5,r6,104                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
 801f8ac:	34 c4 00 64 	addi r4,r6,100                                 
  Chain_Node *tail = _Chain_Tail( the_chain );                        
 801f8b0:	34 c3 00 78 	addi r3,r6,120                                 
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
 801f8b4:	58 c2 00 7c 	sw (r6+124),r2                                 
    return -1;                                                        
  }                                                                   
                                                                      
  memset (*fs, 0, sizeof (rtems_rfs_file_system));                    
                                                                      
  (*fs)->user = user;                                                 
 801f8b8:	58 d0 00 80 	sw (r6+128),r16                                
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 801f8bc:	58 ca 00 44 	sw (r6+68),r10                                 
  head->previous = NULL;                                              
 801f8c0:	58 c0 00 48 	sw (r6+72),r0                                  
  tail->previous = head;                                              
 801f8c4:	58 c9 00 4c 	sw (r6+76),r9                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 801f8c8:	58 c8 00 54 	sw (r6+84),r8                                  
  head->previous = NULL;                                              
 801f8cc:	58 c0 00 58 	sw (r6+88),r0                                  
  tail->previous = head;                                              
 801f8d0:	58 c7 00 5c 	sw (r6+92),r7                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 801f8d4:	58 c5 00 64 	sw (r6+100),r5                                 
  head->previous = NULL;                                              
 801f8d8:	58 c0 00 68 	sw (r6+104),r0                                 
  tail->previous = head;                                              
 801f8dc:	58 c4 00 6c 	sw (r6+108),r4                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
 801f8e0:	58 c3 00 74 	sw (r6+116),r3                                 
  head->previous = NULL;                                              
 801f8e4:	58 c0 00 78 	sw (r6+120),r0                                 
  rtems_chain_initialize_empty (&(*fs)->buffers);                     
  rtems_chain_initialize_empty (&(*fs)->release);                     
  rtems_chain_initialize_empty (&(*fs)->release_modified);            
  rtems_chain_initialize_empty (&(*fs)->file_shares);                 
                                                                      
  (*fs)->max_held_buffers = max_held_buffers;                         
 801f8e8:	58 cf 00 40 	sw (r6+64),r15                                 
  (*fs)->buffers_count = 0;                                           
 801f8ec:	58 c0 00 50 	sw (r6+80),r0                                  
  (*fs)->release_count = 0;                                           
 801f8f0:	58 c0 00 60 	sw (r6+96),r0                                  
  (*fs)->release_modified_count = 0;                                  
 801f8f4:	58 c0 00 70 	sw (r6+112),r0                                 
  (*fs)->flags = flags;                                               
 801f8f8:	58 ce 00 00 	sw (r6+0),r14                                  
#endif                                                                
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, *fs);                             
 801f8fc:	b8 c0 10 00 	mv r2,r6                                       
 801f900:	fb ff f4 72 	calli 801cac8 <rtems_rfs_buffer_open>          
 801f904:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801f908:	4c 01 00 0f 	bge r0,r1,801f944 <rtems_rfs_fs_open+0x124>    <== ALWAYS TAKEN
  {                                                                   
    free (*fs);                                                       
 801f90c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 801f910:	fb ff 9c c1 	calli 8006c14 <free>                           <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801f914:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801f918:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801f91c:	fb ff ca 29 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801f920:	44 20 00 21 	be r1,r0,801f9a4 <rtems_rfs_fs_open+0x184>     <== NOT EXECUTED
      printf ("rtems-rfs: open: buffer open failed: %d: %s\n",        
 801f924:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801f928:	f8 00 19 97 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801f92c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801f930:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801f934:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801f938:	38 21 ba ec 	ori r1,r1,0xbaec                               <== NOT EXECUTED
 801f93c:	f8 00 14 d7 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801f940:	e0 00 00 19 	bi 801f9a4 <rtems_rfs_fs_open+0x184>           <== NOT EXECUTED
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_read_superblock (*fs);                            
 801f944:	29 8d 00 00 	lw r13,(r12+0)                                 
      printf ("rtems-rfs: read-superblock: handle open failed: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);        
 801f948:	37 8e 00 50 	addi r14,sp,80                                 
 801f94c:	b9 c0 10 00 	mv r2,r14                                      
 801f950:	b9 a0 08 00 	mv r1,r13                                      
 801f954:	34 03 00 00 	mvi r3,0                                       
 801f958:	34 04 00 01 	mvi r4,1                                       
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 801f95c:	33 80 00 50 	sb (sp+80),r0                                  
  handle->bnum  = 0;                                                  
 801f960:	5b 80 00 54 	sw (sp+84),r0                                  
  handle->buffer = NULL;                                              
 801f964:	5b 80 00 58 	sw (sp+88),r0                                  
 801f968:	fb ff f3 b7 	calli 801c844 <rtems_rfs_buffer_handle_request>
 801f96c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801f970:	4c 01 00 1b 	bge r0,r1,801f9dc <rtems_rfs_fs_open+0x1bc>    <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801f974:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801f978:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801f97c:	fb ff ca 11 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801f980:	5c 20 00 55 	bne r1,r0,801fad4 <rtems_rfs_fs_open+0x2b4>    <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_read_superblock (*fs);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
 801f984:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 801f988:	fb ff f5 4a 	calli 801ceb0 <rtems_rfs_buffer_close>         <== NOT EXECUTED
    free (*fs);                                                       
 801f98c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 801f990:	fb ff 9c a1 	calli 8006c14 <free>                           <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801f994:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801f998:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801f99c:	fb ff ca 09 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801f9a0:	5c 20 00 38 	bne r1,r0,801fa80 <rtems_rfs_fs_open+0x260>    <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
    free (*fs);                                                       
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
    errno = rc;                                                       
 801f9a4:	f8 00 0f e8 	calli 8023944 <__errno>                        <== NOT EXECUTED
 801f9a8:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
    return -1;                                                        
 801f9ac:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  errno = 0;                                                          
  return 0;                                                           
}                                                                     
 801f9b0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801f9b4:	2b 8b 00 24 	lw r11,(sp+36)                                 
 801f9b8:	2b 8c 00 20 	lw r12,(sp+32)                                 
 801f9bc:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 801f9c0:	2b 8e 00 18 	lw r14,(sp+24)                                 
 801f9c4:	2b 8f 00 14 	lw r15,(sp+20)                                 
 801f9c8:	2b 90 00 10 	lw r16,(sp+16)                                 
 801f9cc:	2b 91 00 0c 	lw r17,(sp+12)                                 
 801f9d0:	2b 92 00 08 	lw r18,(sp+8)                                  
 801f9d4:	37 9c 00 58 	addi sp,sp,88                                  
 801f9d8:	c3 a0 00 00 	ret                                            
      printf ("rtems-rfs: read-superblock: request failed%d: %s\n",   
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
 801f9dc:	2b 81 00 58 	lw r1,(sp+88)                                  
                                                                      
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))                    
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)      
 801f9e0:	34 02 00 18 	mvi r2,24                                      
      printf ("rtems-rfs: read-superblock: request failed%d: %s\n",   
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
 801f9e4:	28 2b 00 1c 	lw r11,(r1+28)                                 
                                                                      
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))                    
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)      
 801f9e8:	41 61 00 00 	lbu r1,(r11+0)                                 
 801f9ec:	41 6f 00 03 	lbu r15,(r11+3)                                
 801f9f0:	f8 00 5c e9 	calli 8036d94 <__ashlsi3>                      
 801f9f4:	b9 e1 78 00 	or r15,r15,r1                                  
 801f9f8:	41 61 00 01 	lbu r1,(r11+1)                                 
 801f9fc:	34 02 00 10 	mvi r2,16                                      
 801fa00:	f8 00 5c e5 	calli 8036d94 <__ashlsi3>                      
 801fa04:	41 63 00 02 	lbu r3,(r11+2)                                 
 801fa08:	b9 e1 08 00 	or r1,r15,r1                                   
 801fa0c:	b4 63 18 00 	add r3,r3,r3                                   
 801fa10:	b4 63 18 00 	add r3,r3,r3                                   
 801fa14:	b4 63 18 00 	add r3,r3,r3                                   
 801fa18:	b4 63 18 00 	add r3,r3,r3                                   
 801fa1c:	b4 63 18 00 	add r3,r3,r3                                   
 801fa20:	b4 63 18 00 	add r3,r3,r3                                   
 801fa24:	b4 63 18 00 	add r3,r3,r3                                   
 801fa28:	b4 63 18 00 	add r3,r3,r3                                   
 801fa2c:	b8 23 18 00 	or r3,r1,r3                                    
 801fa30:	78 01 08 03 	mvhi r1,0x803                                  
 801fa34:	38 21 9d 48 	ori r1,r1,0x9d48                               
 801fa38:	28 22 00 00 	lw r2,(r1+0)                                   
 801fa3c:	44 62 00 2e 	be r3,r2,801faf4 <rtems_rfs_fs_open+0x2d4>     <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801fa40:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801fa44:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801fa48:	fb ff c9 de 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801fa4c:	5c 20 00 1a 	bne r1,r0,801fab4 <rtems_rfs_fs_open+0x294>    <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801fa50:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801fa54:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801fa58:	fb ff f3 09 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
 801fa5c:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_read_superblock (*fs);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
 801fa60:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 801fa64:	fb ff f5 13 	calli 801ceb0 <rtems_rfs_buffer_close>         <== NOT EXECUTED
    free (*fs);                                                       
 801fa68:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 801fa6c:	fb ff 9c 6a 	calli 8006c14 <free>                           <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801fa70:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801fa74:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801fa78:	fb ff c9 d2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801fa7c:	44 20 ff ca 	be r1,r0,801f9a4 <rtems_rfs_fs_open+0x184>     <== NOT EXECUTED
      printf ("rtems-rfs: open: reading superblock: %d: %s\n",        
 801fa80:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801fa84:	f8 00 19 40 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801fa88:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801fa8c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801fa90:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801fa94:	38 21 bd 10 	ori r1,r1,0xbd10                               <== NOT EXECUTED
 801fa98:	f8 00 14 80 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801fa9c:	e3 ff ff c2 	bi 801f9a4 <rtems_rfs_fs_open+0x184>           <== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
    printf ("rtems-rfs: open: %s\n", name);                           
 801faa0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801faa4:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 801faa8:	38 21 ba a4 	ori r1,r1,0xbaa4                               <== NOT EXECUTED
 801faac:	f8 00 14 7b 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801fab0:	e3 ff ff 6f 	bi 801f86c <rtems_rfs_fs_open+0x4c>            <== NOT EXECUTED
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))                    
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)      
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
 801fab4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801fab8:	38 21 bb 50 	ori r1,r1,0xbb50                               <== NOT EXECUTED
 801fabc:	f8 00 15 3f 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801fac0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801fac4:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801fac8:	fb ff f2 ed 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
 801facc:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
 801fad0:	e3 ff ff e4 	bi 801fa60 <rtems_rfs_fs_open+0x240>           <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);        
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: request failed%d: %s\n",   
 801fad4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801fad8:	f8 00 19 2b 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801fadc:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801fae0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801fae4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801fae8:	38 21 bb 1c 	ori r1,r1,0xbb1c                               <== NOT EXECUTED
 801faec:	f8 00 14 6b 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801faf0:	e3 ff ff a5 	bi 801f984 <rtems_rfs_fs_open+0x164>           <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
 801faf4:	41 61 00 0c 	lbu r1,(r11+12)                                
 801faf8:	34 02 00 18 	mvi r2,24                                      
 801fafc:	f8 00 5c a6 	calli 8036d94 <__ashlsi3>                      
 801fb00:	b8 20 78 00 	mv r15,r1                                      
 801fb04:	41 61 00 0d 	lbu r1,(r11+13)                                
 801fb08:	34 02 00 10 	mvi r2,16                                      
 801fb0c:	f8 00 5c a2 	calli 8036d94 <__ashlsi3>                      
 801fb10:	41 63 00 0e 	lbu r3,(r11+14)                                
 801fb14:	41 70 00 0f 	lbu r16,(r11+15)                               
 801fb18:	b9 e1 08 00 	or r1,r15,r1                                   
 801fb1c:	b4 63 18 00 	add r3,r3,r3                                   
 801fb20:	b4 63 18 00 	add r3,r3,r3                                   
 801fb24:	b4 63 18 00 	add r3,r3,r3                                   
 801fb28:	b4 63 18 00 	add r3,r3,r3                                   
 801fb2c:	b4 63 18 00 	add r3,r3,r3                                   
 801fb30:	b4 63 18 00 	add r3,r3,r3                                   
 801fb34:	b4 63 18 00 	add r3,r3,r3                                   
 801fb38:	b4 63 18 00 	add r3,r3,r3                                   
 801fb3c:	b8 30 80 00 	or r16,r1,r16                                  
 801fb40:	ba 03 80 00 	or r16,r16,r3                                  
 801fb44:	59 b0 00 04 	sw (r13+4),r16                                 
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
 801fb48:	41 61 00 08 	lbu r1,(r11+8)                                 
 801fb4c:	34 02 00 18 	mvi r2,24                                      
 801fb50:	f8 00 5c 91 	calli 8036d94 <__ashlsi3>                      
 801fb54:	b8 20 88 00 	mv r17,r1                                      
 801fb58:	41 61 00 09 	lbu r1,(r11+9)                                 
 801fb5c:	34 02 00 10 	mvi r2,16                                      
 801fb60:	f8 00 5c 8d 	calli 8036d94 <__ashlsi3>                      
 801fb64:	41 63 00 0a 	lbu r3,(r11+10)                                
 801fb68:	41 6f 00 0b 	lbu r15,(r11+11)                               
 801fb6c:	ba 21 08 00 	or r1,r17,r1                                   
 801fb70:	b4 63 18 00 	add r3,r3,r3                                   
 801fb74:	b4 63 18 00 	add r3,r3,r3                                   
 801fb78:	b4 63 18 00 	add r3,r3,r3                                   
 801fb7c:	b4 63 18 00 	add r3,r3,r3                                   
 801fb80:	b4 63 18 00 	add r3,r3,r3                                   
 801fb84:	b4 63 18 00 	add r3,r3,r3                                   
 801fb88:	b4 63 18 00 	add r3,r3,r3                                   
 801fb8c:	b8 2f 78 00 	or r15,r1,r15                                  
 801fb90:	b4 63 18 00 	add r3,r3,r3                                   
 801fb94:	b9 e3 78 00 	or r15,r15,r3                                  
}                                                                     
                                                                      
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
 801fb98:	29 b1 00 10 	lw r17,(r13+16)                                
uint64_t                                                              
rtems_rfs_fs_size (rtems_rfs_file_system* fs)                         
{                                                                     
  uint64_t blocks = rtems_rfs_fs_blocks (fs);                         
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
  return blocks * block_size;                                         
 801fb9c:	ba 00 20 00 	mv r4,r16                                      
 801fba0:	34 03 00 00 	mvi r3,0                                       
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
 801fba4:	59 af 00 08 	sw (r13+8),r15                                 
uint64_t                                                              
rtems_rfs_fs_size (rtems_rfs_file_system* fs)                         
{                                                                     
  uint64_t blocks = rtems_rfs_fs_blocks (fs);                         
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
  return blocks * block_size;                                         
 801fba8:	34 01 00 00 	mvi r1,0                                       
 801fbac:	b9 e0 10 00 	mv r2,r15                                      
 801fbb0:	f8 00 47 22 	calli 8031838 <__muldi3>                       
 801fbb4:	b8 40 90 00 	mv r18,r2                                      
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
  uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
  return media_blocks * media_block_size;                             
 801fbb8:	2a 24 00 1c 	lw r4,(r17+28)                                 
 801fbbc:	2a 22 00 20 	lw r2,(r17+32)                                 
uint64_t                                                              
rtems_rfs_fs_size (rtems_rfs_file_system* fs)                         
{                                                                     
  uint64_t blocks = rtems_rfs_fs_blocks (fs);                         
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
  return blocks * block_size;                                         
 801fbc0:	b8 20 80 00 	mv r16,r1                                      
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
  uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
  return media_blocks * media_block_size;                             
 801fbc4:	34 03 00 00 	mvi r3,0                                       
 801fbc8:	34 01 00 00 	mvi r1,0                                       
 801fbcc:	f8 00 47 1b 	calli 8031838 <__muldi3>                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
 801fbd0:	56 01 00 36 	bgu r16,r1,801fca8 <rtems_rfs_fs_open+0x488>   <== NEVER TAKEN
 801fbd4:	46 01 00 3d 	be r16,r1,801fcc8 <rtems_rfs_fs_open+0x4a8>    <== ALWAYS TAKEN
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
 801fbd8:	41 61 00 24 	lbu r1,(r11+36)                                
 801fbdc:	34 02 00 18 	mvi r2,24                                      
 801fbe0:	f8 00 5c 6d 	calli 8036d94 <__ashlsi3>                      
 801fbe4:	b8 20 80 00 	mv r16,r1                                      
 801fbe8:	41 61 00 25 	lbu r1,(r11+37)                                
 801fbec:	34 02 00 10 	mvi r2,16                                      
 801fbf0:	f8 00 5c 69 	calli 8036d94 <__ashlsi3>                      
 801fbf4:	41 64 00 26 	lbu r4,(r11+38)                                
 801fbf8:	41 62 00 27 	lbu r2,(r11+39)                                
 801fbfc:	ba 01 08 00 	or r1,r16,r1                                   
 801fc00:	b4 84 20 00 	add r4,r4,r4                                   
 801fc04:	b4 84 20 00 	add r4,r4,r4                                   
 801fc08:	b4 84 20 00 	add r4,r4,r4                                   
 801fc0c:	b4 84 20 00 	add r4,r4,r4                                   
 801fc10:	b4 84 20 00 	add r4,r4,r4                                   
 801fc14:	b4 84 20 00 	add r4,r4,r4                                   
 801fc18:	b4 84 20 00 	add r4,r4,r4                                   
 801fc1c:	b8 22 08 00 	or r1,r1,r2                                    
 801fc20:	b4 84 20 00 	add r4,r4,r4                                   
 801fc24:	b8 24 20 00 	or r4,r1,r4                                    
 801fc28:	34 02 00 38 	mvi r2,56                                      
 801fc2c:	44 82 00 29 	be r4,r2,801fcd0 <rtems_rfs_fs_open+0x4b0>     <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801fc30:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801fc34:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801fc38:	fb ff c9 62 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801fc3c:	44 20 ff 85 	be r1,r0,801fa50 <rtems_rfs_fs_open+0x230>     <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
 801fc40:	41 61 00 04 	lbu r1,(r11+4)                                 <== NOT EXECUTED
 801fc44:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
 801fc48:	78 0f 08 03 	mvhi r15,0x803                                 <== NOT EXECUTED
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
 801fc4c:	f8 00 5c 52 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801fc50:	b8 20 80 00 	mv r16,r1                                      <== NOT EXECUTED
 801fc54:	41 61 00 05 	lbu r1,(r11+5)                                 <== NOT EXECUTED
 801fc58:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
 801fc5c:	39 ef bb cc 	ori r15,r15,0xbbcc                             <== NOT EXECUTED
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
 801fc60:	f8 00 5c 4d 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 801fc64:	41 62 00 06 	lbu r2,(r11+6)                                 <== NOT EXECUTED
 801fc68:	41 63 00 07 	lbu r3,(r11+7)                                 <== NOT EXECUTED
 801fc6c:	ba 01 08 00 	or r1,r16,r1                                   <== NOT EXECUTED
 801fc70:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc74:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc78:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc7c:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc80:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc84:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc88:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
 801fc8c:	b8 23 18 00 	or r3,r1,r3                                    <== NOT EXECUTED
 801fc90:	b4 42 10 00 	add r2,r2,r2                                   <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
 801fc94:	b8 62 10 00 	or r2,r3,r2                                    <== NOT EXECUTED
 801fc98:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801fc9c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801fca0:	f8 00 13 fe 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801fca4:	e3 ff ff 6b 	bi 801fa50 <rtems_rfs_fs_open+0x230>           <== NOT EXECUTED
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801fca8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801fcac:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801fcb0:	fb ff c9 44 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801fcb4:	44 20 ff 67 	be r1,r0,801fa50 <rtems_rfs_fs_open+0x230>     <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block/size count\n");
 801fcb8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801fcbc:	38 21 bb 8c 	ori r1,r1,0xbb8c                               <== NOT EXECUTED
 801fcc0:	f8 00 14 be 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801fcc4:	e3 ff ff 63 	bi 801fa50 <rtems_rfs_fs_open+0x230>           <== NOT EXECUTED
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
 801fcc8:	56 42 ff f8 	bgu r18,r2,801fca8 <rtems_rfs_fs_open+0x488>   <== NEVER TAKEN
 801fccc:	e3 ff ff c3 	bi 801fbd8 <rtems_rfs_fs_open+0x3b8>           
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
 801fcd0:	41 61 00 10 	lbu r1,(r11+16)                                
 801fcd4:	34 02 00 18 	mvi r2,24                                      
 801fcd8:	f8 00 5c 2f 	calli 8036d94 <__ashlsi3>                      
 801fcdc:	b8 20 80 00 	mv r16,r1                                      
 801fce0:	41 61 00 11 	lbu r1,(r11+17)                                
 801fce4:	34 02 00 10 	mvi r2,16                                      
 801fce8:	f8 00 5c 2b 	calli 8036d94 <__ashlsi3>                      
 801fcec:	41 64 00 12 	lbu r4,(r11+18)                                
 801fcf0:	41 62 00 13 	lbu r2,(r11+19)                                
 801fcf4:	ba 01 08 00 	or r1,r16,r1                                   
 801fcf8:	b4 84 20 00 	add r4,r4,r4                                   
 801fcfc:	b4 84 20 00 	add r4,r4,r4                                   
 801fd00:	b4 84 20 00 	add r4,r4,r4                                   
 801fd04:	b4 84 20 00 	add r4,r4,r4                                   
 801fd08:	b4 84 20 00 	add r4,r4,r4                                   
 801fd0c:	b4 84 20 00 	add r4,r4,r4                                   
 801fd10:	b4 84 20 00 	add r4,r4,r4                                   
 801fd14:	b8 22 08 00 	or r1,r1,r2                                    
 801fd18:	b4 84 20 00 	add r4,r4,r4                                   
 801fd1c:	b8 24 20 00 	or r4,r1,r4                                    
 801fd20:	59 a4 00 18 	sw (r13+24),r4                                 
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
 801fd24:	41 61 00 14 	lbu r1,(r11+20)                                
 801fd28:	34 02 00 18 	mvi r2,24                                      
 801fd2c:	f8 00 5c 1a 	calli 8036d94 <__ashlsi3>                      
 801fd30:	b8 20 80 00 	mv r16,r1                                      
 801fd34:	41 61 00 15 	lbu r1,(r11+21)                                
 801fd38:	34 02 00 10 	mvi r2,16                                      
 801fd3c:	f8 00 5c 16 	calli 8036d94 <__ashlsi3>                      
 801fd40:	41 64 00 16 	lbu r4,(r11+22)                                
 801fd44:	41 62 00 17 	lbu r2,(r11+23)                                
 801fd48:	ba 01 08 00 	or r1,r16,r1                                   
 801fd4c:	b4 84 20 00 	add r4,r4,r4                                   
 801fd50:	b4 84 20 00 	add r4,r4,r4                                   
 801fd54:	b4 84 20 00 	add r4,r4,r4                                   
 801fd58:	b4 84 20 00 	add r4,r4,r4                                   
 801fd5c:	b4 84 20 00 	add r4,r4,r4                                   
 801fd60:	b4 84 20 00 	add r4,r4,r4                                   
 801fd64:	b4 84 20 00 	add r4,r4,r4                                   
 801fd68:	b8 22 08 00 	or r1,r1,r2                                    
 801fd6c:	b4 84 20 00 	add r4,r4,r4                                   
 801fd70:	b8 24 20 00 	or r4,r1,r4                                    
 801fd74:	59 a4 00 1c 	sw (r13+28),r4                                 
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
 801fd78:	41 61 00 18 	lbu r1,(r11+24)                                
 801fd7c:	34 02 00 18 	mvi r2,24                                      
 801fd80:	f8 00 5c 05 	calli 8036d94 <__ashlsi3>                      
 801fd84:	b8 20 80 00 	mv r16,r1                                      
 801fd88:	41 61 00 19 	lbu r1,(r11+25)                                
 801fd8c:	34 02 00 10 	mvi r2,16                                      
 801fd90:	f8 00 5c 01 	calli 8036d94 <__ashlsi3>                      
 801fd94:	41 64 00 1a 	lbu r4,(r11+26)                                
 801fd98:	41 71 00 1b 	lbu r17,(r11+27)                               
 801fd9c:	ba 01 08 00 	or r1,r16,r1                                   
 801fda0:	b4 84 20 00 	add r4,r4,r4                                   
 801fda4:	b4 84 20 00 	add r4,r4,r4                                   
 801fda8:	b4 84 20 00 	add r4,r4,r4                                   
 801fdac:	b4 84 20 00 	add r4,r4,r4                                   
 801fdb0:	b4 84 20 00 	add r4,r4,r4                                   
 801fdb4:	b4 84 20 00 	add r4,r4,r4                                   
 801fdb8:	b4 84 20 00 	add r4,r4,r4                                   
 801fdbc:	b4 84 20 00 	add r4,r4,r4                                   
 801fdc0:	b8 31 08 00 	or r1,r1,r17                                   
 801fdc4:	b8 24 88 00 	or r17,r1,r4                                   
 801fdc8:	59 b1 00 24 	sw (r13+36),r17                                
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
 801fdcc:	41 61 00 1c 	lbu r1,(r11+28)                                
 801fdd0:	34 02 00 18 	mvi r2,24                                      
 801fdd4:	f8 00 5b f0 	calli 8036d94 <__ashlsi3>                      
 801fdd8:	b8 20 90 00 	mv r18,r1                                      
 801fddc:	41 61 00 1d 	lbu r1,(r11+29)                                
 801fde0:	34 02 00 10 	mvi r2,16                                      
 801fde4:	f8 00 5b ec 	calli 8036d94 <__ashlsi3>                      
 801fde8:	41 64 00 1e 	lbu r4,(r11+30)                                
 801fdec:	41 70 00 1f 	lbu r16,(r11+31)                               
 801fdf0:	ba 41 08 00 	or r1,r18,r1                                   
 801fdf4:	b4 84 20 00 	add r4,r4,r4                                   
 801fdf8:	b4 84 20 00 	add r4,r4,r4                                   
 801fdfc:	b4 84 20 00 	add r4,r4,r4                                   
 801fe00:	b4 84 20 00 	add r4,r4,r4                                   
 801fe04:	b4 84 20 00 	add r4,r4,r4                                   
 801fe08:	b4 84 20 00 	add r4,r4,r4                                   
 801fe0c:	b4 84 20 00 	add r4,r4,r4                                   
 801fe10:	b4 84 20 00 	add r4,r4,r4                                   
 801fe14:	b8 30 08 00 	or r1,r1,r16                                   
 801fe18:	b8 24 80 00 	or r16,r1,r4                                   
 801fe1c:	59 b0 00 28 	sw (r13+40),r16                                
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe20:	41 61 00 20 	lbu r1,(r11+32)                                
 801fe24:	34 02 00 18 	mvi r2,24                                      
 801fe28:	f8 00 5b db 	calli 8036d94 <__ashlsi3>                      
 801fe2c:	b8 20 90 00 	mv r18,r1                                      
 801fe30:	41 61 00 21 	lbu r1,(r11+33)                                
 801fe34:	34 02 00 10 	mvi r2,16                                      
 801fe38:	f8 00 5b d7 	calli 8036d94 <__ashlsi3>                      
 801fe3c:	41 64 00 22 	lbu r4,(r11+34)                                
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
 801fe40:	01 e3 00 01 	srui r3,r15,1                                  
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe44:	41 6b 00 23 	lbu r11,(r11+35)                               
 801fe48:	b4 84 20 00 	add r4,r4,r4                                   
 801fe4c:	b4 84 20 00 	add r4,r4,r4                                   
 801fe50:	b4 84 20 00 	add r4,r4,r4                                   
 801fe54:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
 801fe58:	00 63 00 01 	srui r3,r3,1                                   
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe5c:	b4 84 20 00 	add r4,r4,r4                                   
 801fe60:	b4 84 20 00 	add r4,r4,r4                                   
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
 801fe64:	b4 63 28 00 	add r5,r3,r3                                   
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe68:	ba 41 08 00 	or r1,r18,r1                                   
 801fe6c:	b4 84 20 00 	add r4,r4,r4                                   
 801fe70:	b4 84 20 00 	add r4,r4,r4                                   
 801fe74:	b8 2b 08 00 	or r1,r1,r11                                   
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
 801fe78:	b4 a5 28 00 	add r5,r5,r5                                   
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe7c:	b8 24 58 00 	or r11,r1,r4                                   
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
 801fe80:	b4 a3 28 00 	add r5,r5,r3                                   
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
 801fe84:	b8 60 10 00 	mv r2,r3                                       
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
 801fe88:	59 a5 00 38 	sw (r13+56),r5                                 
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
 801fe8c:	b8 60 08 00 	mv r1,r3                                       
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
                                                                      
  fs->blocks_per_block =                                              
 801fe90:	59 a3 00 34 	sw (r13+52),r3                                 
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
 801fe94:	59 ab 00 2c 	sw (r13+44),r11                                
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
 801fe98:	fb ff 86 4b 	calli 80017c4 <__mulsi3>                       
 801fe9c:	b4 21 18 00 	add r3,r1,r1                                   
 801fea0:	b4 63 18 00 	add r3,r3,r3                                   
 801fea4:	b4 61 08 00 	add r1,r3,r1                                   
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
 801fea8:	ba 20 10 00 	mv r2,r17                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
 801feac:	59 a1 00 3c 	sw (r13+60),r1                                 
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
 801feb0:	b9 60 08 00 	mv r1,r11                                      
 801feb4:	fb ff 86 44 	calli 80017c4 <__mulsi3>                       
 801feb8:	59 a1 00 14 	sw (r13+20),r1                                 
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
 801febc:	b9 e0 08 00 	mv r1,r15                                      
                                                                      
  if (fs->group_blocks >                                              
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
 801fec0:	b5 ef 78 00 	add r15,r15,r15                                
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
 801fec4:	34 02 00 38 	mvi r2,56                                      
                                                                      
  if (fs->group_blocks >                                              
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
 801fec8:	b5 ef 78 00 	add r15,r15,r15                                
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
 801fecc:	fb ff 86 4a 	calli 80017f4 <__udivsi3>                      
                                                                      
  if (fs->group_blocks >                                              
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
 801fed0:	b5 ef 78 00 	add r15,r15,r15                                
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
 801fed4:	59 a1 00 30 	sw (r13+48),r1                                 
                                                                      
  if (fs->group_blocks >                                              
 801fed8:	51 f0 00 10 	bgeu r15,r16,801ff18 <rtems_rfs_fs_open+0x6f8> <== ALWAYS TAKEN
 801fedc:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801fee0:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801fee4:	fb ff f1 e6 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801fee8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801feec:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 801fef0:	33 80 00 50 	sb (sp+80),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801fef4:	5b 80 00 54 	sw (sp+84),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801fef8:	5b 80 00 58 	sw (sp+88),r0                                  <== NOT EXECUTED
 801fefc:	fb ff c8 b1 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
    return EIO;                                                       
 801ff00:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
                                                                      
  if (fs->group_blocks >                                              
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801ff04:	44 20 fe a0 	be r1,r0,801f984 <rtems_rfs_fs_open+0x164>     <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
 801ff08:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ff0c:	38 21 bc 10 	ori r1,r1,0xbc10                               <== NOT EXECUTED
 801ff10:	f8 00 14 2a 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801ff14:	e3 ff fe 9c 	bi 801f984 <rtems_rfs_fs_open+0x164>           <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801ff18:	b9 c0 10 00 	mv r2,r14                                      
 801ff1c:	b9 a0 08 00 	mv r1,r13                                      
 801ff20:	fb ff f1 d7 	calli 801c67c <rtems_rfs_buffer_handle_release>
  rtems_rfs_buffer_handle_close (fs, &handle);                        
                                                                      
  /*                                                                  
   * Change the block size to the value in the superblock.            
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_block_size (fs));
 801ff24:	29 a2 00 08 	lw r2,(r13+8)                                  
 801ff28:	b9 a0 08 00 	mv r1,r13                                      
  handle->dirty = false;                                              
 801ff2c:	33 80 00 50 	sb (sp+80),r0                                  
  handle->bnum  = 0;                                                  
 801ff30:	5b 80 00 54 	sw (sp+84),r0                                  
  handle->buffer = NULL;                                              
 801ff34:	5b 80 00 58 	sw (sp+88),r0                                  
 801ff38:	fb ff f3 98 	calli 801cd98 <rtems_rfs_buffer_setblksize>    
 801ff3c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801ff40:	4c 01 00 1e 	bge r0,r1,801ffb8 <rtems_rfs_fs_open+0x798>    <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 801ff44:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 801ff48:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 801ff4c:	fb ff f1 cc 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801ff50:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801ff54:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 801ff58:	33 80 00 50 	sb (sp+80),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 801ff5c:	5b 80 00 54 	sw (sp+84),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 801ff60:	5b 80 00 58 	sw (sp+88),r0                                  <== NOT EXECUTED
 801ff64:	fb ff c8 97 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ff68:	44 20 fe 87 	be r1,r0,801f984 <rtems_rfs_fs_open+0x164>     <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
 801ff6c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801ff70:	f8 00 18 05 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 801ff74:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 801ff78:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ff7c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 801ff80:	38 21 bc 54 	ori r1,r1,0xbc54                               <== NOT EXECUTED
 801ff84:	f8 00 13 45 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801ff88:	e3 ff fe 7f 	bi 801f984 <rtems_rfs_fs_open+0x164>           <== NOT EXECUTED
    printf ("rtems-rfs: open: %s\n", name);                           
                                                                      
  *fs = malloc (sizeof (rtems_rfs_file_system));                      
  if (!*fs)                                                           
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 801ff8c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 801ff90:	fb ff c8 8c 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 801ff94:	45 61 00 04 	be r11,r1,801ffa4 <rtems_rfs_fs_open+0x784>    <== NOT EXECUTED
      printf ("rtems-rfs: open: no memory for file system data\n");   
 801ff98:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801ff9c:	38 21 ba bc 	ori r1,r1,0xbabc                               <== NOT EXECUTED
 801ffa0:	f8 00 14 06 	calli 8024fb8 <puts>                           <== NOT EXECUTED
    errno = ENOMEM;                                                   
 801ffa4:	f8 00 0e 68 	calli 8023944 <__errno>                        <== NOT EXECUTED
 801ffa8:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 801ffac:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
    return -1;                                                        
 801ffb0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801ffb4:	e3 ff fe 7f 	bi 801f9b0 <rtems_rfs_fs_open+0x190>           <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
 801ffb8:	29 ab 00 24 	lw r11,(r13+36)                                
 801ffbc:	34 02 00 50 	mvi r2,80                                      
 801ffc0:	b9 60 08 00 	mv r1,r11                                      
 801ffc4:	fb ff 9a 92 	calli 8006a0c <calloc>                         
 801ffc8:	59 a1 00 20 	sw (r13+32),r1                                 
 801ffcc:	b8 20 78 00 	mv r15,r1                                      
                                                                      
  if (!fs->groups)                                                    
 801ffd0:	44 20 00 8d 	be r1,r0,8020204 <rtems_rfs_fs_open+0x9e4>     <== NEVER TAKEN
  /*                                                                  
   * Perform each phase of group initialisation at the same time. This way we
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
 801ffd4:	34 10 00 00 	mvi r16,0                                      
 801ffd8:	34 0f 00 00 	mvi r15,0                                      
 801ffdc:	49 60 00 33 	bg r11,r0,80200a8 <rtems_rfs_fs_open+0x888>    <== ALWAYS TAKEN
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);  
 801ffe0:	29 81 00 00 	lw r1,(r12+0)                                  
 801ffe4:	37 8b 00 28 	addi r11,sp,40                                 
 801ffe8:	34 02 00 01 	mvi r2,1                                       
 801ffec:	b9 60 18 00 	mv r3,r11                                      
 801fff0:	34 04 00 01 	mvi r4,1                                       
 801fff4:	fb ff bf 6e 	calli 800fdac <rtems_rfs_inode_open>           
 801fff8:	b8 20 68 00 	mv r13,r1                                      
  if (rc > 0)                                                         
 801fffc:	48 20 00 6a 	bg r1,r0,80201a4 <rtems_rfs_fs_open+0x984>     <== NEVER TAKEN
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  if (((*fs)->flags & RTEMS_RFS_FS_FORCE_OPEN) == 0)                  
 8020000:	29 81 00 00 	lw r1,(r12+0)                                  
 8020004:	28 22 00 00 	lw r2,(r1+0)                                   
 8020008:	20 42 00 04 	andi r2,r2,0x4                                 
 802000c:	5c 40 00 13 	bne r2,r0,8020058 <rtems_rfs_fs_open+0x838>    
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8020010:	2b 82 00 34 	lw r2,(sp+52)                                  
 8020014:	40 44 00 02 	lbu r4,(r2+2)                                  
 8020018:	40 42 00 03 	lbu r2,(r2+3)                                  
 802001c:	b4 84 20 00 	add r4,r4,r4                                   
 8020020:	b4 84 20 00 	add r4,r4,r4                                   
 8020024:	b4 84 20 00 	add r4,r4,r4                                   
 8020028:	b4 84 20 00 	add r4,r4,r4                                   
 802002c:	b4 84 20 00 	add r4,r4,r4                                   
 8020030:	b4 84 20 00 	add r4,r4,r4                                   
 8020034:	b4 84 20 00 	add r4,r4,r4                                   
 8020038:	b4 84 20 00 	add r4,r4,r4                                   
 802003c:	b8 82 20 00 	or r4,r4,r2                                    
 8020040:	20 84 ff ff 	andi r4,r4,0xffff                              
  {                                                                   
    mode = rtems_rfs_inode_get_mode (&inode);                         
                                                                      
    if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))                
 8020044:	38 02 ff ff 	mvu r2,0xffff                                  
 8020048:	44 82 00 45 	be r4,r2,802015c <rtems_rfs_fs_open+0x93c>     <== NEVER TAKEN
 802004c:	20 84 f0 00 	andi r4,r4,0xf000                              
 8020050:	34 02 40 00 	mvi r2,16384                                   
 8020054:	5c 82 00 42 	bne r4,r2,802015c <rtems_rfs_fs_open+0x93c>    <== NEVER TAKEN
      errno = EIO;                                                    
      return -1;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (*fs, &inode);                           
 8020058:	b9 60 10 00 	mv r2,r11                                      
 802005c:	fb ff bf ee 	calli 8010014 <rtems_rfs_inode_close>          
 8020060:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020064:	4c 01 00 3a 	bge r0,r1,802014c <rtems_rfs_fs_open+0x92c>    <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
 8020068:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 802006c:	fb ff f3 91 	calli 801ceb0 <rtems_rfs_buffer_close>         <== NOT EXECUTED
    free (*fs);                                                       
 8020070:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8020074:	fb ff 9a e8 	calli 8006c14 <free>                           <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 8020078:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 802007c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8020080:	fb ff c8 50 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020084:	44 20 fe 48 	be r1,r0,801f9a4 <rtems_rfs_fs_open+0x184>     <== NOT EXECUTED
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
 8020088:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802008c:	f8 00 17 be 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8020090:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020094:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020098:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 802009c:	38 21 bd 9c 	ori r1,r1,0xbd9c                               <== NOT EXECUTED
 80200a0:	f8 00 12 fe 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80200a4:	e3 ff fe 40 	bi 801f9a4 <rtems_rfs_fs_open+0x184>           <== NOT EXECUTED
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
  {                                                                   
    rc = rtems_rfs_group_open (fs,                                    
                               rtems_rfs_fs_block (fs, group, 0),     
 80200a8:	29 ab 00 28 	lw r11,(r13+40)                                
 80200ac:	b9 e0 10 00 	mv r2,r15                                      
 80200b0:	b9 60 08 00 	mv r1,r11                                      
 80200b4:	fb ff 85 c4 	calli 80017c4 <__mulsi3>                       
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
  {                                                                   
    rc = rtems_rfs_group_open (fs,                                    
 80200b8:	29 a5 00 20 	lw r5,(r13+32)                                 
 80200bc:	29 a4 00 2c 	lw r4,(r13+44)                                 
                               rtems_rfs_fs_block (fs, group, 0),     
 80200c0:	34 22 00 01 	addi r2,r1,1                                   
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
  {                                                                   
    rc = rtems_rfs_group_open (fs,                                    
 80200c4:	b9 60 18 00 	mv r3,r11                                      
 80200c8:	b4 b0 28 00 	add r5,r5,r16                                  
 80200cc:	b9 a0 08 00 	mv r1,r13                                      
 80200d0:	fb ff bc bd 	calli 800f3c4 <rtems_rfs_group_open>           
 80200d4:	b8 20 58 00 	mv r11,r1                                      
                               rtems_rfs_fs_block (fs, group, 0),     
                               fs->group_blocks,                      
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
 80200d8:	4c 01 00 46 	bge r0,r1,80201f0 <rtems_rfs_fs_open+0x9d0>    <== ALWAYS TAKEN
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
 80200dc:	45 e0 00 0a 	be r15,r0,8020104 <rtems_rfs_fs_open+0x8e4>    <== NOT EXECUTED
 80200e0:	34 11 00 00 	mvi r17,0                                      <== NOT EXECUTED
 80200e4:	34 10 00 00 	mvi r16,0                                      <== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
 80200e8:	29 a2 00 20 	lw r2,(r13+32)                                 <== NOT EXECUTED
 80200ec:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
 80200f0:	36 10 00 01 	addi r16,r16,1                                 <== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
 80200f4:	b4 51 10 00 	add r2,r2,r17                                  <== NOT EXECUTED
 80200f8:	fb ff bd 3d 	calli 800f5ec <rtems_rfs_group_close>          <== NOT EXECUTED
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
 80200fc:	36 31 00 50 	addi r17,r17,80                                <== NOT EXECUTED
 8020100:	49 f0 ff fa 	bg r15,r16,80200e8 <rtems_rfs_fs_open+0x8c8>   <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 8020104:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020108:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 802010c:	fb ff f1 5c 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
      rtems_rfs_buffer_handle_close (fs, &handle);                    
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                     
 8020110:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020114:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 8020118:	33 80 00 50 	sb (sp+80),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 802011c:	5b 80 00 54 	sw (sp+84),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020120:	5b 80 00 58 	sw (sp+88),r0                                  <== NOT EXECUTED
 8020124:	fb ff c8 27 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020128:	44 20 fe 17 	be r1,r0,801f984 <rtems_rfs_fs_open+0x164>     <== NOT EXECUTED
        printf ("rtems-rfs: read-superblock: no memory for group table%d: %s\n",
 802012c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020130:	f8 00 17 95 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8020134:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020138:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802013c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020140:	38 21 bc d0 	ori r1,r1,0xbcd0                               <== NOT EXECUTED
 8020144:	f8 00 12 d5 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020148:	e3 ff fe 0f 	bi 801f984 <rtems_rfs_fs_open+0x164>           <== NOT EXECUTED
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  errno = 0;                                                          
 802014c:	f8 00 0d fe 	calli 8023944 <__errno>                        
 8020150:	58 20 00 00 	sw (r1+0),r0                                   
  return 0;                                                           
 8020154:	34 01 00 00 	mvi r1,0                                       
 8020158:	e3 ff fe 16 	bi 801f9b0 <rtems_rfs_fs_open+0x190>           
  {                                                                   
    mode = rtems_rfs_inode_get_mode (&inode);                         
                                                                      
    if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))                
    {                                                                 
      rtems_rfs_inode_close (*fs, &inode);                            
 802015c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020160:	fb ff bf ad 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
      rtems_rfs_buffer_close (*fs);                                   
 8020164:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8020168:	fb ff f3 52 	calli 801ceb0 <rtems_rfs_buffer_close>         <== NOT EXECUTED
      free (*fs);                                                     
 802016c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8020170:	fb ff 9a a9 	calli 8006c14 <free>                           <== NOT EXECUTED
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                     
 8020174:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020178:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 802017c:	fb ff c8 11 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020180:	44 20 00 04 	be r1,r0,8020190 <rtems_rfs_fs_open+0x970>     <== NOT EXECUTED
        printf ("rtems-rfs: open: invalid root inode mode\n");        
 8020184:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020188:	38 21 bd 70 	ori r1,r1,0xbd70                               <== NOT EXECUTED
 802018c:	f8 00 13 8b 	calli 8024fb8 <puts>                           <== NOT EXECUTED
      errno = EIO;                                                    
 8020190:	f8 00 0d ed 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8020194:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8020198:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
      return -1;                                                      
 802019c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80201a0:	e3 ff fe 04 	bi 801f9b0 <rtems_rfs_fs_open+0x190>           <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);  
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
 80201a4:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80201a8:	fb ff f3 42 	calli 801ceb0 <rtems_rfs_buffer_close>         <== NOT EXECUTED
    free (*fs);                                                       
 80201ac:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80201b0:	fb ff 9a 99 	calli 8006c14 <free>                           <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 80201b4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80201b8:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80201bc:	fb ff c8 01 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80201c0:	44 20 00 08 	be r1,r0,80201e0 <rtems_rfs_fs_open+0x9c0>     <== NOT EXECUTED
      printf ("rtems-rfs: open: reading root inode: %d: %s\n",        
 80201c4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80201c8:	f8 00 17 6f 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80201cc:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80201d0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80201d4:	38 21 bd 40 	ori r1,r1,0xbd40                               <== NOT EXECUTED
 80201d8:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 80201dc:	f8 00 12 af 	calli 8024c98 <printf>                         <== NOT EXECUTED
              rc, strerror (rc));                                     
    errno = rc;                                                       
 80201e0:	f8 00 0d d9 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80201e4:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
    return -1;                                                        
 80201e8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 80201ec:	e3 ff fd f1 	bi 801f9b0 <rtems_rfs_fs_open+0x190>           <== NOT EXECUTED
  /*                                                                  
   * Perform each phase of group initialisation at the same time. This way we
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
 80201f0:	29 a1 00 24 	lw r1,(r13+36)                                 
 80201f4:	35 ef 00 01 	addi r15,r15,1                                 
 80201f8:	36 10 00 50 	addi r16,r16,80                                
 80201fc:	48 2f ff ab 	bg r1,r15,80200a8 <rtems_rfs_fs_open+0x888>    <== NEVER TAKEN
 8020200:	e3 ff ff 78 	bi 801ffe0 <rtems_rfs_fs_open+0x7c0>           
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 8020204:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020208:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 802020c:	fb ff f1 1c 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
                                                                      
  if (!fs->groups)                                                    
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 8020210:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020214:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 8020218:	33 80 00 50 	sb (sp+80),r0                                  <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 802021c:	5b 80 00 54 	sw (sp+84),r0                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020220:	5b 80 00 58 	sw (sp+88),r0                                  <== NOT EXECUTED
 8020224:	fb ff c7 e7 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: no memory for group table\n");
    return ENOMEM;                                                    
 8020228:	34 0b 00 0c 	mvi r11,12                                     <== NOT EXECUTED
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
                                                                      
  if (!fs->groups)                                                    
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
 802022c:	45 e1 fd d6 	be r15,r1,801f984 <rtems_rfs_fs_open+0x164>    <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: no memory for group table\n");
 8020230:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020234:	38 21 bc 98 	ori r1,r1,0xbc98                               <== NOT EXECUTED
 8020238:	f8 00 13 60 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 802023c:	e3 ff fd d2 	bi 801f984 <rtems_rfs_fs_open+0x164>           <== NOT EXECUTED
                                                                      

0801f7cc <rtems_rfs_fs_size>: #include <rtems/rfs/rtems-rfs-inode.h> #include <rtems/rfs/rtems-rfs-trace.h> uint64_t rtems_rfs_fs_size (rtems_rfs_file_system* fs) {
 801f7cc:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 801f7d0:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  uint64_t blocks = rtems_rfs_fs_blocks (fs);                         
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
  return blocks * block_size;                                         
 801f7d4:	28 22 00 08 	lw r2,(r1+8)                                   <== NOT EXECUTED
 801f7d8:	28 24 00 04 	lw r4,(r1+4)                                   <== NOT EXECUTED
 801f7dc:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 801f7e0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 801f7e4:	f8 00 48 15 	calli 8031838 <__muldi3>                       <== NOT EXECUTED
}                                                                     
 801f7e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 801f7ec:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 801f7f0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800f6ac <rtems_rfs_group_bitmap_alloc>: int rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs, rtems_rfs_bitmap_bit goal, bool inode, rtems_rfs_bitmap_bit* result) {
 800f6ac:	37 9c ff b8 	addi sp,sp,-72                                 
 800f6b0:	5b 8b 00 40 	sw (sp+64),r11                                 
 800f6b4:	5b 8c 00 3c 	sw (sp+60),r12                                 
 800f6b8:	5b 8d 00 38 	sw (sp+56),r13                                 
 800f6bc:	5b 8e 00 34 	sw (sp+52),r14                                 
 800f6c0:	5b 8f 00 30 	sw (sp+48),r15                                 
 800f6c4:	5b 90 00 2c 	sw (sp+44),r16                                 
 800f6c8:	5b 91 00 28 	sw (sp+40),r17                                 
 800f6cc:	5b 92 00 24 	sw (sp+36),r18                                 
 800f6d0:	5b 93 00 20 	sw (sp+32),r19                                 
 800f6d4:	5b 94 00 1c 	sw (sp+28),r20                                 
 800f6d8:	5b 95 00 18 	sw (sp+24),r21                                 
 800f6dc:	5b 96 00 14 	sw (sp+20),r22                                 
 800f6e0:	5b 97 00 10 	sw (sp+16),r23                                 
 800f6e4:	5b 98 00 0c 	sw (sp+12),r24                                 
 800f6e8:	5b 99 00 08 	sw (sp+8),r25                                  
 800f6ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f6f0:	20 74 00 ff 	andi r20,r3,0xff                               
 800f6f4:	b8 20 58 00 	mv r11,r1                                      
 800f6f8:	b8 40 60 00 	mv r12,r2                                      
 800f6fc:	b8 80 c8 00 	mv r25,r4                                      
  rtems_rfs_bitmap_bit bit;                                           
  int                  offset;                                        
  bool                 updown;                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
 800f700:	46 80 00 89 	be r20,r0,800f924 <rtems_rfs_group_bitmap_alloc+0x278>
  {                                                                   
    size = fs->group_inodes;                                          
 800f704:	28 33 00 2c 	lw r19,(r1+44)                                 
    goal -= RTEMS_RFS_ROOT_INO;                                       
 800f708:	34 4c ff ff 	addi r12,r2,-1                                 
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
 800f70c:	b9 80 08 00 	mv r1,r12                                      
 800f710:	ba 60 10 00 	mv r2,r19                                      
 800f714:	fb ff c8 38 	calli 80017f4 <__udivsi3>                      
 800f718:	b8 20 90 00 	mv r18,r1                                      
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
 800f71c:	ba 60 10 00 	mv r2,r19                                      
 800f720:	b9 80 08 00 	mv r1,r12                                      
 800f724:	f8 00 9e 43 	calli 8037030 <__umodsi3>                      
 800f728:	5b 81 00 44 	sw (sp+68),r1                                  
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
 800f72c:	33 80 00 4b 	sb (sp+75),r0                                  
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f730:	ba 40 60 00 	mv r12,r18                                     
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
  updown = true;                                                      
  direction = 1;                                                      
 800f734:	34 0d 00 01 	mvi r13,1                                      
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
  updown = true;                                                      
 800f738:	34 0f 00 01 	mvi r15,1                                      
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
 800f73c:	34 0e 00 00 	mvi r14,0                                      
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
    if (offset)                                                       
      bit = direction > 0 ? 0 : size - 1;                             
 800f740:	34 16 00 01 	mvi r22,1                                      
   if (inode)                                                         
      bitmap = &fs->groups[group].inode_bitmap;                       
    else                                                              
      bitmap = &fs->groups[group].block_bitmap;                       
                                                                      
    rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);  
 800f744:	37 98 00 4b 	addi r24,sp,75                                 
 800f748:	37 97 00 44 	addi r23,sp,68                                 
    /*                                                                
     * If we are still looking up and down and if the group is out of range we
     * have reached one end. Stopping looking up and down and just move in the
     * one direction one group at a time.                             
     */                                                               
    if ((group < 0) || (group >= fs->group_count))                    
 800f74c:	48 0c 00 03 	bg r0,r12,800f758 <rtems_rfs_group_bitmap_alloc+0xac>
 800f750:	29 61 00 24 	lw r1,(r11+36)                                 
 800f754:	48 2c 00 10 	bg r1,r12,800f794 <rtems_rfs_group_bitmap_alloc+0xe8>
    {                                                                 
      if (!updown)                                                    
 800f758:	45 e0 00 5f 	be r15,r0,800f8d4 <rtems_rfs_group_bitmap_alloc+0x228>
        break;                                                        
      direction = direction > 0 ? -1 : 1;                             
 800f75c:	65 ad 00 01 	cmpei r13,r13,1                                
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f760:	b9 c0 10 00 	mv r2,r14                                      
     */                                                               
    if ((group < 0) || (group >= fs->group_count))                    
    {                                                                 
      if (!updown)                                                    
        break;                                                        
      direction = direction > 0 ? -1 : 1;                             
 800f764:	c8 0d 68 00 	sub r13,r0,r13                                 
 800f768:	39 ad 00 01 	ori r13,r13,0x1                                
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f76c:	b9 a0 08 00 	mv r1,r13                                      
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
 800f770:	33 80 00 4b 	sb (sp+75),r0                                  
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f774:	fb ff c8 14 	calli 80017c4 <__mulsi3>                       
 800f778:	b4 32 60 00 	add r12,r1,r18                                 
    if (offset)                                                       
 800f77c:	34 0f 00 00 	mvi r15,0                                      
 800f780:	45 c0 ff f3 	be r14,r0,800f74c <rtems_rfs_group_bitmap_alloc+0xa0><== NEVER TAKEN
      bit = direction > 0 ? 0 : size - 1;                             
 800f784:	34 01 00 00 	mvi r1,0                                       
 800f788:	5d b6 00 26 	bne r13,r22,800f820 <rtems_rfs_group_bitmap_alloc+0x174><== NEVER TAKEN
 800f78c:	5b 81 00 44 	sw (sp+68),r1                                  
 800f790:	e3 ff ff ef 	bi 800f74c <rtems_rfs_group_bitmap_alloc+0xa0> 
      direction = direction > 0 ? -1 : 1;                             
      updown = false;                                                 
      continue;                                                       
    }                                                                 
                                                                      
   if (inode)                                                         
 800f794:	46 80 00 59 	be r20,r0,800f8f8 <rtems_rfs_group_bitmap_alloc+0x24c>
      bitmap = &fs->groups[group].inode_bitmap;                       
 800f798:	b5 8c 88 00 	add r17,r12,r12                                
 800f79c:	b6 31 28 00 	add r5,r17,r17                                 
 800f7a0:	b4 a5 28 00 	add r5,r5,r5                                   
 800f7a4:	b4 a5 28 00 	add r5,r5,r5                                   
 800f7a8:	b4 a5 08 00 	add r1,r5,r5                                   
 800f7ac:	29 75 00 20 	lw r21,(r11+32)                                
 800f7b0:	b4 21 08 00 	add r1,r1,r1                                   
 800f7b4:	b4 a1 28 00 	add r5,r5,r1                                   
 800f7b8:	b6 a5 a8 00 	add r21,r21,r5                                 
 800f7bc:	36 b5 00 2c 	addi r21,r21,44                                
    else                                                              
      bitmap = &fs->groups[group].block_bitmap;                       
                                                                      
    rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);  
 800f7c0:	2b 82 00 44 	lw r2,(sp+68)                                  
 800f7c4:	ba a0 08 00 	mv r1,r21                                      
 800f7c8:	bb 00 18 00 	mv r3,r24                                      
 800f7cc:	ba e0 20 00 	mv r4,r23                                      
 800f7d0:	f8 00 2c c9 	calli 801aaf4 <rtems_rfs_bitmap_map_alloc>     
 800f7d4:	b8 20 80 00 	mv r16,r1                                      
    if (rc > 0)                                                       
 800f7d8:	48 20 00 2c 	bg r1,r0,800f888 <rtems_rfs_group_bitmap_alloc+0x1dc><== NEVER TAKEN
      return rc;                                                      
                                                                      
    if (rtems_rfs_fs_release_bitmaps (fs))                            
 800f7dc:	29 61 00 00 	lw r1,(r11+0)                                  
 800f7e0:	20 21 00 01 	andi r1,r1,0x1                                 
 800f7e4:	44 20 00 52 	be r1,r0,800f92c <rtems_rfs_group_bitmap_alloc+0x280><== ALWAYS TAKEN
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
                                                                      
    if (allocated)                                                    
 800f7e8:	43 81 00 4b 	lbu r1,(sp+75)                                 
 800f7ec:	5c 20 00 10 	bne r1,r0,800f82c <rtems_rfs_group_bitmap_alloc+0x180>
        printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
                inode ? "inode" : "block", *result);                  
      return 0;                                                       
    }                                                                 
                                                                      
    if (updown)                                                       
 800f7f0:	45 e1 00 04 	be r15,r1,800f800 <rtems_rfs_group_bitmap_alloc+0x154><== NEVER TAKEN
      direction = direction > 0 ? -1 : 1;                             
 800f7f4:	65 ad 00 01 	cmpei r13,r13,1                                
 800f7f8:	c8 0d 68 00 	sub r13,r0,r13                                 
 800f7fc:	39 ad 00 01 	ori r13,r13,0x1                                
                                                                      
    offset++;                                                         
 800f800:	35 ce 00 01 	addi r14,r14,1                                 
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f804:	b9 a0 08 00 	mv r1,r13                                      
 800f808:	b9 c0 10 00 	mv r2,r14                                      
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
 800f80c:	33 80 00 4b 	sb (sp+75),r0                                  
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
 800f810:	fb ff c7 ed 	calli 80017c4 <__mulsi3>                       
 800f814:	b4 32 60 00 	add r12,r1,r18                                 
    if (offset)                                                       
      bit = direction > 0 ? 0 : size - 1;                             
 800f818:	34 01 00 00 	mvi r1,0                                       
 800f81c:	45 b6 ff dc 	be r13,r22,800f78c <rtems_rfs_group_bitmap_alloc+0xe0><== NEVER TAKEN
 800f820:	36 61 ff ff 	addi r1,r19,-1                                 
 800f824:	5b 81 00 44 	sw (sp+68),r1                                  
 800f828:	e3 ff ff c9 	bi 800f74c <rtems_rfs_group_bitmap_alloc+0xa0> 
    if (rtems_rfs_fs_release_bitmaps (fs))                            
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
                                                                      
    if (allocated)                                                    
    {                                                                 
      if (inode)                                                      
 800f82c:	46 80 00 44 	be r20,r0,800f93c <rtems_rfs_group_bitmap_alloc+0x290>
        *result = rtems_rfs_group_inode (fs, group, bit);             
 800f830:	29 62 00 2c 	lw r2,(r11+44)                                 
 800f834:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800f838:	b9 80 08 00 	mv r1,r12                                      
 800f83c:	fb ff c7 e2 	calli 80017c4 <__mulsi3>                       
 800f840:	35 6b 00 01 	addi r11,r11,1                                 
 800f844:	b5 61 08 00 	add r1,r11,r1                                  
 800f848:	5b 21 00 00 	sw (r25+0),r1                                  
      else                                                            
        *result = rtems_rfs_group_block (&fs->groups[group], bit);    
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))            
 800f84c:	34 01 00 00 	mvi r1,0                                       
 800f850:	78 02 00 02 	mvhi r2,0x2                                    
 800f854:	f8 00 0a 5b 	calli 80121c0 <rtems_rfs_trace>                
        printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
                inode ? "inode" : "block", *result);                  
      return 0;                                                       
 800f858:	34 10 00 00 	mvi r16,0                                      
    {                                                                 
      if (inode)                                                      
        *result = rtems_rfs_group_inode (fs, group, bit);             
      else                                                            
        *result = rtems_rfs_group_block (&fs->groups[group], bit);    
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))            
 800f85c:	44 20 00 0b 	be r1,r0,800f888 <rtems_rfs_group_bitmap_alloc+0x1dc><== ALWAYS TAKEN
        printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
 800f860:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800f864:	38 42 9b 08 	ori r2,r2,0x9b08                               <== NOT EXECUTED
 800f868:	46 80 00 03 	be r20,r0,800f874 <rtems_rfs_group_bitmap_alloc+0x1c8><== NOT EXECUTED
 800f86c:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800f870:	38 42 9b 00 	ori r2,r2,0x9b00                               <== NOT EXECUTED
 800f874:	2b 23 00 00 	lw r3,(r25+0)                                  <== NOT EXECUTED
 800f878:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f87c:	38 21 9b 10 	ori r1,r1,0x9b10                               <== NOT EXECUTED
 800f880:	f8 00 55 06 	calli 8024c98 <printf>                         <== NOT EXECUTED
                inode ? "inode" : "block", *result);                  
      return 0;                                                       
 800f884:	34 10 00 00 	mvi r16,0                                      <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
                                                                      
  return ENOSPC;                                                      
}                                                                     
 800f888:	ba 00 08 00 	mv r1,r16                                      
 800f88c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f890:	2b 8b 00 40 	lw r11,(sp+64)                                 
 800f894:	2b 8c 00 3c 	lw r12,(sp+60)                                 
 800f898:	2b 8d 00 38 	lw r13,(sp+56)                                 
 800f89c:	2b 8e 00 34 	lw r14,(sp+52)                                 
 800f8a0:	2b 8f 00 30 	lw r15,(sp+48)                                 
 800f8a4:	2b 90 00 2c 	lw r16,(sp+44)                                 
 800f8a8:	2b 91 00 28 	lw r17,(sp+40)                                 
 800f8ac:	2b 92 00 24 	lw r18,(sp+36)                                 
 800f8b0:	2b 93 00 20 	lw r19,(sp+32)                                 
 800f8b4:	2b 94 00 1c 	lw r20,(sp+28)                                 
 800f8b8:	2b 95 00 18 	lw r21,(sp+24)                                 
 800f8bc:	2b 96 00 14 	lw r22,(sp+20)                                 
 800f8c0:	2b 97 00 10 	lw r23,(sp+16)                                 
 800f8c4:	2b 98 00 0c 	lw r24,(sp+12)                                 
 800f8c8:	2b 99 00 08 	lw r25,(sp+8)                                  
 800f8cc:	37 9c 00 48 	addi sp,sp,72                                  
 800f8d0:	c3 a0 00 00 	ret                                            
      direction = direction > 0 ? -1 : 1;                             
                                                                      
    offset++;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800f8d4:	34 01 00 00 	mvi r1,0                                       
 800f8d8:	78 02 00 02 	mvhi r2,0x2                                    
 800f8dc:	f8 00 0a 39 	calli 80121c0 <rtems_rfs_trace>                
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
                                                                      
  return ENOSPC;                                                      
 800f8e0:	34 10 00 1c 	mvi r16,28                                     
      direction = direction > 0 ? -1 : 1;                             
                                                                      
    offset++;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800f8e4:	44 2f ff e9 	be r1,r15,800f888 <rtems_rfs_group_bitmap_alloc+0x1dc><== ALWAYS TAKEN
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
 800f8e8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f8ec:	38 21 9b 44 	ori r1,r1,0x9b44                               <== NOT EXECUTED
 800f8f0:	f8 00 55 b2 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 800f8f4:	e3 ff ff e5 	bi 800f888 <rtems_rfs_group_bitmap_alloc+0x1dc><== NOT EXECUTED
    }                                                                 
                                                                      
   if (inode)                                                         
      bitmap = &fs->groups[group].inode_bitmap;                       
    else                                                              
      bitmap = &fs->groups[group].block_bitmap;                       
 800f8f8:	b5 8c 88 00 	add r17,r12,r12                                
 800f8fc:	b6 31 28 00 	add r5,r17,r17                                 
 800f900:	b4 a5 28 00 	add r5,r5,r5                                   
 800f904:	b4 a5 28 00 	add r5,r5,r5                                   
 800f908:	b4 a5 08 00 	add r1,r5,r5                                   
 800f90c:	29 75 00 20 	lw r21,(r11+32)                                
 800f910:	b4 21 08 00 	add r1,r1,r1                                   
 800f914:	b4 a1 28 00 	add r5,r5,r1                                   
 800f918:	b6 a5 a8 00 	add r21,r21,r5                                 
 800f91c:	36 b5 00 08 	addi r21,r21,8                                 
 800f920:	e3 ff ff a8 	bi 800f7c0 <rtems_rfs_group_bitmap_alloc+0x114>
  {                                                                   
    size = fs->group_inodes;                                          
    goal -= RTEMS_RFS_ROOT_INO;                                       
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
 800f924:	28 33 00 28 	lw r19,(r1+40)                                 
 800f928:	e3 ff ff 79 	bi 800f70c <rtems_rfs_group_bitmap_alloc+0x60> 
    rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);  
    if (rc > 0)                                                       
      return rc;                                                      
                                                                      
    if (rtems_rfs_fs_release_bitmaps (fs))                            
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
 800f92c:	2a a2 00 00 	lw r2,(r21+0)                                  
 800f930:	b9 60 08 00 	mv r1,r11                                      
 800f934:	f8 00 33 52 	calli 801c67c <rtems_rfs_buffer_handle_release>
 800f938:	e3 ff ff ac 	bi 800f7e8 <rtems_rfs_group_bitmap_alloc+0x13c>
    if (allocated)                                                    
    {                                                                 
      if (inode)                                                      
        *result = rtems_rfs_group_inode (fs, group, bit);             
      else                                                            
        *result = rtems_rfs_group_block (&fs->groups[group], bit);    
 800f93c:	b6 31 88 00 	add r17,r17,r17                                
 800f940:	b6 31 88 00 	add r17,r17,r17                                
 800f944:	b6 31 88 00 	add r17,r17,r17                                
 800f948:	29 62 00 20 	lw r2,(r11+32)                                 
 800f94c:	b6 31 08 00 	add r1,r17,r17                                 
 800f950:	b4 21 08 00 	add r1,r1,r1                                   
 800f954:	b6 21 08 00 	add r1,r17,r1                                  
 800f958:	b4 41 08 00 	add r1,r2,r1                                   
 800f95c:	28 21 00 00 	lw r1,(r1+0)                                   
 800f960:	2b 82 00 44 	lw r2,(sp+68)                                  
 800f964:	b4 41 08 00 	add r1,r2,r1                                   
 800f968:	5b 21 00 00 	sw (r25+0),r1                                  
 800f96c:	e3 ff ff b8 	bi 800f84c <rtems_rfs_group_bitmap_alloc+0x1a0>
                                                                      

0800f970 <rtems_rfs_group_bitmap_free>: int rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs, bool inode, rtems_rfs_bitmap_bit no) {
 800f970:	37 9c ff ec 	addi sp,sp,-20                                 
 800f974:	5b 8b 00 14 	sw (sp+20),r11                                 
 800f978:	5b 8c 00 10 	sw (sp+16),r12                                 
 800f97c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800f980:	5b 8e 00 08 	sw (sp+8),r14                                  
 800f984:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f988:	b8 20 58 00 	mv r11,r1                                      
 800f98c:	20 4d 00 ff 	andi r13,r2,0xff                               
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800f990:	34 01 00 00 	mvi r1,0                                       
 800f994:	78 02 00 02 	mvhi r2,0x2                                    
                                                                      
int                                                                   
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no)               
{                                                                     
 800f998:	b8 60 60 00 	mv r12,r3                                      
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800f99c:	f8 00 0a 09 	calli 80121c0 <rtems_rfs_trace>                
 800f9a0:	44 20 00 0a 	be r1,r0,800f9c8 <rtems_rfs_group_bitmap_free+0x58><== ALWAYS TAKEN
    printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",   
 800f9a4:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800f9a8:	38 42 9b 08 	ori r2,r2,0x9b08                               <== NOT EXECUTED
 800f9ac:	45 a0 00 03 	be r13,r0,800f9b8 <rtems_rfs_group_bitmap_free+0x48><== NOT EXECUTED
 800f9b0:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800f9b4:	38 42 9b 00 	ori r2,r2,0x9b00                               <== NOT EXECUTED
 800f9b8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f9bc:	38 21 9b 78 	ori r1,r1,0x9b78                               <== NOT EXECUTED
 800f9c0:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800f9c4:	f8 00 54 b5 	calli 8024c98 <printf>                         <== NOT EXECUTED
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
 800f9c8:	45 a0 00 23 	be r13,r0,800fa54 <rtems_rfs_group_bitmap_free+0xe4>
  {                                                                   
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
 800f9cc:	29 6e 00 2c 	lw r14,(r11+44)                                
    printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",   
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
  {                                                                   
    no -= RTEMS_RFS_ROOT_INO;                                         
 800f9d0:	35 8c ff ff 	addi r12,r12,-1                                
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
 800f9d4:	b9 80 08 00 	mv r1,r12                                      
 800f9d8:	b9 c0 10 00 	mv r2,r14                                      
 800f9dc:	f8 00 9d 95 	calli 8037030 <__umodsi3>                      
 800f9e0:	b8 20 68 00 	mv r13,r1                                      
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
 800f9e4:	b9 c0 10 00 	mv r2,r14                                      
 800f9e8:	b9 80 08 00 	mv r1,r12                                      
 800f9ec:	fb ff c7 82 	calli 80017f4 <__udivsi3>                      
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
 800f9f0:	b4 21 18 00 	add r3,r1,r1                                   
 800f9f4:	b4 63 18 00 	add r3,r3,r3                                   
 800f9f8:	b4 63 18 00 	add r3,r3,r3                                   
 800f9fc:	b4 63 18 00 	add r3,r3,r3                                   
 800fa00:	b4 63 20 00 	add r4,r3,r3                                   
 800fa04:	29 6c 00 20 	lw r12,(r11+32)                                
 800fa08:	b4 84 20 00 	add r4,r4,r4                                   
 800fa0c:	b4 64 18 00 	add r3,r3,r4                                   
 800fa10:	b5 83 60 00 	add r12,r12,r3                                 
 800fa14:	35 8c 00 2c 	addi r12,r12,44                                
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_clear (bitmap, bit);                      
 800fa18:	b9 a0 10 00 	mv r2,r13                                      
 800fa1c:	b9 80 08 00 	mv r1,r12                                      
 800fa20:	f8 00 2b 60 	calli 801a7a0 <rtems_rfs_bitmap_map_clear>     
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
 800fa24:	29 82 00 00 	lw r2,(r12+0)                                  
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_clear (bitmap, bit);                      
 800fa28:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
 800fa2c:	b9 60 08 00 	mv r1,r11                                      
 800fa30:	f8 00 33 13 	calli 801c67c <rtems_rfs_buffer_handle_release>
                                                                      
  return rc;                                                          
}                                                                     
 800fa34:	b9 a0 08 00 	mv r1,r13                                      
 800fa38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800fa3c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800fa40:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800fa44:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800fa48:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800fa4c:	37 9c 00 14 	addi sp,sp,20                                  
 800fa50:	c3 a0 00 00 	ret                                            
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
 800fa54:	29 6e 00 28 	lw r14,(r11+40)                                
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
 800fa58:	35 8c ff ff 	addi r12,r12,-1                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
 800fa5c:	b9 80 08 00 	mv r1,r12                                      
 800fa60:	b9 c0 10 00 	mv r2,r14                                      
 800fa64:	f8 00 9d 73 	calli 8037030 <__umodsi3>                      
 800fa68:	b8 20 68 00 	mv r13,r1                                      
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
 800fa6c:	b9 c0 10 00 	mv r2,r14                                      
 800fa70:	b9 80 08 00 	mv r1,r12                                      
 800fa74:	fb ff c7 60 	calli 80017f4 <__udivsi3>                      
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
 800fa78:	b4 21 18 00 	add r3,r1,r1                                   
 800fa7c:	b4 63 18 00 	add r3,r3,r3                                   
 800fa80:	b4 63 18 00 	add r3,r3,r3                                   
 800fa84:	b4 63 18 00 	add r3,r3,r3                                   
 800fa88:	b4 63 20 00 	add r4,r3,r3                                   
 800fa8c:	29 6c 00 20 	lw r12,(r11+32)                                
 800fa90:	b4 84 20 00 	add r4,r4,r4                                   
 800fa94:	b4 64 18 00 	add r3,r3,r4                                   
 800fa98:	b5 83 60 00 	add r12,r12,r3                                 
 800fa9c:	35 8c 00 08 	addi r12,r12,8                                 
 800faa0:	e3 ff ff de 	bi 800fa18 <rtems_rfs_group_bitmap_free+0xa8>  
                                                                      

0800faa4 <rtems_rfs_group_bitmap_test>: int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs, bool inode, rtems_rfs_bitmap_bit no, bool* state) {
 800faa4:	37 9c ff e8 	addi sp,sp,-24                                 <== NOT EXECUTED
 800faa8:	5b 8b 00 18 	sw (sp+24),r11                                 <== NOT EXECUTED
 800faac:	5b 8c 00 14 	sw (sp+20),r12                                 <== NOT EXECUTED
 800fab0:	5b 8d 00 10 	sw (sp+16),r13                                 <== NOT EXECUTED
 800fab4:	5b 8e 00 0c 	sw (sp+12),r14                                 <== NOT EXECUTED
 800fab8:	5b 8f 00 08 	sw (sp+8),r15                                  <== NOT EXECUTED
 800fabc:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800fac0:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
 800fac4:	20 4d 00 ff 	andi r13,r2,0xff                               <== NOT EXECUTED
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800fac8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800facc:	78 02 00 02 	mvhi r2,0x2                                    <== NOT EXECUTED
int                                                                   
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no,               
                             bool*                  state)            
{                                                                     
 800fad0:	b8 60 60 00 	mv r12,r3                                      <== NOT EXECUTED
 800fad4:	b8 80 70 00 	mv r14,r4                                      <== NOT EXECUTED
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
 800fad8:	f8 00 09 ba 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 800fadc:	44 20 00 0a 	be r1,r0,800fb04 <rtems_rfs_group_bitmap_test+0x60><== NOT EXECUTED
    printf ("rtems-rfs: group-bitmap-test: %s test: %" PRId32 "\n",   
 800fae0:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800fae4:	38 42 9b 08 	ori r2,r2,0x9b08                               <== NOT EXECUTED
 800fae8:	45 a0 00 03 	be r13,r0,800faf4 <rtems_rfs_group_bitmap_test+0x50><== NOT EXECUTED
 800faec:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 800faf0:	38 42 9b 00 	ori r2,r2,0x9b00                               <== NOT EXECUTED
 800faf4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800faf8:	38 21 9b a4 	ori r1,r1,0x9ba4                               <== NOT EXECUTED
 800fafc:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800fb00:	f8 00 54 66 	calli 8024c98 <printf>                         <== NOT EXECUTED
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
 800fb04:	45 a0 00 29 	be r13,r0,800fba8 <rtems_rfs_group_bitmap_test+0x104><== NOT EXECUTED
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
        return EINVAL;                                                
 800fb08:	34 0d 00 16 	mvi r13,22                                     <== NOT EXECUTED
    printf ("rtems-rfs: group-bitmap-test: %s test: %" PRId32 "\n",   
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
 800fb0c:	4c 0c 00 1e 	bge r0,r12,800fb84 <rtems_rfs_group_bitmap_test+0xe0><== NOT EXECUTED
 800fb10:	29 61 00 14 	lw r1,(r11+20)                                 <== NOT EXECUTED
 800fb14:	55 81 00 1c 	bgu r12,r1,800fb84 <rtems_rfs_group_bitmap_test+0xe0><== NOT EXECUTED
        return EINVAL;                                                
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
 800fb18:	29 6f 00 2c 	lw r15,(r11+44)                                <== NOT EXECUTED
                                                                      
  if (inode)                                                          
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
        return EINVAL;                                                
    no -= RTEMS_RFS_ROOT_INO;                                         
 800fb1c:	35 8c ff ff 	addi r12,r12,-1                                <== NOT EXECUTED
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
 800fb20:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800fb24:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800fb28:	f8 00 9d 42 	calli 8037030 <__umodsi3>                      <== NOT EXECUTED
 800fb2c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
 800fb30:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800fb34:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800fb38:	fb ff c7 2f 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
 800fb3c:	b4 21 28 00 	add r5,r1,r1                                   <== NOT EXECUTED
 800fb40:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fb44:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fb48:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fb4c:	b4 a5 30 00 	add r6,r5,r5                                   <== NOT EXECUTED
 800fb50:	29 6c 00 20 	lw r12,(r11+32)                                <== NOT EXECUTED
 800fb54:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 800fb58:	b4 a6 28 00 	add r5,r5,r6                                   <== NOT EXECUTED
 800fb5c:	b5 85 60 00 	add r12,r12,r5                                 <== NOT EXECUTED
 800fb60:	35 8c 00 2c 	addi r12,r12,44                                <== NOT EXECUTED
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);                
 800fb64:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 800fb68:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800fb6c:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 800fb70:	f8 00 2b 46 	calli 801a888 <rtems_rfs_bitmap_map_test>      <== NOT EXECUTED
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
 800fb74:	29 82 00 00 	lw r2,(r12+0)                                  <== NOT EXECUTED
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);                
 800fb78:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
 800fb7c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 800fb80:	f8 00 32 bf 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
 800fb84:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800fb88:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800fb8c:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 800fb90:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 800fb94:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 800fb98:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 800fb9c:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 800fba0:	37 9c 00 18 	addi sp,sp,24                                  <== NOT EXECUTED
 800fba4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    if (no >= rtems_rfs_fs_blocks (fs))                               
 800fba8:	29 61 00 04 	lw r1,(r11+4)                                  <== NOT EXECUTED
        return EINVAL;                                                
 800fbac:	34 0d 00 16 	mvi r13,22                                     <== NOT EXECUTED
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    if (no >= rtems_rfs_fs_blocks (fs))                               
 800fbb0:	51 81 ff f5 	bgeu r12,r1,800fb84 <rtems_rfs_group_bitmap_test+0xe0><== NOT EXECUTED
        return EINVAL;                                                
    size = fs->group_blocks;                                          
 800fbb4:	29 6f 00 28 	lw r15,(r11+40)                                <== NOT EXECUTED
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
 800fbb8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800fbbc:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800fbc0:	f8 00 9d 1c 	calli 8037030 <__umodsi3>                      <== NOT EXECUTED
 800fbc4:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
 800fbc8:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800fbcc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800fbd0:	fb ff c7 09 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
 800fbd4:	b4 21 28 00 	add r5,r1,r1                                   <== NOT EXECUTED
 800fbd8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fbdc:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fbe0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 800fbe4:	b4 a5 30 00 	add r6,r5,r5                                   <== NOT EXECUTED
 800fbe8:	29 6c 00 20 	lw r12,(r11+32)                                <== NOT EXECUTED
 800fbec:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 800fbf0:	b4 a6 28 00 	add r5,r5,r6                                   <== NOT EXECUTED
 800fbf4:	b5 85 60 00 	add r12,r12,r5                                 <== NOT EXECUTED
 800fbf8:	35 8c 00 08 	addi r12,r12,8                                 <== NOT EXECUTED
 800fbfc:	e3 ff ff da 	bi 800fb64 <rtems_rfs_group_bitmap_test+0xc0>  <== NOT EXECUTED
                                                                      

0800f5ec <rtems_rfs_group_close>: return 0; } int rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group) {
 800f5ec:	37 9c ff ec 	addi sp,sp,-20                                 
 800f5f0:	5b 8b 00 14 	sw (sp+20),r11                                 
 800f5f4:	5b 8c 00 10 	sw (sp+16),r12                                 
 800f5f8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800f5fc:	5b 8e 00 08 	sw (sp+8),r14                                  
 800f600:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f604:	b8 20 68 00 	mv r13,r1                                      
 800f608:	b8 40 58 00 	mv r11,r2                                      
  int result = 0;                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))                  
 800f60c:	34 01 00 00 	mvi r1,0                                       
 800f610:	78 02 00 01 	mvhi r2,0x1                                    
 800f614:	f8 00 0a eb 	calli 80121c0 <rtems_rfs_trace>                
 800f618:	5c 20 00 20 	bne r1,r0,800f698 <rtems_rfs_group_close+0xac> <== NEVER TAKEN
  /*                                                                  
   * We need to close as much as possible and also return any error if one
   * occurs but this may result in one even more important error being lost but
   * we cannot OR the errors together so this is a reasonable compromise.
   */                                                                 
  rc = rtems_rfs_bitmap_close (&group->inode_bitmap);                 
 800f61c:	35 61 00 2c 	addi r1,r11,44                                 
 800f620:	f8 00 2d d9 	calli 801ad84 <rtems_rfs_bitmap_close>         
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f624:	35 62 00 44 	addi r2,r11,68                                 
 800f628:	b8 20 70 00 	mv r14,r1                                      
 800f62c:	b9 a0 08 00 	mv r1,r13                                      
 800f630:	f8 00 34 13 	calli 801c67c <rtems_rfs_buffer_handle_release>
  if (rc > 0)                                                         
    result = rc;                                                      
  rc = rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);
  if (rc > 0)                                                         
    result = rc;                                                      
  rc = rtems_rfs_bitmap_close (&group->block_bitmap);                 
 800f634:	35 61 00 08 	addi r1,r11,8                                  
  handle->dirty = false;                                              
 800f638:	31 60 00 44 	sb (r11+68),r0                                 
  handle->bnum  = 0;                                                  
 800f63c:	59 60 00 48 	sw (r11+72),r0                                 
  handle->buffer = NULL;                                              
 800f640:	59 60 00 4c 	sw (r11+76),r0                                 
 800f644:	f8 00 2d d0 	calli 801ad84 <rtems_rfs_bitmap_close>         
 800f648:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 800f64c:	48 20 00 05 	bg r1,r0,800f660 <rtems_rfs_group_close+0x74>  <== NEVER TAKEN
 800f650:	a5 c0 08 00 	not r1,r14                                     
 800f654:	34 02 00 1f 	mvi r2,31                                      
 800f658:	f8 00 9d f6 	calli 8036e30 <__ashrsi3>                      
 800f65c:	a1 c1 60 00 	and r12,r14,r1                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f660:	b9 a0 08 00 	mv r1,r13                                      
 800f664:	35 62 00 20 	addi r2,r11,32                                 
 800f668:	f8 00 34 05 	calli 801c67c <rtems_rfs_buffer_handle_release>
  rc = rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
  if (rc > 0)                                                         
    result = rc;                                                      
                                                                      
  return result;                                                      
}                                                                     
 800f66c:	b9 80 08 00 	mv r1,r12                                      
  handle->dirty = false;                                              
 800f670:	31 60 00 20 	sb (r11+32),r0                                 
  handle->bnum  = 0;                                                  
 800f674:	59 60 00 24 	sw (r11+36),r0                                 
  handle->buffer = NULL;                                              
 800f678:	59 60 00 28 	sw (r11+40),r0                                 
 800f67c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f680:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800f684:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800f688:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800f68c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800f690:	37 9c 00 14 	addi sp,sp,20                                  
 800f694:	c3 a0 00 00 	ret                                            
{                                                                     
  int result = 0;                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))                  
    printf ("rtems-rfs: group-close: base=%" PRId32 "\n", group->base);
 800f698:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
 800f69c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f6a0:	38 21 9a dc 	ori r1,r1,0x9adc                               <== NOT EXECUTED
 800f6a4:	f8 00 55 7d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800f6a8:	e3 ff ff dd 	bi 800f61c <rtems_rfs_group_close+0x30>        <== NOT EXECUTED
                                                                      

0800f3c4 <rtems_rfs_group_open>: rtems_rfs_group_open (rtems_rfs_file_system* fs, rtems_rfs_buffer_block base, size_t size, size_t inodes, rtems_rfs_group* group) {
 800f3c4:	37 9c ff e0 	addi sp,sp,-32                                 
 800f3c8:	5b 8b 00 20 	sw (sp+32),r11                                 
 800f3cc:	5b 8c 00 1c 	sw (sp+28),r12                                 
 800f3d0:	5b 8d 00 18 	sw (sp+24),r13                                 
 800f3d4:	5b 8e 00 14 	sw (sp+20),r14                                 
 800f3d8:	5b 8f 00 10 	sw (sp+16),r15                                 
 800f3dc:	5b 90 00 0c 	sw (sp+12),r16                                 
 800f3e0:	5b 91 00 08 	sw (sp+8),r17                                  
 800f3e4:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f3e8:	b8 20 68 00 	mv r13,r1                                      
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
 800f3ec:	28 21 00 04 	lw r1,(r1+4)                                   
rtems_rfs_group_open (rtems_rfs_file_system* fs,                      
                      rtems_rfs_buffer_block base,                    
                      size_t                 size,                    
                      size_t                 inodes,                  
                      rtems_rfs_group*       group)                   
{                                                                     
 800f3f0:	b8 40 70 00 	mv r14,r2                                      
 800f3f4:	b8 60 60 00 	mv r12,r3                                      
 800f3f8:	b8 a0 58 00 	mv r11,r5                                      
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
 800f3fc:	54 22 00 18 	bgu r1,r2,800f45c <rtems_rfs_group_open+0x98>  <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
 800f400:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800f404:	38 02 80 00 	mvu r2,0x8000                                  <== NOT EXECUTED
 800f408:	f8 00 0b 6e 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
              EIO, strerror (EIO));                                   
    return EIO;                                                       
 800f40c:	34 0c 00 05 	mvi r12,5                                      <== NOT EXECUTED
{                                                                     
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
 800f410:	44 20 00 08 	be r1,r0,800f430 <rtems_rfs_group_open+0x6c>   <== NOT EXECUTED
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
 800f414:	34 01 00 05 	mvi r1,5                                       <== NOT EXECUTED
 800f418:	f8 00 5a db 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f41c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f420:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f424:	38 21 99 ec 	ori r1,r1,0x99ec                               <== NOT EXECUTED
 800f428:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 800f42c:	f8 00 56 1b 	calli 8024c98 <printf>                         <== NOT EXECUTED
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 800f430:	b9 80 08 00 	mv r1,r12                                      
 800f434:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f438:	2b 8b 00 20 	lw r11,(sp+32)                                 
 800f43c:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 800f440:	2b 8d 00 18 	lw r13,(sp+24)                                 
 800f444:	2b 8e 00 14 	lw r14,(sp+20)                                 
 800f448:	2b 8f 00 10 	lw r15,(sp+16)                                 
 800f44c:	2b 90 00 0c 	lw r16,(sp+12)                                 
 800f450:	2b 91 00 08 	lw r17,(sp+8)                                  
 800f454:	37 9c 00 20 	addi sp,sp,32                                  
 800f458:	c3 a0 00 00 	ret                                            
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
              EIO, strerror (EIO));                                   
    return EIO;                                                       
  }                                                                   
                                                                      
  if ((base + size) >= rtems_rfs_fs_blocks (fs))                      
 800f45c:	b4 62 10 00 	add r2,r3,r2                                   
 800f460:	54 22 00 02 	bgu r1,r2,800f468 <rtems_rfs_group_open+0xa4>  <== NEVER TAKEN
    size = rtems_rfs_fs_blocks (fs) - base;                           
 800f464:	c8 2e 60 00 	sub r12,r1,r14                                 
 800f468:	b9 80 80 00 	mv r16,r12                                     
 800f46c:	50 8c 00 02 	bgeu r4,r12,800f474 <rtems_rfs_group_open+0xb0><== NEVER TAKEN
 800f470:	b8 80 80 00 	mv r16,r4                                      
   * the format configuration needs reviewing.                        
   */                                                                 
  if (inodes > size)                                                  
    inodes = size;                                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
 800f474:	34 01 00 00 	mvi r1,0                                       
 800f478:	38 02 80 00 	mvu r2,0x8000                                  
 800f47c:	f8 00 0b 51 	calli 80121c0 <rtems_rfs_trace>                
 800f480:	5c 20 00 22 	bne r1,r0,800f508 <rtems_rfs_group_open+0x144> <== NEVER TAKEN
      printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,               
 800f484:	35 71 00 08 	addi r17,r11,8                                 
 800f488:	35 6f 00 20 	addi r15,r11,32                                
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
    printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
            base, size, inodes);                                      
                                                                      
  group->base = base;                                                 
  group->size = size;                                                 
 800f48c:	59 6c 00 04 	sw (r11+4),r12                                 
      printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,               
 800f490:	b9 80 20 00 	mv r4,r12                                      
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
    printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
            base, size, inodes);                                      
                                                                      
  group->base = base;                                                 
 800f494:	59 6e 00 00 	sw (r11+0),r14                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800f498:	31 60 00 20 	sb (r11+32),r0                                 
  handle->bnum  = 0;                                                  
 800f49c:	59 60 00 24 	sw (r11+36),r0                                 
  handle->buffer = NULL;                                              
 800f4a0:	59 60 00 28 	sw (r11+40),r0                                 
      printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,               
 800f4a4:	ba 20 08 00 	mv r1,r17                                      
 800f4a8:	b9 a0 10 00 	mv r2,r13                                      
 800f4ac:	b9 e0 18 00 	mv r3,r15                                      
 800f4b0:	b9 c0 28 00 	mv r5,r14                                      
 800f4b4:	f8 00 2e 13 	calli 801ad00 <rtems_rfs_bitmap_open>          
 800f4b8:	b8 20 60 00 	mv r12,r1                                      
                              &group->block_bitmap_buffer, size,      
                              group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
  if (rc > 0)                                                         
 800f4bc:	4c 01 00 1a 	bge r0,r1,800f524 <rtems_rfs_group_open+0x160> <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f4c0:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800f4c4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f4c8:	f8 00 34 6d 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);  
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
 800f4cc:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 800f4d0:	31 60 00 20 	sb (r11+32),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f4d4:	59 60 00 24 	sw (r11+36),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f4d8:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
 800f4dc:	38 02 80 00 	mvu r2,0x8000                                  <== NOT EXECUTED
 800f4e0:	f8 00 0b 38 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 800f4e4:	44 20 ff d3 	be r1,r0,800f430 <rtems_rfs_group_open+0x6c>   <== NOT EXECUTED
      printf ("rtems-rfs: group-open: could not open block bitmap: %d: %s\n",
 800f4e8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800f4ec:	f8 00 5a a6 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f4f0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f4f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f4f8:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 800f4fc:	38 21 9a 64 	ori r1,r1,0x9a64                               <== NOT EXECUTED
 800f500:	f8 00 55 e6 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800f504:	e3 ff ff cb 	bi 800f430 <rtems_rfs_group_open+0x6c>         <== NOT EXECUTED
   */                                                                 
  if (inodes > size)                                                  
    inodes = size;                                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
    printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
 800f508:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f50c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 800f510:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 800f514:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 800f518:	38 21 9a 2c 	ori r1,r1,0x9a2c                               <== NOT EXECUTED
 800f51c:	f8 00 55 df 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800f520:	e3 ff ff d9 	bi 800f484 <rtems_rfs_group_open+0xc0>         <== NOT EXECUTED
      printf ("rtems-rfs: group-open: could not open inode bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->inode_bitmap, fs,               
 800f524:	29 65 00 00 	lw r5,(r11+0)                                  
 800f528:	35 6e 00 44 	addi r14,r11,68                                
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800f52c:	31 60 00 44 	sb (r11+68),r0                                 
  handle->bnum  = 0;                                                  
 800f530:	59 60 00 48 	sw (r11+72),r0                                 
  handle->buffer = NULL;                                              
 800f534:	59 60 00 4c 	sw (r11+76),r0                                 
 800f538:	35 61 00 2c 	addi r1,r11,44                                 
 800f53c:	b9 a0 10 00 	mv r2,r13                                      
 800f540:	b9 c0 18 00 	mv r3,r14                                      
 800f544:	ba 00 20 00 	mv r4,r16                                      
 800f548:	34 a5 00 01 	addi r5,r5,1                                   
 800f54c:	f8 00 2d ed 	calli 801ad00 <rtems_rfs_bitmap_open>          
 800f550:	b8 20 60 00 	mv r12,r1                                      
                              &group->inode_bitmap_buffer, inodes,    
                              group->base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
  if (rc > 0)                                                         
 800f554:	4c 01 00 1b 	bge r0,r1,800f5c0 <rtems_rfs_group_open+0x1fc> <== ALWAYS TAKEN
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f558:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 800f55c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f560:	f8 00 34 47 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);  
    rtems_rfs_bitmap_close (&group->block_bitmap);                    
 800f564:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 800f568:	31 60 00 44 	sb (r11+68),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f56c:	59 60 00 48 	sw (r11+72),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f570:	59 60 00 4c 	sw (r11+76),r0                                 <== NOT EXECUTED
 800f574:	f8 00 2e 04 	calli 801ad84 <rtems_rfs_bitmap_close>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 800f578:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 800f57c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 800f580:	f8 00 34 3f 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);  
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
 800f584:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  handle->dirty = false;                                              
 800f588:	31 60 00 20 	sb (r11+32),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 800f58c:	59 60 00 24 	sw (r11+36),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 800f590:	59 60 00 28 	sw (r11+40),r0                                 <== NOT EXECUTED
 800f594:	38 02 80 00 	mvu r2,0x8000                                  <== NOT EXECUTED
 800f598:	f8 00 0b 0a 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 800f59c:	44 20 ff a5 	be r1,r0,800f430 <rtems_rfs_group_open+0x6c>   <== NOT EXECUTED
      printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
 800f5a0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800f5a4:	f8 00 5a 78 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 800f5a8:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 800f5ac:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800f5b0:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 800f5b4:	38 21 9a a0 	ori r1,r1,0x9aa0                               <== NOT EXECUTED
 800f5b8:	f8 00 55 b8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800f5bc:	e3 ff ff 9d 	bi 800f430 <rtems_rfs_group_open+0x6c>         <== NOT EXECUTED
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  if (rtems_rfs_fs_release_bitmaps (fs))                              
 800f5c0:	29 a1 00 00 	lw r1,(r13+0)                                  
  {                                                                   
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
  }                                                                   
                                                                      
  return 0;                                                           
 800f5c4:	34 0c 00 00 	mvi r12,0                                      
      printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  if (rtems_rfs_fs_release_bitmaps (fs))                              
 800f5c8:	20 21 00 01 	andi r1,r1,0x1                                 
 800f5cc:	5c 20 ff 99 	bne r1,r0,800f430 <rtems_rfs_group_open+0x6c>  <== NEVER TAKEN
  {                                                                   
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
 800f5d0:	29 62 00 08 	lw r2,(r11+8)                                  
 800f5d4:	b9 a0 08 00 	mv r1,r13                                      
 800f5d8:	f8 00 34 29 	calli 801c67c <rtems_rfs_buffer_handle_release>
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
 800f5dc:	29 62 00 2c 	lw r2,(r11+44)                                 
 800f5e0:	b9 a0 08 00 	mv r1,r13                                      
 800f5e4:	f8 00 34 26 	calli 801c67c <rtems_rfs_buffer_handle_release>
 800f5e8:	e3 ff ff 92 	bi 800f430 <rtems_rfs_group_open+0x6c>         
                                                                      

0800fc00 <rtems_rfs_group_usage>: size_t* blocks, size_t* inodes) { int g; *blocks = 0;
 800fc00:	58 40 00 00 	sw (r2+0),r0                                   <== NOT EXECUTED
  *inodes = 0;                                                        
 800fc04:	58 60 00 00 	sw (r3+0),r0                                   <== NOT EXECUTED
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
 800fc08:	28 24 00 24 	lw r4,(r1+36)                                  <== NOT EXECUTED
 800fc0c:	4c 04 00 13 	bge r0,r4,800fc58 <rtems_rfs_group_usage+0x58> <== NOT EXECUTED
 800fc10:	28 24 00 20 	lw r4,(r1+32)                                  <== NOT EXECUTED
 800fc14:	34 05 00 00 	mvi r5,0                                       <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
 800fc18:	28 88 00 14 	lw r8,(r4+20)                                  <== NOT EXECUTED
 800fc1c:	28 86 00 18 	lw r6,(r4+24)                                  <== NOT EXECUTED
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
 800fc20:	28 47 00 00 	lw r7,(r2+0)                                   <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
 800fc24:	34 a5 00 01 	addi r5,r5,1                                   <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
 800fc28:	c9 06 30 00 	sub r6,r8,r6                                   <== NOT EXECUTED
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
 800fc2c:	b4 e6 30 00 	add r6,r7,r6                                   <== NOT EXECUTED
 800fc30:	58 46 00 00 	sw (r2+0),r6                                   <== NOT EXECUTED
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
 800fc34:	28 86 00 38 	lw r6,(r4+56)                                  <== NOT EXECUTED
 800fc38:	28 87 00 3c 	lw r7,(r4+60)                                  <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
 800fc3c:	28 68 00 00 	lw r8,(r3+0)                                   <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
 800fc40:	34 84 00 50 	addi r4,r4,80                                  <== NOT EXECUTED
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
 800fc44:	c8 c7 30 00 	sub r6,r6,r7                                   <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
 800fc48:	b5 06 30 00 	add r6,r8,r6                                   <== NOT EXECUTED
 800fc4c:	58 66 00 00 	sw (r3+0),r6                                   <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
 800fc50:	28 26 00 24 	lw r6,(r1+36)                                  <== NOT EXECUTED
 800fc54:	48 c5 ff f1 	bg r6,r5,800fc18 <rtems_rfs_group_usage+0x18>  <== NOT EXECUTED
    *inodes +=                                                        
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
      rtems_rfs_bitmap_map_free (&group->inode_bitmap);               
  }                                                                   
                                                                      
  if (*blocks > rtems_rfs_fs_blocks (fs))                             
 800fc58:	28 24 00 04 	lw r4,(r1+4)                                   <== NOT EXECUTED
 800fc5c:	28 45 00 00 	lw r5,(r2+0)                                   <== NOT EXECUTED
 800fc60:	50 85 00 02 	bgeu r4,r5,800fc68 <rtems_rfs_group_usage+0x68><== NOT EXECUTED
    *blocks = rtems_rfs_fs_blocks (fs);                               
 800fc64:	58 44 00 00 	sw (r2+0),r4                                   <== NOT EXECUTED
  if (*inodes > rtems_rfs_fs_inodes (fs))                             
 800fc68:	28 21 00 14 	lw r1,(r1+20)                                  <== NOT EXECUTED
 800fc6c:	28 62 00 00 	lw r2,(r3+0)                                   <== NOT EXECUTED
 800fc70:	50 22 00 02 	bgeu r1,r2,800fc78 <rtems_rfs_group_usage+0x78><== NOT EXECUTED
    *inodes = rtems_rfs_fs_inodes (fs);                               
 800fc74:	58 61 00 00 	sw (r3+0),r1                                   <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
 800fc78:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800fc7c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010014 <rtems_rfs_inode_close>: } int rtems_rfs_inode_close (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
 8010014:	37 9c ff f4 	addi sp,sp,-12                                 
 8010018:	5b 8b 00 0c 	sw (sp+12),r11                                 
 801001c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8010020:	5b 9d 00 04 	sw (sp+4),ra                                   
 8010024:	b8 20 58 00 	mv r11,r1                                      
 8010028:	b8 40 60 00 	mv r12,r2                                      
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                  
 801002c:	34 01 00 00 	mvi r1,0                                       
 8010030:	78 02 00 08 	mvhi r2,0x8                                    
 8010034:	f8 00 08 63 	calli 80121c0 <rtems_rfs_trace>                
 8010038:	5c 20 00 14 	bne r1,r0,8010088 <rtems_rfs_inode_close+0x74> <== NEVER TAKEN
    printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
                                                                      
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
 801003c:	b9 60 08 00 	mv r1,r11                                      
 8010040:	b9 80 10 00 	mv r2,r12                                      
 8010044:	34 03 00 01 	mvi r3,1                                       
 8010048:	fb ff ff a8 	calli 800fee8 <rtems_rfs_inode_unload>         
 801004c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
 8010050:	5c 20 00 07 	bne r1,r0,801006c <rtems_rfs_inode_close+0x58> <== NEVER TAKEN
 8010054:	29 82 00 24 	lw r2,(r12+36)                                 
 8010058:	4c 22 00 05 	bge r1,r2,801006c <rtems_rfs_inode_close+0x58> <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
 801005c:	78 02 00 08 	mvhi r2,0x8                                    <== NOT EXECUTED
 8010060:	f8 00 08 58 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
 8010064:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
 8010068:	5c 20 00 0d 	bne r1,r0,801009c <rtems_rfs_inode_close+0x88> <== NOT EXECUTED
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
  return rc;                                                          
}                                                                     
 801006c:	b9 60 08 00 	mv r1,r11                                      
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
 8010070:	59 80 00 08 	sw (r12+8),r0                                  
  return rc;                                                          
}                                                                     
 8010074:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010078:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 801007c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8010080:	37 9c 00 0c 	addi sp,sp,12                                  
 8010084:	c3 a0 00 00 	ret                                            
                       rtems_rfs_inode_handle* handle)                
{                                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                  
    printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
 8010088:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 801008c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8010090:	38 21 9c 64 	ori r1,r1,0x9c64                               <== NOT EXECUTED
 8010094:	f8 00 53 01 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8010098:	e3 ff ff e9 	bi 801003c <rtems_rfs_inode_close+0x28>        <== NOT EXECUTED
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
 801009c:	29 82 00 24 	lw r2,(r12+36)                                 <== NOT EXECUTED
 80100a0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80100a4:	38 21 9c 88 	ori r1,r1,0x9c88                               <== NOT EXECUTED
 80100a8:	f8 00 52 fc 	calli 8024c98 <printf>                         <== NOT EXECUTED
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
  return rc;                                                          
}                                                                     
 80100ac:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
 80100b0:	59 80 00 08 	sw (r12+8),r0                                  <== NOT EXECUTED
  return rc;                                                          
}                                                                     
 80100b4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80100b8:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 80100bc:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 80100c0:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 80100c4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010508 <rtems_rfs_inode_create>: uint16_t mode, uint16_t links, uid_t uid, gid_t gid, rtems_rfs_ino* ino) {
 8010508:	37 9c ff 7c 	addi sp,sp,-132                                
 801050c:	5b 8b 00 34 	sw (sp+52),r11                                 
 8010510:	5b 8c 00 30 	sw (sp+48),r12                                 
 8010514:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8010518:	5b 8e 00 28 	sw (sp+40),r14                                 
 801051c:	5b 8f 00 24 	sw (sp+36),r15                                 
 8010520:	5b 90 00 20 	sw (sp+32),r16                                 
 8010524:	5b 91 00 1c 	sw (sp+28),r17                                 
 8010528:	5b 92 00 18 	sw (sp+24),r18                                 
 801052c:	5b 93 00 14 	sw (sp+20),r19                                 
 8010530:	5b 94 00 10 	sw (sp+16),r20                                 
 8010534:	5b 95 00 0c 	sw (sp+12),r21                                 
 8010538:	5b 96 00 08 	sw (sp+8),r22                                  
 801053c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8010540:	b8 20 88 00 	mv r17,r1                                      
 8010544:	b8 40 90 00 	mv r18,r2                                      
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
 8010548:	34 01 00 00 	mvi r1,0                                       
 801054c:	78 02 00 40 	mvhi r2,0x40                                   
                        uint16_t                mode,                 
                        uint16_t                links,                
                        uid_t                   uid,                  
                        gid_t                   gid,                  
                        rtems_rfs_ino*          ino)                  
{                                                                     
 8010550:	20 b0 ff ff 	andi r16,r5,0xffff                             
 8010554:	b8 60 78 00 	mv r15,r3                                      
 8010558:	b8 80 70 00 	mv r14,r4                                      
 801055c:	2b 93 00 88 	lw r19,(sp+136)                                
 8010560:	20 d6 ff ff 	andi r22,r6,0xffff                             
 8010564:	20 f5 ff ff 	andi r21,r7,0xffff                             
 8010568:	21 14 ff ff 	andi r20,r8,0xffff                             
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
 801056c:	f8 00 07 15 	calli 80121c0 <rtems_rfs_trace>                
 8010570:	22 0d f0 00 	andi r13,r16,0xf000                            
 8010574:	44 20 00 29 	be r1,r0,8010618 <rtems_rfs_inode_create+0x110><== ALWAYS TAKEN
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
 8010578:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
 801057c:	22 0d f0 00 	andi r13,r16,0xf000                            <== NOT EXECUTED
 8010580:	34 01 40 00 	mvi r1,16384                                   <== NOT EXECUTED
      type = "dir";                                                   
 8010584:	39 8c 9c e4 	ori r12,r12,0x9ce4                             <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
 8010588:	45 a1 00 11 	be r13,r1,80105cc <rtems_rfs_inode_create+0xc4><== NOT EXECUTED
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
 801058c:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
 8010590:	34 01 20 00 	mvi r1,8192                                    <== NOT EXECUTED
      type = "char";                                                  
 8010594:	39 8c 9c e8 	ori r12,r12,0x9ce8                             <== NOT EXECUTED
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
 8010598:	45 a1 00 0d 	be r13,r1,80105cc <rtems_rfs_inode_create+0xc4><== NOT EXECUTED
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
 801059c:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
 80105a0:	34 01 60 00 	mvi r1,24576                                   <== NOT EXECUTED
      type = "block";                                                 
 80105a4:	39 8c 9b 08 	ori r12,r12,0x9b08                             <== NOT EXECUTED
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
 80105a8:	45 a1 00 09 	be r13,r1,80105cc <rtems_rfs_inode_create+0xc4><== NOT EXECUTED
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
 80105ac:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
 80105b0:	34 21 20 00 	addi r1,r1,8192                                <== NOT EXECUTED
      type = "file";                                                  
 80105b4:	39 8c ad e0 	ori r12,r12,0xade0                             <== NOT EXECUTED
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
 80105b8:	45 a1 00 05 	be r13,r1,80105cc <rtems_rfs_inode_create+0xc4><== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
  {                                                                   
    const char* type = "unknown";                                     
 80105bc:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
 80105c0:	34 21 20 00 	addi r1,r1,8192                                <== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
  {                                                                   
    const char* type = "unknown";                                     
 80105c4:	39 8c 9c f0 	ori r12,r12,0x9cf0                             <== NOT EXECUTED
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
 80105c8:	45 a1 00 42 	be r13,r1,80106d0 <rtems_rfs_inode_create+0x1c8><== NOT EXECUTED
      type = "link";                                                  
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
 80105cc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80105d0:	38 21 9d 00 	ori r1,r1,0x9d00                               <== NOT EXECUTED
 80105d4:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 80105d8:	f8 00 51 b0 	calli 8024c98 <printf>                         <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
 80105dc:	45 c0 00 09 	be r14,r0,8010600 <rtems_rfs_inode_create+0xf8><== NOT EXECUTED
 80105e0:	34 09 00 00 	mvi r9,0                                       <== NOT EXECUTED
 80105e4:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 80105e8:	b5 e9 48 00 	add r9,r15,r9                                  <== NOT EXECUTED
 80105ec:	41 21 00 00 	lbu r1,(r9+0)                                  <== NOT EXECUTED
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
    for (c = 0; c < length; c++)                                      
 80105f0:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 80105f4:	f8 00 52 2f 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
    for (c = 0; c < length; c++)                                      
 80105f8:	b9 60 48 00 	mv r9,r11                                      <== NOT EXECUTED
 80105fc:	55 cb ff fb 	bgu r14,r11,80105e8 <rtems_rfs_inode_create+0xe0><== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (" type:%s mode:%04x (%03o)\n", type, mode, mode & ((1 << 10) - 1));
 8010600:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8010604:	38 21 9d 2c 	ori r1,r1,0x9d2c                               <== NOT EXECUTED
 8010608:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801060c:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 8010610:	22 04 03 ff 	andi r4,r16,0x3ff                              <== NOT EXECUTED
 8010614:	f8 00 51 a1 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & RTEMS_RFS_S_IFMT)                                    
 8010618:	34 01 60 00 	mvi r1,24576                                   
 801061c:	45 a1 00 1b 	be r13,r1,8010688 <rtems_rfs_inode_create+0x180><== NEVER TAKEN
 8010620:	49 a1 00 16 	bg r13,r1,8010678 <rtems_rfs_inode_create+0x170>
 8010624:	34 01 20 00 	mvi r1,8192                                    
 8010628:	45 a1 00 18 	be r13,r1,8010688 <rtems_rfs_inode_create+0x180><== NEVER TAKEN
 801062c:	34 01 40 00 	mvi r1,16384                                   
 8010630:	45 a1 00 16 	be r13,r1,8010688 <rtems_rfs_inode_create+0x180><== ALWAYS TAKEN
    case RTEMS_RFS_S_IFBLK:                                           
    case RTEMS_RFS_S_IFREG:                                           
    case RTEMS_RFS_S_IFLNK:                                           
      break;                                                          
    default:                                                          
      return EINVAL;                                                  
 8010634:	34 0b 00 16 	mvi r11,22                                     <== NOT EXECUTED
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010638:	b9 60 08 00 	mv r1,r11                                      
 801063c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010640:	2b 8b 00 34 	lw r11,(sp+52)                                 
 8010644:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8010648:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 801064c:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8010650:	2b 8f 00 24 	lw r15,(sp+36)                                 
 8010654:	2b 90 00 20 	lw r16,(sp+32)                                 
 8010658:	2b 91 00 1c 	lw r17,(sp+28)                                 
 801065c:	2b 92 00 18 	lw r18,(sp+24)                                 
 8010660:	2b 93 00 14 	lw r19,(sp+20)                                 
 8010664:	2b 94 00 10 	lw r20,(sp+16)                                 
 8010668:	2b 95 00 0c 	lw r21,(sp+12)                                 
 801066c:	2b 96 00 08 	lw r22,(sp+8)                                  
 8010670:	37 9c 00 84 	addi sp,sp,132                                 
 8010674:	c3 a0 00 00 	ret                                            
  }                                                                   
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & RTEMS_RFS_S_IFMT)                                    
 8010678:	38 01 80 00 	mvu r1,0x8000                                  
 801067c:	45 a1 00 03 	be r13,r1,8010688 <rtems_rfs_inode_create+0x180>
 8010680:	34 21 20 00 	addi r1,r1,8192                                
 8010684:	5d a1 ff ec 	bne r13,r1,8010634 <rtems_rfs_inode_create+0x12c><== NEVER TAKEN
      break;                                                          
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_alloc (fs, parent, ino);                       
 8010688:	ba 20 08 00 	mv r1,r17                                      
 801068c:	ba 40 10 00 	mv r2,r18                                      
 8010690:	ba 60 18 00 	mv r3,r19                                      
 8010694:	fb ff fd 7b 	calli 800fc80 <rtems_rfs_inode_alloc>          
 8010698:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801069c:	48 20 ff e7 	bg r1,r0,8010638 <rtems_rfs_inode_create+0x130>
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_open (fs, *ino, &inode, true);                 
 80106a0:	2a 62 00 00 	lw r2,(r19+0)                                  
 80106a4:	37 8c 00 38 	addi r12,sp,56                                 
 80106a8:	ba 20 08 00 	mv r1,r17                                      
 80106ac:	b9 80 18 00 	mv r3,r12                                      
 80106b0:	34 04 00 01 	mvi r4,1                                       
 80106b4:	fb ff fd be 	calli 800fdac <rtems_rfs_inode_open>           
 80106b8:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 80106bc:	4c 01 00 08 	bge r0,r1,80106dc <rtems_rfs_inode_create+0x1d4><== ALWAYS TAKEN
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
 80106c0:	2a 62 00 00 	lw r2,(r19+0)                                  <== NOT EXECUTED
 80106c4:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 80106c8:	fb ff fd 7b 	calli 800fcb4 <rtems_rfs_inode_free>           <== NOT EXECUTED
    return rc;                                                        
 80106cc:	e3 ff ff db 	bi 8010638 <rtems_rfs_inode_create+0x130>      <== NOT EXECUTED
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
 80106d0:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
 80106d4:	39 8c 9c f8 	ori r12,r12,0x9cf8                             <== NOT EXECUTED
 80106d8:	e3 ff ff bd 	bi 80105cc <rtems_rfs_inode_create+0xc4>       <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);    
 80106dc:	b9 80 08 00 	mv r1,r12                                      
 80106e0:	ba c0 10 00 	mv r2,r22                                      
 80106e4:	ba 00 18 00 	mv r3,r16                                      
 80106e8:	ba a0 20 00 	mv r4,r21                                      
 80106ec:	ba 80 28 00 	mv r5,r20                                      
 80106f0:	fb ff ff 07 	calli 801030c <rtems_rfs_inode_initialise>     
 80106f4:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 80106f8:	4c 01 00 08 	bge r0,r1,8010718 <rtems_rfs_inode_create+0x210><== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 80106fc:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8010700:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010704:	fb ff fe 44 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    rtems_rfs_inode_free (fs, *ino);                                  
 8010708:	2a 62 00 00 	lw r2,(r19+0)                                  <== NOT EXECUTED
 801070c:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010710:	fb ff fd 69 	calli 800fcb4 <rtems_rfs_inode_free>           <== NOT EXECUTED
    return rc;                                                        
 8010714:	e3 ff ff c9 	bi 8010638 <rtems_rfs_inode_create+0x130>      <== NOT EXECUTED
  /*                                                                  
   * Only handle the specifics of a directory. Let caller handle the others.
   *                                                                  
   * The inode delete will free the inode.                            
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
 8010718:	34 01 40 00 	mvi r1,16384                                   
 801071c:	45 a1 00 22 	be r13,r1,80107a4 <rtems_rfs_inode_create+0x29c>
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
 8010720:	37 90 00 60 	addi r16,sp,96                                 
 8010724:	ba 20 08 00 	mv r1,r17                                      
 8010728:	ba 40 10 00 	mv r2,r18                                      
 801072c:	ba 00 18 00 	mv r3,r16                                      
 8010730:	34 04 00 01 	mvi r4,1                                       
 8010734:	fb ff fd 9e 	calli 800fdac <rtems_rfs_inode_open>           
 8010738:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801073c:	4c 01 00 08 	bge r0,r1,801075c <rtems_rfs_inode_create+0x254><== ALWAYS TAKEN
                               rtems_rfs_inode_get_links (&parent_inode) + 1);
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
 8010740:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8010744:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010748:	fb ff fe 60 	calli 80100c8 <rtems_rfs_inode_delete>         <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
 801074c:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010750:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8010754:	fb ff fe 30 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rc;                                                        
 8010758:	e3 ff ff b8 	bi 8010638 <rtems_rfs_inode_create+0x130>      <== NOT EXECUTED
    rtems_rfs_inode_delete (fs, &inode);                              
    rtems_rfs_inode_close (fs, &inode);                               
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
 801075c:	2a 65 00 00 	lw r5,(r19+0)                                  
 8010760:	ba 20 08 00 	mv r1,r17                                      
 8010764:	ba 00 10 00 	mv r2,r16                                      
 8010768:	b9 e0 18 00 	mv r3,r15                                      
 801076c:	b9 c0 20 00 	mv r4,r14                                      
 8010770:	f8 00 33 86 	calli 801d588 <rtems_rfs_dir_add_entry>        
 8010774:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8010778:	4c 01 00 20 	bge r0,r1,80107f8 <rtems_rfs_inode_create+0x2f0><== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
 801077c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8010780:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010784:	fb ff fe 51 	calli 80100c8 <rtems_rfs_inode_delete>         <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
 8010788:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 801078c:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010790:	fb ff fe 21 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
 8010794:	ba 20 08 00 	mv r1,r17                                      <== NOT EXECUTED
 8010798:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 801079c:	fb ff fe 1e 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rc;                                                        
 80107a0:	e3 ff ff a6 	bi 8010638 <rtems_rfs_inode_create+0x130>      <== NOT EXECUTED
   *                                                                  
   * The inode delete will free the inode.                            
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
  {                                                                   
    rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);          
 80107a4:	2a 65 00 00 	lw r5,(r19+0)                                  
 80107a8:	78 03 08 03 	mvhi r3,0x803                                  
 80107ac:	ba 20 08 00 	mv r1,r17                                      
 80107b0:	b9 80 10 00 	mv r2,r12                                      
 80107b4:	38 63 7e 6c 	ori r3,r3,0x7e6c                               
 80107b8:	34 04 00 01 	mvi r4,1                                       
 80107bc:	f8 00 33 73 	calli 801d588 <rtems_rfs_dir_add_entry>        
 80107c0:	b8 20 58 00 	mv r11,r1                                      
    if (rc == 0)                                                      
 80107c4:	44 20 00 03 	be r1,r0,80107d0 <rtems_rfs_inode_create+0x2c8><== ALWAYS TAKEN
      rc = rtems_rfs_dir_add_entry (fs, &inode, "..", 2, parent);     
    if (rc > 0)                                                       
 80107c8:	4c 0b ff d6 	bge r0,r11,8010720 <rtems_rfs_inode_create+0x218><== NOT EXECUTED
 80107cc:	e3 ff ff dd 	bi 8010740 <rtems_rfs_inode_create+0x238>      <== NOT EXECUTED
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
  {                                                                   
    rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);          
    if (rc == 0)                                                      
      rc = rtems_rfs_dir_add_entry (fs, &inode, "..", 2, parent);     
 80107d0:	78 03 08 03 	mvhi r3,0x803                                  
 80107d4:	ba 20 08 00 	mv r1,r17                                      
 80107d8:	b9 80 10 00 	mv r2,r12                                      
 80107dc:	38 63 7e 70 	ori r3,r3,0x7e70                               
 80107e0:	34 04 00 02 	mvi r4,2                                       
 80107e4:	ba 40 28 00 	mv r5,r18                                      
 80107e8:	f8 00 33 68 	calli 801d588 <rtems_rfs_dir_add_entry>        
 80107ec:	b8 20 58 00 	mv r11,r1                                      
    if (rc > 0)                                                       
 80107f0:	4c 0b ff cc 	bge r0,r11,8010720 <rtems_rfs_inode_create+0x218><== ALWAYS TAKEN
 80107f4:	e3 ff ff d3 	bi 8010740 <rtems_rfs_inode_create+0x238>      <== NOT EXECUTED
                                                                      
  /*                                                                  
   * If the node is a directory update the parent link count as the   
   * new directory has the '..' link that points to the parent.       
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
 80107f8:	34 01 40 00 	mvi r1,16384                                   
 80107fc:	5d a1 00 20 	bne r13,r1,801087c <rtems_rfs_inode_create+0x374>
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8010800:	2b 82 00 6c 	lw r2,(sp+108)                                 
 8010804:	40 41 00 00 	lbu r1,(r2+0)                                  
 8010808:	40 43 00 01 	lbu r3,(r2+1)                                  
 801080c:	b4 21 08 00 	add r1,r1,r1                                   
 8010810:	b4 21 08 00 	add r1,r1,r1                                   
 8010814:	b4 21 08 00 	add r1,r1,r1                                   
 8010818:	b4 21 08 00 	add r1,r1,r1                                   
 801081c:	b4 21 08 00 	add r1,r1,r1                                   
 8010820:	b4 21 08 00 	add r1,r1,r1                                   
 8010824:	b4 21 08 00 	add r1,r1,r1                                   
 8010828:	b4 21 08 00 	add r1,r1,r1                                   
 801082c:	b8 23 08 00 	or r1,r1,r3                                    
  if (links == 0xffff)                                                
    links = 0;                                                        
 8010830:	38 03 ff ff 	mvu r3,0xffff                                  
 8010834:	fc 23 18 00 	cmpne r3,r1,r3                                 
 8010838:	c8 03 18 00 	sub r3,r0,r3                                   
 801083c:	a0 23 08 00 	and r1,r1,r3                                   
    rtems_rfs_inode_set_links (&parent_inode,                         
 8010840:	34 21 00 01 	addi r1,r1,1                                   
 8010844:	20 23 ff ff 	andi r3,r1,0xffff                              
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
 8010848:	00 61 00 01 	srui r1,r3,1                                   
 801084c:	00 21 00 01 	srui r1,r1,1                                   
 8010850:	00 21 00 01 	srui r1,r1,1                                   
 8010854:	00 21 00 01 	srui r1,r1,1                                   
 8010858:	00 21 00 01 	srui r1,r1,1                                   
 801085c:	00 21 00 01 	srui r1,r1,1                                   
 8010860:	00 21 00 01 	srui r1,r1,1                                   
 8010864:	00 21 00 01 	srui r1,r1,1                                   
 8010868:	30 41 00 00 	sb (r2+0),r1                                   
 801086c:	2b 81 00 6c 	lw r1,(sp+108)                                 
 8010870:	30 23 00 01 	sb (r1+1),r3                                   
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8010874:	34 01 00 01 	mvi r1,1                                       
 8010878:	33 81 00 70 	sb (sp+112),r1                                 
                               rtems_rfs_inode_get_links (&parent_inode) + 1);
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
 801087c:	ba 20 08 00 	mv r1,r17                                      
 8010880:	ba 00 10 00 	mv r2,r16                                      
 8010884:	fb ff fd e4 	calli 8010014 <rtems_rfs_inode_close>          
 8010888:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 801088c:	4c 01 00 02 	bge r0,r1,8010894 <rtems_rfs_inode_create+0x38c><== ALWAYS TAKEN
 8010890:	e3 ff ff ac 	bi 8010740 <rtems_rfs_inode_create+0x238>      <== NOT EXECUTED
    rtems_rfs_inode_delete (fs, &inode);                              
    rtems_rfs_inode_close (fs, &inode);                               
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8010894:	ba 20 08 00 	mv r1,r17                                      
 8010898:	b9 80 10 00 	mv r2,r12                                      
 801089c:	fb ff fd de 	calli 8010014 <rtems_rfs_inode_close>          
 80108a0:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 80108a4:	4c 01 00 02 	bge r0,r1,80108ac <rtems_rfs_inode_create+0x3a4><== ALWAYS TAKEN
 80108a8:	e3 ff ff 86 	bi 80106c0 <rtems_rfs_inode_create+0x1b8>      <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
 80108ac:	34 0b 00 00 	mvi r11,0                                      
 80108b0:	e3 ff ff 62 	bi 8010638 <rtems_rfs_inode_create+0x130>      
                                                                      

080100c8 <rtems_rfs_inode_delete>: } int rtems_rfs_inode_delete (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
 80100c8:	37 9c ff a0 	addi sp,sp,-96                                 
 80100cc:	5b 8b 00 10 	sw (sp+16),r11                                 
 80100d0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80100d4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80100d8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80100dc:	b8 20 60 00 	mv r12,r1                                      
 80100e0:	b8 40 58 00 	mv r11,r2                                      
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_DELETE))                 
 80100e4:	34 01 00 00 	mvi r1,0                                       
 80100e8:	78 02 00 80 	mvhi r2,0x80                                   
 80100ec:	f8 00 08 35 	calli 80121c0 <rtems_rfs_trace>                
 80100f0:	44 20 00 0b 	be r1,r0,801011c <rtems_rfs_inode_delete+0x54> <== ALWAYS TAKEN
    printf("rtems-rfs: inode-delete: ino:%" PRIu32 " loaded:%s\n",    
 80100f4:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 80100f8:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 80100fc:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 8010100:	38 63 a0 70 	ori r3,r3,0xa070                               <== NOT EXECUTED
 8010104:	44 20 00 03 	be r1,r0,8010110 <rtems_rfs_inode_delete+0x48> <== NOT EXECUTED
 8010108:	78 03 08 03 	mvhi r3,0x803                                  <== NOT EXECUTED
 801010c:	38 63 9b d0 	ori r3,r3,0x9bd0                               <== NOT EXECUTED
 8010110:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8010114:	38 21 9c b8 	ori r1,r1,0x9cb8                               <== NOT EXECUTED
 8010118:	f8 00 52 e0 	calli 8024c98 <printf>                         <== NOT EXECUTED
           rtems_rfs_inode_ino (handle),                              
           rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");        
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
 801011c:	29 62 00 0c 	lw r2,(r11+12)                                 
                                                                      
int                                                                   
rtems_rfs_inode_delete (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle)               
{                                                                     
  int rc = 0;                                                         
 8010120:	34 01 00 00 	mvi r1,0                                       
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_DELETE))                 
    printf("rtems-rfs: inode-delete: ino:%" PRIu32 " loaded:%s\n",    
           rtems_rfs_inode_ino (handle),                              
           rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");        
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
 8010124:	44 40 00 0b 	be r2,r0,8010150 <rtems_rfs_inode_delete+0x88> <== NEVER TAKEN
    rtems_rfs_block_map map;                                          
                                                                      
    /*                                                                
     * Free the ino number.                                           
     */                                                               
    rc = rtems_rfs_inode_free (fs, handle->ino);                      
 8010128:	29 62 00 08 	lw r2,(r11+8)                                  
 801012c:	b9 80 08 00 	mv r1,r12                                      
 8010130:	fb ff fe e1 	calli 800fcb4 <rtems_rfs_inode_free>           
    if (rc > 0)                                                       
 8010134:	48 20 00 07 	bg r1,r0,8010150 <rtems_rfs_inode_delete+0x88> <== NEVER TAKEN
      return rc;                                                      
                                                                      
    /*                                                                
     * Free the blocks the inode may have attached.                   
     */                                                               
    rc = rtems_rfs_block_map_open (fs, handle, &map);                 
 8010138:	37 8d 00 14 	addi r13,sp,20                                 
 801013c:	b9 80 08 00 	mv r1,r12                                      
 8010140:	b9 60 10 00 	mv r2,r11                                      
 8010144:	b9 a0 18 00 	mv r3,r13                                      
 8010148:	f8 00 2c 8b 	calli 801b374 <rtems_rfs_block_map_open>       
    if (rc == 0)                                                      
 801014c:	44 20 00 07 	be r1,r0,8010168 <rtems_rfs_inode_delete+0xa0> <== ALWAYS TAKEN
      handle->loads = 0;                                              
      handle->node = NULL;                                            
    }                                                                 
  }                                                                   
  return rc;                                                          
}                                                                     
 8010150:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010154:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8010158:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 801015c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8010160:	37 9c 00 60 	addi sp,sp,96                                  
 8010164:	c3 a0 00 00 	ret                                            
     */                                                               
    rc = rtems_rfs_block_map_open (fs, handle, &map);                 
    if (rc == 0)                                                      
    {                                                                 
      int rrc;                                                        
      rrc = rtems_rfs_block_map_free_all (fs, &map);                  
 8010168:	b9 a0 10 00 	mv r2,r13                                      
 801016c:	b9 80 08 00 	mv r1,r12                                      
 8010170:	f8 00 30 c2 	calli 801c478 <rtems_rfs_block_map_free_all>   
      rc = rtems_rfs_block_map_close (fs, &map);                      
 8010174:	b9 a0 10 00 	mv r2,r13                                      
 8010178:	b9 80 08 00 	mv r1,r12                                      
 801017c:	f8 00 2d 26 	calli 801b614 <rtems_rfs_block_map_close>      
      if (rc > 0)                                                     
        rrc = rc;                                                     
      memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);              
 8010180:	29 61 00 0c 	lw r1,(r11+12)                                 
 8010184:	34 02 ff ff 	mvi r2,-1                                      
 8010188:	58 22 00 00 	sw (r1+0),r2                                   
 801018c:	58 22 00 04 	sw (r1+4),r2                                   
 8010190:	58 22 00 08 	sw (r1+8),r2                                   
 8010194:	58 22 00 0c 	sw (r1+12),r2                                  
 8010198:	58 22 00 10 	sw (r1+16),r2                                  
 801019c:	58 22 00 14 	sw (r1+20),r2                                  
 80101a0:	58 22 00 18 	sw (r1+24),r2                                  
 80101a4:	58 22 00 1c 	sw (r1+28),r2                                  
 80101a8:	58 22 00 20 	sw (r1+32),r2                                  
 80101ac:	58 22 00 24 	sw (r1+36),r2                                  
 80101b0:	58 22 00 28 	sw (r1+40),r2                                  
 80101b4:	58 22 00 2c 	sw (r1+44),r2                                  
 80101b8:	58 22 00 30 	sw (r1+48),r2                                  
 80101bc:	58 22 00 34 	sw (r1+52),r2                                  
      rtems_rfs_buffer_mark_dirty (&handle->buffer);                  
 80101c0:	34 01 00 01 	mvi r1,1                                       
 80101c4:	31 61 00 10 	sb (r11+16),r1                                 
      /*                                                              
       * Do the release here to avoid the ctime field being set on a  
       * close. Also if there loads is greater then one then other loads
       * active. Forcing the loads count to 0.                        
       */                                                             
      rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);     
 80101c8:	35 62 00 10 	addi r2,r11,16                                 
 80101cc:	b9 80 08 00 	mv r1,r12                                      
 80101d0:	f8 00 31 2b 	calli 801c67c <rtems_rfs_buffer_handle_release>
      handle->loads = 0;                                              
 80101d4:	59 60 00 24 	sw (r11+36),r0                                 
      handle->node = NULL;                                            
 80101d8:	59 60 00 0c 	sw (r11+12),r0                                 
 80101dc:	e3 ff ff dd 	bi 8010150 <rtems_rfs_inode_delete+0x88>       
                                                                      

0800fcd4 <rtems_rfs_inode_load>: } int rtems_rfs_inode_load (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
 800fcd4:	37 9c ff f0 	addi sp,sp,-16                                 
 800fcd8:	5b 8b 00 10 	sw (sp+16),r11                                 
 800fcdc:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800fce0:	5b 8d 00 08 	sw (sp+8),r13                                  
 800fce4:	5b 9d 00 04 	sw (sp+4),ra                                   
 800fce8:	b8 20 68 00 	mv r13,r1                                      
 800fcec:	b8 40 58 00 	mv r11,r2                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_LOAD))                   
 800fcf0:	34 01 00 00 	mvi r1,0                                       
 800fcf4:	78 02 00 10 	mvhi r2,0x10                                   
 800fcf8:	f8 00 09 32 	calli 80121c0 <rtems_rfs_trace>                
 800fcfc:	44 20 00 0d 	be r1,r0,800fd30 <rtems_rfs_inode_load+0x5c>   <== ALWAYS TAKEN
    printf ("rtems-rfs: inode-load: ino=%" PRIu32 " loads=%i loaded=%s\n",
 800fd00:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 800fd04:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 800fd08:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 800fd0c:	29 63 00 24 	lw r3,(r11+36)                                 <== NOT EXECUTED
 800fd10:	38 84 a0 70 	ori r4,r4,0xa070                               <== NOT EXECUTED
 800fd14:	44 20 00 03 	be r1,r0,800fd20 <rtems_rfs_inode_load+0x4c>   <== NOT EXECUTED
 800fd18:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 800fd1c:	38 84 9b d0 	ori r4,r4,0x9bd0                               <== NOT EXECUTED
 800fd20:	78 05 08 03 	mvhi r5,0x803                                  <== NOT EXECUTED
 800fd24:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 800fd28:	38 21 9b d4 	ori r1,r1,0x9bd4                               <== NOT EXECUTED
 800fd2c:	f8 00 53 db 	calli 8024c98 <printf>                         <== NOT EXECUTED
                                                                      
  /*                                                                  
   * An inode does not move so once loaded no need to do again.       
   */                                                                 
                                                                      
  if (!rtems_rfs_inode_is_loaded (handle))                            
 800fd30:	29 6c 00 0c 	lw r12,(r11+12)                                
 800fd34:	45 80 00 0b 	be r12,r0,800fd60 <rtems_rfs_inode_load+0x8c>  
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
    handle->node += handle->offset;                                   
  }                                                                   
                                                                      
  handle->loads++;                                                    
 800fd38:	29 62 00 24 	lw r2,(r11+36)                                 
                                                                      
  return 0;                                                           
 800fd3c:	34 01 00 00 	mvi r1,0                                       
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
    handle->node += handle->offset;                                   
  }                                                                   
                                                                      
  handle->loads++;                                                    
 800fd40:	34 42 00 01 	addi r2,r2,1                                   
 800fd44:	59 62 00 24 	sw (r11+36),r2                                 
                                                                      
  return 0;                                                           
}                                                                     
 800fd48:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800fd4c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800fd50:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 800fd54:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800fd58:	37 9c 00 10 	addi sp,sp,16                                  
 800fd5c:	c3 a0 00 00 	ret                                            
                                                                      
  if (!rtems_rfs_inode_is_loaded (handle))                            
  {                                                                   
    int rc;                                                           
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs,&handle->buffer,         
 800fd60:	29 63 00 1c 	lw r3,(r11+28)                                 
 800fd64:	b9 a0 08 00 	mv r1,r13                                      
 800fd68:	35 62 00 10 	addi r2,r11,16                                 
 800fd6c:	34 04 00 01 	mvi r4,1                                       
 800fd70:	f8 00 32 b5 	calli 801c844 <rtems_rfs_buffer_handle_request>
                                          handle->block, true);       
    if (rc > 0)                                                       
 800fd74:	48 2c ff f5 	bg r1,r12,800fd48 <rtems_rfs_inode_load+0x74>  <== NEVER TAKEN
      return rc;                                                      
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
    handle->node += handle->offset;                                   
 800fd78:	29 61 00 20 	lw r1,(r11+32)                                 
    rc = rtems_rfs_buffer_handle_request (fs,&handle->buffer,         
                                          handle->block, true);       
    if (rc > 0)                                                       
      return rc;                                                      
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
 800fd7c:	29 63 00 18 	lw r3,(r11+24)                                 
    handle->node += handle->offset;                                   
 800fd80:	b4 21 08 00 	add r1,r1,r1                                   
 800fd84:	b4 21 08 00 	add r1,r1,r1                                   
 800fd88:	b4 21 08 00 	add r1,r1,r1                                   
 800fd8c:	b4 21 10 00 	add r2,r1,r1                                   
 800fd90:	28 63 00 1c 	lw r3,(r3+28)                                  
 800fd94:	b4 42 10 00 	add r2,r2,r2                                   
 800fd98:	b4 42 10 00 	add r2,r2,r2                                   
 800fd9c:	c8 41 08 00 	sub r1,r2,r1                                   
 800fda0:	b4 61 08 00 	add r1,r3,r1                                   
 800fda4:	59 61 00 0c 	sw (r11+12),r1                                 
 800fda8:	e3 ff ff e4 	bi 800fd38 <rtems_rfs_inode_load+0x64>         
                                                                      

0800fdac <rtems_rfs_inode_open>: int rtems_rfs_inode_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, rtems_rfs_inode_handle* handle, bool load) {
 800fdac:	37 9c ff dc 	addi sp,sp,-36                                 
 800fdb0:	5b 8b 00 24 	sw (sp+36),r11                                 
 800fdb4:	5b 8c 00 20 	sw (sp+32),r12                                 
 800fdb8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800fdbc:	5b 8e 00 18 	sw (sp+24),r14                                 
 800fdc0:	5b 8f 00 14 	sw (sp+20),r15                                 
 800fdc4:	5b 90 00 10 	sw (sp+16),r16                                 
 800fdc8:	5b 91 00 0c 	sw (sp+12),r17                                 
 800fdcc:	5b 92 00 08 	sw (sp+8),r18                                  
 800fdd0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800fdd4:	b8 20 60 00 	mv r12,r1                                      
 800fdd8:	b8 40 68 00 	mv r13,r2                                      
  int group;                                                          
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
 800fddc:	34 01 00 00 	mvi r1,0                                       
 800fde0:	78 02 00 04 	mvhi r2,0x4                                    
int                                                                   
rtems_rfs_inode_open (rtems_rfs_file_system*  fs,                     
                      rtems_rfs_ino           ino,                    
                      rtems_rfs_inode_handle* handle,                 
                      bool                    load)                   
{                                                                     
 800fde4:	b8 60 58 00 	mv r11,r3                                      
 800fde8:	20 8f 00 ff 	andi r15,r4,0xff                               
  int group;                                                          
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
 800fdec:	f8 00 08 f5 	calli 80121c0 <rtems_rfs_trace>                
 800fdf0:	5c 20 00 35 	bne r1,r0,800fec4 <rtems_rfs_inode_open+0x118> <== NEVER TAKEN
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
    return EINVAL;                                                    
 800fdf4:	34 01 00 16 	mvi r1,22                                      
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
 800fdf8:	45 a0 00 28 	be r13,r0,800fe98 <rtems_rfs_inode_open+0xec>  <== NEVER TAKEN
    return EINVAL;                                                    
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
 800fdfc:	29 82 00 14 	lw r2,(r12+20)                                 
 800fe00:	35 ae ff ff 	addi r14,r13,-1                                
 800fe04:	55 c2 00 25 	bgu r14,r2,800fe98 <rtems_rfs_inode_open+0xec> <== NEVER TAKEN
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
 800fe08:	29 92 00 2c 	lw r18,(r12+44)                                
  gino  = gino % fs->group_inodes;                                    
 800fe0c:	b9 c0 08 00 	mv r1,r14                                      
    return EINVAL;                                                    
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
    return EINVAL;                                                    
                                                                      
  handle->ino = ino;                                                  
 800fe10:	59 6d 00 08 	sw (r11+8),r13                                 
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
 800fe14:	ba 40 10 00 	mv r2,r18                                      
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
    return EINVAL;                                                    
                                                                      
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
 800fe18:	59 60 00 0c 	sw (r11+12),r0                                 
  handle->loads = 0;                                                  
 800fe1c:	59 60 00 24 	sw (r11+36),r0                                 
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
 800fe20:	f8 00 9c 84 	calli 8037030 <__umodsi3>                      
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
 800fe24:	29 90 00 30 	lw r16,(r12+48)                                
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
 800fe28:	b8 20 88 00 	mv r17,r1                                      
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
 800fe2c:	ba 00 10 00 	mv r2,r16                                      
 800fe30:	f8 00 9c 80 	calli 8037030 <__umodsi3>                      
 800fe34:	59 61 00 20 	sw (r11+32),r1                                 
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
 800fe38:	ba 40 10 00 	mv r2,r18                                      
 800fe3c:	b9 c0 08 00 	mv r1,r14                                      
 800fe40:	fb ff c6 6d 	calli 80017f4 <__udivsi3>                      
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
 800fe44:	b4 21 28 00 	add r5,r1,r1                                   
 800fe48:	b4 a5 28 00 	add r5,r5,r5                                   
 800fe4c:	b4 a5 28 00 	add r5,r5,r5                                   
 800fe50:	b4 a5 28 00 	add r5,r5,r5                                   
 800fe54:	29 81 00 20 	lw r1,(r12+32)                                 
 800fe58:	b4 a5 18 00 	add r3,r5,r5                                   
 800fe5c:	b4 63 18 00 	add r3,r3,r3                                   
 800fe60:	b4 a3 28 00 	add r5,r5,r3                                   
 800fe64:	b4 25 18 00 	add r3,r1,r5                                   
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
 800fe68:	28 6d 00 00 	lw r13,(r3+0)                                  
 800fe6c:	ba 20 08 00 	mv r1,r17                                      
 800fe70:	ba 00 10 00 	mv r2,r16                                      
 800fe74:	fb ff c6 60 	calli 80017f4 <__udivsi3>                      
 800fe78:	35 ad 00 02 	addi r13,r13,2                                 
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
 800fe7c:	b5 a1 08 00 	add r1,r13,r1                                  
 800fe80:	59 61 00 1c 	sw (r11+28),r1                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 800fe84:	31 60 00 10 	sb (r11+16),r0                                 
  handle->bnum  = 0;                                                  
 800fe88:	59 60 00 14 	sw (r11+20),r0                                 
  handle->buffer = NULL;                                              
 800fe8c:	59 60 00 18 	sw (r11+24),r0                                 
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
 800fe90:	34 01 00 00 	mvi r1,0                                       
  if ((rc == 0) && load)                                              
 800fe94:	5d e0 00 11 	bne r15,r0,800fed8 <rtems_rfs_inode_open+0x12c><== ALWAYS TAKEN
    rc = rtems_rfs_inode_load (fs, handle);                           
  return rc;                                                          
}                                                                     
 800fe98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800fe9c:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800fea0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800fea4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800fea8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800feac:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800feb0:	2b 90 00 10 	lw r16,(sp+16)                                 
 800feb4:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800feb8:	2b 92 00 08 	lw r18,(sp+8)                                  
 800febc:	37 9c 00 24 	addi sp,sp,36                                  
 800fec0:	c3 a0 00 00 	ret                                            
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
 800fec4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800fec8:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 800fecc:	38 21 9c 08 	ori r1,r1,0x9c08                               <== NOT EXECUTED
 800fed0:	f8 00 53 72 	calli 8024c98 <printf>                         <== NOT EXECUTED
 800fed4:	e3 ff ff c8 	bi 800fdf4 <rtems_rfs_inode_open+0x48>         <== NOT EXECUTED
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
  if ((rc == 0) && load)                                              
    rc = rtems_rfs_inode_load (fs, handle);                           
 800fed8:	b9 80 08 00 	mv r1,r12                                      
 800fedc:	b9 60 10 00 	mv r2,r11                                      
 800fee0:	fb ff ff 7d 	calli 800fcd4 <rtems_rfs_inode_load>           
 800fee4:	e3 ff ff ed 	bi 800fe98 <rtems_rfs_inode_open+0xec>         
                                                                      

080101e0 <rtems_rfs_inode_time_stamp_now>: int rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle, bool atime, bool mtime) {
 80101e0:	37 9c ff e8 	addi sp,sp,-24                                 
 80101e4:	5b 8b 00 18 	sw (sp+24),r11                                 
 80101e8:	5b 8c 00 14 	sw (sp+20),r12                                 
 80101ec:	5b 8d 00 10 	sw (sp+16),r13                                 
 80101f0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 80101f4:	5b 8f 00 08 	sw (sp+8),r15                                  
 80101f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80101fc:	b8 20 58 00 	mv r11,r1                                      
  time_t now;                                                         
  if (!rtems_rfs_inode_is_loaded (handle))                            
 8010200:	28 21 00 0c 	lw r1,(r1+12)                                  
                                                                      
int                                                                   
rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,       
                                bool                    atime,        
                                bool                    mtime)        
{                                                                     
 8010204:	20 4f 00 ff 	andi r15,r2,0xff                               
 8010208:	20 6e 00 ff 	andi r14,r3,0xff                               
  time_t now;                                                         
  if (!rtems_rfs_inode_is_loaded (handle))                            
    return ENXIO;                                                     
 801020c:	34 0d 00 06 	mvi r13,6                                      
rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,       
                                bool                    atime,        
                                bool                    mtime)        
{                                                                     
  time_t now;                                                         
  if (!rtems_rfs_inode_is_loaded (handle))                            
 8010210:	44 20 00 36 	be r1,r0,80102e8 <rtems_rfs_inode_time_stamp_now+0x108><== NEVER TAKEN
    return ENXIO;                                                     
  now = time (NULL);                                                  
 8010214:	34 01 00 00 	mvi r1,0                                       
 8010218:	f8 00 62 5c 	calli 8028b88 <time>                           
 801021c:	b8 20 60 00 	mv r12,r1                                      
  if (atime)                                                          
 8010220:	45 e0 00 18 	be r15,r0,8010280 <rtems_rfs_inode_time_stamp_now+0xa0><== NEVER TAKEN
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 8010224:	29 6d 00 0c 	lw r13,(r11+12)                                
 8010228:	34 02 00 18 	mvi r2,24                                      
 801022c:	fb ff c5 3f 	calli 8001728 <__lshrsi3>                      
 8010230:	31 a1 00 10 	sb (r13+16),r1                                 
 8010234:	34 02 00 10 	mvi r2,16                                      
 8010238:	b9 80 08 00 	mv r1,r12                                      
 801023c:	fb ff c5 3b 	calli 8001728 <__lshrsi3>                      
 8010240:	01 82 00 01 	srui r2,r12,1                                  
 8010244:	29 63 00 0c 	lw r3,(r11+12)                                 
 8010248:	00 42 00 01 	srui r2,r2,1                                   
 801024c:	00 42 00 01 	srui r2,r2,1                                   
 8010250:	30 61 00 11 	sb (r3+17),r1                                  
 8010254:	00 42 00 01 	srui r2,r2,1                                   
 8010258:	29 61 00 0c 	lw r1,(r11+12)                                 
 801025c:	00 42 00 01 	srui r2,r2,1                                   
 8010260:	00 42 00 01 	srui r2,r2,1                                   
 8010264:	00 42 00 01 	srui r2,r2,1                                   
 8010268:	00 42 00 01 	srui r2,r2,1                                   
 801026c:	30 22 00 12 	sb (r1+18),r2                                  
 8010270:	29 61 00 0c 	lw r1,(r11+12)                                 
 8010274:	30 2c 00 13 	sb (r1+19),r12                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8010278:	34 01 00 01 	mvi r1,1                                       
 801027c:	31 61 00 10 	sb (r11+16),r1                                 
    rtems_rfs_inode_set_atime (handle, now);                          
  if (mtime)                                                          
    rtems_rfs_inode_set_mtime (handle, now);                          
  return 0;                                                           
 8010280:	34 0d 00 00 	mvi r13,0                                      
  if (!rtems_rfs_inode_is_loaded (handle))                            
    return ENXIO;                                                     
  now = time (NULL);                                                  
  if (atime)                                                          
    rtems_rfs_inode_set_atime (handle, now);                          
  if (mtime)                                                          
 8010284:	45 c0 00 19 	be r14,r0,80102e8 <rtems_rfs_inode_time_stamp_now+0x108><== NEVER TAKEN
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 8010288:	29 6e 00 0c 	lw r14,(r11+12)                                
 801028c:	34 02 00 18 	mvi r2,24                                      
 8010290:	b9 80 08 00 	mv r1,r12                                      
 8010294:	fb ff c5 25 	calli 8001728 <__lshrsi3>                      
 8010298:	31 c1 00 14 	sb (r14+20),r1                                 
 801029c:	34 02 00 10 	mvi r2,16                                      
 80102a0:	b9 80 08 00 	mv r1,r12                                      
 80102a4:	fb ff c5 21 	calli 8001728 <__lshrsi3>                      
 80102a8:	01 82 00 01 	srui r2,r12,1                                  
 80102ac:	29 63 00 0c 	lw r3,(r11+12)                                 
 80102b0:	00 42 00 01 	srui r2,r2,1                                   
 80102b4:	00 42 00 01 	srui r2,r2,1                                   
 80102b8:	30 61 00 15 	sb (r3+21),r1                                  
 80102bc:	00 42 00 01 	srui r2,r2,1                                   
 80102c0:	29 61 00 0c 	lw r1,(r11+12)                                 
 80102c4:	00 42 00 01 	srui r2,r2,1                                   
 80102c8:	00 42 00 01 	srui r2,r2,1                                   
 80102cc:	00 42 00 01 	srui r2,r2,1                                   
 80102d0:	00 42 00 01 	srui r2,r2,1                                   
 80102d4:	30 22 00 16 	sb (r1+22),r2                                  
 80102d8:	29 61 00 0c 	lw r1,(r11+12)                                 
 80102dc:	30 2c 00 17 	sb (r1+23),r12                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 80102e0:	34 01 00 01 	mvi r1,1                                       
 80102e4:	31 61 00 10 	sb (r11+16),r1                                 
    rtems_rfs_inode_set_mtime (handle, now);                          
  return 0;                                                           
}                                                                     
 80102e8:	b9 a0 08 00 	mv r1,r13                                      
 80102ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80102f0:	2b 8b 00 18 	lw r11,(sp+24)                                 
 80102f4:	2b 8c 00 14 	lw r12,(sp+20)                                 
 80102f8:	2b 8d 00 10 	lw r13,(sp+16)                                 
 80102fc:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8010300:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8010304:	37 9c 00 18 	addi sp,sp,24                                  
 8010308:	c3 a0 00 00 	ret                                            
                                                                      

0800fee8 <rtems_rfs_inode_unload>: int rtems_rfs_inode_unload (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle, bool update_ctime) {
 800fee8:	37 9c ff ec 	addi sp,sp,-20                                 
 800feec:	5b 8b 00 14 	sw (sp+20),r11                                 
 800fef0:	5b 8c 00 10 	sw (sp+16),r12                                 
 800fef4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800fef8:	5b 8e 00 08 	sw (sp+8),r14                                  
 800fefc:	5b 9d 00 04 	sw (sp+4),ra                                   
 800ff00:	b8 20 60 00 	mv r12,r1                                      
 800ff04:	b8 40 58 00 	mv r11,r2                                      
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))                 
 800ff08:	34 01 00 00 	mvi r1,0                                       
 800ff0c:	78 02 00 20 	mvhi r2,0x20                                   
                                                                      
int                                                                   
rtems_rfs_inode_unload (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle,               
                        bool                    update_ctime)         
{                                                                     
 800ff10:	20 6d 00 ff 	andi r13,r3,0xff                               
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))                 
 800ff14:	f8 00 08 ab 	calli 80121c0 <rtems_rfs_trace>                
 800ff18:	44 20 00 0c 	be r1,r0,800ff48 <rtems_rfs_inode_unload+0x60> <== ALWAYS TAKEN
    printf ("rtems-rfs: inode-unload: ino=%" PRIu32 " loads=%i loaded=%s\n",
 800ff1c:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 800ff20:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 800ff24:	29 62 00 08 	lw r2,(r11+8)                                  <== NOT EXECUTED
 800ff28:	29 63 00 24 	lw r3,(r11+36)                                 <== NOT EXECUTED
 800ff2c:	38 84 a0 70 	ori r4,r4,0xa070                               <== NOT EXECUTED
 800ff30:	44 20 00 03 	be r1,r0,800ff3c <rtems_rfs_inode_unload+0x54> <== NOT EXECUTED
 800ff34:	78 04 08 03 	mvhi r4,0x803                                  <== NOT EXECUTED
 800ff38:	38 84 9b d0 	ori r4,r4,0x9bd0                               <== NOT EXECUTED
 800ff3c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 800ff40:	38 21 9c 2c 	ori r1,r1,0x9c2c                               <== NOT EXECUTED
 800ff44:	f8 00 53 55 	calli 8024c98 <printf>                         <== NOT EXECUTED
            handle->ino, handle->loads,                               
            rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");       
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
 800ff48:	29 62 00 0c 	lw r2,(r11+12)                                 
int                                                                   
rtems_rfs_inode_unload (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle,               
                        bool                    update_ctime)         
{                                                                     
  int rc = 0;                                                         
 800ff4c:	34 01 00 00 	mvi r1,0                                       
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))                 
    printf ("rtems-rfs: inode-unload: ino=%" PRIu32 " loads=%i loaded=%s\n",
            handle->ino, handle->loads,                               
            rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");       
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
 800ff50:	44 40 00 0f 	be r2,r0,800ff8c <rtems_rfs_inode_unload+0xa4> 
  {                                                                   
    if (handle->loads == 0)                                           
 800ff54:	29 62 00 24 	lw r2,(r11+36)                                 
      return EIO;                                                     
 800ff58:	34 01 00 05 	mvi r1,5                                       
            handle->ino, handle->loads,                               
            rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");       
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
  {                                                                   
    if (handle->loads == 0)                                           
 800ff5c:	44 40 00 0c 	be r2,r0,800ff8c <rtems_rfs_inode_unload+0xa4> <== NEVER TAKEN
      return EIO;                                                     
                                                                      
    handle->loads--;                                                  
 800ff60:	34 42 ff ff 	addi r2,r2,-1                                  
 800ff64:	59 62 00 24 	sw (r11+36),r2                                 
int                                                                   
rtems_rfs_inode_unload (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle,               
                        bool                    update_ctime)         
{                                                                     
  int rc = 0;                                                         
 800ff68:	34 01 00 00 	mvi r1,0                                       
    if (handle->loads == 0)                                           
      return EIO;                                                     
                                                                      
    handle->loads--;                                                  
                                                                      
    if (handle->loads == 0)                                           
 800ff6c:	5c 40 00 08 	bne r2,r0,800ff8c <rtems_rfs_inode_unload+0xa4>
    {                                                                 
      /*                                                              
       * If the buffer is dirty it will be release. Also set the ctime.
       */                                                             
      if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)   
 800ff70:	41 61 00 10 	lbu r1,(r11+16)                                
 800ff74:	44 22 00 02 	be r1,r2,800ff7c <rtems_rfs_inode_unload+0x94> 
 800ff78:	5d a0 00 0c 	bne r13,r0,800ffa8 <rtems_rfs_inode_unload+0xc0><== ALWAYS TAKEN
        rtems_rfs_inode_set_ctime (handle, time (NULL));              
      rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);     
 800ff7c:	b9 80 08 00 	mv r1,r12                                      
 800ff80:	35 62 00 10 	addi r2,r11,16                                 
 800ff84:	f8 00 31 be 	calli 801c67c <rtems_rfs_buffer_handle_release>
      handle->node = NULL;                                            
 800ff88:	59 60 00 0c 	sw (r11+12),r0                                 
    }                                                                 
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
 800ff8c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800ff90:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800ff94:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800ff98:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800ff9c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800ffa0:	37 9c 00 14 	addi sp,sp,20                                  
 800ffa4:	c3 a0 00 00 	ret                                            
    {                                                                 
      /*                                                              
       * If the buffer is dirty it will be release. Also set the ctime.
       */                                                             
      if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)   
        rtems_rfs_inode_set_ctime (handle, time (NULL));              
 800ffa8:	34 01 00 00 	mvi r1,0                                       
 800ffac:	f8 00 62 f7 	calli 8028b88 <time>                           
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
 800ffb0:	29 6e 00 0c 	lw r14,(r11+12)                                
 800ffb4:	34 02 00 18 	mvi r2,24                                      
 800ffb8:	b8 20 68 00 	mv r13,r1                                      
 800ffbc:	fb ff c5 db 	calli 8001728 <__lshrsi3>                      
 800ffc0:	31 c1 00 18 	sb (r14+24),r1                                 
 800ffc4:	34 02 00 10 	mvi r2,16                                      
 800ffc8:	b9 a0 08 00 	mv r1,r13                                      
 800ffcc:	fb ff c5 d7 	calli 8001728 <__lshrsi3>                      
 800ffd0:	01 a2 00 01 	srui r2,r13,1                                  
 800ffd4:	29 63 00 0c 	lw r3,(r11+12)                                 
 800ffd8:	00 42 00 01 	srui r2,r2,1                                   
 800ffdc:	00 42 00 01 	srui r2,r2,1                                   
 800ffe0:	30 61 00 19 	sb (r3+25),r1                                  
 800ffe4:	00 42 00 01 	srui r2,r2,1                                   
 800ffe8:	29 61 00 0c 	lw r1,(r11+12)                                 
 800ffec:	00 42 00 01 	srui r2,r2,1                                   
 800fff0:	00 42 00 01 	srui r2,r2,1                                   
 800fff4:	00 42 00 01 	srui r2,r2,1                                   
 800fff8:	00 42 00 01 	srui r2,r2,1                                   
 800fffc:	30 22 00 1a 	sb (r1+26),r2                                  
 8010000:	29 61 00 0c 	lw r1,(r11+12)                                 
 8010004:	30 2d 00 1b 	sb (r1+27),r13                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8010008:	34 01 00 01 	mvi r1,1                                       
 801000c:	31 61 00 10 	sb (r11+16),r1                                 
 8010010:	e3 ff ff db 	bi 800ff7c <rtems_rfs_inode_unload+0x94>       
                                                                      

080202d4 <rtems_rfs_link>: const char* name, int length, rtems_rfs_ino parent, rtems_rfs_ino target, bool link_dir) {
 80202d4:	37 9c ff 8c 	addi sp,sp,-116                                
 80202d8:	5b 8b 00 24 	sw (sp+36),r11                                 
 80202dc:	5b 8c 00 20 	sw (sp+32),r12                                 
 80202e0:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80202e4:	5b 8e 00 18 	sw (sp+24),r14                                 
 80202e8:	5b 8f 00 14 	sw (sp+20),r15                                 
 80202ec:	5b 90 00 10 	sw (sp+16),r16                                 
 80202f0:	5b 91 00 0c 	sw (sp+12),r17                                 
 80202f4:	5b 92 00 08 	sw (sp+8),r18                                  
 80202f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80202fc:	b8 20 60 00 	mv r12,r1                                      
 8020300:	b8 40 78 00 	mv r15,r2                                      
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
 8020304:	34 01 00 00 	mvi r1,0                                       
 8020308:	78 02 01 00 	mvhi r2,0x100                                  
                const char*            name,                          
                int                    length,                        
                rtems_rfs_ino          parent,                        
                rtems_rfs_ino          target,                        
                bool                   link_dir)                      
{                                                                     
 802030c:	b8 60 68 00 	mv r13,r3                                      
 8020310:	b8 80 90 00 	mv r18,r4                                      
 8020314:	b8 a0 80 00 	mv r16,r5                                      
 8020318:	20 d1 00 ff 	andi r17,r6,0xff                               
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
 802031c:	fb ff c7 a9 	calli 80121c0 <rtems_rfs_trace>                
 8020320:	5c 20 00 39 	bne r1,r0,8020404 <rtems_rfs_link+0x130>       <== NEVER TAKEN
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf ("(%" PRIu32 ")\n", target);                               
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, target, &target_inode, true);        
 8020324:	37 8e 00 28 	addi r14,sp,40                                 
 8020328:	b9 80 08 00 	mv r1,r12                                      
 802032c:	ba 00 10 00 	mv r2,r16                                      
 8020330:	b9 c0 18 00 	mv r3,r14                                      
 8020334:	34 04 00 01 	mvi r4,1                                       
 8020338:	fb ff be 9d 	calli 800fdac <rtems_rfs_inode_open>           
 802033c:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 8020340:	5c 20 00 25 	bne r1,r0,80203d4 <rtems_rfs_link+0x100>       <== NEVER TAKEN
                                                                      
  /*                                                                  
   * If the target inode is a directory and we cannot link directories
   * return a not supported error code.                               
   */                                                                 
  if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
 8020344:	5e 21 00 0e 	bne r17,r1,802037c <rtems_rfs_link+0xa8>       <== NEVER TAKEN
 8020348:	2b 81 00 34 	lw r1,(sp+52)                                  
 802034c:	40 26 00 02 	lbu r6,(r1+2)                                  
 8020350:	34 01 40 00 	mvi r1,16384                                   
 8020354:	b4 c6 30 00 	add r6,r6,r6                                   
 8020358:	b4 c6 30 00 	add r6,r6,r6                                   
 802035c:	b4 c6 30 00 	add r6,r6,r6                                   
 8020360:	b4 c6 30 00 	add r6,r6,r6                                   
 8020364:	b4 c6 30 00 	add r6,r6,r6                                   
 8020368:	b4 c6 30 00 	add r6,r6,r6                                   
 802036c:	b4 c6 30 00 	add r6,r6,r6                                   
 8020370:	b4 c6 30 00 	add r6,r6,r6                                   
 8020374:	20 c6 f0 00 	andi r6,r6,0xf000                              
 8020378:	44 c1 00 61 	be r6,r1,80204fc <rtems_rfs_link+0x228>        <== NEVER TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return ENOTSUP;                                                   
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
 802037c:	37 91 00 50 	addi r17,sp,80                                 
 8020380:	b9 80 08 00 	mv r1,r12                                      
 8020384:	ba 40 10 00 	mv r2,r18                                      
 8020388:	ba 20 18 00 	mv r3,r17                                      
 802038c:	34 04 00 01 	mvi r4,1                                       
 8020390:	fb ff be 87 	calli 800fdac <rtems_rfs_inode_open>           
 8020394:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 8020398:	5c 20 00 0c 	bne r1,r0,80203c8 <rtems_rfs_link+0xf4>        <== NEVER TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, target);
 802039c:	b9 80 08 00 	mv r1,r12                                      
 80203a0:	ba 20 10 00 	mv r2,r17                                      
 80203a4:	b9 e0 18 00 	mv r3,r15                                      
 80203a8:	b9 a0 20 00 	mv r4,r13                                      
 80203ac:	ba 00 28 00 	mv r5,r16                                      
 80203b0:	fb ff f4 76 	calli 801d588 <rtems_rfs_dir_add_entry>        
 80203b4:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 80203b8:	4c 01 00 23 	bge r0,r1,8020444 <rtems_rfs_link+0x170>       <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &parent_inode);                        
 80203bc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80203c0:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 80203c4:	fb ff bf 14 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
 80203c8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80203cc:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 80203d0:	fb ff bf 11 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
                                                                      
  return rc;                                                          
}                                                                     
 80203d4:	b9 60 08 00 	mv r1,r11                                      
 80203d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80203dc:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80203e0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80203e4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80203e8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80203ec:	2b 8f 00 14 	lw r15,(sp+20)                                 
 80203f0:	2b 90 00 10 	lw r16,(sp+16)                                 
 80203f4:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80203f8:	2b 92 00 08 	lw r18,(sp+8)                                  
 80203fc:	37 9c 00 74 	addi sp,sp,116                                 
 8020400:	c3 a0 00 00 	ret                                            
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
 8020404:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020408:	38 21 bd e0 	ori r1,r1,0xbde0                               <== NOT EXECUTED
 802040c:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 8020410:	f8 00 12 22 	calli 8024c98 <printf>                         <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
 8020414:	4c 0d 00 07 	bge r0,r13,8020430 <rtems_rfs_link+0x15c>      <== NOT EXECUTED
 8020418:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
#include <rtems/rfs/rtems-rfs-dir.h>                                  
#include <rtems/rfs/rtems-rfs-dir-hash.h>                             
#include <rtems/rfs/rtems-rfs-link.h>                                 
                                                                      
int                                                                   
rtems_rfs_link (rtems_rfs_file_system* fs,                            
 802041c:	b5 eb 08 00 	add r1,r15,r11                                 <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
 8020420:	40 21 00 00 	lbu r1,(r1+0)                                  <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
    for (c = 0; c < length; c++)                                      
 8020424:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 8020428:	f8 00 12 a2 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
    for (c = 0; c < length; c++)                                      
 802042c:	49 ab ff fc 	bg r13,r11,802041c <rtems_rfs_link+0x148>      <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf ("(%" PRIu32 ")\n", target);                               
 8020430:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020434:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 8020438:	38 21 be 28 	ori r1,r1,0xbe28                               <== NOT EXECUTED
 802043c:	f8 00 12 17 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020440:	e3 ff ff b9 	bi 8020324 <rtems_rfs_link+0x50>               <== NOT EXECUTED
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8020444:	2b 81 00 34 	lw r1,(sp+52)                                  
  if (links == 0xffff)                                                
 8020448:	34 02 00 01 	mvi r2,1                                       
 802044c:	34 03 00 00 	mvi r3,0                                       
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8020450:	40 24 00 00 	lbu r4,(r1+0)                                  
 8020454:	40 25 00 01 	lbu r5,(r1+1)                                  
 8020458:	b4 84 20 00 	add r4,r4,r4                                   
 802045c:	b4 84 20 00 	add r4,r4,r4                                   
 8020460:	b4 84 20 00 	add r4,r4,r4                                   
 8020464:	b4 84 20 00 	add r4,r4,r4                                   
 8020468:	b4 84 20 00 	add r4,r4,r4                                   
 802046c:	b4 84 20 00 	add r4,r4,r4                                   
 8020470:	b4 84 20 00 	add r4,r4,r4                                   
 8020474:	b4 84 20 00 	add r4,r4,r4                                   
 8020478:	b8 85 20 00 	or r4,r4,r5                                    
  if (links == 0xffff)                                                
 802047c:	38 05 ff ff 	mvu r5,0xffff                                  
 8020480:	44 85 00 0d 	be r4,r5,80204b4 <rtems_rfs_link+0x1e0>        <== NEVER TAKEN
 8020484:	34 82 00 01 	addi r2,r4,1                                   
 8020488:	20 42 ff ff 	andi r2,r2,0xffff                              
 802048c:	00 44 00 01 	srui r4,r2,1                                   
 8020490:	20 42 00 ff 	andi r2,r2,0xff                                
 8020494:	00 84 00 01 	srui r4,r4,1                                   
 8020498:	00 84 00 01 	srui r4,r4,1                                   
 802049c:	00 84 00 01 	srui r4,r4,1                                   
 80204a0:	00 84 00 01 	srui r4,r4,1                                   
 80204a4:	00 84 00 01 	srui r4,r4,1                                   
 80204a8:	00 84 00 01 	srui r4,r4,1                                   
 80204ac:	00 83 00 01 	srui r3,r4,1                                   
 80204b0:	20 63 00 ff 	andi r3,r3,0xff                                
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
 80204b4:	30 23 00 00 	sb (r1+0),r3                                   
 80204b8:	2b 83 00 34 	lw r3,(sp+52)                                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 80204bc:	34 04 00 01 	mvi r4,1                                       
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode) + 1;              
  rtems_rfs_inode_set_links (&target_inode, links);                   
                                                                      
  rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);    
 80204c0:	ba 20 08 00 	mv r1,r17                                      
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
 80204c4:	30 62 00 01 	sb (r3+1),r2                                   
 80204c8:	34 02 00 01 	mvi r2,1                                       
 80204cc:	34 03 00 01 	mvi r3,1                                       
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 80204d0:	33 84 00 38 	sb (sp+56),r4                                  
 80204d4:	fb ff bf 43 	calli 80101e0 <rtems_rfs_inode_time_stamp_now> 
 80204d8:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 80204dc:	4c 01 00 0d 	bge r0,r1,8020510 <rtems_rfs_link+0x23c>       <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &parent_inode);                        
 80204e0:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 80204e4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80204e8:	fb ff be cb 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
 80204ec:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80204f0:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 80204f4:	fb ff be c8 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rc;                                                        
 80204f8:	e3 ff ff b7 	bi 80203d4 <rtems_rfs_link+0x100>              <== NOT EXECUTED
   * If the target inode is a directory and we cannot link directories
   * return a not supported error code.                               
   */                                                                 
  if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
 80204fc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020500:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020504:	fb ff be c4 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return ENOTSUP;                                                   
 8020508:	34 0b 00 86 	mvi r11,134                                    <== NOT EXECUTED
 802050c:	e3 ff ff b2 	bi 80203d4 <rtems_rfs_link+0x100>              <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
 8020510:	b9 80 08 00 	mv r1,r12                                      
 8020514:	ba 20 10 00 	mv r2,r17                                      
 8020518:	fb ff be bf 	calli 8010014 <rtems_rfs_inode_close>          
 802051c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020520:	4c 01 00 02 	bge r0,r1,8020528 <rtems_rfs_link+0x254>       <== ALWAYS TAKEN
 8020524:	e3 ff ff a9 	bi 80203c8 <rtems_rfs_link+0xf4>               <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
 8020528:	b9 80 08 00 	mv r1,r12                                      
 802052c:	b9 c0 10 00 	mv r2,r14                                      
 8020530:	fb ff be b9 	calli 8010014 <rtems_rfs_inode_close>          
 8020534:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  return rc;                                                          
 8020538:	e3 ff ff a7 	bi 80203d4 <rtems_rfs_link+0x100>              
                                                                      

08020f0c <rtems_rfs_mutex_create>: RTEMS_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL) #endif int rtems_rfs_mutex_create (rtems_rfs_mutex* mutex) {
 8020f0c:	37 9c ff f4 	addi sp,sp,-12                                 
 8020f10:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8020f14:	5b 8c 00 08 	sw (sp+8),r12                                  
 8020f18:	5b 9d 00 04 	sw (sp+4),ra                                   
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
 8020f1c:	78 02 08 03 	mvhi r2,0x803                                  
 8020f20:	38 42 c0 58 	ori r2,r2,0xc058                               
   RTEMS_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL)  
#endif                                                                
                                                                      
int                                                                   
rtems_rfs_mutex_create (rtems_rfs_mutex* mutex)                       
{                                                                     
 8020f24:	b8 20 28 00 	mv r5,r1                                       
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
 8020f28:	28 41 00 00 	lw r1,(r2+0)                                   
 8020f2c:	34 03 00 54 	mvi r3,84                                      
 8020f30:	34 02 00 01 	mvi r2,1                                       
 8020f34:	34 04 00 00 	mvi r4,0                                       
 8020f38:	fb ff a3 3b 	calli 8009c24 <rtems_semaphore_create>         
 8020f3c:	b8 20 60 00 	mv r12,r1                                      
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
 8020f40:	34 0b 00 00 	mvi r11,0                                      
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
 8020f44:	5c 20 00 07 	bne r1,r0,8020f60 <rtems_rfs_mutex_create+0x54><== NEVER TAKEN
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
 8020f48:	b9 60 08 00 	mv r1,r11                                      
 8020f4c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8020f50:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8020f54:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8020f58:	37 9c 00 0c 	addi sp,sp,12                                  
 8020f5c:	c3 a0 00 00 	ret                                            
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8020f60:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020f64:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8020f68:	fb ff c4 96 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
              rtems_status_text (sc));                                
    return EIO;                                                       
 8020f6c:	34 0b 00 05 	mvi r11,5                                      <== NOT EXECUTED
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8020f70:	44 20 ff f6 	be r1,r0,8020f48 <rtems_rfs_mutex_create+0x3c> <== NOT EXECUTED
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
 8020f74:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020f78:	fb ff d4 d7 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8020f7c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8020f80:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020f84:	38 21 c0 10 	ori r1,r1,0xc010                               <== NOT EXECUTED
 8020f88:	f8 00 0f 44 	calli 8024c98 <printf>                         <== NOT EXECUTED
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
 8020f8c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020f90:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8020f94:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8020f98:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8020f9c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8020fa0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08020fa4 <rtems_rfs_mutex_destroy>: int rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex) {
 8020fa4:	37 9c ff f4 	addi sp,sp,-12                                 
 8020fa8:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8020fac:	5b 8c 00 08 	sw (sp+8),r12                                  
 8020fb0:	5b 9d 00 04 	sw (sp+4),ra                                   
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
 8020fb4:	28 21 00 00 	lw r1,(r1+0)                                   
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
 8020fb8:	34 0c 00 00 	mvi r12,0                                      
int                                                                   
rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex)                      
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
 8020fbc:	fb ff a3 9e 	calli 8009e34 <rtems_semaphore_delete>         
 8020fc0:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8020fc4:	5c 20 00 07 	bne r1,r0,8020fe0 <rtems_rfs_mutex_destroy+0x3c><== NEVER TAKEN
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
 8020fc8:	b9 80 08 00 	mv r1,r12                                      
 8020fcc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8020fd0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8020fd4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8020fd8:	37 9c 00 0c 	addi sp,sp,12                                  
 8020fdc:	c3 a0 00 00 	ret                                            
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8020fe0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020fe4:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8020fe8:	fb ff c4 76 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
              rtems_status_text (sc));                                
    return EIO;                                                       
 8020fec:	34 0c 00 05 	mvi r12,5                                      <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8020ff0:	44 20 ff f6 	be r1,r0,8020fc8 <rtems_rfs_mutex_destroy+0x24><== NOT EXECUTED
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
 8020ff4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020ff8:	fb ff d4 b7 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8020ffc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021000:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021004:	38 21 c0 34 	ori r1,r1,0xc034                               <== NOT EXECUTED
 8021008:	f8 00 0f 24 	calli 8024c98 <printf>                         <== NOT EXECUTED
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
 802100c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8021010:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021014:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8021018:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 802101c:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8021020:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801c494 <rtems_rfs_release_chain>: static int rtems_rfs_release_chain (rtems_chain_control* chain, uint32_t* count, bool modified) {
 801c494:	37 9c ff e8 	addi sp,sp,-24                                 
 801c498:	5b 8b 00 18 	sw (sp+24),r11                                 
 801c49c:	5b 8c 00 14 	sw (sp+20),r12                                 
 801c4a0:	5b 8d 00 10 	sw (sp+16),r13                                 
 801c4a4:	5b 8e 00 0c 	sw (sp+12),r14                                 
 801c4a8:	5b 8f 00 08 	sw (sp+8),r15                                  
 801c4ac:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c4b0:	b8 20 58 00 	mv r11,r1                                      
 801c4b4:	b8 40 60 00 	mv r12,r2                                      
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c4b8:	34 01 00 00 	mvi r1,0                                       
 801c4bc:	34 02 00 80 	mvi r2,128                                     
                                                                      
static int                                                            
rtems_rfs_release_chain (rtems_chain_control* chain,                  
                         uint32_t*            count,                  
                         bool                 modified)               
{                                                                     
 801c4c0:	b8 60 78 00 	mv r15,r3                                      
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c4c4:	fb ff d7 3f 	calli 80121c0 <rtems_rfs_trace>                
 801c4c8:	5c 20 00 1e 	bne r1,r0,801c540 <rtems_rfs_release_chain+0xac><== NEVER TAKEN
    (*count)--;                                                       
                                                                      
    buffer->user = (void*) 0;                                         
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
    if ((rc > 0) && (rrc == 0))                                       
 801c4cc:	34 0d 00 00 	mvi r13,0                                      
 801c4d0:	35 6e 00 04 	addi r14,r11,4                                 
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
 801c4d4:	29 62 00 00 	lw r2,(r11+0)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
 801c4d8:	b9 60 08 00 	mv r1,r11                                      
 801c4dc:	44 4e 00 10 	be r2,r14,801c51c <rtems_rfs_release_chain+0x88>
 801c4e0:	fb ff b9 4c 	calli 800aa10 <_Chain_Get>                     
  {                                                                   
    buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);             
    (*count)--;                                                       
 801c4e4:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
    buffer->user = (void*) 0;                                         
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
 801c4e8:	b9 e0 10 00 	mv r2,r15                                      
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
  {                                                                   
    buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);             
    (*count)--;                                                       
 801c4ec:	34 84 ff ff 	addi r4,r4,-1                                  
 801c4f0:	59 84 00 00 	sw (r12+0),r4                                  
                                                                      
    buffer->user = (void*) 0;                                         
 801c4f4:	58 20 00 34 	sw (r1+52),r0                                  
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
 801c4f8:	f8 00 1b 0b 	calli 8023124 <rtems_rfs_buffer_bdbuf_release> 
    if ((rc > 0) && (rrc == 0))                                       
 801c4fc:	65 a4 00 00 	cmpei r4,r13,0                                 
 801c500:	68 25 00 00 	cmpgi r5,r1,0                                  
 801c504:	a0 a4 20 00 	and r4,r5,r4                                   
 801c508:	44 80 ff f3 	be r4,r0,801c4d4 <rtems_rfs_release_chain+0x40><== ALWAYS TAKEN
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
 801c50c:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
    (*count)--;                                                       
                                                                      
    buffer->user = (void*) 0;                                         
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
    if ((rc > 0) && (rrc == 0))                                       
 801c510:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
 801c514:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
 801c518:	5c 4e ff f2 	bne r2,r14,801c4e0 <rtems_rfs_release_chain+0x4c><== NOT EXECUTED
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
    if ((rc > 0) && (rrc == 0))                                       
      rrc = rc;                                                       
  }                                                                   
  return rrc;                                                         
}                                                                     
 801c51c:	b9 a0 08 00 	mv r1,r13                                      
 801c520:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c524:	2b 8b 00 18 	lw r11,(sp+24)                                 
 801c528:	2b 8c 00 14 	lw r12,(sp+20)                                 
 801c52c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 801c530:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 801c534:	2b 8f 00 08 	lw r15,(sp+8)                                  
 801c538:	37 9c 00 18 	addi sp,sp,24                                  
 801c53c:	c3 a0 00 00 	ret                                            
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
 801c540:	29 82 00 00 	lw r2,(r12+0)                                  <== NOT EXECUTED
 801c544:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c548:	38 21 ab 8c 	ori r1,r1,0xab8c                               <== NOT EXECUTED
 801c54c:	f8 00 21 d3 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c550:	e3 ff ff df 	bi 801c4cc <rtems_rfs_release_chain+0x38>      <== NOT EXECUTED
                                                                      

08010e34 <rtems_rfs_rtems_chown>: static int rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc, uid_t owner, gid_t group) {
 8010e34:	37 9c ff bc 	addi sp,sp,-68                                 
 8010e38:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8010e3c:	5b 8c 00 18 	sw (sp+24),r12                                 
 8010e40:	5b 8d 00 14 	sw (sp+20),r13                                 
 8010e44:	5b 8e 00 10 	sw (sp+16),r14                                 
 8010e48:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8010e4c:	5b 90 00 08 	sw (sp+8),r16                                  
 8010e50:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8010e54:	28 24 00 14 	lw r4,(r1+20)                                  
                                                                      
static int                                                            
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
                       uid_t                                   owner, 
                       gid_t                                   group) 
{                                                                     
 8010e58:	20 4e ff ff 	andi r14,r2,0xffff                             
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))            
    printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
            ino, owner, group);                                       
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010e5c:	28 22 00 08 	lw r2,(r1+8)                                   
static int                                                            
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
                       uid_t                                   owner, 
                       gid_t                                   group) 
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8010e60:	28 8c 00 08 	lw r12,(r4+8)                                  
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))            
    printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
            ino, owner, group);                                       
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010e64:	37 8b 00 20 	addi r11,sp,32                                 
                                                                      
static int                                                            
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
                       uid_t                                   owner, 
                       gid_t                                   group) 
{                                                                     
 8010e68:	20 6f ff ff 	andi r15,r3,0xffff                             
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))            
    printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
            ino, owner, group);                                       
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010e6c:	b9 80 08 00 	mv r1,r12                                      
 8010e70:	b9 60 18 00 	mv r3,r11                                      
 8010e74:	34 04 00 01 	mvi r4,1                                       
 8010e78:	fb ff fb cd 	calli 800fdac <rtems_rfs_inode_open>           
 8010e7c:	b8 20 68 00 	mv r13,r1                                      
  if (rc > 0)                                                         
 8010e80:	4c 01 00 0d 	bge r0,r1,8010eb4 <rtems_rfs_rtems_chown+0x80> <== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("chown: opening inode", rc);        
 8010e84:	f8 00 4a b0 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010e88:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8010e8c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010e90:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010e94:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8010e98:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8010e9c:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8010ea0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 8010ea4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8010ea8:	2b 90 00 08 	lw r16,(sp+8)                                  
 8010eac:	37 9c 00 44 	addi sp,sp,68                                  
 8010eb0:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Verify I am the owner of the node or the super user.            
   */                                                                 
                                                                      
#if defined (RTEMS_POSIX_API)                                         
  uid = geteuid();                                                    
 8010eb4:	f8 00 15 f9 	calli 8016698 <geteuid>                        
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 8010eb8:	2b 90 00 2c 	lw r16,(sp+44)                                 
 8010ebc:	36 02 00 04 	addi r2,r16,4                                  
 8010ec0:	40 44 00 02 	lbu r4,(r2+2)                                  
 8010ec4:	40 42 00 03 	lbu r2,(r2+3)                                  
 8010ec8:	b4 84 20 00 	add r4,r4,r4                                   
 8010ecc:	b4 84 20 00 	add r4,r4,r4                                   
 8010ed0:	b4 84 20 00 	add r4,r4,r4                                   
 8010ed4:	b4 84 20 00 	add r4,r4,r4                                   
 8010ed8:	b4 84 20 00 	add r4,r4,r4                                   
 8010edc:	b4 84 20 00 	add r4,r4,r4                                   
 8010ee0:	b4 84 20 00 	add r4,r4,r4                                   
 8010ee4:	b4 84 20 00 	add r4,r4,r4                                   
 8010ee8:	b8 82 20 00 	or r4,r4,r2                                    
                                                                      
  if ((uid != rtems_rfs_inode_get_uid (&inode)) && (uid != 0))        
 8010eec:	20 84 ff ff 	andi r4,r4,0xffff                              
 8010ef0:	44 24 00 02 	be r1,r4,8010ef8 <rtems_rfs_rtems_chown+0xc4>  <== ALWAYS TAKEN
 8010ef4:	5c 20 00 26 	bne r1,r0,8010f8c <rtems_rfs_rtems_chown+0x158><== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle,          
                             uint16_t uid, uint16_t gid)              
{                                                                     
  rtems_rfs_write_u32 (&handle->node->owner, (((uint32_t) gid) << 16) | uid);
 8010ef8:	34 02 00 10 	mvi r2,16                                      
 8010efc:	b9 e0 08 00 	mv r1,r15                                      
 8010f00:	f8 00 97 a5 	calli 8036d94 <__ashlsi3>                      
 8010f04:	b8 2e 68 00 	or r13,r1,r14                                  
 8010f08:	34 02 00 18 	mvi r2,24                                      
 8010f0c:	b9 a0 08 00 	mv r1,r13                                      
 8010f10:	fb ff c2 06 	calli 8001728 <__lshrsi3>                      
 8010f14:	32 01 00 04 	sb (r16+4),r1                                  
 8010f18:	34 02 00 10 	mvi r2,16                                      
 8010f1c:	b9 a0 08 00 	mv r1,r13                                      
 8010f20:	fb ff c2 02 	calli 8001728 <__lshrsi3>                      
 8010f24:	01 a4 00 01 	srui r4,r13,1                                  
 8010f28:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8010f2c:	00 84 00 01 	srui r4,r4,1                                   
 8010f30:	00 84 00 01 	srui r4,r4,1                                   
 8010f34:	30 41 00 05 	sb (r2+5),r1                                   
 8010f38:	00 84 00 01 	srui r4,r4,1                                   
 8010f3c:	2b 83 00 2c 	lw r3,(sp+44)                                  
 8010f40:	00 84 00 01 	srui r4,r4,1                                   
  }                                                                   
#endif                                                                
                                                                      
  rtems_rfs_inode_set_uid_gid (&inode, owner, group);                 
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8010f44:	b9 60 10 00 	mv r2,r11                                      
 8010f48:	00 84 00 01 	srui r4,r4,1                                   
 8010f4c:	b9 80 08 00 	mv r1,r12                                      
 8010f50:	00 84 00 01 	srui r4,r4,1                                   
 8010f54:	00 84 00 01 	srui r4,r4,1                                   
 8010f58:	30 64 00 06 	sb (r3+6),r4                                   
 8010f5c:	2b 83 00 2c 	lw r3,(sp+44)                                  
 8010f60:	30 6e 00 07 	sb (r3+7),r14                                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8010f64:	34 03 00 01 	mvi r3,1                                       
 8010f68:	33 83 00 30 	sb (sp+48),r3                                  
 8010f6c:	fb ff fc 2a 	calli 8010014 <rtems_rfs_inode_close>          
 8010f70:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
 8010f74:	34 01 00 00 	mvi r1,0                                       
#endif                                                                
                                                                      
  rtems_rfs_inode_set_uid_gid (&inode, owner, group);                 
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc)                                                             
 8010f78:	45 60 ff c6 	be r11,r0,8010e90 <rtems_rfs_rtems_chown+0x5c> <== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
 8010f7c:	f8 00 4a 72 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010f80:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010f84:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8010f88:	e3 ff ff c2 	bi 8010e90 <rtems_rfs_rtems_chown+0x5c>        <== NOT EXECUTED
#if defined (RTEMS_POSIX_API)                                         
  uid = geteuid();                                                    
                                                                      
  if ((uid != rtems_rfs_inode_get_uid (&inode)) && (uid != 0))        
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 8010f8c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8010f90:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010f94:	fb ff fc 20 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rtems_rfs_rtems_error ("chown: not able", EPERM);          
 8010f98:	f8 00 4a 6b 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010f9c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8010fa0:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8010fa4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8010fa8:	e3 ff ff ba 	bi 8010e90 <rtems_rfs_rtems_chown+0x5c>        <== NOT EXECUTED
                                                                      

0802108c <rtems_rfs_rtems_device_close>: * @return int */ static int rtems_rfs_rtems_device_close (rtems_libio_t* iop) {
 802108c:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8021090:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_device_major_number     major;                                
  rtems_device_minor_number     minor;                                
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_close (iop, major, minor);                    
 8021094:	28 22 00 24 	lw r2,(r1+36)                                  <== NOT EXECUTED
 8021098:	28 23 00 28 	lw r3,(r1+40)                                  <== NOT EXECUTED
 802109c:	f8 00 05 6c 	calli 802264c <rtems_deviceio_close>           <== NOT EXECUTED
}                                                                     
 80210a0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80210a4:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 80210a8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08021024 <rtems_rfs_rtems_device_ftruncate>: static int rtems_rfs_rtems_device_ftruncate (rtems_libio_t* iop, off_t length) { return 0; }
 8021024:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021028:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0802102c <rtems_rfs_rtems_device_ioctl>: static int rtems_rfs_rtems_device_ioctl (rtems_libio_t* iop, ioctl_command_t command, void* buffer) {
 802102c:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8021030:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_control (iop, command, buffer, major, minor); 
 8021034:	28 24 00 24 	lw r4,(r1+36)                                  <== NOT EXECUTED
 8021038:	28 25 00 28 	lw r5,(r1+40)                                  <== NOT EXECUTED
 802103c:	f8 00 05 cf 	calli 8022778 <rtems_deviceio_control>         <== NOT EXECUTED
}                                                                     
 8021040:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021044:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8021048:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080210ac <rtems_rfs_rtems_device_open>: static int rtems_rfs_rtems_device_open ( rtems_libio_t *iop, const char *pathname, int oflag, mode_t mode) {
 80210ac:	37 9c ff 9c 	addi sp,sp,-100                                <== NOT EXECUTED
 80210b0:	5b 8b 00 3c 	sw (sp+60),r11                                 <== NOT EXECUTED
 80210b4:	5b 8c 00 38 	sw (sp+56),r12                                 <== NOT EXECUTED
 80210b8:	5b 8d 00 34 	sw (sp+52),r13                                 <== NOT EXECUTED
 80210bc:	5b 8e 00 30 	sw (sp+48),r14                                 <== NOT EXECUTED
 80210c0:	5b 8f 00 2c 	sw (sp+44),r15                                 <== NOT EXECUTED
 80210c4:	5b 90 00 28 	sw (sp+40),r16                                 <== NOT EXECUTED
 80210c8:	5b 91 00 24 	sw (sp+36),r17                                 <== NOT EXECUTED
 80210cc:	5b 92 00 20 	sw (sp+32),r18                                 <== NOT EXECUTED
 80210d0:	5b 93 00 1c 	sw (sp+28),r19                                 <== NOT EXECUTED
 80210d4:	5b 94 00 18 	sw (sp+24),r20                                 <== NOT EXECUTED
 80210d8:	5b 95 00 14 	sw (sp+20),r21                                 <== NOT EXECUTED
 80210dc:	5b 96 00 10 	sw (sp+16),r22                                 <== NOT EXECUTED
 80210e0:	5b 97 00 0c 	sw (sp+12),r23                                 <== NOT EXECUTED
 80210e4:	5b 98 00 08 	sw (sp+8),r24                                  <== NOT EXECUTED
 80210e8:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 80210ec:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 80210f0:	28 21 00 20 	lw r1,(r1+32)                                  <== NOT EXECUTED
static int                                                            
rtems_rfs_rtems_device_open ( rtems_libio_t *iop,                     
                              const char    *pathname,                
                              int            oflag,                   
                              mode_t         mode)                    
{                                                                     
 80210f4:	b8 40 90 00 	mv r18,r2                                      <== NOT EXECUTED
 80210f8:	b8 60 88 00 	mv r17,r3                                      <== NOT EXECUTED
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 80210fc:	28 2b 00 08 	lw r11,(r1+8)                                  <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021100:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8021104:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_device_ftruncate,                    
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync,         
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021108:	29 61 00 80 	lw r1,(r11+128)                                <== NOT EXECUTED
static int                                                            
rtems_rfs_rtems_device_open ( rtems_libio_t *iop,                     
                              const char    *pathname,                
                              int            oflag,                   
                              mode_t         mode)                    
{                                                                     
 802110c:	b8 80 80 00 	mv r16,r4                                      <== NOT EXECUTED
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
  rtems_rfs_ino                 ino = rtems_rfs_rtems_get_iop_ino (iop);
 8021110:	29 8f 00 14 	lw r15,(r12+20)                                <== NOT EXECUTED
 8021114:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021118:	fb ff a3 7e 	calli 8009f10 <rtems_semaphore_obtain>         <== NOT EXECUTED
 802111c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021120:	5c 20 00 2f 	bne r1,r0,80211dc <rtems_rfs_rtems_device_open+0x130><== NOT EXECUTED
  rtems_device_minor_number     minor;                                
  int                           rc;                                   
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8021124:	37 8e 00 40 	addi r14,sp,64                                 <== NOT EXECUTED
 8021128:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802112c:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8021130:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8021134:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 8021138:	fb ff bb 1d 	calli 800fdac <rtems_rfs_inode_open>           <== NOT EXECUTED
 802113c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (rc > 0)                                                         
 8021140:	4c 01 00 32 	bge r0,r1,8021208 <rtems_rfs_rtems_device_open+0x15c><== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021144:	29 6c 00 80 	lw r12,(r11+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 8021148:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802114c:	fb ff ee eb 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021150:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8021154:	fb ff a3 cb 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 8021158:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 802115c:	5c 20 00 15 	bne r1,r0,80211b0 <rtems_rfs_rtems_device_open+0x104><== NOT EXECUTED
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("device_open: closing inode", rc);  
 8021160:	f8 00 09 f9 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021164:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8021168:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
                                                                      
  iop->data0 = major;                                                 
  iop->data1 = (void *) minor;                                        
                                                                      
  return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
}                                                                     
 802116c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021170:	2b 8b 00 3c 	lw r11,(sp+60)                                 <== NOT EXECUTED
 8021174:	2b 8c 00 38 	lw r12,(sp+56)                                 <== NOT EXECUTED
 8021178:	2b 8d 00 34 	lw r13,(sp+52)                                 <== NOT EXECUTED
 802117c:	2b 8e 00 30 	lw r14,(sp+48)                                 <== NOT EXECUTED
 8021180:	2b 8f 00 2c 	lw r15,(sp+44)                                 <== NOT EXECUTED
 8021184:	2b 90 00 28 	lw r16,(sp+40)                                 <== NOT EXECUTED
 8021188:	2b 91 00 24 	lw r17,(sp+36)                                 <== NOT EXECUTED
 802118c:	2b 92 00 20 	lw r18,(sp+32)                                 <== NOT EXECUTED
 8021190:	2b 93 00 1c 	lw r19,(sp+28)                                 <== NOT EXECUTED
 8021194:	2b 94 00 18 	lw r20,(sp+24)                                 <== NOT EXECUTED
 8021198:	2b 95 00 14 	lw r21,(sp+20)                                 <== NOT EXECUTED
 802119c:	2b 96 00 10 	lw r22,(sp+16)                                 <== NOT EXECUTED
 80211a0:	2b 97 00 0c 	lw r23,(sp+12)                                 <== NOT EXECUTED
 80211a4:	2b 98 00 08 	lw r24,(sp+8)                                  <== NOT EXECUTED
 80211a8:	37 9c 00 64 	addi sp,sp,100                                 <== NOT EXECUTED
 80211ac:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80211b0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80211b4:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80211b8:	fb ff c4 02 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80211bc:	44 20 ff e9 	be r1,r0,8021160 <rtems_rfs_rtems_device_open+0xb4><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 80211c0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80211c4:	fb ff d4 44 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80211c8:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80211cc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80211d0:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 80211d4:	f8 00 0e b1 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80211d8:	e3 ff ff e2 	bi 8021160 <rtems_rfs_rtems_device_open+0xb4>  <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80211dc:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80211e0:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80211e4:	fb ff c3 f7 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80211e8:	44 20 ff cf 	be r1,r0,8021124 <rtems_rfs_rtems_device_open+0x78><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 80211ec:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80211f0:	fb ff d4 39 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80211f4:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80211f8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80211fc:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8021200:	f8 00 0e a6 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021204:	e3 ff ff c8 	bi 8021124 <rtems_rfs_rtems_device_open+0x78>  <== NOT EXECUTED
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
 8021208:	2b 83 00 4c 	lw r3,(sp+76)                                  <== NOT EXECUTED
  }                                                                   
                                                                      
  major = rtems_rfs_inode_get_block (&inode, 0);                      
  minor = rtems_rfs_inode_get_block (&inode, 1);                      
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 802120c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8021210:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021214:	34 65 00 1c 	addi r5,r3,28                                  <== NOT EXECUTED
 8021218:	40 78 00 1c 	lbu r24,(r3+28)                                <== NOT EXECUTED
 802121c:	40 b6 00 01 	lbu r22,(r5+1)                                 <== NOT EXECUTED
 8021220:	40 af 00 02 	lbu r15,(r5+2)                                 <== NOT EXECUTED
 8021224:	40 b7 00 03 	lbu r23,(r5+3)                                 <== NOT EXECUTED
 8021228:	40 b5 00 04 	lbu r21,(r5+4)                                 <== NOT EXECUTED
 802122c:	40 b4 00 05 	lbu r20,(r5+5)                                 <== NOT EXECUTED
 8021230:	40 ae 00 06 	lbu r14,(r5+6)                                 <== NOT EXECUTED
 8021234:	40 b3 00 07 	lbu r19,(r5+7)                                 <== NOT EXECUTED
 8021238:	fb ff bb 77 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
 802123c:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (rc > 0)                                                         
 8021240:	4c 01 00 02 	bge r0,r1,8021248 <rtems_rfs_rtems_device_open+0x19c><== NOT EXECUTED
 8021244:	e3 ff ff c0 	bi 8021144 <rtems_rfs_rtems_device_open+0x98>  <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021248:	29 6d 00 80 	lw r13,(r11+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 802124c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021250:	fb ff ee aa 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021254:	29 a1 00 00 	lw r1,(r13+0)                                  <== NOT EXECUTED
 8021258:	fb ff a3 8a 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 802125c:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021260:	5c 20 00 2d 	bne r1,r0,8021314 <rtems_rfs_rtems_device_open+0x268><== NOT EXECUTED
 8021264:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8021268:	bb 00 08 00 	mv r1,r24                                      <== NOT EXECUTED
 802126c:	f8 00 56 ca 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8021270:	ba e1 b8 00 	or r23,r23,r1                                  <== NOT EXECUTED
 8021274:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8021278:	ba c0 08 00 	mv r1,r22                                      <== NOT EXECUTED
 802127c:	f8 00 56 c6 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8021280:	b5 ef 30 00 	add r6,r15,r15                                 <== NOT EXECUTED
 8021284:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8021288:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 802128c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8021290:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8021294:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8021298:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 802129c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 80212a0:	ba e1 b8 00 	or r23,r23,r1                                  <== NOT EXECUTED
 80212a4:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 80212a8:	ba a0 08 00 	mv r1,r21                                      <== NOT EXECUTED
 80212ac:	ba e6 b8 00 	or r23,r23,r6                                  <== NOT EXECUTED
 80212b0:	f8 00 56 b9 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 80212b4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
 80212b8:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 80212bc:	ba 80 08 00 	mv r1,r20                                      <== NOT EXECUTED
 80212c0:	f8 00 56 b5 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 80212c4:	b5 ce 28 00 	add r5,r14,r14                                 <== NOT EXECUTED
 80212c8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212cc:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212d0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212d4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212d8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212dc:	b9 61 08 00 	or r1,r11,r1                                   <== NOT EXECUTED
 80212e0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212e4:	b8 33 98 00 	or r19,r1,r19                                  <== NOT EXECUTED
 80212e8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 80212ec:	ba 65 28 00 	or r5,r19,r5                                   <== NOT EXECUTED
    return rtems_rfs_rtems_error ("device_open: closing inode", rc);  
  }                                                                   
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  iop->data0 = major;                                                 
 80212f0:	59 97 00 24 	sw (r12+36),r23                                <== NOT EXECUTED
  iop->data1 = (void *) minor;                                        
 80212f4:	59 85 00 28 	sw (r12+40),r5                                 <== NOT EXECUTED
                                                                      
  return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
 80212f8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80212fc:	ba 40 10 00 	mv r2,r18                                      <== NOT EXECUTED
 8021300:	ba 20 18 00 	mv r3,r17                                      <== NOT EXECUTED
 8021304:	ba 00 20 00 	mv r4,r16                                      <== NOT EXECUTED
 8021308:	ba e0 30 00 	mv r6,r23                                      <== NOT EXECUTED
 802130c:	f8 00 04 c1 	calli 8022610 <rtems_deviceio_open>            <== NOT EXECUTED
 8021310:	e3 ff ff 97 	bi 802116c <rtems_rfs_rtems_device_open+0xc0>  <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021314:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021318:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 802131c:	fb ff c3 a9 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021320:	44 20 ff d1 	be r1,r0,8021264 <rtems_rfs_rtems_device_open+0x1b8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021324:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021328:	fb ff d3 eb 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 802132c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021330:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021334:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021338:	f8 00 0e 58 	calli 8024c98 <printf>                         <== NOT EXECUTED
 802133c:	e3 ff ff ca 	bi 8021264 <rtems_rfs_rtems_device_open+0x1b8> <== NOT EXECUTED
                                                                      

0802106c <rtems_rfs_rtems_device_read>: * @return ssize_t */ static ssize_t rtems_rfs_rtems_device_read (rtems_libio_t* iop, void* buffer, size_t count) {
 802106c:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8021070:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_read (iop, buffer, count, major, minor);      
 8021074:	28 24 00 24 	lw r4,(r1+36)                                  <== NOT EXECUTED
 8021078:	28 25 00 28 	lw r5,(r1+40)                                  <== NOT EXECUTED
 802107c:	f8 00 05 81 	calli 8022680 <rtems_deviceio_read>            <== NOT EXECUTED
}                                                                     
 8021080:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021084:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8021088:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0802104c <rtems_rfs_rtems_device_write>: static ssize_t rtems_rfs_rtems_device_write (rtems_libio_t* iop, const void* buffer, size_t count) {
 802104c:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 8021050:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_write (iop, buffer, count, major, minor);     
 8021054:	28 24 00 24 	lw r4,(r1+36)                                  <== NOT EXECUTED
 8021058:	28 25 00 28 	lw r5,(r1+40)                                  <== NOT EXECUTED
 802105c:	f8 00 05 a8 	calli 80226fc <rtems_deviceio_write>           <== NOT EXECUTED
}                                                                     
 8021060:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021064:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8021068:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08021574 <rtems_rfs_rtems_dir_open>: static int rtems_rfs_rtems_dir_open (rtems_libio_t* iop, const char* pathname, int oflag, mode_t mode) {
 8021574:	37 9c ff c4 	addi sp,sp,-60                                 
 8021578:	5b 8b 00 14 	sw (sp+20),r11                                 
 802157c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8021580:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8021584:	5b 8e 00 08 	sw (sp+8),r14                                  
 8021588:	5b 9d 00 04 	sw (sp+4),ra                                   
 802158c:	b8 20 60 00 	mv r12,r1                                      
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 8021590:	28 21 00 20 	lw r1,(r1+32)                                  
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021594:	34 02 00 00 	mvi r2,0                                       
 8021598:	34 03 00 00 	mvi r3,0                                       
 802159c:	28 2b 00 08 	lw r11,(r1+8)                                  
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_iop_ino (iop);     
 80215a0:	29 8e 00 14 	lw r14,(r12+20)                                
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_filesystem_default_ftruncate_directory,        
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 80215a4:	29 61 00 80 	lw r1,(r11+128)                                
 80215a8:	28 21 00 00 	lw r1,(r1+0)                                   
 80215ac:	fb ff a2 59 	calli 8009f10 <rtems_semaphore_obtain>         
 80215b0:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 80215b4:	5c 20 00 35 	bne r1,r0,8021688 <rtems_rfs_rtems_dir_open+0x114><== NEVER TAKEN
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 80215b8:	37 8d 00 18 	addi r13,sp,24                                 
 80215bc:	b9 c0 10 00 	mv r2,r14                                      
 80215c0:	b9 60 08 00 	mv r1,r11                                      
 80215c4:	b9 a0 18 00 	mv r3,r13                                      
 80215c8:	34 04 00 01 	mvi r4,1                                       
 80215cc:	fb ff b9 f8 	calli 800fdac <rtems_rfs_inode_open>           
 80215d0:	b8 20 70 00 	mv r14,r1                                      
  if (rc)                                                             
 80215d4:	5c 20 00 3f 	bne r1,r0,80216d0 <rtems_rfs_rtems_dir_open+0x15c><== NEVER TAKEN
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 80215d8:	2b 81 00 24 	lw r1,(sp+36)                                  
 80215dc:	40 24 00 02 	lbu r4,(r1+2)                                  
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
  }                                                                   
                                                                      
  if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))         
 80215e0:	34 01 40 00 	mvi r1,16384                                   
 80215e4:	b4 84 20 00 	add r4,r4,r4                                   
 80215e8:	b4 84 20 00 	add r4,r4,r4                                   
 80215ec:	b4 84 20 00 	add r4,r4,r4                                   
 80215f0:	b4 84 20 00 	add r4,r4,r4                                   
 80215f4:	b4 84 20 00 	add r4,r4,r4                                   
 80215f8:	b4 84 20 00 	add r4,r4,r4                                   
 80215fc:	b4 84 20 00 	add r4,r4,r4                                   
 8021600:	b4 84 20 00 	add r4,r4,r4                                   
 8021604:	20 84 f0 00 	andi r4,r4,0xf000                              
 8021608:	5c 81 00 4f 	bne r4,r1,8021744 <rtems_rfs_rtems_dir_open+0x1d0><== NEVER TAKEN
    return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);      
  }                                                                   
                                                                      
  iop->offset = 0;                                                    
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
 802160c:	b9 a0 10 00 	mv r2,r13                                      
    rtems_rfs_inode_close (fs, &inode);                               
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);      
  }                                                                   
                                                                      
  iop->offset = 0;                                                    
 8021610:	59 80 00 04 	sw (r12+4),r0                                  
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
 8021614:	b9 60 08 00 	mv r1,r11                                      
 8021618:	fb ff ba 7f 	calli 8010014 <rtems_rfs_inode_close>          
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 802161c:	29 6c 00 80 	lw r12,(r11+128)                               
  rtems_rfs_buffers_release (fs);                                     
 8021620:	b9 60 08 00 	mv r1,r11                                      
 8021624:	fb ff ed b5 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021628:	29 81 00 00 	lw r1,(r12+0)                                  
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
 802162c:	34 0b 00 00 	mvi r11,0                                      
 8021630:	fb ff a2 94 	calli 800a080 <rtems_semaphore_release>        
 8021634:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021638:	5c 20 00 09 	bne r1,r0,802165c <rtems_rfs_rtems_dir_open+0xe8><== NEVER TAKEN
}                                                                     
 802163c:	b9 60 08 00 	mv r1,r11                                      
 8021640:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021644:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8021648:	2b 8c 00 10 	lw r12,(sp+16)                                 
 802164c:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8021650:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8021654:	37 9c 00 3c 	addi sp,sp,60                                  
 8021658:	c3 a0 00 00 	ret                                            
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 802165c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021660:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021664:	fb ff c2 d7 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021668:	44 20 ff f5 	be r1,r0,802163c <rtems_rfs_rtems_dir_open+0xc8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 802166c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8021670:	fb ff d3 19 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021674:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021678:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802167c:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021680:	f8 00 0d 86 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021684:	e3 ff ff ee 	bi 802163c <rtems_rfs_rtems_dir_open+0xc8>     <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021688:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 802168c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021690:	fb ff c2 cc 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021694:	44 20 ff c9 	be r1,r0,80215b8 <rtems_rfs_rtems_dir_open+0x44><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8021698:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 802169c:	fb ff d3 0e 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80216a0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80216a4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80216a8:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 80216ac:	f8 00 0d 7b 	calli 8024c98 <printf>                         <== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 80216b0:	37 8d 00 18 	addi r13,sp,24                                 <== NOT EXECUTED
 80216b4:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 80216b8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80216bc:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 80216c0:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 80216c4:	fb ff b9 ba 	calli 800fdac <rtems_rfs_inode_open>           <== NOT EXECUTED
 80216c8:	b8 20 70 00 	mv r14,r1                                      <== NOT EXECUTED
  if (rc)                                                             
 80216cc:	44 20 ff c3 	be r1,r0,80215d8 <rtems_rfs_rtems_dir_open+0x64><== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 80216d0:	29 6c 00 80 	lw r12,(r11+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 80216d4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80216d8:	fb ff ed 88 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 80216dc:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 80216e0:	fb ff a2 68 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 80216e4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 80216e8:	5c 20 00 0c 	bne r1,r0,8021718 <rtems_rfs_rtems_dir_open+0x1a4><== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
 80216ec:	f8 00 08 96 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80216f0:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 80216f4:	58 2e 00 00 	sw (r1+0),r14                                  <== NOT EXECUTED
  iop->offset = 0;                                                    
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
}                                                                     
 80216f8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80216fc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021700:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8021704:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 8021708:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 802170c:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8021710:	37 9c 00 3c 	addi sp,sp,60                                  <== NOT EXECUTED
 8021714:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021718:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 802171c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021720:	fb ff c2 a8 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021724:	44 20 ff f2 	be r1,r0,80216ec <rtems_rfs_rtems_dir_open+0x178><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021728:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802172c:	fb ff d2 ea 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021730:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021734:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021738:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 802173c:	f8 00 0d 57 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021740:	e3 ff ff eb 	bi 80216ec <rtems_rfs_rtems_dir_open+0x178>    <== NOT EXECUTED
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
  }                                                                   
                                                                      
  if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))         
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 8021744:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8021748:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802174c:	fb ff ba 32 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021750:	29 6c 00 80 	lw r12,(r11+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 8021754:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021758:	fb ff ed 68 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 802175c:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8021760:	fb ff a2 48 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 8021764:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021768:	5c 20 00 06 	bne r1,r0,8021780 <rtems_rfs_rtems_dir_open+0x20c><== NOT EXECUTED
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);      
 802176c:	f8 00 08 76 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021770:	34 02 00 14 	mvi r2,20                                      <== NOT EXECUTED
 8021774:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8021778:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 802177c:	e3 ff ff b0 	bi 802163c <rtems_rfs_rtems_dir_open+0xc8>     <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021780:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021784:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021788:	fb ff c2 8e 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 802178c:	44 20 ff f8 	be r1,r0,802176c <rtems_rfs_rtems_dir_open+0x1f8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021790:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021794:	fb ff d2 d0 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021798:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 802179c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80217a0:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 80217a4:	f8 00 0d 3d 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80217a8:	e3 ff ff f1 	bi 802176c <rtems_rfs_rtems_dir_open+0x1f8>    <== NOT EXECUTED
                                                                      

08021348 <rtems_rfs_rtems_dir_read>: */ static ssize_t rtems_rfs_rtems_dir_read (rtems_libio_t* iop, void* buffer, size_t count) {
 8021348:	37 9c ff ac 	addi sp,sp,-84                                 
 802134c:	5b 8b 00 28 	sw (sp+40),r11                                 
 8021350:	5b 8c 00 24 	sw (sp+36),r12                                 
 8021354:	5b 8d 00 20 	sw (sp+32),r13                                 
 8021358:	5b 8e 00 1c 	sw (sp+28),r14                                 
 802135c:	5b 8f 00 18 	sw (sp+24),r15                                 
 8021360:	5b 90 00 14 	sw (sp+20),r16                                 
 8021364:	5b 91 00 10 	sw (sp+16),r17                                 
 8021368:	5b 92 00 0c 	sw (sp+12),r18                                 
 802136c:	5b 93 00 08 	sw (sp+8),r19                                  
 8021370:	5b 9d 00 04 	sw (sp+4),ra                                   
 8021374:	b8 20 68 00 	mv r13,r1                                      
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 8021378:	28 21 00 20 	lw r1,(r1+32)                                  
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
                          void*          buffer,                      
                          size_t         count)                       
{                                                                     
 802137c:	b8 40 88 00 	mv r17,r2                                      
 8021380:	b8 60 70 00 	mv r14,r3                                      
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 8021384:	28 2f 00 08 	lw r15,(r1+8)                                  
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021388:	34 02 00 00 	mvi r2,0                                       
 802138c:	34 03 00 00 	mvi r3,0                                       
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_filesystem_default_ftruncate_directory,        
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021390:	29 e1 00 80 	lw r1,(r15+128)                                
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
                          void*          buffer,                      
                          size_t         count)                       
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_iop_ino (iop);     
 8021394:	29 ac 00 14 	lw r12,(r13+20)                                
 8021398:	28 21 00 00 	lw r1,(r1+0)                                   
 802139c:	fb ff a2 dd 	calli 8009f10 <rtems_semaphore_obtain>         
 80213a0:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 80213a4:	5c 20 00 4c 	bne r1,r0,80214d4 <rtems_rfs_rtems_dir_read+0x18c><== NEVER TAKEN
  count  = count / sizeof (struct dirent);                            
  dirent = buffer;                                                    
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 80213a8:	37 90 00 2c 	addi r16,sp,44                                 
 80213ac:	b9 e0 08 00 	mv r1,r15                                      
 80213b0:	b9 80 10 00 	mv r2,r12                                      
 80213b4:	ba 00 18 00 	mv r3,r16                                      
 80213b8:	34 04 00 01 	mvi r4,1                                       
 80213bc:	fb ff ba 7c 	calli 800fdac <rtems_rfs_inode_open>           
 80213c0:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 80213c4:	5c 20 00 56 	bne r1,r0,802151c <rtems_rfs_rtems_dir_read+0x1d4><== NEVER TAKEN
  struct dirent*         dirent;                                      
  ssize_t                bytes_transferred;                           
  int                    d;                                           
  int                    rc;                                          
                                                                      
  count  = count / sizeof (struct dirent);                            
 80213c8:	b9 c0 08 00 	mv r1,r14                                      
 80213cc:	34 02 01 0c 	mvi r2,268                                     
 80213d0:	fb ff 81 09 	calli 80017f4 <__udivsi3>                      
 80213d4:	b8 20 90 00 	mv r18,r1                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
 80213d8:	44 2b 00 16 	be r1,r11,8021430 <rtems_rfs_rtems_dir_read+0xe8><== NEVER TAKEN
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc)                                                             
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
 80213dc:	29 ac 00 04 	lw r12,(r13+4)                                 
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
 80213e0:	34 0e 00 00 	mvi r14,0                                      
 80213e4:	34 0b 00 00 	mvi r11,0                                      
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
    if (rc == ENOENT)                                                 
 80213e8:	34 13 00 02 	mvi r19,2                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
 80213ec:	b9 80 08 00 	mv r1,r12                                      
 80213f0:	34 02 00 1f 	mvi r2,31                                      
 80213f4:	f8 00 56 8f 	calli 8036e30 <__ashrsi3>                      
 80213f8:	b8 20 18 00 	mv r3,r1                                       
 80213fc:	b9 80 20 00 	mv r4,r12                                      
 8021400:	b9 e0 08 00 	mv r1,r15                                      
 8021404:	ba 00 10 00 	mv r2,r16                                      
 8021408:	b6 2b 28 00 	add r5,r17,r11                                 
 802140c:	37 86 00 54 	addi r6,sp,84                                  
 8021410:	fb ff f2 cc 	calli 801df40 <rtems_rfs_dir_read>             
 8021414:	b8 20 60 00 	mv r12,r1                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
 8021418:	35 ce 00 01 	addi r14,r14,1                                 
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
    if (rc == ENOENT)                                                 
 802141c:	44 33 00 05 	be r1,r19,8021430 <rtems_rfs_rtems_dir_read+0xe8>
    {                                                                 
      rc = 0;                                                         
      break;                                                          
    }                                                                 
    if (rc > 0)                                                       
 8021420:	4c 01 00 1b 	bge r0,r1,802148c <rtems_rfs_rtems_dir_read+0x144><== ALWAYS TAKEN
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
 8021424:	f8 00 09 48 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021428:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
 802142c:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
    }                                                                 
    iop->offset += size;                                              
    bytes_transferred += sizeof (struct dirent);                      
  }                                                                   
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
 8021430:	ba 00 10 00 	mv r2,r16                                      
 8021434:	b9 e0 08 00 	mv r1,r15                                      
 8021438:	fb ff ba f7 	calli 8010014 <rtems_rfs_inode_close>          
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 802143c:	29 ec 00 80 	lw r12,(r15+128)                               
  rtems_rfs_buffers_release (fs);                                     
 8021440:	b9 e0 08 00 	mv r1,r15                                      
 8021444:	fb ff ee 2d 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021448:	29 81 00 00 	lw r1,(r12+0)                                  
 802144c:	fb ff a3 0d 	calli 800a080 <rtems_semaphore_release>        
 8021450:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021454:	5c 20 00 15 	bne r1,r0,80214a8 <rtems_rfs_rtems_dir_read+0x160><== NEVER TAKEN
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return bytes_transferred;                                           
}                                                                     
 8021458:	b9 60 08 00 	mv r1,r11                                      
 802145c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021460:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8021464:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8021468:	2b 8d 00 20 	lw r13,(sp+32)                                 
 802146c:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8021470:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8021474:	2b 90 00 14 	lw r16,(sp+20)                                 
 8021478:	2b 91 00 10 	lw r17,(sp+16)                                 
 802147c:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8021480:	2b 93 00 08 	lw r19,(sp+8)                                  
 8021484:	37 9c 00 54 	addi sp,sp,84                                  
 8021488:	c3 a0 00 00 	ret                                            
    if (rc > 0)                                                       
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
      break;                                                          
    }                                                                 
    iop->offset += size;                                              
 802148c:	29 ac 00 04 	lw r12,(r13+4)                                 
 8021490:	2b 81 00 54 	lw r1,(sp+84)                                  
 * exisiting file, the remaining entries will be placed in the buffer and the
 * returned value will be equal to -m actual- times the size of a directory
 * entry.                                                             
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
 8021494:	35 6b 01 0c 	addi r11,r11,268                               
    if (rc > 0)                                                       
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
      break;                                                          
    }                                                                 
    iop->offset += size;                                              
 8021498:	b5 81 60 00 	add r12,r12,r1                                 
 802149c:	59 ac 00 04 	sw (r13+4),r12                                 
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
 80214a0:	56 4e ff d3 	bgu r18,r14,80213ec <rtems_rfs_rtems_dir_read+0xa4><== NEVER TAKEN
 80214a4:	e3 ff ff e3 	bi 8021430 <rtems_rfs_rtems_dir_read+0xe8>     
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80214a8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80214ac:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80214b0:	fb ff c3 44 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80214b4:	44 20 ff e9 	be r1,r0,8021458 <rtems_rfs_rtems_dir_read+0x110><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 80214b8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80214bc:	fb ff d3 86 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80214c0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80214c4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80214c8:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 80214cc:	f8 00 0d f3 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80214d0:	e3 ff ff e2 	bi 8021458 <rtems_rfs_rtems_dir_read+0x110>    <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80214d4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80214d8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80214dc:	fb ff c3 39 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80214e0:	44 20 ff b2 	be r1,r0,80213a8 <rtems_rfs_rtems_dir_read+0x60><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 80214e4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80214e8:	fb ff d3 7b 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80214ec:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80214f0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80214f4:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 80214f8:	f8 00 0d e8 	calli 8024c98 <printf>                         <== NOT EXECUTED
  count  = count / sizeof (struct dirent);                            
  dirent = buffer;                                                    
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 80214fc:	37 90 00 2c 	addi r16,sp,44                                 <== NOT EXECUTED
 8021500:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 8021504:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8021508:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 802150c:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 8021510:	fb ff ba 27 	calli 800fdac <rtems_rfs_inode_open>           <== NOT EXECUTED
 8021514:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (rc)                                                             
 8021518:	44 20 ff ac 	be r1,r0,80213c8 <rtems_rfs_rtems_dir_read+0x80><== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 802151c:	29 ec 00 80 	lw r12,(r15+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 8021520:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 8021524:	fb ff ed f5 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021528:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 802152c:	fb ff a2 d5 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 8021530:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021534:	5c 20 00 05 	bne r1,r0,8021548 <rtems_rfs_rtems_dir_read+0x200><== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
 8021538:	f8 00 09 03 	calli 8023944 <__errno>                        <== NOT EXECUTED
 802153c:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8021540:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 8021544:	e3 ff ff c5 	bi 8021458 <rtems_rfs_rtems_dir_read+0x110>    <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021548:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 802154c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021550:	fb ff c3 1c 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021554:	44 20 ff f9 	be r1,r0,8021538 <rtems_rfs_rtems_dir_read+0x1f0><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021558:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 802155c:	fb ff d3 5e 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021560:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021564:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021568:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 802156c:	f8 00 0d cb 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021570:	e3 ff ff f2 	bi 8021538 <rtems_rfs_rtems_dir_read+0x1f0>    <== NOT EXECUTED
                                                                      

08011354 <rtems_rfs_rtems_eval_path>: .eval_token = rtems_rfs_rtems_eval_token }; static void rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx) {
 8011354:	37 9c ff c4 	addi sp,sp,-60                                 
 8011358:	5b 8b 00 14 	sw (sp+20),r11                                 
 801135c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8011360:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8011364:	5b 8e 00 08 	sw (sp+8),r14                                  
 8011368:	5b 9d 00 04 	sw (sp+4),ra                                   
 801136c:	b8 20 58 00 	mv r11,r1                                      
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc (ctx);                  
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
 8011370:	28 21 00 2c 	lw r1,(r1+44)                                  
  rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);   
  rtems_rfs_inode_handle inode;                                       
  int rc;                                                             
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8011374:	29 62 00 20 	lw r2,(r11+32)                                 
 8011378:	37 8d 00 18 	addi r13,sp,24                                 
static void                                                           
rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx) 
{                                                                     
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc (ctx);                  
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
 801137c:	28 2e 00 08 	lw r14,(r1+8)                                  
  rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);   
  rtems_rfs_inode_handle inode;                                       
  int rc;                                                             
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8011380:	b9 a0 18 00 	mv r3,r13                                      
 8011384:	34 04 00 01 	mvi r4,1                                       
 8011388:	b9 c0 08 00 	mv r1,r14                                      
 801138c:	fb ff fa 88 	calli 800fdac <rtems_rfs_inode_open>           
 8011390:	b8 20 60 00 	mv r12,r1                                      
  if (rc == 0) {                                                      
 8011394:	5c 20 00 12 	bne r1,r0,80113dc <rtems_rfs_rtems_eval_path+0x88><== NEVER TAKEN
    rtems_filesystem_eval_path_generic (                              
 8011398:	78 03 08 03 	mvhi r3,0x803                                  
 801139c:	b9 a0 10 00 	mv r2,r13                                      
 80113a0:	38 63 9e 58 	ori r3,r3,0x9e58                               
 80113a4:	b9 60 08 00 	mv r1,r11                                      
 80113a8:	f8 00 16 3e 	calli 8016ca0 <rtems_filesystem_eval_path_generic>
      ctx,                                                            
      &inode,                                                         
      &rtems_rfs_rtems_eval_config                                    
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
 80113ac:	b9 a0 10 00 	mv r2,r13                                      
 80113b0:	b9 c0 08 00 	mv r1,r14                                      
 80113b4:	fb ff fb 18 	calli 8010014 <rtems_rfs_inode_close>          
 80113b8:	b8 20 68 00 	mv r13,r1                                      
    if (rc != 0) {                                                    
 80113bc:	5c 2c 00 14 	bne r1,r12,801140c <rtems_rfs_rtems_eval_path+0xb8><== NEVER TAKEN
    rtems_filesystem_eval_path_error (                                
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
    );                                                                
  }                                                                   
}                                                                     
 80113c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80113c4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80113c8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80113cc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80113d0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80113d4:	37 9c 00 3c 	addi sp,sp,60                                  
 80113d8:	c3 a0 00 00 	ret                                            
      );                                                              
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error (                                
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
 80113dc:	f8 00 49 5a 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80113e0:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
      );                                                              
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error (                                
 80113e4:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 80113e8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80113ec:	fb ff dc a3 	calli 8008678 <rtems_filesystem_eval_path_error><== NOT EXECUTED
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
    );                                                                
  }                                                                   
}                                                                     
 80113f0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80113f4:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 80113f8:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 80113fc:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8011400:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8011404:	37 9c 00 3c 	addi sp,sp,60                                  <== NOT EXECUTED
 8011408:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
    if (rc != 0) {                                                    
      rtems_filesystem_eval_path_error (                              
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
 801140c:	f8 00 49 4e 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011410:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
      &inode,                                                         
      &rtems_rfs_rtems_eval_config                                    
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
    if (rc != 0) {                                                    
      rtems_filesystem_eval_path_error (                              
 8011414:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011418:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801141c:	fb ff dc 97 	calli 8008678 <rtems_filesystem_eval_path_error><== NOT EXECUTED
    rtems_filesystem_eval_path_error (                                
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
    );                                                                
  }                                                                   
}                                                                     
 8011420:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8011424:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 8011428:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 801142c:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 8011430:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 8011434:	37 9c 00 3c 	addi sp,sp,60                                  <== NOT EXECUTED
 8011438:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08011830 <rtems_rfs_rtems_eval_token>: rtems_filesystem_eval_path_context_t *ctx, void *arg, const char *token, size_t tokenlen ) {
 8011830:	37 9c ff cc 	addi sp,sp,-52                                 
 8011834:	5b 8b 00 28 	sw (sp+40),r11                                 
 8011838:	5b 8c 00 24 	sw (sp+36),r12                                 
 801183c:	5b 8d 00 20 	sw (sp+32),r13                                 
 8011840:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8011844:	5b 8f 00 18 	sw (sp+24),r15                                 
 8011848:	5b 90 00 14 	sw (sp+20),r16                                 
 801184c:	5b 91 00 10 	sw (sp+16),r17                                 
 8011850:	5b 92 00 0c 	sw (sp+12),r18                                 
 8011854:	5b 93 00 08 	sw (sp+8),r19                                  
 8011858:	5b 9d 00 04 	sw (sp+4),ra                                   
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 801185c:	28 46 00 0c 	lw r6,(r2+12)                                  
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
 8011860:	b8 20 68 00 	mv r13,r1                                      
 8011864:	b8 40 60 00 	mv r12,r2                                      
 8011868:	40 c5 00 02 	lbu r5,(r6+2)                                  
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 801186c:	34 ce 00 04 	addi r14,r6,4                                  
 8011870:	41 cb 00 02 	lbu r11,(r14+2)                                
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8011874:	b4 a5 28 00 	add r5,r5,r5                                   
 8011878:	b4 a5 28 00 	add r5,r5,r5                                   
 801187c:	b4 a5 28 00 	add r5,r5,r5                                   
 8011880:	b4 a5 28 00 	add r5,r5,r5                                   
 8011884:	b4 a5 28 00 	add r5,r5,r5                                   
 8011888:	40 d1 00 03 	lbu r17,(r6+3)                                 
 801188c:	b4 a5 28 00 	add r5,r5,r5                                   
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 8011890:	40 c1 00 04 	lbu r1,(r6+4)                                  
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8011894:	b4 a5 28 00 	add r5,r5,r5                                   
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 8011898:	41 cf 00 03 	lbu r15,(r14+3)                                
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 801189c:	b4 a5 28 00 	add r5,r5,r5                                   
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118a0:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 80118a4:	b8 b1 28 00 	or r5,r5,r17                                   
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118a8:	34 02 00 18 	mvi r2,24                                      
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118ac:	b5 6b 58 00 	add r11,r11,r11                                
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
 80118b0:	20 b1 ff ff 	andi r17,r5,0xffff                             
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
 80118b4:	b8 60 98 00 	mv r19,r3                                      
 80118b8:	b8 80 80 00 	mv r16,r4                                      
 80118bc:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118c0:	f8 00 95 35 	calli 8036d94 <__ashlsi3>                      
 80118c4:	b9 e1 90 00 	or r18,r15,r1                                  
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118c8:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118cc:	41 c1 00 01 	lbu r1,(r14+1)                                 
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118d0:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118d4:	34 02 00 10 	mvi r2,16                                      
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118d8:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118dc:	f8 00 95 2e 	calli 8036d94 <__ashlsi3>                      
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 80118e0:	b5 6b 58 00 	add r11,r11,r11                                
 80118e4:	b5 6b 58 00 	add r11,r11,r11                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 80118e8:	ba 41 08 00 	or r1,r18,r1                                   
 80118ec:	34 02 00 10 	mvi r2,16                                      
 80118f0:	b8 2b 08 00 	or r1,r1,r11                                   
 80118f4:	fb ff bf 8d 	calli 8001728 <__lshrsi3>                      
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
 80118f8:	b9 eb 58 00 	or r11,r15,r11                                 
 80118fc:	20 25 ff ff 	andi r5,r1,0xffff                              
 8011900:	34 02 00 01 	mvi r2,1                                       
 8011904:	b9 a0 08 00 	mv r1,r13                                      
 8011908:	ba 20 18 00 	mv r3,r17                                      
 801190c:	b9 60 20 00 	mv r4,r11                                      
 8011910:	f8 00 14 cf 	calli 8016c4c <rtems_filesystem_eval_path_check_access>
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8011914:	34 02 00 01 	mvi r2,1                                       
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_rfs_inode_handle* inode = arg;                                
  bool access_ok = rtems_rfs_rtems_eval_perms (ctx, RTEMS_FS_PERMS_EXEC, inode);
                                                                      
  if (access_ok) {                                                    
 8011918:	44 20 00 0e 	be r1,r0,8011950 <rtems_rfs_rtems_eval_token+0x120>
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
 801191c:	46 02 00 1a 	be r16,r2,8011984 <rtems_rfs_rtems_eval_token+0x154>
    if (rtems_filesystem_is_current_directory (token, tokenlen)) {    
      rtems_filesystem_eval_path_clear_token (ctx);                   
    } else {                                                          
      rtems_filesystem_location_info_t *currentloc =                  
        rtems_filesystem_eval_path_get_currentloc( ctx );             
      rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
 8011920:	29 a1 00 2c 	lw r1,(r13+44)                                 
      rtems_rfs_ino entry_ino;                                        
      uint32_t entry_doff;                                            
      int rc = rtems_rfs_dir_lookup_ino (                             
 8011924:	b9 80 10 00 	mv r2,r12                                      
 8011928:	ba 60 18 00 	mv r3,r19                                      
    if (rtems_filesystem_is_current_directory (token, tokenlen)) {    
      rtems_filesystem_eval_path_clear_token (ctx);                   
    } else {                                                          
      rtems_filesystem_location_info_t *currentloc =                  
        rtems_filesystem_eval_path_get_currentloc( ctx );             
      rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
 801192c:	28 2b 00 08 	lw r11,(r1+8)                                  
      rtems_rfs_ino entry_ino;                                        
      uint32_t entry_doff;                                            
      int rc = rtems_rfs_dir_lookup_ino (                             
 8011930:	ba 00 20 00 	mv r4,r16                                      
 8011934:	37 85 00 34 	addi r5,sp,52                                  
 8011938:	b9 60 08 00 	mv r1,r11                                      
 801193c:	37 86 00 30 	addi r6,sp,48                                  
 8011940:	f8 00 2d 94 	calli 801cf90 <rtems_rfs_dir_lookup_ino>       
 8011944:	b8 20 70 00 	mv r14,r1                                      
           * rtems_rfs_rtems_eval_path().                             
           */                                                         
          memset (inode, 0, sizeof(*inode));                          
        }                                                             
      } else {                                                        
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;         
 8011948:	34 02 00 02 	mvi r2,2                                       
        tokenlen,                                                     
        &entry_ino,                                                   
        &entry_doff                                                   
      );                                                              
                                                                      
      if (rc == 0) {                                                  
 801194c:	44 20 00 13 	be r1,r0,8011998 <rtems_rfs_rtems_eval_token+0x168>
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
 8011950:	b8 40 08 00 	mv r1,r2                                       
 8011954:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011958:	2b 8b 00 28 	lw r11,(sp+40)                                 
 801195c:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8011960:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8011964:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8011968:	2b 8f 00 18 	lw r15,(sp+24)                                 
 801196c:	2b 90 00 14 	lw r16,(sp+20)                                 
 8011970:	2b 91 00 10 	lw r17,(sp+16)                                 
 8011974:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8011978:	2b 93 00 08 	lw r19,(sp+8)                                  
 801197c:	37 9c 00 34 	addi sp,sp,52                                  
 8011980:	c3 a0 00 00 	ret                                            
 8011984:	42 63 00 00 	lbu r3,(r19+0)                                 
 8011988:	34 01 00 2e 	mvi r1,46                                      
 801198c:	5c 61 ff e5 	bne r3,r1,8011920 <rtems_rfs_rtems_eval_token+0xf0>
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
 8011990:	59 a0 00 0c 	sw (r13+12),r0                                 
 8011994:	e3 ff ff ef 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  
        &entry_ino,                                                   
        &entry_doff                                                   
      );                                                              
                                                                      
      if (rc == 0) {                                                  
        rc = rtems_rfs_inode_close (fs, inode);                       
 8011998:	b9 60 08 00 	mv r1,r11                                      
 801199c:	b9 80 10 00 	mv r2,r12                                      
 80119a0:	fb ff f9 9d 	calli 8010014 <rtems_rfs_inode_close>          
 80119a4:	b8 20 78 00 	mv r15,r1                                      
        if (rc == 0) {                                                
 80119a8:	44 2e 00 0d 	be r1,r14,80119dc <rtems_rfs_rtems_eval_token+0x1ac><== ALWAYS TAKEN
        if (rc != 0) {                                                
          /*                                                          
           * This prevents the rtems_rfs_inode_close() from doing something in
           * rtems_rfs_rtems_eval_path().                             
           */                                                         
          memset (inode, 0, sizeof(*inode));                          
 80119ac:	59 80 00 00 	sw (r12+0),r0                                  <== NOT EXECUTED
 80119b0:	59 80 00 04 	sw (r12+4),r0                                  <== NOT EXECUTED
 80119b4:	59 80 00 08 	sw (r12+8),r0                                  <== NOT EXECUTED
 80119b8:	59 80 00 0c 	sw (r12+12),r0                                 <== NOT EXECUTED
 80119bc:	59 80 00 10 	sw (r12+16),r0                                 <== NOT EXECUTED
 80119c0:	59 80 00 14 	sw (r12+20),r0                                 <== NOT EXECUTED
 80119c4:	59 80 00 18 	sw (r12+24),r0                                 <== NOT EXECUTED
 80119c8:	59 80 00 1c 	sw (r12+28),r0                                 <== NOT EXECUTED
 80119cc:	59 80 00 20 	sw (r12+32),r0                                 <== NOT EXECUTED
 80119d0:	59 80 00 24 	sw (r12+36),r0                                 <== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 80119d4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80119d8:	e3 ff ff de 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  <== NOT EXECUTED
      );                                                              
                                                                      
      if (rc == 0) {                                                  
        rc = rtems_rfs_inode_close (fs, inode);                       
        if (rc == 0) {                                                
          rc = rtems_rfs_inode_open (fs, entry_ino, inode, true);     
 80119dc:	2b 82 00 34 	lw r2,(sp+52)                                  
 80119e0:	b9 60 08 00 	mv r1,r11                                      
 80119e4:	b9 80 18 00 	mv r3,r12                                      
 80119e8:	34 04 00 01 	mvi r4,1                                       
 80119ec:	fb ff f8 f0 	calli 800fdac <rtems_rfs_inode_open>           
 80119f0:	b8 20 80 00 	mv r16,r1                                      
        }                                                             
                                                                      
        if (rc != 0) {                                                
 80119f4:	5c 2f ff ee 	bne r1,r15,80119ac <rtems_rfs_rtems_eval_token+0x17c><== NEVER TAKEN
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;         
        rc = -1;                                                      
      }                                                               
                                                                      
      if (rc == 0) {                                                  
        bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode) 
 80119f8:	29 81 00 0c 	lw r1,(r12+12)                                 
 80119fc:	fb ff fe 9f 	calli 8011478 <rtems_rfs_rtems_node_type_by_inode.clone.23>
          == RTEMS_FILESYSTEM_SYM_LINK;                               
        int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);  
        bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
 8011a00:	29 ae 00 04 	lw r14,(r13+4)                                 
 8011a04:	59 a0 00 0c 	sw (r13+12),r0                                 
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
 8011a08:	34 02 00 03 	mvi r2,3                                       
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011a0c:	29 a3 00 10 	lw r3,(r13+16)                                 
      if (rc == 0) {                                                  
        bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode) 
          == RTEMS_FILESYSTEM_SYM_LINK;                               
        int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);  
        bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
 8011a10:	65 ce 00 00 	cmpei r14,r14,0                                
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
 8011a14:	5c 22 00 1a 	bne r1,r2,8011a7c <rtems_rfs_rtems_eval_token+0x24c>
                                                                      
      if (rc == 0) {                                                  
        bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode) 
          == RTEMS_FILESYSTEM_SYM_LINK;                               
        int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);  
        bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
 8011a18:	20 63 00 10 	andi r3,r3,0x10                                
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
 8011a1c:	5c 70 00 02 	bne r3,r16,8011a24 <rtems_rfs_rtems_eval_token+0x1f4>
 8011a20:	5d c3 00 17 	bne r14,r3,8011a7c <rtems_rfs_rtems_eval_token+0x24c>
  rtems_filesystem_eval_path_context_t* ctx,                          
  rtems_rfs_file_system* fs,                                          
  rtems_rfs_ino ino                                                   
)                                                                     
{                                                                     
  size_t len = MAXPATHLEN;                                            
 8011a24:	34 03 04 00 	mvi r3,1024                                    
  char *link = malloc(len + 1);                                       
 8011a28:	34 01 04 01 	mvi r1,1025                                    
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
 8011a2c:	2b 8e 00 34 	lw r14,(sp+52)                                 
  rtems_filesystem_eval_path_context_t* ctx,                          
  rtems_rfs_file_system* fs,                                          
  rtems_rfs_ino ino                                                   
)                                                                     
{                                                                     
  size_t len = MAXPATHLEN;                                            
 8011a30:	5b 83 00 2c 	sw (sp+44),r3                                  
  char *link = malloc(len + 1);                                       
 8011a34:	fb ff d6 6c 	calli 80073e4 <malloc>                         
 8011a38:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if (link != NULL) {                                                 
 8011a3c:	44 20 00 26 	be r1,r0,8011ad4 <rtems_rfs_rtems_eval_token+0x2a4><== NEVER TAKEN
    int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);       
 8011a40:	b9 60 08 00 	mv r1,r11                                      
 8011a44:	b9 c0 10 00 	mv r2,r14                                      
 8011a48:	b9 80 18 00 	mv r3,r12                                      
 8011a4c:	34 04 04 00 	mvi r4,1024                                    
 8011a50:	37 85 00 2c 	addi r5,sp,44                                  
 8011a54:	f8 00 3c 8d 	calli 8020c88 <rtems_rfs_symlink_read>         
                                                                      
    if (rc == 0) {                                                    
 8011a58:	5c 20 00 1b 	bne r1,r0,8011ac4 <rtems_rfs_rtems_eval_token+0x294><== NEVER TAKEN
      rtems_filesystem_eval_path_recursive (ctx, link, len);          
 8011a5c:	2b 83 00 2c 	lw r3,(sp+44)                                  
 8011a60:	b9 a0 08 00 	mv r1,r13                                      
 8011a64:	b9 80 10 00 	mv r2,r12                                      
 8011a68:	fb ff dc ae 	calli 8008d20 <rtems_filesystem_eval_path_recursive>
    } else {                                                          
      rtems_filesystem_eval_path_error (ctx, 0);                      
    }                                                                 
                                                                      
    free(link);                                                       
 8011a6c:	b9 80 08 00 	mv r1,r12                                      
 8011a70:	fb ff d4 69 	calli 8006c14 <free>                           
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8011a74:	34 02 00 01 	mvi r2,1                                       
 8011a78:	e3 ff ff b6 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
        } else {                                                      
          rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
 8011a7c:	35 a1 00 18 	addi r1,r13,24                                 
 8011a80:	b9 80 10 00 	mv r2,r12                                      
 8011a84:	f8 00 01 90 	calli 80120c4 <rtems_rfs_rtems_set_handlers>   
 8011a88:	44 20 00 07 	be r1,r0,8011aa4 <rtems_rfs_rtems_eval_token+0x274><== NEVER TAKEN
          if (rc == 0) {                                              
            rtems_rfs_rtems_set_pathloc_ino (currentloc, entry_ino);  
 8011a8c:	2b 81 00 34 	lw r1,(sp+52)                                  
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8011a90:	b9 c0 10 00 	mv r2,r14                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
        } else {                                                      
          rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
          if (rc == 0) {                                              
            rtems_rfs_rtems_set_pathloc_ino (currentloc, entry_ino);  
 8011a94:	59 a1 00 20 	sw (r13+32),r1                                 
            rtems_rfs_rtems_set_pathloc_doff (currentloc, entry_doff);
 8011a98:	2b 81 00 30 	lw r1,(sp+48)                                  
 8011a9c:	59 a1 00 24 	sw (r13+36),r1                                 
 8011aa0:	e3 ff ff ac 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;   
            }                                                         
          } else {                                                    
            rtems_filesystem_eval_path_error (                        
              ctx,                                                    
              rtems_rfs_rtems_error ("eval_path: set handlers", rc)   
 8011aa4:	f8 00 47 a8 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011aa8:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 8011aac:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
                                                                      
            if (!terminal) {                                          
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;   
            }                                                         
          } else {                                                    
            rtems_filesystem_eval_path_error (                        
 8011ab0:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8011ab4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011ab8:	fb ff da f0 	calli 8008678 <rtems_filesystem_eval_path_error><== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8011abc:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8011ac0:	e3 ff ff a4 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  <== NOT EXECUTED
    int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);       
                                                                      
    if (rc == 0) {                                                    
      rtems_filesystem_eval_path_recursive (ctx, link, len);          
    } else {                                                          
      rtems_filesystem_eval_path_error (ctx, 0);                      
 8011ac4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011ac8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8011acc:	fb ff da eb 	calli 8008678 <rtems_filesystem_eval_path_error><== NOT EXECUTED
 8011ad0:	e3 ff ff e7 	bi 8011a6c <rtems_rfs_rtems_eval_token+0x23c>  <== NOT EXECUTED
    }                                                                 
                                                                      
    free(link);                                                       
  } else {                                                            
    rtems_filesystem_eval_path_error (ctx, ENOMEM);                   
 8011ad4:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8011ad8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8011adc:	fb ff da e7 	calli 8008678 <rtems_filesystem_eval_path_error><== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
 8011ae0:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8011ae4:	e3 ff ff 9b 	bi 8011950 <rtems_rfs_rtems_eval_token+0x120>  <== NOT EXECUTED
                                                                      

08010fac <rtems_rfs_rtems_fchmod>: } static int rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc, mode_t mode) {
 8010fac:	37 9c ff c4 	addi sp,sp,-60                                 
 8010fb0:	5b 8b 00 14 	sw (sp+20),r11                                 
 8010fb4:	5b 8c 00 10 	sw (sp+16),r12                                 
 8010fb8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8010fbc:	5b 8e 00 08 	sw (sp+8),r14                                  
 8010fc0:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (pathloc); 
 8010fc4:	28 23 00 14 	lw r3,(r1+20)                                  
}                                                                     
                                                                      
static int                                                            
rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc,
                        mode_t                                  mode) 
{                                                                     
 8010fc8:	b8 40 70 00 	mv r14,r2                                      
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FCHMOD))           
    printf ("rtems-rfs-rtems: fchmod: in: ino:%" PRId32 " mode:%06" PRIomode_t "\n",
            ino, mode);                                               
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010fcc:	28 22 00 08 	lw r2,(r1+8)                                   
                                                                      
static int                                                            
rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc,
                        mode_t                                  mode) 
{                                                                     
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (pathloc); 
 8010fd0:	28 6c 00 08 	lw r12,(r3+8)                                  
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FCHMOD))           
    printf ("rtems-rfs-rtems: fchmod: in: ino:%" PRId32 " mode:%06" PRIomode_t "\n",
            ino, mode);                                               
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010fd4:	37 8b 00 18 	addi r11,sp,24                                 
 8010fd8:	b9 60 18 00 	mv r3,r11                                      
 8010fdc:	b9 80 08 00 	mv r1,r12                                      
 8010fe0:	34 04 00 01 	mvi r4,1                                       
 8010fe4:	fb ff fb 72 	calli 800fdac <rtems_rfs_inode_open>           
 8010fe8:	b8 20 68 00 	mv r13,r1                                      
  if (rc)                                                             
 8010fec:	44 20 00 0b 	be r1,r0,8011018 <rtems_rfs_rtems_fchmod+0x6c> <== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: opening inode", rc);       
 8010ff0:	f8 00 4a 55 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010ff4:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8010ff8:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010ffc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011000:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8011004:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8011008:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801100c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8011010:	37 9c 00 3c 	addi sp,sp,60                                  
 8011014:	c3 a0 00 00 	ret                                            
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8011018:	2b 81 00 24 	lw r1,(sp+36)                                  
 801101c:	40 2d 00 02 	lbu r13,(r1+2)                                 
                                                                      
  /*                                                                  
   *  Verify I am the owner of the node or the super user.            
   */                                                                 
#if defined (RTEMS_POSIX_API)                                         
  uid = geteuid();                                                    
 8011020:	f8 00 15 9e 	calli 8016698 <geteuid>                        
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011024:	2b 86 00 24 	lw r6,(sp+36)                                  
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 8011028:	34 c5 00 04 	addi r5,r6,4                                   
 801102c:	40 a3 00 02 	lbu r3,(r5+2)                                  
 8011030:	40 a2 00 03 	lbu r2,(r5+3)                                  
 8011034:	b4 63 20 00 	add r4,r3,r3                                   
 8011038:	b4 84 20 00 	add r4,r4,r4                                   
 801103c:	b4 84 20 00 	add r4,r4,r4                                   
 8011040:	b4 84 20 00 	add r4,r4,r4                                   
 8011044:	b4 84 20 00 	add r4,r4,r4                                   
 8011048:	b4 84 20 00 	add r4,r4,r4                                   
 801104c:	b4 84 20 00 	add r4,r4,r4                                   
 8011050:	b4 84 20 00 	add r4,r4,r4                                   
 8011054:	b8 82 20 00 	or r4,r4,r2                                    
   *  Verify I am the owner of the node or the super user.            
   */                                                                 
#if defined (RTEMS_POSIX_API)                                         
  uid = geteuid();                                                    
                                                                      
  if ((uid != rtems_rfs_inode_get_uid (&inode)) && (uid != 0))        
 8011058:	20 84 ff ff 	andi r4,r4,0xffff                              
 801105c:	44 24 00 02 	be r1,r4,8011064 <rtems_rfs_rtems_fchmod+0xb8> <== ALWAYS TAKEN
 8011060:	5c 20 00 29 	bne r1,r0,8011104 <rtems_rfs_rtems_fchmod+0x158><== NOT EXECUTED
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8011064:	b5 ad 20 00 	add r4,r13,r13                                 
 8011068:	b4 84 20 00 	add r4,r4,r4                                   
 801106c:	b4 84 20 00 	add r4,r4,r4                                   
 8011070:	b4 84 20 00 	add r4,r4,r4                                   
 8011074:	b4 84 20 00 	add r4,r4,r4                                   
 8011078:	b4 84 20 00 	add r4,r4,r4                                   
 801107c:	b4 84 20 00 	add r4,r4,r4                                   
 8011080:	b4 84 20 00 	add r4,r4,r4                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("fchmod: checking uid", EPERM);     
  }                                                                   
#endif                                                                
                                                                      
  imode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
 8011084:	20 84 f0 00 	andi r4,r4,0xf000                              
  imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
 8011088:	21 ce 0f ff 	andi r14,r14,0xfff                             
 801108c:	b8 8e 20 00 	or r4,r4,r14                                   
 * @prarm mode The mode.                                              
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->mode, mode);                    
 8011090:	00 85 00 01 	srui r5,r4,1                                   
                                                                      
  rtems_rfs_inode_set_mode (&inode, imode);                           
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8011094:	b9 60 10 00 	mv r2,r11                                      
 8011098:	00 a5 00 01 	srui r5,r5,1                                   
 801109c:	b9 80 08 00 	mv r1,r12                                      
 80110a0:	00 a5 00 01 	srui r5,r5,1                                   
 80110a4:	00 a5 00 01 	srui r5,r5,1                                   
 80110a8:	00 a5 00 01 	srui r5,r5,1                                   
 80110ac:	00 a5 00 01 	srui r5,r5,1                                   
 80110b0:	00 a5 00 01 	srui r5,r5,1                                   
 80110b4:	00 a5 00 01 	srui r5,r5,1                                   
 80110b8:	30 c5 00 02 	sb (r6+2),r5                                   
 80110bc:	2b 83 00 24 	lw r3,(sp+36)                                  
 80110c0:	30 64 00 03 	sb (r3+3),r4                                   
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 80110c4:	34 03 00 01 	mvi r3,1                                       
 80110c8:	33 83 00 28 	sb (sp+40),r3                                  
 80110cc:	fb ff fb d2 	calli 8010014 <rtems_rfs_inode_close>          
 80110d0:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
  }                                                                   
                                                                      
  return 0;                                                           
 80110d4:	34 01 00 00 	mvi r1,0                                       
  imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
                                                                      
  rtems_rfs_inode_set_mode (&inode, imode);                           
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
 80110d8:	4c 0b ff c9 	bge r0,r11,8010ffc <rtems_rfs_rtems_fchmod+0x50><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
 80110dc:	f8 00 4a 1a 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80110e0:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 80110e4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 80110e8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80110ec:	2b 8b 00 14 	lw r11,(sp+20)                                 <== NOT EXECUTED
 80110f0:	2b 8c 00 10 	lw r12,(sp+16)                                 <== NOT EXECUTED
 80110f4:	2b 8d 00 0c 	lw r13,(sp+12)                                 <== NOT EXECUTED
 80110f8:	2b 8e 00 08 	lw r14,(sp+8)                                  <== NOT EXECUTED
 80110fc:	37 9c 00 3c 	addi sp,sp,60                                  <== NOT EXECUTED
 8011100:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
#if defined (RTEMS_POSIX_API)                                         
  uid = geteuid();                                                    
                                                                      
  if ((uid != rtems_rfs_inode_get_uid (&inode)) && (uid != 0))        
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 8011104:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8011108:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 801110c:	fb ff fb c2 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rtems_rfs_rtems_error ("fchmod: checking uid", EPERM);     
 8011110:	f8 00 4a 0d 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011114:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8011118:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801111c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8011120:	e3 ff ff b7 	bi 8010ffc <rtems_rfs_rtems_fchmod+0x50>       <== NOT EXECUTED
                                                                      

08012084 <rtems_rfs_rtems_fdatasync>: * @param iop * @return int */ int rtems_rfs_rtems_fdatasync (rtems_libio_t* iop) {
 8012084:	37 9c ff f8 	addi sp,sp,-8                                  <== NOT EXECUTED
 8012088:	5b 8b 00 08 	sw (sp+8),r11                                  <== NOT EXECUTED
 801208c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  int rc;                                                             
                                                                      
  rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
 8012090:	28 21 00 20 	lw r1,(r1+32)                                  <== NOT EXECUTED
 8012094:	28 21 00 08 	lw r1,(r1+8)                                   <== NOT EXECUTED
 8012098:	f8 00 2a f0 	calli 801cc58 <rtems_rfs_buffer_sync>          <== NOT EXECUTED
 801209c:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (rc)                                                             
    return rtems_rfs_rtems_error ("fdatasync: sync", rc);             
                                                                      
  return 0;                                                           
 80120a0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)                        
{                                                                     
  int rc;                                                             
                                                                      
  rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
  if (rc)                                                             
 80120a4:	45 60 00 04 	be r11,r0,80120b4 <rtems_rfs_rtems_fdatasync+0x30><== NOT EXECUTED
    return rtems_rfs_rtems_error ("fdatasync: sync", rc);             
 80120a8:	f8 00 46 27 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80120ac:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 80120b0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
 80120b4:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80120b8:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 80120bc:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 80120c0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08021c50 <rtems_rfs_rtems_file_close>: * @param iop * @return int */ static int rtems_rfs_rtems_file_close (rtems_libio_t* iop) {
 8021c50:	37 9c ff f0 	addi sp,sp,-16                                 
 8021c54:	5b 8b 00 10 	sw (sp+16),r11                                 
 8021c58:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8021c5c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8021c60:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
 8021c64:	28 2c 00 18 	lw r12,(r1+24)                                 
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021c68:	34 02 00 00 	mvi r2,0                                       
 8021c6c:	34 03 00 00 	mvi r3,0                                       
  rtems_rfs_file_system* fs = rtems_rfs_file_fs (file);               
 8021c70:	29 81 00 1c 	lw r1,(r12+28)                                 
 8021c74:	28 2b 00 98 	lw r11,(r1+152)                                
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021c78:	29 61 00 80 	lw r1,(r11+128)                                
 8021c7c:	28 21 00 00 	lw r1,(r1+0)                                   
 8021c80:	fb ff a0 a4 	calli 8009f10 <rtems_semaphore_obtain>         
 8021c84:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021c88:	5c 20 00 17 	bne r1,r0,8021ce4 <rtems_rfs_rtems_file_close+0x94><== NEVER TAKEN
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_CLOSE))       
    printf("rtems-rfs: file-close: handle:%p\n", file);               
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_file_close (fs, file);                               
 8021c8c:	b9 80 10 00 	mv r2,r12                                      
 8021c90:	b9 60 08 00 	mv r1,r11                                      
 8021c94:	fb ff f3 89 	calli 801eab8 <rtems_rfs_file_close>           
 8021c98:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 8021c9c:	4c 01 00 04 	bge r0,r1,8021cac <rtems_rfs_rtems_file_close+0x5c><== ALWAYS TAKEN
    rc = rtems_rfs_rtems_error ("file-close: file close", rc);        
 8021ca0:	f8 00 07 29 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021ca4:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
 8021ca8:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021cac:	29 6d 00 80 	lw r13,(r11+128)                               
  rtems_rfs_buffers_release (fs);                                     
 8021cb0:	b9 60 08 00 	mv r1,r11                                      
 8021cb4:	fb ff ec 11 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021cb8:	29 a1 00 00 	lw r1,(r13+0)                                  
 8021cbc:	fb ff a0 f1 	calli 800a080 <rtems_semaphore_release>        
 8021cc0:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021cc4:	5c 20 00 13 	bne r1,r0,8021d10 <rtems_rfs_rtems_file_close+0xc0><== NEVER TAKEN
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return rc;                                                          
}                                                                     
 8021cc8:	b9 80 08 00 	mv r1,r12                                      
 8021ccc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021cd0:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8021cd4:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8021cd8:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8021cdc:	37 9c 00 10 	addi sp,sp,16                                  
 8021ce0:	c3 a0 00 00 	ret                                            
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021ce4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021ce8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021cec:	fb ff c1 35 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021cf0:	44 20 ff e7 	be r1,r0,8021c8c <rtems_rfs_rtems_file_close+0x3c><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8021cf4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8021cf8:	fb ff d1 77 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021cfc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021d00:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021d04:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8021d08:	f8 00 0b e4 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021d0c:	e3 ff ff e0 	bi 8021c8c <rtems_rfs_rtems_file_close+0x3c>   <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021d10:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021d14:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021d18:	fb ff c1 2a 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021d1c:	44 20 ff eb 	be r1,r0,8021cc8 <rtems_rfs_rtems_file_close+0x78><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021d20:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021d24:	fb ff d1 6c 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021d28:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021d2c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021d30:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021d34:	f8 00 0b d9 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021d38:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8021d3c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021d40:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8021d44:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8021d48:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8021d4c:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8021d50:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080219dc <rtems_rfs_rtems_file_ftruncate>: * @return int */ static int rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop, off_t length) {
 80219dc:	37 9c ff f0 	addi sp,sp,-16                                 
 80219e0:	5b 8b 00 10 	sw (sp+16),r11                                 
 80219e4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80219e8:	5b 8d 00 08 	sw (sp+8),r13                                  
 80219ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
 80219f0:	28 2b 00 18 	lw r11,(r1+24)                                 
 * @return int                                                        
 */                                                                   
static int                                                            
rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop,                   
                                off_t          length)                
{                                                                     
 80219f4:	b8 40 60 00 	mv r12,r2                                      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 80219f8:	34 03 00 00 	mvi r3,0                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))      
    printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
 80219fc:	29 61 00 1c 	lw r1,(r11+28)                                 
 8021a00:	34 02 00 00 	mvi r2,0                                       
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021a04:	28 21 00 98 	lw r1,(r1+152)                                 
 8021a08:	28 21 00 80 	lw r1,(r1+128)                                 
 8021a0c:	28 21 00 00 	lw r1,(r1+0)                                   
 8021a10:	fb ff a1 40 	calli 8009f10 <rtems_semaphore_obtain>         
 8021a14:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021a18:	5c 20 00 1c 	bne r1,r0,8021a88 <rtems_rfs_rtems_file_ftruncate+0xac><== NEVER TAKEN
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))      
    printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  rc = rtems_rfs_file_set_size (file, length);                        
 8021a1c:	b9 80 08 00 	mv r1,r12                                      
 8021a20:	34 02 00 1f 	mvi r2,31                                      
 8021a24:	f8 00 55 03 	calli 8036e30 <__ashrsi3>                      
 8021a28:	b8 20 10 00 	mv r2,r1                                       
 8021a2c:	b9 80 18 00 	mv r3,r12                                      
 8021a30:	b9 60 08 00 	mv r1,r11                                      
 8021a34:	fb ff f6 78 	calli 801f414 <rtems_rfs_file_set_size>        
 8021a38:	b8 20 60 00 	mv r12,r1                                      
  if (rc)                                                             
 8021a3c:	44 20 00 04 	be r1,r0,8021a4c <rtems_rfs_rtems_file_ftruncate+0x70><== ALWAYS TAKEN
    rc = rtems_rfs_rtems_error ("file_ftruncate: set size", rc);      
 8021a40:	f8 00 07 c1 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021a44:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
 8021a48:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 8021a4c:	29 61 00 1c 	lw r1,(r11+28)                                 
 8021a50:	28 21 00 98 	lw r1,(r1+152)                                 
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021a54:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8021a58:	fb ff ec a8 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021a5c:	29 61 00 00 	lw r1,(r11+0)                                  
 8021a60:	fb ff a1 88 	calli 800a080 <rtems_semaphore_release>        
 8021a64:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021a68:	5c 20 00 13 	bne r1,r0,8021ab4 <rtems_rfs_rtems_file_ftruncate+0xd8><== NEVER TAKEN
                                                                      
  return rc;                                                          
}                                                                     
 8021a6c:	b9 80 08 00 	mv r1,r12                                      
 8021a70:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021a74:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8021a78:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8021a7c:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8021a80:	37 9c 00 10 	addi sp,sp,16                                  
 8021a84:	c3 a0 00 00 	ret                                            
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021a88:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021a8c:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021a90:	fb ff c1 cc 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021a94:	44 20 ff e2 	be r1,r0,8021a1c <rtems_rfs_rtems_file_ftruncate+0x40><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8021a98:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8021a9c:	fb ff d2 0e 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021aa0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021aa4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021aa8:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8021aac:	f8 00 0c 7b 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021ab0:	e3 ff ff db 	bi 8021a1c <rtems_rfs_rtems_file_ftruncate+0x40><== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021ab4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021ab8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021abc:	fb ff c1 c1 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021ac0:	44 20 ff eb 	be r1,r0,8021a6c <rtems_rfs_rtems_file_ftruncate+0x90><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021ac4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021ac8:	fb ff d2 03 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021acc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021ad0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021ad4:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021ad8:	f8 00 0c 70 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021adc:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8021ae0:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021ae4:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8021ae8:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8021aec:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8021af0:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8021af4:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08021af8 <rtems_rfs_rtems_file_lseek>: */ static off_t rtems_rfs_rtems_file_lseek (rtems_libio_t* iop, off_t offset, int whence) {
 8021af8:	37 9c ff e0 	addi sp,sp,-32                                 
 8021afc:	5b 8b 00 18 	sw (sp+24),r11                                 
 8021b00:	5b 8c 00 14 	sw (sp+20),r12                                 
 8021b04:	5b 8d 00 10 	sw (sp+16),r13                                 
 8021b08:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8021b0c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8021b10:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
 8021b14:	28 2c 00 18 	lw r12,(r1+24)                                 
 */                                                                   
static off_t                                                          
rtems_rfs_rtems_file_lseek (rtems_libio_t* iop,                       
                            off_t          offset,                    
                            int            whence)                    
{                                                                     
 8021b18:	b8 20 58 00 	mv r11,r1                                      
 8021b1c:	b8 40 78 00 	mv r15,r2                                      
  off_t                  new_offset;                                  
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
 8021b20:	29 81 00 1c 	lw r1,(r12+28)                                 
 */                                                                   
static off_t                                                          
rtems_rfs_rtems_file_lseek (rtems_libio_t* iop,                       
                            off_t          offset,                    
                            int            whence)                    
{                                                                     
 8021b24:	b8 60 70 00 	mv r14,r3                                      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021b28:	34 02 00 00 	mvi r2,0                                       
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021b2c:	28 21 00 98 	lw r1,(r1+152)                                 
 8021b30:	34 03 00 00 	mvi r3,0                                       
 8021b34:	28 21 00 80 	lw r1,(r1+128)                                 
 8021b38:	28 21 00 00 	lw r1,(r1+0)                                   
 8021b3c:	fb ff a0 f5 	calli 8009f10 <rtems_semaphore_obtain>         
 8021b40:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021b44:	5c 20 00 28 	bne r1,r0,8021be4 <rtems_rfs_rtems_file_lseek+0xec><== NEVER TAKEN
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
 8021b48:	b9 e0 10 00 	mv r2,r15                                      
 8021b4c:	b9 60 08 00 	mv r1,r11                                      
 8021b50:	b9 c0 18 00 	mv r3,r14                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
 8021b54:	29 6f 00 04 	lw r15,(r11+4)                                 
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
 8021b58:	f8 00 01 a9 	calli 80221fc <rtems_filesystem_default_lseek_file>
 8021b5c:	b8 20 68 00 	mv r13,r1                                      
  if (new_offset != -1)                                               
 8021b60:	34 01 ff ff 	mvi r1,-1                                      
 8021b64:	45 a1 00 0f 	be r13,r1,8021ba0 <rtems_rfs_rtems_file_lseek+0xa8>
  {                                                                   
    rtems_rfs_pos pos = iop->offset;                                  
 8021b68:	29 6e 00 04 	lw r14,(r11+4)                                 
 8021b6c:	34 02 00 1f 	mvi r2,31                                      
 8021b70:	b9 c0 08 00 	mv r1,r14                                      
 8021b74:	f8 00 54 af 	calli 8036e30 <__ashrsi3>                      
 8021b78:	b8 20 28 00 	mv r5,r1                                       
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
 8021b7c:	b8 20 10 00 	mv r2,r1                                       
 8021b80:	b9 c0 18 00 	mv r3,r14                                      
 8021b84:	b9 80 08 00 	mv r1,r12                                      
 8021b88:	37 84 00 1c 	addi r4,sp,28                                  
                                                                      
  old_offset = iop->offset;                                           
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
  if (new_offset != -1)                                               
  {                                                                   
    rtems_rfs_pos pos = iop->offset;                                  
 8021b8c:	5b 8e 00 20 	sw (sp+32),r14                                 
 8021b90:	5b 85 00 1c 	sw (sp+28),r5                                  
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
 8021b94:	fb ff f5 d9 	calli 801f2f8 <rtems_rfs_file_seek>            
 8021b98:	b8 20 70 00 	mv r14,r1                                      
                                                                      
    if (rc)                                                           
 8021b9c:	5c 20 00 28 	bne r1,r0,8021c3c <rtems_rfs_rtems_file_lseek+0x144><== NEVER TAKEN
      iop->offset = old_offset;                                       
      new_offset = -1;                                                
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 8021ba0:	29 81 00 1c 	lw r1,(r12+28)                                 
 8021ba4:	28 21 00 98 	lw r1,(r1+152)                                 
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021ba8:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8021bac:	fb ff ec 53 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021bb0:	29 61 00 00 	lw r1,(r11+0)                                  
 8021bb4:	fb ff a1 33 	calli 800a080 <rtems_semaphore_release>        
 8021bb8:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021bbc:	5c 20 00 15 	bne r1,r0,8021c10 <rtems_rfs_rtems_file_lseek+0x118><== NEVER TAKEN
                                                                      
  return new_offset;                                                  
}                                                                     
 8021bc0:	b9 a0 08 00 	mv r1,r13                                      
 8021bc4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021bc8:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8021bcc:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8021bd0:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8021bd4:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8021bd8:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8021bdc:	37 9c 00 20 	addi sp,sp,32                                  
 8021be0:	c3 a0 00 00 	ret                                            
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021be4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021be8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021bec:	fb ff c1 75 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021bf0:	44 20 ff d6 	be r1,r0,8021b48 <rtems_rfs_rtems_file_lseek+0x50><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8021bf4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8021bf8:	fb ff d1 b7 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021bfc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021c00:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021c04:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8021c08:	f8 00 0c 24 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021c0c:	e3 ff ff cf 	bi 8021b48 <rtems_rfs_rtems_file_lseek+0x50>   <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021c10:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021c14:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021c18:	fb ff c1 6a 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021c1c:	44 20 ff e9 	be r1,r0,8021bc0 <rtems_rfs_rtems_file_lseek+0xc8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021c20:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021c24:	fb ff d1 ac 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021c28:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021c2c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021c30:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021c34:	f8 00 0c 19 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021c38:	e3 ff ff e2 	bi 8021bc0 <rtems_rfs_rtems_file_lseek+0xc8>   <== NOT EXECUTED
    rtems_rfs_pos pos = iop->offset;                                  
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
                                                                      
    if (rc)                                                           
    {                                                                 
      rtems_rfs_rtems_error ("file_lseek: lseek", rc);                
 8021c3c:	f8 00 07 42 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021c40:	58 2e 00 00 	sw (r1+0),r14                                  <== NOT EXECUTED
      iop->offset = old_offset;                                       
 8021c44:	59 6f 00 04 	sw (r11+4),r15                                 <== NOT EXECUTED
      new_offset = -1;                                                
 8021c48:	34 0d ff ff 	mvi r13,-1                                     <== NOT EXECUTED
 8021c4c:	e3 ff ff d5 	bi 8021ba0 <rtems_rfs_rtems_file_lseek+0xa8>   <== NOT EXECUTED
                                                                      

08021d54 <rtems_rfs_rtems_file_open>: static int rtems_rfs_rtems_file_open (rtems_libio_t* iop, const char* pathname, int oflag, mode_t mode) {
 8021d54:	37 9c ff ec 	addi sp,sp,-20                                 
 8021d58:	5b 8b 00 10 	sw (sp+16),r11                                 
 8021d5c:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8021d60:	5b 8d 00 08 	sw (sp+8),r13                                  
 8021d64:	5b 9d 00 04 	sw (sp+4),ra                                   
 8021d68:	b8 20 60 00 	mv r12,r1                                      
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
 8021d6c:	28 21 00 20 	lw r1,(r1+32)                                  
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021d70:	34 02 00 00 	mvi r2,0                                       
 8021d74:	34 03 00 00 	mvi r3,0                                       
 8021d78:	28 2b 00 08 	lw r11,(r1+8)                                  
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021d7c:	29 61 00 80 	lw r1,(r11+128)                                
 8021d80:	28 21 00 00 	lw r1,(r1+0)                                   
 8021d84:	fb ff a0 63 	calli 8009f10 <rtems_semaphore_obtain>         
 8021d88:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021d8c:	5c 20 00 24 	bne r1,r0,8021e1c <rtems_rfs_rtems_file_open+0xc8><== NEVER TAKEN
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  ino = rtems_rfs_rtems_get_iop_ino (iop);                            
                                                                      
  rc = rtems_rfs_file_open (fs, ino, flags, &file);                   
 8021d90:	29 82 00 14 	lw r2,(r12+20)                                 
 8021d94:	b9 60 08 00 	mv r1,r11                                      
 8021d98:	34 03 00 00 	mvi r3,0                                       
 8021d9c:	37 84 00 14 	addi r4,sp,20                                  
 8021da0:	fb ff f2 38 	calli 801e680 <rtems_rfs_file_open>            
 8021da4:	b8 20 68 00 	mv r13,r1                                      
  if (rc > 0)                                                         
 8021da8:	4c 01 00 28 	bge r0,r1,8021e48 <rtems_rfs_rtems_file_open+0xf4><== ALWAYS TAKEN
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021dac:	29 6c 00 80 	lw r12,(r11+128)                               <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 8021db0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021db4:	fb ff eb d1 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021db8:	29 81 00 00 	lw r1,(r12+0)                                  <== NOT EXECUTED
 8021dbc:	fb ff a0 b1 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 8021dc0:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021dc4:	5c 20 00 0b 	bne r1,r0,8021df0 <rtems_rfs_rtems_file_open+0x9c><== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("file-open: open", rc);             
 8021dc8:	f8 00 06 df 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021dcc:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8021dd0:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_set_iop_file_handle (iop, file);                    
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
}                                                                     
 8021dd4:	b9 60 08 00 	mv r1,r11                                      
 8021dd8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8021ddc:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8021de0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8021de4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8021de8:	37 9c 00 14 	addi sp,sp,20                                  
 8021dec:	c3 a0 00 00 	ret                                            
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021df0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021df4:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021df8:	fb ff c0 f2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021dfc:	44 20 ff f3 	be r1,r0,8021dc8 <rtems_rfs_rtems_file_open+0x74><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021e00:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8021e04:	fb ff d1 34 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021e08:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021e0c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021e10:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021e14:	f8 00 0b a1 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021e18:	e3 ff ff ec 	bi 8021dc8 <rtems_rfs_rtems_file_open+0x74>    <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021e1c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021e20:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021e24:	fb ff c0 e7 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021e28:	44 20 ff da 	be r1,r0,8021d90 <rtems_rfs_rtems_file_open+0x3c><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8021e2c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8021e30:	fb ff d1 29 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021e34:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021e38:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021e3c:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8021e40:	f8 00 0b 96 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021e44:	e3 ff ff d3 	bi 8021d90 <rtems_rfs_rtems_file_open+0x3c>    <== NOT EXECUTED
  }                                                                   
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_OPEN))        
    printf("rtems-rfs: file-open: handle:%p\n", file);                
                                                                      
  rtems_rfs_rtems_set_iop_file_handle (iop, file);                    
 8021e48:	2b 82 00 14 	lw r2,(sp+20)                                  
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021e4c:	29 6d 00 80 	lw r13,(r11+128)                               
  rtems_rfs_buffers_release (fs);                                     
 8021e50:	b9 60 08 00 	mv r1,r11                                      
 8021e54:	59 82 00 18 	sw (r12+24),r2                                 
 8021e58:	fb ff eb a8 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021e5c:	29 a1 00 00 	lw r1,(r13+0)                                  
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
 8021e60:	34 0b 00 00 	mvi r11,0                                      
 8021e64:	fb ff a0 87 	calli 800a080 <rtems_semaphore_release>        
 8021e68:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021e6c:	44 20 ff da 	be r1,r0,8021dd4 <rtems_rfs_rtems_file_open+0x80><== ALWAYS TAKEN
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8021e70:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8021e74:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8021e78:	fb ff c0 d2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8021e7c:	44 20 ff d6 	be r1,r0,8021dd4 <rtems_rfs_rtems_file_open+0x80><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8021e80:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8021e84:	fb ff d1 14 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8021e88:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021e8c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021e90:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021e94:	f8 00 0b 81 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8021e98:	e3 ff ff cf 	bi 8021dd4 <rtems_rfs_rtems_file_open+0x80>    <== NOT EXECUTED
                                                                      

080217ac <rtems_rfs_rtems_file_read>: */ static ssize_t rtems_rfs_rtems_file_read (rtems_libio_t* iop, void* buffer, size_t count) {
 80217ac:	37 9c ff d8 	addi sp,sp,-40                                 
 80217b0:	5b 8b 00 24 	sw (sp+36),r11                                 
 80217b4:	5b 8c 00 20 	sw (sp+32),r12                                 
 80217b8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80217bc:	5b 8e 00 18 	sw (sp+24),r14                                 
 80217c0:	5b 8f 00 14 	sw (sp+20),r15                                 
 80217c4:	5b 90 00 10 	sw (sp+16),r16                                 
 80217c8:	5b 91 00 0c 	sw (sp+12),r17                                 
 80217cc:	5b 92 00 08 	sw (sp+8),r18                                  
 80217d0:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
 80217d4:	28 2b 00 18 	lw r11,(r1+24)                                 
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_read (rtems_libio_t* iop,                        
                           void*          buffer,                     
                           size_t         count)                      
{                                                                     
 80217d8:	b8 20 88 00 	mv r17,r1                                      
 80217dc:	b8 40 78 00 	mv r15,r2                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))        
    printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
 80217e0:	29 61 00 1c 	lw r1,(r11+28)                                 
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_read (rtems_libio_t* iop,                        
                           void*          buffer,                     
                           size_t         count)                      
{                                                                     
 80217e4:	b8 60 68 00 	mv r13,r3                                      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 80217e8:	34 02 00 00 	mvi r2,0                                       
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 80217ec:	28 21 00 98 	lw r1,(r1+152)                                 
 80217f0:	34 03 00 00 	mvi r3,0                                       
 80217f4:	28 21 00 80 	lw r1,(r1+128)                                 
 80217f8:	28 21 00 00 	lw r1,(r1+0)                                   
 80217fc:	fb ff a1 c5 	calli 8009f10 <rtems_semaphore_obtain>         
 8021800:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021804:	5c 20 00 68 	bne r1,r0,80219a4 <rtems_rfs_rtems_file_read+0x1f8><== NEVER TAKEN
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))        
    printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
 8021808:	2a 32 00 04 	lw r18,(r17+4)                                 
 802180c:	34 02 00 1f 	mvi r2,31                                      
 8021810:	ba 40 08 00 	mv r1,r18                                      
 8021814:	f8 00 55 87 	calli 8036e30 <__ashrsi3>                      
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
 8021818:	29 63 00 1c 	lw r3,(r11+28)                                 
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))        
    printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
 802181c:	b8 20 60 00 	mv r12,r1                                      
 8021820:	28 61 00 98 	lw r1,(r3+152)                                 
 8021824:	34 62 00 84 	addi r2,r3,132                                 
 8021828:	fb ff e6 b9 	calli 801b30c <rtems_rfs_block_get_size>       
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
 802182c:	54 2c 00 1a 	bgu r1,r12,8021894 <rtems_rfs_rtems_file_read+0xe8><== NEVER TAKEN
 8021830:	44 2c 00 5b 	be r1,r12,802199c <rtems_rfs_rtems_file_read+0x1f0><== ALWAYS TAKEN
 8021834:	34 01 00 00 	mvi r1,0                                       
                           size_t         count)                      
{                                                                     
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
  rtems_rfs_pos          pos;                                         
  uint8_t*               data = buffer;                               
  ssize_t                read = 0;                                    
 8021838:	34 0e 00 00 	mvi r14,0                                      
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (read >= 0)                                                      
    iop->offset = pos + read;                                         
 802183c:	b4 32 90 00 	add r18,r1,r18                                 
 8021840:	5a 32 00 04 	sw (r17+4),r18                                 
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 8021844:	29 61 00 1c 	lw r1,(r11+28)                                 
 8021848:	28 21 00 98 	lw r1,(r1+152)                                 
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 802184c:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8021850:	fb ff ed 2a 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021854:	29 61 00 00 	lw r1,(r11+0)                                  
 8021858:	fb ff a2 0a 	calli 800a080 <rtems_semaphore_release>        
 802185c:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021860:	5c 20 00 21 	bne r1,r0,80218e4 <rtems_rfs_rtems_file_read+0x138><== NEVER TAKEN
                                                                      
  return read;                                                        
}                                                                     
 8021864:	b9 c0 08 00 	mv r1,r14                                      
 8021868:	2b 9d 00 04 	lw ra,(sp+4)                                   
 802186c:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8021870:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8021874:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8021878:	2b 8e 00 18 	lw r14,(sp+24)                                 
 802187c:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8021880:	2b 90 00 10 	lw r16,(sp+16)                                 
 8021884:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8021888:	2b 92 00 08 	lw r18,(sp+8)                                  
 802188c:	37 9c 00 28 	addi sp,sp,40                                  
 8021890:	c3 a0 00 00 	ret                                            
                           void*          buffer,                     
                           size_t         count)                      
{                                                                     
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
  rtems_rfs_pos          pos;                                         
  uint8_t*               data = buffer;                               
 8021894:	34 0e 00 00 	mvi r14,0                                      
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
 8021898:	34 01 00 00 	mvi r1,0                                       
 802189c:	45 a0 ff e8 	be r13,r0,802183c <rtems_rfs_rtems_file_read+0x90><== NEVER TAKEN
    {                                                                 
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
 80218a0:	37 82 00 28 	addi r2,sp,40                                  
 80218a4:	b9 60 08 00 	mv r1,r11                                      
 80218a8:	34 03 00 01 	mvi r3,1                                       
 80218ac:	fb ff f5 64 	calli 801ee3c <rtems_rfs_file_io_start>        
 80218b0:	b8 20 60 00 	mv r12,r1                                      
      if (rc > 0)                                                     
 80218b4:	4c 01 00 17 	bge r0,r1,8021910 <rtems_rfs_rtems_file_read+0x164><== ALWAYS TAKEN
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
 80218b8:	f8 00 08 23 	calli 8023944 <__errno>                        <== NOT EXECUTED
 80218bc:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
 80218c0:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read >= 0)                                                      
    iop->offset = pos + read;                                         
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 80218c4:	29 61 00 1c 	lw r1,(r11+28)                                 <== NOT EXECUTED
 80218c8:	28 21 00 98 	lw r1,(r1+152)                                 <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 80218cc:	28 2b 00 80 	lw r11,(r1+128)                                <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 80218d0:	fb ff ed 0a 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 80218d4:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 80218d8:	fb ff a1 ea 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 80218dc:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 80218e0:	44 20 ff e1 	be r1,r0,8021864 <rtems_rfs_rtems_file_read+0xb8><== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80218e4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80218e8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80218ec:	fb ff c2 35 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80218f0:	44 20 ff dd 	be r1,r0,8021864 <rtems_rfs_rtems_file_read+0xb8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 80218f4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80218f8:	fb ff d2 77 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80218fc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8021900:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8021904:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8021908:	f8 00 0c e4 	calli 8024c98 <printf>                         <== NOT EXECUTED
 802190c:	e3 ff ff d6 	bi 8021864 <rtems_rfs_rtems_file_read+0xb8>    <== NOT EXECUTED
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
        break;                                                        
      }                                                               
                                                                      
      if (size == 0)                                                  
 8021910:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8021914:	45 80 00 2f 	be r12,r0,80219d0 <rtems_rfs_rtems_file_read+0x224>
        break;                                                        
                                                                      
      if (size > count)                                               
 8021918:	55 8d 00 1d 	bgu r12,r13,802198c <rtems_rfs_rtems_file_read+0x1e0>
 802191c:	c9 ac 68 00 	sub r13,r13,r12                                
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
 8021920:	29 61 00 0c 	lw r1,(r11+12)                                 
 8021924:	29 64 00 14 	lw r4,(r11+20)                                 
 8021928:	b9 80 18 00 	mv r3,r12                                      
 802192c:	28 22 00 1c 	lw r2,(r1+28)                                  
 8021930:	b9 e0 08 00 	mv r1,r15                                      
                                                                      
      data  += size;                                                  
      count -= size;                                                  
      read  += size;                                                  
 8021934:	b5 8e 70 00 	add r14,r12,r14                                
        break;                                                        
                                                                      
      if (size > count)                                               
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
 8021938:	b4 44 10 00 	add r2,r2,r4                                   
 802193c:	f8 00 0b ad 	calli 80247f0 <memcpy>                         
                                                                      
      data  += size;                                                  
      count -= size;                                                  
      read  += size;                                                  
                                                                      
      rc = rtems_rfs_file_io_end (file, size, true);                  
 8021940:	b9 60 08 00 	mv r1,r11                                      
 8021944:	b9 80 10 00 	mv r2,r12                                      
 8021948:	34 03 00 01 	mvi r3,1                                       
 802194c:	fb ff f5 c4 	calli 801f05c <rtems_rfs_file_io_end>          
 8021950:	b8 20 80 00 	mv r16,r1                                      
      if (rc > 0)                                                     
 8021954:	4c 01 00 05 	bge r0,r1,8021968 <rtems_rfs_rtems_file_read+0x1bc><== ALWAYS TAKEN
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-end", rc); 
 8021958:	f8 00 07 fb 	calli 8023944 <__errno>                        <== NOT EXECUTED
 802195c:	58 30 00 00 	sw (r1+0),r16                                  <== NOT EXECUTED
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
 8021960:	34 0e ff ff 	mvi r14,-1                                     <== NOT EXECUTED
 8021964:	e3 ff ff d8 	bi 80218c4 <rtems_rfs_rtems_file_read+0x118>   <== NOT EXECUTED
 8021968:	45 a0 00 1a 	be r13,r0,80219d0 <rtems_rfs_rtems_file_read+0x224>
    {                                                                 
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
 802196c:	37 82 00 28 	addi r2,sp,40                                  
 8021970:	b9 60 08 00 	mv r1,r11                                      
 8021974:	34 03 00 01 	mvi r3,1                                       
 8021978:	fb ff f5 31 	calli 801ee3c <rtems_rfs_file_io_start>        
      if (size > count)                                               
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
                                                                      
      data  += size;                                                  
 802197c:	b5 ec 78 00 	add r15,r15,r12                                
  {                                                                   
    while (count)                                                     
    {                                                                 
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
 8021980:	b8 20 60 00 	mv r12,r1                                      
      if (rc > 0)                                                     
 8021984:	4c 01 ff e3 	bge r0,r1,8021910 <rtems_rfs_rtems_file_read+0x164><== ALWAYS TAKEN
 8021988:	e3 ff ff cc 	bi 80218b8 <rtems_rfs_rtems_file_read+0x10c>   <== NOT EXECUTED
                                                                      
      if (size == 0)                                                  
        break;                                                        
                                                                      
      if (size > count)                                               
        size = count;                                                 
 802198c:	b9 a0 60 00 	mv r12,r13                                     
 8021990:	5b 8d 00 28 	sw (sp+40),r13                                 
 8021994:	34 0d 00 00 	mvi r13,0                                      
 8021998:	e3 ff ff e2 	bi 8021920 <rtems_rfs_rtems_file_read+0x174>   
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
 802199c:	54 52 ff be 	bgu r2,r18,8021894 <rtems_rfs_rtems_file_read+0xe8>
 80219a0:	e3 ff ff a5 	bi 8021834 <rtems_rfs_rtems_file_read+0x88>    
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80219a4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80219a8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80219ac:	fb ff c2 05 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80219b0:	44 20 ff 96 	be r1,r0,8021808 <rtems_rfs_rtems_file_read+0x5c><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 80219b4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80219b8:	fb ff d2 47 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80219bc:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80219c0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80219c4:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 80219c8:	f8 00 0c b4 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80219cc:	e3 ff ff 8f 	bi 8021808 <rtems_rfs_rtems_file_read+0x5c>    <== NOT EXECUTED
        break;                                                        
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (read >= 0)                                                      
 80219d0:	48 0e ff 9d 	bg r0,r14,8021844 <rtems_rfs_rtems_file_read+0x98><== NEVER TAKEN
 80219d4:	b9 c0 08 00 	mv r1,r14                                      
 80219d8:	e3 ff ff 99 	bi 802183c <rtems_rfs_rtems_file_read+0x90>    
                                                                      

08021e9c <rtems_rfs_rtems_file_write>: */ static ssize_t rtems_rfs_rtems_file_write (rtems_libio_t* iop, const void* buffer, size_t count) {
 8021e9c:	37 9c ff d4 	addi sp,sp,-44                                 
 8021ea0:	5b 8b 00 20 	sw (sp+32),r11                                 
 8021ea4:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8021ea8:	5b 8d 00 18 	sw (sp+24),r13                                 
 8021eac:	5b 8e 00 14 	sw (sp+20),r14                                 
 8021eb0:	5b 8f 00 10 	sw (sp+16),r15                                 
 8021eb4:	5b 90 00 0c 	sw (sp+12),r16                                 
 8021eb8:	5b 91 00 08 	sw (sp+8),r17                                  
 8021ebc:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
 8021ec0:	28 2b 00 18 	lw r11,(r1+24)                                 
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_write (rtems_libio_t* iop,                       
                            const void*    buffer,                    
                            size_t         count)                     
{                                                                     
 8021ec4:	b8 20 88 00 	mv r17,r1                                      
 8021ec8:	b8 40 80 00 	mv r16,r2                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))       
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
 8021ecc:	29 61 00 1c 	lw r1,(r11+28)                                 
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_write (rtems_libio_t* iop,                       
                            const void*    buffer,                    
                            size_t         count)                     
{                                                                     
 8021ed0:	b8 60 60 00 	mv r12,r3                                      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8021ed4:	34 02 00 00 	mvi r2,0                                       
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
 8021ed8:	28 21 00 98 	lw r1,(r1+152)                                 
 8021edc:	34 03 00 00 	mvi r3,0                                       
 8021ee0:	28 21 00 80 	lw r1,(r1+128)                                 
 8021ee4:	28 21 00 00 	lw r1,(r1+0)                                   
 8021ee8:	fb ff a0 0a 	calli 8009f10 <rtems_semaphore_obtain>         
 8021eec:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021ef0:	5c 20 00 7a 	bne r1,r0,80220d8 <rtems_rfs_rtems_file_write+0x23c><== NEVER TAKEN
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))       
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
 8021ef4:	2a 23 00 04 	lw r3,(r17+4)                                  
 8021ef8:	34 02 00 1f 	mvi r2,31                                      
 8021efc:	b8 60 08 00 	mv r1,r3                                       
 8021f00:	5b 83 00 28 	sw (sp+40),r3                                  
 8021f04:	f8 00 53 cb 	calli 8036e30 <__ashrsi3>                      
  file_size = rtems_rfs_file_size (file);                             
 8021f08:	29 63 00 1c 	lw r3,(r11+28)                                 
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))       
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
 8021f0c:	5b 81 00 24 	sw (sp+36),r1                                  
 8021f10:	28 61 00 98 	lw r1,(r3+152)                                 
 8021f14:	34 62 00 84 	addi r2,r3,132                                 
 8021f18:	fb ff e4 fd 	calli 801b30c <rtems_rfs_block_get_size>       
  file_size = rtems_rfs_file_size (file);                             
  if (pos > file_size)                                                
 8021f1c:	2b 84 00 24 	lw r4,(sp+36)                                  
 8021f20:	b8 20 28 00 	mv r5,r1                                       
 8021f24:	b8 40 30 00 	mv r6,r2                                       
 8021f28:	2b 83 00 28 	lw r3,(sp+40)                                  
 8021f2c:	54 85 00 42 	bgu r4,r5,8022034 <rtems_rfs_rtems_file_write+0x198><== NEVER TAKEN
 8021f30:	44 85 00 3e 	be r4,r5,8022028 <rtems_rfs_rtems_file_write+0x18c><== ALWAYS TAKEN
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
 8021f34:	54 a4 00 04 	bgu r5,r4,8021f44 <rtems_rfs_rtems_file_write+0xa8><== NOT EXECUTED
 8021f38:	5c a4 00 06 	bne r5,r4,8021f50 <rtems_rfs_rtems_file_write+0xb4><== NEVER TAKEN
 8021f3c:	54 c3 00 02 	bgu r6,r3,8021f44 <rtems_rfs_rtems_file_write+0xa8>
 8021f40:	e0 00 00 04 	bi 8021f50 <rtems_rfs_rtems_file_write+0xb4>   
 8021f44:	2a 21 00 08 	lw r1,(r17+8)                                  
 8021f48:	20 21 02 00 	andi r1,r1,0x200                               
 8021f4c:	5c 20 00 78 	bne r1,r0,802212c <rtems_rfs_rtems_file_write+0x290><== NEVER TAKEN
                            size_t         count)                     
{                                                                     
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
  rtems_rfs_pos          pos;                                         
  rtems_rfs_pos          file_size;                                   
  const uint8_t*         data = buffer;                               
 8021f50:	34 0f 00 00 	mvi r15,0                                      
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
 8021f54:	34 01 00 00 	mvi r1,0                                       
 8021f58:	5d 80 00 05 	bne r12,r0,8021f6c <rtems_rfs_rtems_file_write+0xd0><== ALWAYS TAKEN
 8021f5c:	e0 00 00 49 	bi 8022080 <rtems_rfs_rtems_file_write+0x1e4>  <== NOT EXECUTED
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
                                                                      
    data  += size;                                                    
    count -= size;                                                    
    write  += size;                                                   
 8021f60:	b5 ed 78 00 	add r15,r15,r13                                
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
 8021f64:	45 81 00 45 	be r12,r1,8022078 <rtems_rfs_rtems_file_write+0x1dc>
    if (size > count)                                                 
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
                                                                      
    data  += size;                                                    
 8021f68:	b6 0d 80 00 	add r16,r16,r13                                
                                                                      
  while (count)                                                       
  {                                                                   
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
 8021f6c:	37 82 00 2c 	addi r2,sp,44                                  
 8021f70:	b9 60 08 00 	mv r1,r11                                      
 8021f74:	34 03 00 00 	mvi r3,0                                       
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
  {                                                                   
    size_t size = count;                                              
 8021f78:	5b 8c 00 2c 	sw (sp+44),r12                                 
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
 8021f7c:	fb ff f3 b0 	calli 801ee3c <rtems_rfs_file_io_start>        
 8021f80:	b8 20 68 00 	mv r13,r1                                      
    }                                                                 
                                                                      
    if (size > count)                                                 
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
 8021f84:	ba 00 10 00 	mv r2,r16                                      
  while (count)                                                       
  {                                                                   
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
    if (rc)                                                           
 8021f88:	5c 20 00 66 	bne r1,r0,8022120 <rtems_rfs_rtems_file_write+0x284><== NEVER TAKEN
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
      break;                                                          
    }                                                                 
                                                                      
    if (size > count)                                                 
 8021f8c:	2b 83 00 2c 	lw r3,(sp+44)                                  
 8021f90:	51 83 00 03 	bgeu r12,r3,8021f9c <rtems_rfs_rtems_file_write+0x100>
      size = count;                                                   
 8021f94:	5b 8c 00 2c 	sw (sp+44),r12                                 
 8021f98:	b9 80 18 00 	mv r3,r12                                      
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
 8021f9c:	29 64 00 0c 	lw r4,(r11+12)                                 
 8021fa0:	29 61 00 14 	lw r1,(r11+20)                                 
 8021fa4:	28 84 00 1c 	lw r4,(r4+28)                                  
 8021fa8:	b4 81 08 00 	add r1,r4,r1                                   
 8021fac:	f8 00 0a 11 	calli 80247f0 <memcpy>                         
                                                                      
    data  += size;                                                    
 8021fb0:	2b 8d 00 2c 	lw r13,(sp+44)                                 
    count -= size;                                                    
    write  += size;                                                   
                                                                      
    rc = rtems_rfs_file_io_end (file, size, false);                   
 8021fb4:	b9 60 08 00 	mv r1,r11                                      
 8021fb8:	34 03 00 00 	mvi r3,0                                       
 8021fbc:	b9 a0 10 00 	mv r2,r13                                      
 8021fc0:	fb ff f4 27 	calli 801f05c <rtems_rfs_file_io_end>          
 8021fc4:	b8 20 70 00 	mv r14,r1                                      
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
                                                                      
    data  += size;                                                    
    count -= size;                                                    
 8021fc8:	c9 8d 60 00 	sub r12,r12,r13                                
    write  += size;                                                   
                                                                      
    rc = rtems_rfs_file_io_end (file, size, false);                   
    if (rc)                                                           
 8021fcc:	44 20 ff e5 	be r1,r0,8021f60 <rtems_rfs_rtems_file_write+0xc4><== ALWAYS TAKEN
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write close", rc);  
 8021fd0:	f8 00 06 5d 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8021fd4:	58 2e 00 00 	sw (r1+0),r14                                  <== NOT EXECUTED
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
 8021fd8:	34 0f ff ff 	mvi r15,-1                                     
  }                                                                   
                                                                      
  if (write >= 0)                                                     
    iop->offset = pos + write;                                        
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 8021fdc:	29 61 00 1c 	lw r1,(r11+28)                                 
 8021fe0:	28 21 00 98 	lw r1,(r1+152)                                 
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8021fe4:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8021fe8:	fb ff eb 44 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8021fec:	29 61 00 00 	lw r1,(r11+0)                                  
 8021ff0:	fb ff a0 24 	calli 800a080 <rtems_semaphore_release>        
 8021ff4:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8021ff8:	5c 20 00 2d 	bne r1,r0,80220ac <rtems_rfs_rtems_file_write+0x210><== NEVER TAKEN
                                                                      
  return write;                                                       
}                                                                     
 8021ffc:	b9 e0 08 00 	mv r1,r15                                      
 8022000:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8022004:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8022008:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 802200c:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8022010:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8022014:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8022018:	2b 90 00 0c 	lw r16,(sp+12)                                 
 802201c:	2b 91 00 08 	lw r17,(sp+8)                                  
 8022020:	37 9c 00 2c 	addi sp,sp,44                                  
 8022024:	c3 a0 00 00 	ret                                            
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
  file_size = rtems_rfs_file_size (file);                             
  if (pos > file_size)                                                
 8022028:	54 62 00 03 	bgu r3,r2,8022034 <rtems_rfs_rtems_file_write+0x198>
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
 802202c:	54 a4 ff c6 	bgu r5,r4,8021f44 <rtems_rfs_rtems_file_write+0xa8><== NEVER TAKEN
 8022030:	e3 ff ff c2 	bi 8021f38 <rtems_rfs_rtems_file_write+0x9c>   
    /*                                                                
     * If the iop position is past the physical end of the file we need to set
     * the file size to the new length before writing.  The           
     * rtems_rfs_file_io_end() will grow the file subsequently.       
     */                                                               
    rc = rtems_rfs_file_set_size (file, pos);                         
 8022034:	b9 60 08 00 	mv r1,r11                                      
 8022038:	b8 80 10 00 	mv r2,r4                                       
 802203c:	fb ff f4 f6 	calli 801f414 <rtems_rfs_file_set_size>        
 8022040:	b8 20 68 00 	mv r13,r1                                      
    if (rc)                                                           
 8022044:	44 20 00 30 	be r1,r0,8022104 <rtems_rfs_rtems_file_write+0x268>
  {                                                                   
    pos = file_size;                                                  
    rc = rtems_rfs_file_seek (file, pos, &pos);                       
    if (rc)                                                           
    {                                                                 
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
 8022048:	29 61 00 1c 	lw r1,(r11+28)                                 <== NOT EXECUTED
 802204c:	28 21 00 98 	lw r1,(r1+152)                                 <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8022050:	28 2b 00 80 	lw r11,(r1+128)                                <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
 8022054:	fb ff eb 29 	calli 801ccf8 <rtems_rfs_buffers_release>      <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8022058:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 802205c:	fb ff a0 09 	calli 800a080 <rtems_semaphore_release>        <== NOT EXECUTED
 8022060:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
 8022064:	5c 20 00 3c 	bne r1,r0,8022154 <rtems_rfs_rtems_file_write+0x2b8><== NOT EXECUTED
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
 8022068:	f8 00 06 37 	calli 8023944 <__errno>                        <== NOT EXECUTED
 802206c:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8022070:	34 0f ff ff 	mvi r15,-1                                     <== NOT EXECUTED
 8022074:	e3 ff ff e2 	bi 8021ffc <rtems_rfs_rtems_file_write+0x160>  <== NOT EXECUTED
      write = rtems_rfs_rtems_error ("file-write: write close", rc);  
      break;                                                          
    }                                                                 
  }                                                                   
                                                                      
  if (write >= 0)                                                     
 8022078:	49 8f ff d9 	bg r12,r15,8021fdc <rtems_rfs_rtems_file_write+0x140><== NEVER TAKEN
 802207c:	b9 e0 08 00 	mv r1,r15                                      
    iop->offset = pos + write;                                        
 8022080:	2b 82 00 28 	lw r2,(sp+40)                                  
 8022084:	b4 22 08 00 	add r1,r1,r2                                   
 8022088:	5a 21 00 04 	sw (r17+4),r1                                  
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
 802208c:	29 61 00 1c 	lw r1,(r11+28)                                 
 8022090:	28 21 00 98 	lw r1,(r1+152)                                 
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8022094:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8022098:	fb ff eb 18 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 802209c:	29 61 00 00 	lw r1,(r11+0)                                  
 80220a0:	fb ff 9f f8 	calli 800a080 <rtems_semaphore_release>        
 80220a4:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 80220a8:	44 20 ff d5 	be r1,r0,8021ffc <rtems_rfs_rtems_file_write+0x160><== ALWAYS TAKEN
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80220ac:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80220b0:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80220b4:	fb ff c0 43 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80220b8:	44 20 ff d1 	be r1,r0,8021ffc <rtems_rfs_rtems_file_write+0x160><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 80220bc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80220c0:	fb ff d0 85 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80220c4:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80220c8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80220cc:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 80220d0:	f8 00 0a f2 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80220d4:	e3 ff ff ca 	bi 8021ffc <rtems_rfs_rtems_file_write+0x160>  <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80220d8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80220dc:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80220e0:	fb ff c0 38 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80220e4:	44 20 ff 84 	be r1,r0,8021ef4 <rtems_rfs_rtems_file_write+0x58><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 80220e8:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 80220ec:	fb ff d0 7a 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 80220f0:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 80220f4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80220f8:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 80220fc:	f8 00 0a e7 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8022100:	e3 ff ff 7d 	bi 8021ef4 <rtems_rfs_rtems_file_write+0x58>   <== NOT EXECUTED
    {                                                                 
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
 8022104:	29 61 00 1c 	lw r1,(r11+28)                                 
 8022108:	2b 82 00 24 	lw r2,(sp+36)                                  
 802210c:	2b 83 00 28 	lw r3,(sp+40)                                  
 8022110:	28 21 00 98 	lw r1,(r1+152)                                 
 8022114:	35 64 00 10 	addi r4,r11,16                                 
 8022118:	fb ff e4 29 	calli 801b1bc <rtems_rfs_block_get_bpos>       
 802211c:	e3 ff ff 8d 	bi 8021f50 <rtems_rfs_rtems_file_write+0xb4>   
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
    if (rc)                                                           
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
 8022120:	f8 00 06 09 	calli 8023944 <__errno>                        
 8022124:	58 2d 00 00 	sw (r1+0),r13                                  
 8022128:	e3 ff ff ac 	bi 8021fd8 <rtems_rfs_rtems_file_write+0x13c>  
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
  {                                                                   
    pos = file_size;                                                  
    rc = rtems_rfs_file_seek (file, pos, &pos);                       
 802212c:	b9 60 08 00 	mv r1,r11                                      
 8022130:	b8 a0 10 00 	mv r2,r5                                       
 8022134:	b8 c0 18 00 	mv r3,r6                                       
 8022138:	37 84 00 24 	addi r4,sp,36                                  
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
  {                                                                   
    pos = file_size;                                                  
 802213c:	5b 85 00 24 	sw (sp+36),r5                                  
 8022140:	5b 86 00 28 	sw (sp+40),r6                                  
    rc = rtems_rfs_file_seek (file, pos, &pos);                       
 8022144:	fb ff f4 6d 	calli 801f2f8 <rtems_rfs_file_seek>            
 8022148:	b8 20 68 00 	mv r13,r1                                      
    if (rc)                                                           
 802214c:	44 20 ff 81 	be r1,r0,8021f50 <rtems_rfs_rtems_file_write+0xb4>
 8022150:	e3 ff ff be 	bi 8022048 <rtems_rfs_rtems_file_write+0x1ac>  <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8022154:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8022158:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 802215c:	fb ff c0 19 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8022160:	44 20 ff c2 	be r1,r0,8022068 <rtems_rfs_rtems_file_write+0x1cc><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8022164:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8022168:	fb ff d0 5b 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 802216c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8022170:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8022174:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8022178:	f8 00 0a c8 	calli 8024c98 <printf>                         <== NOT EXECUTED
 802217c:	e3 ff ff bb 	bi 8022068 <rtems_rfs_rtems_file_write+0x1cc>  <== NOT EXECUTED
                                                                      

08011bcc <rtems_rfs_rtems_fstat>: } int rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc, struct stat* buf) {
 8011bcc:	37 9c ff b4 	addi sp,sp,-76                                 
 8011bd0:	5b 8b 00 24 	sw (sp+36),r11                                 
 8011bd4:	5b 8c 00 20 	sw (sp+32),r12                                 
 8011bd8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8011bdc:	5b 8e 00 18 	sw (sp+24),r14                                 
 8011be0:	5b 8f 00 14 	sw (sp+20),r15                                 
 8011be4:	5b 90 00 10 	sw (sp+16),r16                                 
 8011be8:	5b 91 00 0c 	sw (sp+12),r17                                 
 8011bec:	5b 92 00 08 	sw (sp+8),r18                                  
 8011bf0:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8011bf4:	28 23 00 14 	lw r3,(r1+20)                                  
}                                                                     
                                                                      
int                                                                   
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
                       struct stat*                            buf)   
{                                                                     
 8011bf8:	b8 40 58 00 	mv r11,r2                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))             
    printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);     
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8011bfc:	28 22 00 08 	lw r2,(r1+8)                                   
                                                                      
int                                                                   
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
                       struct stat*                            buf)   
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8011c00:	28 6c 00 08 	lw r12,(r3+8)                                  
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))             
    printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);     
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8011c04:	37 8f 00 28 	addi r15,sp,40                                 
 8011c08:	b9 e0 18 00 	mv r3,r15                                      
 8011c0c:	b9 80 08 00 	mv r1,r12                                      
 8011c10:	34 04 00 01 	mvi r4,1                                       
 8011c14:	fb ff f8 66 	calli 800fdac <rtems_rfs_inode_open>           
 8011c18:	b8 20 68 00 	mv r13,r1                                      
  if (rc)                                                             
 8011c1c:	5c 20 00 ab 	bne r1,r0,8011ec8 <rtems_rfs_rtems_fstat+0x2fc><== NEVER TAKEN
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011c20:	2b 8e 00 34 	lw r14,(sp+52)                                 
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8011c24:	41 c4 00 02 	lbu r4,(r14+2)                                 
 8011c28:	41 d0 00 03 	lbu r16,(r14+3)                                
 8011c2c:	b4 84 20 00 	add r4,r4,r4                                   
 8011c30:	b4 84 20 00 	add r4,r4,r4                                   
 8011c34:	b4 84 20 00 	add r4,r4,r4                                   
 8011c38:	b4 84 20 00 	add r4,r4,r4                                   
 8011c3c:	b4 84 20 00 	add r4,r4,r4                                   
 8011c40:	b4 84 20 00 	add r4,r4,r4                                   
 8011c44:	b4 84 20 00 	add r4,r4,r4                                   
 8011c48:	b4 84 20 00 	add r4,r4,r4                                   
 8011c4c:	b8 90 20 00 	or r4,r4,r16                                   
    return rtems_rfs_rtems_error ("stat: opening inode", rc);         
  }                                                                   
                                                                      
  mode = rtems_rfs_inode_get_mode (&inode);                           
                                                                      
  if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))           
 8011c50:	20 90 ff ff 	andi r16,r4,0xffff                             
 8011c54:	22 01 f0 00 	andi r1,r16,0xf000                             
 8011c58:	64 22 60 00 	cmpei r2,r1,24576                              
 8011c5c:	64 21 20 00 	cmpei r1,r1,8192                               
 8011c60:	b8 41 08 00 	or r1,r2,r1                                    
 8011c64:	5c 2d 00 6b 	bne r1,r13,8011e10 <rtems_rfs_rtems_fstat+0x244><== NEVER TAKEN
    buf->st_rdev =                                                    
      rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
                                   rtems_rfs_inode_get_block (&inode, 1));
  }                                                                   
                                                                      
  buf->st_dev     = rtems_rfs_fs_device (fs);                         
 8011c68:	29 8d 00 10 	lw r13,(r12+16)                                
 8011c6c:	34 02 00 1f 	mvi r2,31                                      
 8011c70:	b9 a0 08 00 	mv r1,r13                                      
 8011c74:	f8 00 94 6f 	calli 8036e30 <__ashrsi3>                      
 8011c78:	59 61 00 00 	sw (r11+0),r1                                  
  buf->st_ino     = rtems_rfs_inode_ino (&inode);                     
 8011c7c:	2b 81 00 30 	lw r1,(sp+48)                                  
    buf->st_rdev =                                                    
      rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
                                   rtems_rfs_inode_get_block (&inode, 1));
  }                                                                   
                                                                      
  buf->st_dev     = rtems_rfs_fs_device (fs);                         
 8011c80:	59 6d 00 04 	sw (r11+4),r13                                 
  buf->st_ino     = rtems_rfs_inode_ino (&inode);                     
 8011c84:	59 61 00 08 	sw (r11+8),r1                                  
  buf->st_mode    = rtems_rfs_rtems_mode (mode);                      
 8011c88:	ba 00 08 00 	mv r1,r16                                      
 8011c8c:	f8 00 01 4c 	calli 80121bc <rtems_rfs_rtems_mode>           
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011c90:	2b 8d 00 34 	lw r13,(sp+52)                                 
                                   rtems_rfs_inode_get_block (&inode, 1));
  }                                                                   
                                                                      
  buf->st_dev     = rtems_rfs_fs_device (fs);                         
  buf->st_ino     = rtems_rfs_inode_ino (&inode);                     
  buf->st_mode    = rtems_rfs_rtems_mode (mode);                      
 8011c94:	59 61 00 0c 	sw (r11+12),r1                                 
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 8011c98:	34 02 00 18 	mvi r2,24                                      
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8011c9c:	41 a4 00 00 	lbu r4,(r13+0)                                 
 8011ca0:	41 a1 00 01 	lbu r1,(r13+1)                                 
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 8011ca4:	35 b0 00 04 	addi r16,r13,4                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8011ca8:	b4 84 20 00 	add r4,r4,r4                                   
 8011cac:	b4 84 20 00 	add r4,r4,r4                                   
 8011cb0:	b4 84 20 00 	add r4,r4,r4                                   
 8011cb4:	b4 84 20 00 	add r4,r4,r4                                   
 8011cb8:	b4 84 20 00 	add r4,r4,r4                                   
 8011cbc:	b4 84 20 00 	add r4,r4,r4                                   
 8011cc0:	b4 84 20 00 	add r4,r4,r4                                   
 8011cc4:	b4 84 20 00 	add r4,r4,r4                                   
 8011cc8:	b8 81 20 00 	or r4,r4,r1                                    
  if (links == 0xffff)                                                
    links = 0;                                                        
 8011ccc:	38 01 ff ff 	mvu r1,0xffff                                  
 8011cd0:	fc 81 08 00 	cmpne r1,r4,r1                                 
 8011cd4:	c8 01 08 00 	sub r1,r0,r1                                   
 8011cd8:	a0 81 20 00 	and r4,r4,r1                                   
  buf->st_nlink   = rtems_rfs_inode_get_links (&inode);               
 8011cdc:	0d 64 00 10 	sh (r11+16),r4                                 
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
 8011ce0:	41 a4 00 06 	lbu r4,(r13+6)                                 
 8011ce4:	41 a1 00 07 	lbu r1,(r13+7)                                 
 8011ce8:	b4 84 20 00 	add r4,r4,r4                                   
 8011cec:	b4 84 20 00 	add r4,r4,r4                                   
 8011cf0:	b4 84 20 00 	add r4,r4,r4                                   
 8011cf4:	b4 84 20 00 	add r4,r4,r4                                   
 8011cf8:	b4 84 20 00 	add r4,r4,r4                                   
 8011cfc:	b4 84 20 00 	add r4,r4,r4                                   
 8011d00:	b4 84 20 00 	add r4,r4,r4                                   
 8011d04:	b4 84 20 00 	add r4,r4,r4                                   
 8011d08:	b8 81 20 00 	or r4,r4,r1                                    
  buf->st_uid     = rtems_rfs_inode_get_uid (&inode);                 
 8011d0c:	0d 64 00 12 	sh (r11+18),r4                                 
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
 8011d10:	41 a1 00 04 	lbu r1,(r13+4)                                 
 8011d14:	41 ae 00 07 	lbu r14,(r13+7)                                
 8011d18:	f8 00 94 1f 	calli 8036d94 <__ashlsi3>                      
 8011d1c:	b9 c1 70 00 	or r14,r14,r1                                  
 8011d20:	42 01 00 01 	lbu r1,(r16+1)                                 
 8011d24:	34 02 00 10 	mvi r2,16                                      
 8011d28:	f8 00 94 1b 	calli 8036d94 <__ashlsi3>                      
 8011d2c:	41 a4 00 06 	lbu r4,(r13+6)                                 
 8011d30:	b9 c1 08 00 	or r1,r14,r1                                   
 8011d34:	34 02 00 10 	mvi r2,16                                      
 8011d38:	b4 84 20 00 	add r4,r4,r4                                   
 8011d3c:	b4 84 20 00 	add r4,r4,r4                                   
 8011d40:	b4 84 20 00 	add r4,r4,r4                                   
 8011d44:	b4 84 20 00 	add r4,r4,r4                                   
 8011d48:	b4 84 20 00 	add r4,r4,r4                                   
 8011d4c:	b4 84 20 00 	add r4,r4,r4                                   
 8011d50:	b4 84 20 00 	add r4,r4,r4                                   
 8011d54:	b4 84 20 00 	add r4,r4,r4                                   
 8011d58:	b8 24 08 00 	or r1,r1,r4                                    
 8011d5c:	fb ff be 73 	calli 8001728 <__lshrsi3>                      
                                                                      
  /*                                                                  
   * Need to check is the ino is an open file. If so we take the values from
   * the open file rather than the inode.                             
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
 8011d60:	2b 82 00 30 	lw r2,(sp+48)                                  
 8011d64:	0d 61 00 14 	sh (r11+20),r1                                 
 8011d68:	b9 80 08 00 	mv r1,r12                                      
 8011d6c:	f8 00 36 88 	calli 801f78c <rtems_rfs_file_get_shared>      
 8011d70:	b8 20 20 00 	mv r4,r1                                       
                                                                      
  if (shared)                                                         
 8011d74:	44 20 00 59 	be r1,r0,8011ed8 <rtems_rfs_rtems_fstat+0x30c> 
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
 8011d78:	28 26 00 8c 	lw r6,(r1+140)                                 
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
 8011d7c:	28 25 00 90 	lw r5,(r1+144)                                 
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
 8011d80:	28 23 00 94 	lw r3,(r1+148)                                 
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
 8011d84:	29 62 00 0c 	lw r2,(r11+12)                                 
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
 8011d88:	28 21 00 84 	lw r1,(r1+132)                                 
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
                                                                      
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
 8011d8c:	59 66 00 24 	sw (r11+36),r6                                 
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
 8011d90:	59 65 00 2c 	sw (r11+44),r5                                 
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
 8011d94:	59 61 00 40 	sw (r11+64),r1                                 
                                                                      
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
 8011d98:	59 63 00 34 	sw (r11+52),r3                                 
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
 8011d9c:	20 42 f0 00 	andi r2,r2,0xf000                              
 8011da0:	38 01 a0 00 	mvu r1,0xa000                                  
 8011da4:	44 41 00 46 	be r2,r1,8011ebc <rtems_rfs_rtems_fstat+0x2f0> <== NEVER TAKEN
 */                                                                   
static inline rtems_rfs_pos                                           
rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs,            
                                rtems_rfs_file_shared* shared)        
{                                                                     
  return rtems_rfs_block_get_size (fs, &shared->size);                
 8011da8:	b9 80 08 00 	mv r1,r12                                      
 8011dac:	34 82 00 84 	addi r2,r4,132                                 
 8011db0:	f8 00 25 57 	calli 801b30c <rtems_rfs_block_get_size>       
      buf->st_size = rtems_rfs_file_shared_get_block_offset (shared); 
    else                                                              
      buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);     
 8011db4:	59 62 00 20 	sw (r11+32),r2                                 
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
 8011db8:	29 83 00 08 	lw r3,(r12+8)                                  
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8011dbc:	b9 80 08 00 	mv r1,r12                                      
 8011dc0:	b9 e0 10 00 	mv r2,r15                                      
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
 8011dc4:	59 63 00 3c 	sw (r11+60),r3                                 
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8011dc8:	fb ff f8 93 	calli 8010014 <rtems_rfs_inode_close>          
 8011dcc:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("stat: closing inode", rc);         
  }                                                                   
                                                                      
  return 0;                                                           
 8011dd0:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
 8011dd4:	4c 0b 00 04 	bge r0,r11,8011de4 <rtems_rfs_rtems_fstat+0x218><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("stat: closing inode", rc);         
 8011dd8:	f8 00 46 db 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011ddc:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8011de0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8011de4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011de8:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8011dec:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8011df0:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8011df4:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8011df8:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8011dfc:	2b 90 00 10 	lw r16,(sp+16)                                 
 8011e00:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8011e04:	2b 92 00 08 	lw r18,(sp+8)                                  
 8011e08:	37 9c 00 4c 	addi sp,sp,76                                  
 8011e0c:	c3 a0 00 00 	ret                                            
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
 8011e10:	35 cd 00 1c 	addi r13,r14,28                                <== NOT EXECUTED
 8011e14:	41 a1 00 04 	lbu r1,(r13+4)                                 <== NOT EXECUTED
 8011e18:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011e1c:	f8 00 93 de 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8011e20:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
 8011e24:	41 a1 00 05 	lbu r1,(r13+5)                                 <== NOT EXECUTED
 8011e28:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8011e2c:	f8 00 93 da 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8011e30:	41 a6 00 06 	lbu r6,(r13+6)                                 <== NOT EXECUTED
 8011e34:	41 a3 00 07 	lbu r3,(r13+7)                                 <== NOT EXECUTED
 8011e38:	ba 21 10 00 	or r2,r17,r1                                   <== NOT EXECUTED
 8011e3c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e40:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e44:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e48:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e4c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e50:	41 c1 00 1c 	lbu r1,(r14+28)                                <== NOT EXECUTED
 8011e54:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e58:	41 b1 00 03 	lbu r17,(r13+3)                                <== NOT EXECUTED
 8011e5c:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e60:	b8 43 70 00 	or r14,r2,r3                                   <== NOT EXECUTED
 8011e64:	b4 c6 30 00 	add r6,r6,r6                                   <== NOT EXECUTED
 8011e68:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011e6c:	b9 c6 70 00 	or r14,r14,r6                                  <== NOT EXECUTED
 8011e70:	f8 00 93 c9 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8011e74:	ba 21 88 00 	or r17,r17,r1                                  <== NOT EXECUTED
 8011e78:	41 a1 00 01 	lbu r1,(r13+1)                                 <== NOT EXECUTED
 8011e7c:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8011e80:	f8 00 93 c5 	calli 8036d94 <__ashlsi3>                      <== NOT EXECUTED
 8011e84:	41 a5 00 02 	lbu r5,(r13+2)                                 <== NOT EXECUTED
 8011e88:	ba 21 08 00 	or r1,r17,r1                                   <== NOT EXECUTED
                                                                      
  mode = rtems_rfs_inode_get_mode (&inode);                           
                                                                      
  if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))           
  {                                                                   
    buf->st_rdev =                                                    
 8011e8c:	59 6e 00 1c 	sw (r11+28),r14                                <== NOT EXECUTED
 8011e90:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011e94:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011e98:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011e9c:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011ea0:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011ea4:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011ea8:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011eac:	b4 a5 28 00 	add r5,r5,r5                                   <== NOT EXECUTED
 8011eb0:	b8 25 28 00 	or r5,r1,r5                                    <== NOT EXECUTED
 8011eb4:	59 65 00 18 	sw (r11+24),r5                                 <== NOT EXECUTED
 8011eb8:	e3 ff ff 6c 	bi 8011c68 <rtems_rfs_rtems_fstat+0x9c>        <== NOT EXECUTED
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
      buf->st_size = rtems_rfs_file_shared_get_block_offset (shared); 
 8011ebc:	2c 81 00 8a 	lhu r1,(r4+138)                                <== NOT EXECUTED
 8011ec0:	59 61 00 20 	sw (r11+32),r1                                 <== NOT EXECUTED
 8011ec4:	e3 ff ff bd 	bi 8011db8 <rtems_rfs_rtems_fstat+0x1ec>       <== NOT EXECUTED
    printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);     
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("stat: opening inode", rc);         
 8011ec8:	f8 00 46 9f 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011ecc:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8011ed0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8011ed4:	e3 ff ff c4 	bi 8011de4 <rtems_rfs_rtems_fstat+0x218>       <== NOT EXECUTED
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011ed8:	2b 8d 00 34 	lw r13,(sp+52)                                 
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 8011edc:	34 02 00 18 	mvi r2,24                                      
 8011ee0:	41 a1 00 10 	lbu r1,(r13+16)                                
 8011ee4:	35 ae 00 10 	addi r14,r13,16                                
 8011ee8:	41 d2 00 03 	lbu r18,(r14+3)                                
 8011eec:	f8 00 93 aa 	calli 8036d94 <__ashlsi3>                      
 8011ef0:	34 02 00 10 	mvi r2,16                                      
 8011ef4:	ba 41 90 00 	or r18,r18,r1                                  
 8011ef8:	41 c1 00 01 	lbu r1,(r14+1)                                 
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 8011efc:	35 b1 00 14 	addi r17,r13,20                                
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 8011f00:	35 b0 00 18 	addi r16,r13,24                                
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 8011f04:	f8 00 93 a4 	calli 8036d94 <__ashlsi3>                      
 8011f08:	41 c4 00 02 	lbu r4,(r14+2)                                 
 8011f0c:	ba 41 08 00 	or r1,r18,r1                                   
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 8011f10:	34 02 00 18 	mvi r2,24                                      
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
 8011f14:	b4 84 20 00 	add r4,r4,r4                                   
 8011f18:	b4 84 20 00 	add r4,r4,r4                                   
 8011f1c:	b4 84 20 00 	add r4,r4,r4                                   
 8011f20:	b4 84 20 00 	add r4,r4,r4                                   
 8011f24:	b4 84 20 00 	add r4,r4,r4                                   
 8011f28:	b4 84 20 00 	add r4,r4,r4                                   
 8011f2c:	b4 84 20 00 	add r4,r4,r4                                   
 8011f30:	b4 84 20 00 	add r4,r4,r4                                   
 8011f34:	b8 24 20 00 	or r4,r1,r4                                    
    else                                                              
      buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);     
  }                                                                   
  else                                                                
  {                                                                   
    buf->st_atime   = rtems_rfs_inode_get_atime (&inode);             
 8011f38:	59 64 00 24 	sw (r11+36),r4                                 
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 8011f3c:	41 a1 00 14 	lbu r1,(r13+20)                                
 8011f40:	42 32 00 03 	lbu r18,(r17+3)                                
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 8011f44:	35 ae 00 0c 	addi r14,r13,12                                
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 8011f48:	f8 00 93 93 	calli 8036d94 <__ashlsi3>                      
 8011f4c:	ba 41 90 00 	or r18,r18,r1                                  
 8011f50:	42 21 00 01 	lbu r1,(r17+1)                                 
 8011f54:	34 02 00 10 	mvi r2,16                                      
 8011f58:	f8 00 93 8f 	calli 8036d94 <__ashlsi3>                      
 8011f5c:	42 24 00 02 	lbu r4,(r17+2)                                 
 8011f60:	ba 41 08 00 	or r1,r18,r1                                   
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 8011f64:	34 02 00 18 	mvi r2,24                                      
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
 8011f68:	b4 84 20 00 	add r4,r4,r4                                   
 8011f6c:	b4 84 20 00 	add r4,r4,r4                                   
 8011f70:	b4 84 20 00 	add r4,r4,r4                                   
 8011f74:	b4 84 20 00 	add r4,r4,r4                                   
 8011f78:	b4 84 20 00 	add r4,r4,r4                                   
 8011f7c:	b4 84 20 00 	add r4,r4,r4                                   
 8011f80:	b4 84 20 00 	add r4,r4,r4                                   
 8011f84:	b4 84 20 00 	add r4,r4,r4                                   
 8011f88:	b8 24 20 00 	or r4,r1,r4                                    
    buf->st_mtime   = rtems_rfs_inode_get_mtime (&inode);             
 8011f8c:	59 64 00 2c 	sw (r11+44),r4                                 
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 8011f90:	41 a1 00 18 	lbu r1,(r13+24)                                
 8011f94:	42 11 00 03 	lbu r17,(r16+3)                                
 8011f98:	f8 00 93 7f 	calli 8036d94 <__ashlsi3>                      
 8011f9c:	ba 21 88 00 	or r17,r17,r1                                  
 8011fa0:	42 01 00 01 	lbu r1,(r16+1)                                 
 8011fa4:	34 02 00 10 	mvi r2,16                                      
 8011fa8:	f8 00 93 7b 	calli 8036d94 <__ashlsi3>                      
 8011fac:	42 04 00 02 	lbu r4,(r16+2)                                 
 8011fb0:	ba 21 08 00 	or r1,r17,r1                                   
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 8011fb4:	34 02 00 18 	mvi r2,24                                      
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
 8011fb8:	b4 84 20 00 	add r4,r4,r4                                   
 8011fbc:	b4 84 20 00 	add r4,r4,r4                                   
 8011fc0:	b4 84 20 00 	add r4,r4,r4                                   
 8011fc4:	b4 84 20 00 	add r4,r4,r4                                   
 8011fc8:	b4 84 20 00 	add r4,r4,r4                                   
 8011fcc:	b4 84 20 00 	add r4,r4,r4                                   
 8011fd0:	b4 84 20 00 	add r4,r4,r4                                   
 8011fd4:	b4 84 20 00 	add r4,r4,r4                                   
 8011fd8:	b8 24 20 00 	or r4,r1,r4                                    
    buf->st_ctime   = rtems_rfs_inode_get_ctime (&inode);             
 8011fdc:	59 64 00 34 	sw (r11+52),r4                                 
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 8011fe0:	41 a1 00 0c 	lbu r1,(r13+12)                                
 8011fe4:	41 d0 00 03 	lbu r16,(r14+3)                                
 8011fe8:	f8 00 93 6b 	calli 8036d94 <__ashlsi3>                      
 8011fec:	ba 01 80 00 	or r16,r16,r1                                  
 8011ff0:	41 c1 00 01 	lbu r1,(r14+1)                                 
 8011ff4:	34 02 00 10 	mvi r2,16                                      
 8011ff8:	f8 00 93 67 	calli 8036d94 <__ashlsi3>                      
 8011ffc:	41 c4 00 02 	lbu r4,(r14+2)                                 
    buf->st_blocks  = rtems_rfs_inode_get_block_count (&inode);       
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
 8012000:	29 62 00 0c 	lw r2,(r11+12)                                 
 8012004:	ba 01 08 00 	or r1,r16,r1                                   
 8012008:	b4 84 20 00 	add r4,r4,r4                                   
 801200c:	b4 84 20 00 	add r4,r4,r4                                   
 8012010:	b4 84 20 00 	add r4,r4,r4                                   
 8012014:	b4 84 20 00 	add r4,r4,r4                                   
 8012018:	b4 84 20 00 	add r4,r4,r4                                   
 801201c:	b4 84 20 00 	add r4,r4,r4                                   
 8012020:	b4 84 20 00 	add r4,r4,r4                                   
 8012024:	b4 84 20 00 	add r4,r4,r4                                   
 8012028:	b8 24 20 00 	or r4,r1,r4                                    
  else                                                                
  {                                                                   
    buf->st_atime   = rtems_rfs_inode_get_atime (&inode);             
    buf->st_mtime   = rtems_rfs_inode_get_mtime (&inode);             
    buf->st_ctime   = rtems_rfs_inode_get_ctime (&inode);             
    buf->st_blocks  = rtems_rfs_inode_get_block_count (&inode);       
 801202c:	59 64 00 40 	sw (r11+64),r4                                 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
 8012030:	20 42 f0 00 	andi r2,r2,0xf000                              
 8012034:	38 01 a0 00 	mvu r1,0xa000                                  
 8012038:	5c 41 00 0e 	bne r2,r1,8012070 <rtems_rfs_rtems_fstat+0x4a4>
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 801203c:	41 a1 00 0a 	lbu r1,(r13+10)                                
 8012040:	41 a2 00 0b 	lbu r2,(r13+11)                                
 8012044:	b4 21 08 00 	add r1,r1,r1                                   
 8012048:	b4 21 08 00 	add r1,r1,r1                                   
 801204c:	b4 21 08 00 	add r1,r1,r1                                   
 8012050:	b4 21 08 00 	add r1,r1,r1                                   
 8012054:	b4 21 08 00 	add r1,r1,r1                                   
 8012058:	b4 21 08 00 	add r1,r1,r1                                   
 801205c:	b4 21 08 00 	add r1,r1,r1                                   
 8012060:	b4 21 08 00 	add r1,r1,r1                                   
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
 8012064:	b8 22 08 00 	or r1,r1,r2                                    
 8012068:	59 61 00 20 	sw (r11+32),r1                                 
 801206c:	e3 ff ff 53 	bi 8011db8 <rtems_rfs_rtems_fstat+0x1ec>       
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
 8012070:	b9 80 08 00 	mv r1,r12                                      
 8012074:	b9 e0 10 00 	mv r2,r15                                      
 8012078:	fb ff fa 0f 	calli 80108b4 <rtems_rfs_inode_get_size>       
 801207c:	59 62 00 20 	sw (r11+32),r2                                 
 8012080:	e3 ff ff 4e 	bi 8011db8 <rtems_rfs_rtems_fstat+0x1ec>       
                                                                      

080115a4 <rtems_rfs_rtems_initialise>: */ int rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry, const void* data) {
 80115a4:	37 9c ff d8 	addi sp,sp,-40                                 
 80115a8:	5b 8b 00 24 	sw (sp+36),r11                                 
 80115ac:	5b 8c 00 20 	sw (sp+32),r12                                 
 80115b0:	5b 8d 00 1c 	sw (sp+28),r13                                 
 80115b4:	5b 8e 00 18 	sw (sp+24),r14                                 
 80115b8:	5b 8f 00 14 	sw (sp+20),r15                                 
 80115bc:	5b 90 00 10 	sw (sp+16),r16                                 
 80115c0:	5b 91 00 0c 	sw (sp+12),r17                                 
 80115c4:	5b 92 00 08 	sw (sp+8),r18                                  
 80115c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80115cc:	b8 40 58 00 	mv r11,r2                                      
 80115d0:	b8 20 90 00 	mv r18,r1                                      
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
 80115d4:	44 40 00 72 	be r2,r0,801179c <rtems_rfs_rtems_initialise+0x1f8><== ALWAYS TAKEN
 80115d8:	78 0e 08 03 	mvhi r14,0x803                                 <== NOT EXECUTED
 80115dc:	78 0d 08 03 	mvhi r13,0x803                                 <== NOT EXECUTED
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
 80115e0:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
 80115e4:	78 0f 08 03 	mvhi r15,0x803                                 <== NOT EXECUTED
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
 80115e8:	34 11 00 05 	mvi r17,5                                      <== NOT EXECUTED
 80115ec:	34 10 00 00 	mvi r16,0                                      <== NOT EXECUTED
 80115f0:	39 ce 9d 4c 	ori r14,r14,0x9d4c                             <== NOT EXECUTED
 80115f4:	39 ad 9d 58 	ori r13,r13,0x9d58                             <== NOT EXECUTED
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
 80115f8:	39 8c 9d 68 	ori r12,r12,0x9d68                             <== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
 80115fc:	39 ef 9d 78 	ori r15,r15,0x9d78                             <== NOT EXECUTED
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
  {                                                                   
    printf ("options=%s\n", options);                                 
 8011600:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8011604:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8011608:	f8 00 4d a4 	calli 8024c98 <printf>                         <== NOT EXECUTED
    if (strncmp (options, "hold-bitmaps",                             
 801160c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8011610:	34 03 00 0c 	mvi r3,12                                      <== NOT EXECUTED
 8011614:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011618:	f8 00 52 ab 	calli 80260c4 <strncmp>                        <== NOT EXECUTED
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
 801161c:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8011620:	34 03 00 0e 	mvi r3,14                                      <== NOT EXECUTED
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
 8011624:	5c 20 00 22 	bne r1,r0,80116ac <rtems_rfs_rtems_initialise+0x108><== NOT EXECUTED
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
 8011628:	3a 10 00 01 	ori r16,r16,0x1                                <== NOT EXECUTED
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
    }                                                                 
    else                                                              
      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
                                                                      
    options = strchr (options, ',');                                  
 801162c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011630:	34 02 00 2c 	mvi r2,44                                      <== NOT EXECUTED
 8011634:	f8 00 50 6b 	calli 80257e0 <strchr>                         <== NOT EXECUTED
    if (options)                                                      
 8011638:	44 20 00 04 	be r1,r0,8011648 <rtems_rfs_rtems_initialise+0xa4><== NOT EXECUTED
    {                                                                 
      ++options;                                                      
      if (*options == '\0')                                           
 801163c:	40 22 00 01 	lbu r2,(r1+1)                                  <== NOT EXECUTED
      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
                                                                      
    options = strchr (options, ',');                                  
    if (options)                                                      
    {                                                                 
      ++options;                                                      
 8011640:	34 2b 00 01 	addi r11,r1,1                                  <== NOT EXECUTED
      if (*options == '\0')                                           
 8011644:	5c 40 ff ef 	bne r2,r0,8011600 <rtems_rfs_rtems_initialise+0x5c><== NOT EXECUTED
        options = NULL;                                               
    }                                                                 
  }                                                                   
                                                                      
  rtems = malloc (sizeof (rtems_rfs_rtems_private));                  
 8011648:	34 01 00 04 	mvi r1,4                                       
 801164c:	fb ff d7 66 	calli 80073e4 <malloc>                         
 8011650:	b8 20 58 00 	mv r11,r1                                      
  if (!rtems)                                                         
 8011654:	44 20 00 72 	be r1,r0,801181c <rtems_rfs_rtems_initialise+0x278><== NEVER TAKEN
    return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);  
                                                                      
  memset (rtems, 0, sizeof (rtems_rfs_rtems_private));                
 8011658:	58 20 00 00 	sw (r1+0),r0                                   
                                                                      
  rc = rtems_rfs_mutex_create (&rtems->access);                       
 801165c:	f8 00 3e 2c 	calli 8020f0c <rtems_rfs_mutex_create>         
 8011660:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 8011664:	4c 01 00 22 	bge r0,r1,80116ec <rtems_rfs_rtems_initialise+0x148><== ALWAYS TAKEN
  {                                                                   
    free (rtems);                                                     
 8011668:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801166c:	fb ff d5 6a 	calli 8006c14 <free>                           <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: cannot create mutex", rc);
 8011670:	f8 00 48 b5 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011674:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
 8011678:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return 0;                                                           
}                                                                     
 801167c:	b9 60 08 00 	mv r1,r11                                      
 8011680:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011684:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8011688:	2b 8c 00 20 	lw r12,(sp+32)                                 
 801168c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8011690:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8011694:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8011698:	2b 90 00 10 	lw r16,(sp+16)                                 
 801169c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80116a0:	2b 92 00 08 	lw r18,(sp+8)                                  
 80116a4:	37 9c 00 28 	addi sp,sp,40                                  
 80116a8:	c3 a0 00 00 	ret                                            
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
 80116ac:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80116b0:	f8 00 52 85 	calli 80260c4 <strncmp>                        <== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
 80116b4:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 80116b8:	34 03 00 0d 	mvi r3,13                                      <== NOT EXECUTED
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
 80116bc:	5c 20 00 03 	bne r1,r0,80116c8 <rtems_rfs_rtems_initialise+0x124><== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
 80116c0:	3a 10 00 02 	ori r16,r16,0x2                                <== NOT EXECUTED
 80116c4:	e3 ff ff da 	bi 801162c <rtems_rfs_rtems_initialise+0x88>   <== NOT EXECUTED
    else if (strncmp (options, "max-held-bufs",                       
 80116c8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80116cc:	f8 00 52 7e 	calli 80260c4 <strncmp>                        <== NOT EXECUTED
                      sizeof ("max-held-bufs") - 1) == 0)             
    {                                                                 
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
 80116d0:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 80116d4:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
 80116d8:	5c 20 00 2c 	bne r1,r0,8011788 <rtems_rfs_rtems_initialise+0x1e4><== NOT EXECUTED
                      sizeof ("max-held-bufs") - 1) == 0)             
    {                                                                 
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
 80116dc:	35 61 00 0e 	addi r1,r11,14                                 <== NOT EXECUTED
 80116e0:	f8 00 53 5f 	calli 802645c <strtoul>                        <== NOT EXECUTED
 80116e4:	b8 20 88 00 	mv r17,r1                                      <== NOT EXECUTED
 80116e8:	e3 ff ff d1 	bi 801162c <rtems_rfs_rtems_initialise+0x88>   <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 80116ec:	29 61 00 00 	lw r1,(r11+0)                                  
 80116f0:	34 02 00 00 	mvi r2,0                                       
 80116f4:	34 03 00 00 	mvi r3,0                                       
 80116f8:	fb ff e2 06 	calli 8009f10 <rtems_semaphore_obtain>         
 80116fc:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8011700:	5c 20 00 0f 	bne r1,r0,801173c <rtems_rfs_rtems_initialise+0x198><== NEVER TAKEN
    rtems_rfs_mutex_destroy (&rtems->access);                         
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: cannot lock access  mutex", rc);
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_open (mt_entry->dev, rtems, flags, max_held_buffers, &fs);
 8011704:	2a 41 00 38 	lw r1,(r18+56)                                 
 8011708:	b9 60 10 00 	mv r2,r11                                      
 801170c:	ba 00 18 00 	mv r3,r16                                      
 8011710:	ba 20 20 00 	mv r4,r17                                      
 8011714:	37 85 00 28 	addi r5,sp,40                                  
 8011718:	f8 00 38 42 	calli 801f820 <rtems_rfs_fs_open>              
 801171c:	b8 20 68 00 	mv r13,r1                                      
  if (rc)                                                             
 8011720:	44 2c 00 22 	be r1,r12,80117a8 <rtems_rfs_rtems_initialise+0x204><== ALWAYS TAKEN
  {                                                                   
    free (rtems);                                                     
 8011724:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011728:	fb ff d5 3b 	calli 8006c14 <free>                           <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: open", rc);            
 801172c:	f8 00 48 86 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011730:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8011734:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 8011738:	e3 ff ff d1 	bi 801167c <rtems_rfs_rtems_initialise+0xd8>   <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 801173c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8011740:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8011744:	f8 00 02 9f 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8011748:	44 20 00 07 	be r1,r0,8011764 <rtems_rfs_rtems_initialise+0x1c0><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 801174c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8011750:	f8 00 12 e1 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8011754:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8011758:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801175c:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8011760:	f8 00 4d 4e 	calli 8024c98 <printf>                         <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_mutex_lock (&rtems->access);                         
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_mutex_destroy (&rtems->access);                         
 8011764:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011768:	f8 00 3e 0f 	calli 8020fa4 <rtems_rfs_mutex_destroy>        <== NOT EXECUTED
    free (rtems);                                                     
 801176c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011770:	fb ff d5 29 	calli 8006c14 <free>                           <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: cannot lock access  mutex", rc);
 8011774:	f8 00 48 74 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011778:	34 02 00 05 	mvi r2,5                                       <== NOT EXECUTED
 801177c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011780:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 8011784:	e3 ff ff be 	bi 801167c <rtems_rfs_rtems_initialise+0xd8>   <== NOT EXECUTED
                      sizeof ("max-held-bufs") - 1) == 0)             
    {                                                                 
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
    }                                                                 
    else                                                              
      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
 8011788:	f8 00 48 6f 	calli 8023944 <__errno>                        <== NOT EXECUTED
 801178c:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8011790:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011794:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 8011798:	e3 ff ff b9 	bi 801167c <rtems_rfs_rtems_initialise+0xd8>   <== NOT EXECUTED
                            const void*                           data)
{                                                                     
  rtems_rfs_rtems_private* rtems;                                     
  rtems_rfs_file_system*   fs;                                        
  uint32_t                 flags = 0;                                 
  uint32_t                 max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;
 801179c:	34 11 00 05 	mvi r17,5                                      
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
                            const void*                           data)
{                                                                     
  rtems_rfs_rtems_private* rtems;                                     
  rtems_rfs_file_system*   fs;                                        
  uint32_t                 flags = 0;                                 
 80117a0:	34 10 00 00 	mvi r16,0                                      
 80117a4:	e3 ff ff a9 	bi 8011648 <rtems_rfs_rtems_initialise+0xa4>   
  {                                                                   
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
 80117a8:	2b 81 00 28 	lw r1,(sp+40)                                  
  mt_entry->ops                              = &rtems_rfs_ops;        
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
 80117ac:	2a 44 00 24 	lw r4,(r18+36)                                 
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
  mt_entry->ops                              = &rtems_rfs_ops;        
 80117b0:	78 03 08 03 	mvhi r3,0x803                                  
 80117b4:	38 63 9e 04 	ori r3,r3,0x9e04                               
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
 80117b8:	78 02 08 03 	mvhi r2,0x803                                  
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 80117bc:	28 2b 00 80 	lw r11,(r1+128)                                
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
  mt_entry->ops                              = &rtems_rfs_ops;        
 80117c0:	5a 43 00 0c 	sw (r18+12),r3                                 
  {                                                                   
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
 80117c4:	5a 41 00 08 	sw (r18+8),r1                                  
  mt_entry->ops                              = &rtems_rfs_ops;        
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
 80117c8:	38 42 c0 88 	ori r2,r2,0xc088                               
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
  mt_entry->ops                              = &rtems_rfs_ops;        
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
 80117cc:	34 03 00 01 	mvi r3,1                                       
 80117d0:	58 83 00 08 	sw (r4+8),r3                                   
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
 80117d4:	58 82 00 10 	sw (r4+16),r2                                  
  rtems_rfs_buffers_release (fs);                                     
 80117d8:	f8 00 2d 48 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 80117dc:	29 61 00 00 	lw r1,(r11+0)                                  
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return 0;                                                           
 80117e0:	34 0b 00 00 	mvi r11,0                                      
 80117e4:	fb ff e2 27 	calli 800a080 <rtems_semaphore_release>        
 80117e8:	b8 20 60 00 	mv r12,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 80117ec:	44 2b ff a4 	be r1,r11,801167c <rtems_rfs_rtems_initialise+0xd8><== ALWAYS TAKEN
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 80117f0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80117f4:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80117f8:	f8 00 02 72 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80117fc:	44 2b ff a0 	be r1,r11,801167c <rtems_rfs_rtems_initialise+0xd8><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8011800:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8011804:	f8 00 12 b4 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8011808:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 801180c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8011810:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8011814:	f8 00 4d 21 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8011818:	e3 ff ff 99 	bi 801167c <rtems_rfs_rtems_initialise+0xd8>   <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  rtems = malloc (sizeof (rtems_rfs_rtems_private));                  
  if (!rtems)                                                         
    return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);  
 801181c:	f8 00 48 4a 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011820:	34 02 00 0c 	mvi r2,12                                      <== NOT EXECUTED
 8011824:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 8011828:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 801182c:	e3 ff ff 94 	bi 801167c <rtems_rfs_rtems_initialise+0xd8>   <== NOT EXECUTED
                                                                      

08010a38 <rtems_rfs_rtems_link>: static int rtems_rfs_rtems_link (const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *targetloc, const char *name, size_t namelen) {
 8010a38:	37 9c ff f8 	addi sp,sp,-8                                  
 8010a3c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8010a40:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (targetloc);
 8010a44:	28 46 00 14 	lw r6,(r2+20)                                  
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))             
    printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
            parent, target);                                          
                                                                      
  rc = rtems_rfs_link (fs, name, namelen, parent, target, false);     
 8010a48:	28 27 00 08 	lw r7,(r1+8)                                   
 8010a4c:	28 45 00 08 	lw r5,(r2+8)                                   
 8010a50:	28 c1 00 08 	lw r1,(r6+8)                                   
 8010a54:	b8 60 10 00 	mv r2,r3                                       
 8010a58:	34 06 00 00 	mvi r6,0                                       
 8010a5c:	b8 80 18 00 	mv r3,r4                                       
 8010a60:	b8 e0 20 00 	mv r4,r7                                       
 8010a64:	f8 00 3e 1c 	calli 80202d4 <rtems_rfs_link>                 
 8010a68:	b8 20 58 00 	mv r11,r1                                      
  {                                                                   
    return rtems_rfs_rtems_error ("link: linking", rc);               
	}                                                                    
                                                                      
                                                                      
	return 0;                                                            
 8010a6c:	34 01 00 00 	mvi r1,0                                       
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))             
    printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
            parent, target);                                          
                                                                      
  rc = rtems_rfs_link (fs, name, namelen, parent, target, false);     
  if (rc)                                                             
 8010a70:	45 60 00 04 	be r11,r0,8010a80 <rtems_rfs_rtems_link+0x48>  <== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("link: linking", rc);               
 8010a74:	f8 00 4b b4 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010a78:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010a7c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
	}                                                                    
                                                                      
                                                                      
	return 0;                                                            
}                                                                     
 8010a80:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010a84:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8010a88:	37 9c 00 08 	addi sp,sp,8                                   
 8010a8c:	c3 a0 00 00 	ret                                            
                                                                      

08011ae8 <rtems_rfs_rtems_lock_by_mt_entry>: static void rtems_rfs_rtems_lock_by_mt_entry ( const rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8011ae8:	37 9c ff f8 	addi sp,sp,-8                                  
 8011aec:	5b 8b 00 08 	sw (sp+8),r11                                  
 8011af0:	5b 9d 00 04 	sw (sp+4),ra                                   
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
 8011af4:	28 21 00 08 	lw r1,(r1+8)                                   
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
 8011af8:	34 02 00 00 	mvi r2,0                                       
 8011afc:	34 03 00 00 	mvi r3,0                                       
 8011b00:	28 21 00 80 	lw r1,(r1+128)                                 
 8011b04:	28 21 00 00 	lw r1,(r1+0)                                   
 8011b08:	fb ff e1 02 	calli 8009f10 <rtems_semaphore_obtain>         
 8011b0c:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8011b10:	5c 20 00 05 	bne r1,r0,8011b24 <rtems_rfs_rtems_lock_by_mt_entry+0x3c><== NEVER TAKEN
)                                                                     
{                                                                     
  rtems_rfs_file_system* fs = mt_entry->fs_info;                      
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
}                                                                     
 8011b14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011b18:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8011b1c:	37 9c 00 08 	addi sp,sp,8                                   
 8011b20:	c3 a0 00 00 	ret                                            
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8011b24:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8011b28:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8011b2c:	f8 00 01 a5 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8011b30:	44 20 ff f9 	be r1,r0,8011b14 <rtems_rfs_rtems_lock_by_mt_entry+0x2c><== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
 8011b34:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011b38:	f8 00 11 e7 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8011b3c:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8011b40:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8011b44:	38 21 9d 88 	ori r1,r1,0x9d88                               <== NOT EXECUTED
 8011b48:	f8 00 4c 54 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8011b4c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8011b50:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8011b54:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8011b58:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08011124 <rtems_rfs_rtems_mknod>: rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, mode_t mode, dev_t dev) {
 8011124:	37 9c ff a8 	addi sp,sp,-88                                 
 8011128:	5b 8b 00 2c 	sw (sp+44),r11                                 
 801112c:	5b 8c 00 28 	sw (sp+40),r12                                 
 8011130:	5b 8d 00 24 	sw (sp+36),r13                                 
 8011134:	5b 8e 00 20 	sw (sp+32),r14                                 
 8011138:	5b 8f 00 1c 	sw (sp+28),r15                                 
 801113c:	5b 90 00 18 	sw (sp+24),r16                                 
 8011140:	5b 91 00 14 	sw (sp+20),r17                                 
 8011144:	5b 92 00 10 	sw (sp+16),r18                                 
 8011148:	5b 93 00 0c 	sw (sp+12),r19                                 
 801114c:	5b 9d 00 08 	sw (sp+8),ra                                   
 8011150:	b8 20 38 00 	mv r7,r1                                       
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (parentloc);
 8011154:	28 21 00 14 	lw r1,(r1+20)                                  
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
                       const char                             *name,  
                       size_t                                  namelen,
                       mode_t                                  mode,  
                       dev_t                                   dev)   
{                                                                     
 8011158:	b8 40 90 00 	mv r18,r2                                      
 801115c:	b8 60 88 00 	mv r17,r3                                      
 8011160:	b8 80 68 00 	mv r13,r4                                      
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (parentloc);
  rtems_rfs_ino           parent = rtems_rfs_rtems_get_pathloc_ino (parentloc);
 8011164:	28 f3 00 08 	lw r19,(r7+8)                                  
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
                       const char                             *name,  
                       size_t                                  namelen,
                       mode_t                                  mode,  
                       dev_t                                   dev)   
{                                                                     
 8011168:	b8 a0 78 00 	mv r15,r5                                      
 801116c:	b8 c0 70 00 	mv r14,r6                                      
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (parentloc);
 8011170:	28 2b 00 08 	lw r11,(r1+8)                                  
  uid_t                   uid;                                        
  gid_t                   gid;                                        
  int                     rc;                                         
                                                                      
#if defined(RTEMS_POSIX_API)                                          
  uid = geteuid ();                                                   
 8011174:	f8 00 15 49 	calli 8016698 <geteuid>                        
 8011178:	b8 20 80 00 	mv r16,r1                                      
  gid = getegid ();                                                   
 801117c:	f8 00 15 42 	calli 8016684 <getegid>                        
 8011180:	b8 20 60 00 	mv r12,r1                                      
  uid = 0;                                                            
  gid = 0;                                                            
#endif                                                                
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, namelen,             
                               rtems_rfs_rtems_imode (mode),          
 8011184:	b9 a0 08 00 	mv r1,r13                                      
 8011188:	f8 00 04 0b 	calli 80121b4 <rtems_rfs_rtems_imode>          
 801118c:	b8 20 28 00 	mv r5,r1                                       
#else                                                                 
  uid = 0;                                                            
  gid = 0;                                                            
#endif                                                                
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, namelen,             
 8011190:	b9 80 40 00 	mv r8,r12                                      
 8011194:	37 89 00 58 	addi r9,sp,88                                  
 8011198:	ba 60 10 00 	mv r2,r19                                      
 801119c:	b9 60 08 00 	mv r1,r11                                      
 80111a0:	ba 40 18 00 	mv r3,r18                                      
 80111a4:	ba 20 20 00 	mv r4,r17                                      
 80111a8:	34 06 00 01 	mvi r6,1                                       
 80111ac:	ba 00 38 00 	mv r7,r16                                      
 80111b0:	5b 89 00 04 	sw (sp+4),r9                                   
 80111b4:	fb ff fc d5 	calli 8010508 <rtems_rfs_inode_create>         
 80111b8:	b8 20 60 00 	mv r12,r1                                      
                               rtems_rfs_rtems_imode (mode),          
                               1, uid, gid, &ino);                    
  if (rc > 0)                                                         
 80111bc:	4c 01 00 10 	bge r0,r1,80111fc <rtems_rfs_rtems_mknod+0xd8> 
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode create", rc);         
 80111c0:	f8 00 49 e1 	calli 8023944 <__errno>                        
 80111c4:	58 2c 00 00 	sw (r1+0),r12                                  
 80111c8:	34 01 ff ff 	mvi r1,-1                                      
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 80111cc:	2b 9d 00 08 	lw ra,(sp+8)                                   
 80111d0:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 80111d4:	2b 8c 00 28 	lw r12,(sp+40)                                 
 80111d8:	2b 8d 00 24 	lw r13,(sp+36)                                 
 80111dc:	2b 8e 00 20 	lw r14,(sp+32)                                 
 80111e0:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 80111e4:	2b 90 00 18 	lw r16,(sp+24)                                 
 80111e8:	2b 91 00 14 	lw r17,(sp+20)                                 
 80111ec:	2b 92 00 10 	lw r18,(sp+16)                                 
 80111f0:	2b 93 00 0c 	lw r19,(sp+12)                                 
 80111f4:	37 9c 00 58 	addi sp,sp,88                                  
 80111f8:	c3 a0 00 00 	ret                                            
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode create", rc);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 80111fc:	2b 82 00 58 	lw r2,(sp+88)                                  
 8011200:	37 8c 00 30 	addi r12,sp,48                                 
 8011204:	b9 60 08 00 	mv r1,r11                                      
 8011208:	b9 80 18 00 	mv r3,r12                                      
 801120c:	34 04 00 01 	mvi r4,1                                       
 8011210:	fb ff fa e7 	calli 800fdac <rtems_rfs_inode_open>           
 8011214:	b8 20 80 00 	mv r16,r1                                      
  if (rc > 0)                                                         
 8011218:	4c 01 00 05 	bge r0,r1,801122c <rtems_rfs_rtems_mknod+0x108><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode open", rc);           
 801121c:	f8 00 49 ca 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011220:	58 30 00 00 	sw (r1+0),r16                                  <== NOT EXECUTED
 8011224:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8011228:	e3 ff ff e9 	bi 80111cc <rtems_rfs_rtems_mknod+0xa8>        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (S_ISDIR(mode) || S_ISREG(mode))                                 
 801122c:	21 ad f0 00 	andi r13,r13,0xf000                            
 8011230:	38 01 80 00 	mvu r1,0x8000                                  
 8011234:	e5 a1 08 00 	cmpe r1,r13,r1                                 
 8011238:	65 a2 40 00 	cmpei r2,r13,16384                             
 801123c:	b8 22 08 00 	or r1,r1,r2                                    
 8011240:	5c 20 00 33 	bne r1,r0,801130c <rtems_rfs_rtems_mknod+0x1e8><== ALWAYS TAKEN
  {                                                                   
  }                                                                   
  else if (S_ISCHR (mode) || S_ISBLK (mode))                          
 8011244:	65 a2 60 00 	cmpei r2,r13,24576                             <== NOT EXECUTED
 8011248:	65 ad 20 00 	cmpei r13,r13,8192                             <== NOT EXECUTED
 801124c:	b8 4d 68 00 	or r13,r2,r13                                  <== NOT EXECUTED
 8011250:	45 a1 00 39 	be r13,r1,8011334 <rtems_rfs_rtems_mknod+0x210><== NOT EXECUTED
 * @param bno The block number.                                       
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
 8011254:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011258:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801125c:	fb ff c1 33 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8011260:	2b 82 00 3c 	lw r2,(sp+60)                                  <== NOT EXECUTED
 8011264:	30 41 00 1c 	sb (r2+28),r1                                  <== NOT EXECUTED
 8011268:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 801126c:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 8011270:	fb ff c1 2e 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8011274:	01 e4 00 01 	srui r4,r15,1                                  <== NOT EXECUTED
 8011278:	2b 83 00 3c 	lw r3,(sp+60)                                  <== NOT EXECUTED
 801127c:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011280:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8011284:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011288:	30 61 00 1d 	sb (r3+29),r1                                  <== NOT EXECUTED
 801128c:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011290:	2b 83 00 3c 	lw r3,(sp+60)                                  <== NOT EXECUTED
 8011294:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8011298:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 801129c:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112a0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112a4:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112a8:	30 64 00 1e 	sb (r3+30),r4                                  <== NOT EXECUTED
 80112ac:	2b 83 00 3c 	lw r3,(sp+60)                                  <== NOT EXECUTED
 80112b0:	30 6f 00 1f 	sb (r3+31),r15                                 <== NOT EXECUTED
 80112b4:	fb ff c1 1d 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 80112b8:	2b 83 00 3c 	lw r3,(sp+60)                                  <== NOT EXECUTED
 80112bc:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 80112c0:	30 61 00 20 	sb (r3+32),r1                                  <== NOT EXECUTED
 80112c4:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 80112c8:	fb ff c1 18 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 80112cc:	01 c4 00 01 	srui r4,r14,1                                  <== NOT EXECUTED
 80112d0:	2b 82 00 3c 	lw r2,(sp+60)                                  <== NOT EXECUTED
 80112d4:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112d8:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112dc:	30 41 00 21 	sb (r2+33),r1                                  <== NOT EXECUTED
 80112e0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112e4:	2b 81 00 3c 	lw r1,(sp+60)                                  <== NOT EXECUTED
 80112e8:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112ec:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112f0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112f4:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 80112f8:	30 24 00 22 	sb (r1+34),r4                                  <== NOT EXECUTED
 80112fc:	2b 81 00 3c 	lw r1,(sp+60)                                  <== NOT EXECUTED
 8011300:	30 2e 00 23 	sb (r1+35),r14                                 <== NOT EXECUTED
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8011304:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 8011308:	33 81 00 40 	sb (sp+64),r1                                  <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 801130c:	b9 60 08 00 	mv r1,r11                                      
 8011310:	b9 80 10 00 	mv r2,r12                                      
 8011314:	fb ff fb 40 	calli 8010014 <rtems_rfs_inode_close>          
 8011318:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
 801131c:	34 01 00 00 	mvi r1,0                                       
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
 8011320:	4c 0b ff ab 	bge r0,r11,80111cc <rtems_rfs_rtems_mknod+0xa8><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
 8011324:	f8 00 49 88 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011328:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 801132c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8011330:	e3 ff ff a7 	bi 80111cc <rtems_rfs_rtems_mknod+0xa8>        <== NOT EXECUTED
    rtems_rfs_inode_set_block (&inode, 0, major);                     
    rtems_rfs_inode_set_block (&inode, 1, minor);                     
  }                                                                   
  else                                                                
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 8011334:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 8011338:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801133c:	fb ff fb 36 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
 8011340:	f8 00 49 81 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011344:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 8011348:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801134c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 8011350:	e3 ff ff 9f 	bi 80111cc <rtems_rfs_rtems_mknod+0xa8>        <== NOT EXECUTED
                                                                      

080114f8 <rtems_rfs_rtems_node_type>: * @return rtems_filesystem_node_types_t */ static rtems_filesystem_node_types_t rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc) {
 80114f8:	37 9c ff c8 	addi sp,sp,-56                                 
 80114fc:	5b 8b 00 10 	sw (sp+16),r11                                 
 8011500:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8011504:	5b 8d 00 08 	sw (sp+8),r13                                  
 8011508:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (pathloc);
 801150c:	28 23 00 14 	lw r3,(r1+20)                                  
  rtems_rfs_ino                 ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_filesystem_node_types_t type;                                 
  rtems_rfs_inode_handle        inode;                                
  int                           rc;                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8011510:	28 22 00 08 	lw r2,(r1+8)                                   
 8011514:	37 8c 00 14 	addi r12,sp,20                                 
 */                                                                   
                                                                      
static rtems_filesystem_node_types_t                                  
rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc)
{                                                                     
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (pathloc);
 8011518:	28 6d 00 08 	lw r13,(r3+8)                                  
  rtems_rfs_ino                 ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_filesystem_node_types_t type;                                 
  rtems_rfs_inode_handle        inode;                                
  int                           rc;                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 801151c:	34 04 00 01 	mvi r4,1                                       
 8011520:	b9 80 18 00 	mv r3,r12                                      
 8011524:	b9 a0 08 00 	mv r1,r13                                      
 8011528:	fb ff fa 21 	calli 800fdac <rtems_rfs_inode_open>           
 801152c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8011530:	4c 01 00 0b 	bge r0,r1,801155c <rtems_rfs_rtems_node_type+0x64><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
 8011534:	f8 00 49 04 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011538:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 801153c:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: closing inode", rc);    
  }                                                                   
                                                                      
  return type;                                                        
}                                                                     
 8011540:	b9 60 08 00 	mv r1,r11                                      
 8011544:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011548:	2b 8b 00 10 	lw r11,(sp+16)                                 
 801154c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8011550:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8011554:	37 9c 00 38 	addi sp,sp,56                                  
 8011558:	c3 a0 00 00 	ret                                            
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
  }                                                                   
                                                                      
  type = rtems_rfs_rtems_node_type_by_inode (&inode);                 
 801155c:	2b 81 00 20 	lw r1,(sp+32)                                  
 8011560:	fb ff ff c6 	calli 8011478 <rtems_rfs_rtems_node_type_by_inode.clone.23>
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8011564:	b9 80 10 00 	mv r2,r12                                      
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
  }                                                                   
                                                                      
  type = rtems_rfs_rtems_node_type_by_inode (&inode);                 
 8011568:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 801156c:	b9 a0 08 00 	mv r1,r13                                      
 8011570:	fb ff fa a9 	calli 8010014 <rtems_rfs_inode_close>          
 8011574:	b8 20 60 00 	mv r12,r1                                      
  if (rc > 0)                                                         
 8011578:	4c 01 ff f2 	bge r0,r1,8011540 <rtems_rfs_rtems_node_type+0x48><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: closing inode", rc);    
 801157c:	f8 00 48 f2 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8011580:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 8011584:	58 2c 00 00 	sw (r1+0),r12                                  <== NOT EXECUTED
  }                                                                   
                                                                      
  return type;                                                        
}                                                                     
 8011588:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 801158c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8011590:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 8011594:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8011598:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 801159c:	37 9c 00 38 	addi sp,sp,56                                  <== NOT EXECUTED
 80115a0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010bbc <rtems_rfs_rtems_readlink>: static ssize_t rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc, char* buf, size_t bufsize) {
 8010bbc:	37 9c ff f4 	addi sp,sp,-12                                 
 8010bc0:	5b 8b 00 08 	sw (sp+8),r11                                  
 8010bc4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (pathloc); 
 8010bc8:	28 24 00 14 	lw r4,(r1+20)                                  
                                                                      
static ssize_t                                                        
rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc,
                          char*                                   buf,
                          size_t                                  bufsize)
{                                                                     
 8010bcc:	b8 40 28 00 	mv r5,r2                                       
  int                     rc;                                         
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))         
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
 8010bd0:	28 22 00 08 	lw r2,(r1+8)                                   
 8010bd4:	28 81 00 08 	lw r1,(r4+8)                                   
 8010bd8:	b8 60 20 00 	mv r4,r3                                       
 8010bdc:	b8 a0 18 00 	mv r3,r5                                       
 8010be0:	37 85 00 0c 	addi r5,sp,12                                  
 8010be4:	f8 00 40 29 	calli 8020c88 <rtems_rfs_symlink_read>         
 8010be8:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 8010bec:	5c 20 00 06 	bne r1,r0,8010c04 <rtems_rfs_rtems_readlink+0x48><== NEVER TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("readlink: reading link", rc);      
  }                                                                   
                                                                      
  return (ssize_t) length;                                            
 8010bf0:	2b 81 00 0c 	lw r1,(sp+12)                                  
}                                                                     
 8010bf4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010bf8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8010bfc:	37 9c 00 0c 	addi sp,sp,12                                  
 8010c00:	c3 a0 00 00 	ret                                            
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("readlink: reading link", rc);      
 8010c04:	f8 00 4b 50 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010c08:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010c0c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return (ssize_t) length;                                            
}                                                                     
 8010c10:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010c14:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8010c18:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8010c1c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010a90 <rtems_rfs_rtems_rename>: rtems_rfs_rtems_rename(const rtems_filesystem_location_info_t* old_parent_loc, const rtems_filesystem_location_info_t* old_loc, const rtems_filesystem_location_info_t* new_parent_loc, const char* new_name, size_t new_name_len) {
 8010a90:	37 9c ff e8 	addi sp,sp,-24                                 <== NOT EXECUTED
 8010a94:	5b 8b 00 18 	sw (sp+24),r11                                 <== NOT EXECUTED
 8010a98:	5b 8c 00 14 	sw (sp+20),r12                                 <== NOT EXECUTED
 8010a9c:	5b 8d 00 10 	sw (sp+16),r13                                 <== NOT EXECUTED
 8010aa0:	5b 8e 00 0c 	sw (sp+12),r14                                 <== NOT EXECUTED
 8010aa4:	5b 8f 00 08 	sw (sp+8),r15                                  <== NOT EXECUTED
 8010aa8:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 8010aac:	b8 40 38 00 	mv r7,r2                                       <== NOT EXECUTED
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (old_loc); 
 8010ab0:	28 42 00 14 	lw r2,(r2+20)                                  <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Link to the inode before unlinking so the inode is not erased when
   * unlinked.                                                        
   */                                                                 
  rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
 8010ab4:	28 66 00 08 	lw r6,(r3+8)                                   <== NOT EXECUTED
  int                     rc;                                         
                                                                      
  old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);      
  new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);      
                                                                      
  ino  = rtems_rfs_rtems_get_pathloc_ino (old_loc);                   
 8010ab8:	28 eb 00 08 	lw r11,(r7+8)                                  <== NOT EXECUTED
                       const rtems_filesystem_location_info_t* old_loc,
                       const rtems_filesystem_location_info_t* new_parent_loc,
                       const char*                             new_name,
                       size_t                                  new_name_len)
{                                                                     
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (old_loc); 
 8010abc:	28 4c 00 08 	lw r12,(r2+8)                                  <== NOT EXECUTED
  rtems_rfs_ino           new_parent;                                 
  rtems_rfs_ino           ino;                                        
  uint32_t                doff;                                       
  int                     rc;                                         
                                                                      
  old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);      
 8010ac0:	28 2f 00 08 	lw r15,(r1+8)                                  <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Link to the inode before unlinking so the inode is not erased when
   * unlinked.                                                        
   */                                                                 
  rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
 8010ac4:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 8010ac8:	b8 a0 18 00 	mv r3,r5                                       <== NOT EXECUTED
 8010acc:	b8 c0 20 00 	mv r4,r6                                       <== NOT EXECUTED
 8010ad0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010ad4:	b9 60 28 00 	mv r5,r11                                      <== NOT EXECUTED
 8010ad8:	34 06 00 01 	mvi r6,1                                       <== NOT EXECUTED
                                                                      
  old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);      
  new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);      
                                                                      
  ino  = rtems_rfs_rtems_get_pathloc_ino (old_loc);                   
  doff = rtems_rfs_rtems_get_pathloc_doff (old_loc);                  
 8010adc:	28 ee 00 0c 	lw r14,(r7+12)                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Link to the inode before unlinking so the inode is not erased when
   * unlinked.                                                        
   */                                                                 
  rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
 8010ae0:	f8 00 3d fd 	calli 80202d4 <rtems_rfs_link>                 <== NOT EXECUTED
 8010ae4:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  if (rc)                                                             
 8010ae8:	44 20 00 0c 	be r1,r0,8010b18 <rtems_rfs_rtems_rename+0x88> <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: linking", rc);             
 8010aec:	f8 00 4b 96 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010af0:	58 2d 00 00 	sw (r1+0),r13                                  <== NOT EXECUTED
 8010af4:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010af8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010afc:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 8010b00:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 8010b04:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 8010b08:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 8010b0c:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 8010b10:	37 9c 00 18 	addi sp,sp,24                                  <== NOT EXECUTED
 8010b14:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Unlink all inodes even directories with the dir option as false because a
   * directory may not be empty.                                      
   */                                                                 
  rc = rtems_rfs_unlink (fs, old_parent, ino, doff,                   
 8010b18:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8010b1c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010b20:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8010b24:	b9 c0 20 00 	mv r4,r14                                      <== NOT EXECUTED
 8010b28:	34 05 00 02 	mvi r5,2                                       <== NOT EXECUTED
 8010b2c:	f8 00 3e 84 	calli 802053c <rtems_rfs_unlink>               <== NOT EXECUTED
 8010b30:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
  }                                                                   
                                                                      
  return 0;                                                           
 8010b34:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
   * Unlink all inodes even directories with the dir option as false because a
   * directory may not be empty.                                      
   */                                                                 
  rc = rtems_rfs_unlink (fs, old_parent, ino, doff,                   
                         rtems_rfs_unlink_dir_allowed);               
  if (rc)                                                             
 8010b38:	45 61 ff f0 	be r11,r1,8010af8 <rtems_rfs_rtems_rename+0x68><== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
 8010b3c:	f8 00 4b 82 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010b40:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010b44:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010b48:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010b4c:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 8010b50:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 8010b54:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 8010b58:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 8010b5c:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 8010b60:	37 9c 00 18 	addi sp,sp,24                                  <== NOT EXECUTED
 8010b64:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080120c4 <rtems_rfs_rtems_set_handlers>: */ bool rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc, rtems_rfs_inode_handle* inode) {
 80120c4:	37 9c ff fc 	addi sp,sp,-4                                  
 80120c8:	5b 9d 00 04 	sw (sp+4),ra                                   
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 80120cc:	28 43 00 0c 	lw r3,(r2+12)                                  
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
 80120d0:	34 04 40 00 	mvi r4,16384                                   
 80120d4:	40 62 00 02 	lbu r2,(r3+2)                                  
 80120d8:	40 63 00 03 	lbu r3,(r3+3)                                  
bool                                                                  
rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc,  
                              rtems_rfs_inode_handle*           inode)
{                                                                     
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
 80120dc:	58 20 00 10 	sw (r1+16),r0                                  
 80120e0:	b4 42 10 00 	add r2,r2,r2                                   
 80120e4:	b4 42 10 00 	add r2,r2,r2                                   
 80120e8:	b4 42 10 00 	add r2,r2,r2                                   
 80120ec:	b4 42 10 00 	add r2,r2,r2                                   
 80120f0:	b4 42 10 00 	add r2,r2,r2                                   
 80120f4:	b4 42 10 00 	add r2,r2,r2                                   
 80120f8:	b4 42 10 00 	add r2,r2,r2                                   
 80120fc:	b4 42 10 00 	add r2,r2,r2                                   
 8012100:	b8 43 10 00 	or r2,r2,r3                                    
 8012104:	20 42 ff ff 	andi r2,r2,0xffff                              
  if (RTEMS_RFS_S_ISDIR (mode))                                       
 8012108:	20 43 f0 00 	andi r3,r2,0xf000                              
 801210c:	44 64 00 17 	be r3,r4,8012168 <rtems_rfs_rtems_set_handlers+0xa4>
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
 8012110:	64 65 60 00 	cmpei r5,r3,24576                              
 8012114:	64 64 20 00 	cmpei r4,r3,8192                               
 8012118:	b8 a4 20 00 	or r4,r5,r4                                    
 801211c:	5c 80 00 0c 	bne r4,r0,801214c <rtems_rfs_rtems_set_handlers+0x88><== NEVER TAKEN
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
 8012120:	38 04 a0 00 	mvu r4,0xa000                                  
 8012124:	44 64 00 1f 	be r3,r4,80121a0 <rtems_rfs_rtems_set_handlers+0xdc>
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
  else if (RTEMS_RFS_S_ISREG (mode))                                  
 8012128:	38 04 80 00 	mvu r4,0x8000                                  
 801212c:	44 64 00 16 	be r3,r4,8012184 <rtems_rfs_rtems_set_handlers+0xc0><== ALWAYS TAKEN
    loc->handlers = rtems_rfs_rtems_handlers (file);                  
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
 8012130:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8012134:	38 21 9e 60 	ori r1,r1,0x9e60                               <== NOT EXECUTED
 8012138:	f8 00 4a d8 	calli 8024c98 <printf>                         <== NOT EXECUTED
    return false;                                                     
 801213c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  }                                                                   
  return true;                                                        
}                                                                     
 8012140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012144:	37 9c 00 04 	addi sp,sp,4                                   
 8012148:	c3 a0 00 00 	ret                                            
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
 801214c:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 8012150:	38 42 c0 5c 	ori r2,r2,0xc05c                               <== NOT EXECUTED
 8012154:	58 22 00 10 	sw (r1+16),r2                                  <== NOT EXECUTED
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
 8012158:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
}                                                                     
 801215c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8012160:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 8012164:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                              rtems_rfs_inode_handle*           inode)
{                                                                     
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
 8012168:	78 02 08 03 	mvhi r2,0x803                                  
 801216c:	38 42 c0 88 	ori r2,r2,0xc088                               
 8012170:	58 22 00 10 	sw (r1+16),r2                                  
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
 8012174:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8012178:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801217c:	37 9c 00 04 	addi sp,sp,4                                   
 8012180:	c3 a0 00 00 	ret                                            
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
  else if (RTEMS_RFS_S_ISREG (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (file);                  
 8012184:	78 02 08 03 	mvhi r2,0x803                                  
 8012188:	38 42 c0 b4 	ori r2,r2,0xc0b4                               
 801218c:	58 22 00 10 	sw (r1+16),r2                                  
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
 8012190:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 8012194:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8012198:	37 9c 00 04 	addi sp,sp,4                                   
 801219c:	c3 a0 00 00 	ret                                            
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
 80121a0:	78 02 08 03 	mvhi r2,0x803                                  
 80121a4:	38 42 9d d8 	ori r2,r2,0x9dd8                               
 80121a8:	58 22 00 10 	sw (r1+16),r2                                  
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
 80121ac:	34 01 00 01 	mvi r1,1                                       
 80121b0:	e3 ff ff e4 	bi 8012140 <rtems_rfs_rtems_set_handlers+0x7c> 
                                                                      

08010980 <rtems_rfs_rtems_statvfs>: * @return int */ static int rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc, struct statvfs* sb) {
 8010980:	37 9c ff ec 	addi sp,sp,-20                                 <== NOT EXECUTED
 8010984:	5b 8b 00 0c 	sw (sp+12),r11                                 <== NOT EXECUTED
 8010988:	5b 8c 00 08 	sw (sp+8),r12                                  <== NOT EXECUTED
 801098c:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8010990:	28 21 00 14 	lw r1,(r1+20)                                  <== NOT EXECUTED
 * @return int                                                        
 */                                                                   
static int                                                            
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
                         struct statvfs*                         sb)  
{                                                                     
 8010994:	b8 40 58 00 	mv r11,r2                                      <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
 8010998:	37 83 00 10 	addi r3,sp,16                                  <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
                         struct statvfs*                         sb)  
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 801099c:	28 2c 00 08 	lw r12,(r1+8)                                  <== NOT EXECUTED
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
 80109a0:	37 82 00 14 	addi r2,sp,20                                  <== NOT EXECUTED
 80109a4:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80109a8:	fb ff fc 96 	calli 800fc00 <rtems_rfs_group_usage>          <== NOT EXECUTED
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
 80109ac:	29 81 00 10 	lw r1,(r12+16)                                 <== NOT EXECUTED
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
 80109b0:	29 82 00 04 	lw r2,(r12+4)                                  <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
 80109b4:	29 83 00 14 	lw r3,(r12+20)                                 <== NOT EXECUTED
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
 80109b8:	28 27 00 20 	lw r7,(r1+32)                                  <== NOT EXECUTED
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
 80109bc:	28 26 00 1c 	lw r6,(r1+28)                                  <== NOT EXECUTED
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
 80109c0:	2b 81 00 14 	lw r1,(sp+20)                                  <== NOT EXECUTED
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
 80109c4:	29 88 00 08 	lw r8,(r12+8)                                  <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
 80109c8:	29 85 00 00 	lw r5,(r12+0)                                  <== NOT EXECUTED
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
 80109cc:	c8 41 10 00 	sub r2,r2,r1                                   <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
 80109d0:	2b 81 00 10 	lw r1,(sp+16)                                  <== NOT EXECUTED
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
  sb->f_namemax = rtems_rfs_fs_max_name (fs);                         
 80109d4:	29 84 00 1c 	lw r4,(r12+28)                                 <== NOT EXECUTED
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
 80109d8:	59 62 00 14 	sw (r11+20),r2                                 <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
 80109dc:	59 62 00 1c 	sw (r11+28),r2                                 <== NOT EXECUTED
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
 80109e0:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
 80109e4:	c8 61 08 00 	sub r1,r3,r1                                   <== NOT EXECUTED
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
 80109e8:	38 42 9d 48 	ori r2,r2,0x9d48                               <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
 80109ec:	59 61 00 24 	sw (r11+36),r1                                 <== NOT EXECUTED
  sb->f_favail  = sb->f_ffree;                                        
 80109f0:	59 61 00 28 	sw (r11+40),r1                                 <== NOT EXECUTED
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
 80109f4:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
 80109f8:	59 68 00 00 	sw (r11+0),r8                                  <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
 80109fc:	59 67 00 04 	sw (r11+4),r7                                  <== NOT EXECUTED
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
 8010a00:	59 61 00 2c 	sw (r11+44),r1                                 <== NOT EXECUTED
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
  sb->f_namemax = rtems_rfs_fs_max_name (fs);                         
                                                                      
  return 0;                                                           
}                                                                     
 8010a04:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
 8010a08:	59 60 00 08 	sw (r11+8),r0                                  <== NOT EXECUTED
 8010a0c:	59 66 00 0c 	sw (r11+12),r6                                 <== NOT EXECUTED
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
 8010a10:	59 60 00 10 	sw (r11+16),r0                                 <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
 8010a14:	59 60 00 18 	sw (r11+24),r0                                 <== NOT EXECUTED
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
 8010a18:	59 63 00 20 	sw (r11+32),r3                                 <== NOT EXECUTED
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
 8010a1c:	59 65 00 30 	sw (r11+48),r5                                 <== NOT EXECUTED
  sb->f_namemax = rtems_rfs_fs_max_name (fs);                         
 8010a20:	59 64 00 34 	sw (r11+52),r4                                 <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
 8010a24:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010a28:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8010a2c:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8010a30:	37 9c 00 14 	addi sp,sp,20                                  <== NOT EXECUTED
 8010a34:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010c20 <rtems_rfs_rtems_symlink>: static int rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc, const char* node_name, size_t node_name_len, const char* target) {
 8010c20:	37 9c ff e0 	addi sp,sp,-32                                 
 8010c24:	5b 8b 00 14 	sw (sp+20),r11                                 
 8010c28:	5b 8c 00 10 	sw (sp+16),r12                                 
 8010c2c:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8010c30:	5b 8e 00 08 	sw (sp+8),r14                                  
 8010c34:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
 8010c38:	28 25 00 14 	lw r5,(r1+20)                                  
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
 8010c3c:	28 2b 00 08 	lw r11,(r1+8)                                  
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
 8010c40:	b8 80 08 00 	mv r1,r4                                       
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
                         const char*                             node_name,
                         size_t                                  node_name_len,
                         const char*                             target)
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
 8010c44:	28 ae 00 08 	lw r14,(r5+8)                                  
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
 8010c48:	5b 82 00 20 	sw (sp+32),r2                                  
 8010c4c:	5b 83 00 1c 	sw (sp+28),r3                                  
 8010c50:	5b 84 00 18 	sw (sp+24),r4                                  
 8010c54:	f8 00 54 ed 	calli 8026008 <strlen>                         
 8010c58:	b8 20 68 00 	mv r13,r1                                      
                          geteuid(), getegid(), parent);              
 8010c5c:	f8 00 16 8f 	calli 8016698 <geteuid>                        
 8010c60:	b8 20 60 00 	mv r12,r1                                      
 8010c64:	f8 00 16 88 	calli 8016684 <getegid>                        
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
 8010c68:	2b 82 00 20 	lw r2,(sp+32)                                  
 8010c6c:	2b 83 00 1c 	lw r3,(sp+28)                                  
 8010c70:	2b 84 00 18 	lw r4,(sp+24)                                  
                          target, strlen (target),                    
                          geteuid(), getegid(), parent);              
 8010c74:	b8 20 38 00 	mv r7,r1                                       
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
 8010c78:	b9 60 40 00 	mv r8,r11                                      
 8010c7c:	b9 c0 08 00 	mv r1,r14                                      
 8010c80:	b9 a0 28 00 	mv r5,r13                                      
 8010c84:	b9 80 30 00 	mv r6,r12                                      
 8010c88:	f8 00 3f 47 	calli 80209a4 <rtems_rfs_symlink>              
 8010c8c:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("symlink: linking", rc);            
  }                                                                   
                                                                      
  return 0;                                                           
 8010c90:	34 01 00 00 	mvi r1,0                                       
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
                          geteuid(), getegid(), parent);              
  if (rc)                                                             
 8010c94:	45 60 00 04 	be r11,r0,8010ca4 <rtems_rfs_rtems_symlink+0x84><== ALWAYS TAKEN
  {                                                                   
    return rtems_rfs_rtems_error ("symlink: linking", rc);            
 8010c98:	f8 00 4b 2b 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010c9c:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010ca0:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010ca4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8010ca8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8010cac:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8010cb0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8010cb4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8010cb8:	37 9c 00 20 	addi sp,sp,32                                  
 8010cbc:	c3 a0 00 00 	ret                                            
                                                                      

08011b5c <rtems_rfs_rtems_unlock_by_mt_entry>: static void rtems_rfs_rtems_unlock_by_mt_entry ( const rtems_filesystem_mount_table_entry_t *mt_entry ) {
 8011b5c:	37 9c ff f8 	addi sp,sp,-8                                  
 8011b60:	5b 8b 00 08 	sw (sp+8),r11                                  
 8011b64:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_rfs_file_system* fs = mt_entry->fs_info;                      
 8011b68:	28 21 00 08 	lw r1,(r1+8)                                   
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
 8011b6c:	28 2b 00 80 	lw r11,(r1+128)                                
  rtems_rfs_buffers_release (fs);                                     
 8011b70:	f8 00 2c 62 	calli 801ccf8 <rtems_rfs_buffers_release>      
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
 8011b74:	29 61 00 00 	lw r1,(r11+0)                                  
 8011b78:	fb ff e1 42 	calli 800a080 <rtems_semaphore_release>        
 8011b7c:	b8 20 58 00 	mv r11,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 8011b80:	5c 20 00 05 	bne r1,r0,8011b94 <rtems_rfs_rtems_unlock_by_mt_entry+0x38><== NEVER TAKEN
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
}                                                                     
 8011b84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8011b88:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8011b8c:	37 9c 00 08 	addi sp,sp,8                                   
 8011b90:	c3 a0 00 00 	ret                                            
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
 8011b94:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8011b98:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 8011b9c:	f8 00 01 89 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8011ba0:	44 20 ff f9 	be r1,r0,8011b84 <rtems_rfs_rtems_unlock_by_mt_entry+0x28><== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
 8011ba4:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8011ba8:	f8 00 11 cb 	calli 80162d4 <rtems_status_text>              <== NOT EXECUTED
 8011bac:	b8 20 10 00 	mv r2,r1                                       <== NOT EXECUTED
 8011bb0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8011bb4:	38 21 9d b0 	ori r1,r1,0x9db0                               <== NOT EXECUTED
 8011bb8:	f8 00 4c 38 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8011bbc:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8011bc0:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8011bc4:	37 9c 00 08 	addi sp,sp,8                                   <== NOT EXECUTED
 8011bc8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08010cc0 <rtems_rfs_rtems_utime>: static int rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc, time_t atime, time_t mtime) {
 8010cc0:	37 9c ff c0 	addi sp,sp,-64                                 <== NOT EXECUTED
 8010cc4:	5b 8b 00 18 	sw (sp+24),r11                                 <== NOT EXECUTED
 8010cc8:	5b 8c 00 14 	sw (sp+20),r12                                 <== NOT EXECUTED
 8010ccc:	5b 8d 00 10 	sw (sp+16),r13                                 <== NOT EXECUTED
 8010cd0:	5b 8e 00 0c 	sw (sp+12),r14                                 <== NOT EXECUTED
 8010cd4:	5b 8f 00 08 	sw (sp+8),r15                                  <== NOT EXECUTED
 8010cd8:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8010cdc:	28 24 00 14 	lw r4,(r1+20)                                  <== NOT EXECUTED
                                                                      
static int                                                            
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
                      time_t                                  atime,  
                      time_t                                  mtime)  
{                                                                     
 8010ce0:	b8 40 60 00 	mv r12,r2                                      <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010ce4:	28 22 00 08 	lw r2,(r1+8)                                   <== NOT EXECUTED
static int                                                            
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
                      time_t                                  atime,  
                      time_t                                  mtime)  
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
 8010ce8:	28 8d 00 08 	lw r13,(r4+8)                                  <== NOT EXECUTED
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010cec:	37 8e 00 1c 	addi r14,sp,28                                 <== NOT EXECUTED
                                                                      
static int                                                            
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
                      time_t                                  atime,  
                      time_t                                  mtime)  
{                                                                     
 8010cf0:	b8 60 58 00 	mv r11,r3                                      <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8010cf4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8010cf8:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8010cfc:	34 04 00 01 	mvi r4,1                                       <== NOT EXECUTED
 8010d00:	fb ff fc 2b 	calli 800fdac <rtems_rfs_inode_open>           <== NOT EXECUTED
 8010d04:	b8 20 78 00 	mv r15,r1                                      <== NOT EXECUTED
  if (rc)                                                             
 8010d08:	44 20 00 0c 	be r1,r0,8010d38 <rtems_rfs_rtems_utime+0x78>  <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: read inode", rc);           
 8010d0c:	f8 00 4b 0e 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010d10:	58 2f 00 00 	sw (r1+0),r15                                  <== NOT EXECUTED
 8010d14:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010d18:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010d1c:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 8010d20:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 8010d24:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 8010d28:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 8010d2c:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 8010d30:	37 9c 00 40 	addi sp,sp,64                                  <== NOT EXECUTED
 8010d34:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 8010d38:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 8010d3c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010d40:	fb ff c2 7a 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8010d44:	2b 82 00 28 	lw r2,(sp+40)                                  <== NOT EXECUTED
 8010d48:	30 41 00 10 	sb (r2+16),r1                                  <== NOT EXECUTED
 8010d4c:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8010d50:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8010d54:	fb ff c2 75 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8010d58:	01 84 00 01 	srui r4,r12,1                                  <== NOT EXECUTED
 8010d5c:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010d60:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 8010d64:	34 02 00 18 	mvi r2,24                                      <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 8010d68:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010d6c:	30 61 00 11 	sb (r3+17),r1                                  <== NOT EXECUTED
 8010d70:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010d74:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010d78:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 8010d7c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
 8010d80:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010d84:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010d88:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010d8c:	30 64 00 12 	sb (r3+18),r4                                  <== NOT EXECUTED
 8010d90:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010d94:	30 6c 00 13 	sb (r3+19),r12                                 <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
 8010d98:	fb ff c2 64 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8010d9c:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010da0:	34 02 00 10 	mvi r2,16                                      <== NOT EXECUTED
 8010da4:	30 61 00 14 	sb (r3+20),r1                                  <== NOT EXECUTED
 8010da8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8010dac:	fb ff c2 5f 	calli 8001728 <__lshrsi3>                      <== NOT EXECUTED
 8010db0:	01 64 00 01 	srui r4,r11,1                                  <== NOT EXECUTED
 8010db4:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010db8:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_inode_set_atime (&inode, atime);                          
  rtems_rfs_inode_set_mtime (&inode, mtime);                          
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8010dbc:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8010dc0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010dc4:	30 61 00 15 	sb (r3+21),r1                                  <== NOT EXECUTED
 8010dc8:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010dcc:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010dd0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010dd4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8010dd8:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010ddc:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010de0:	00 84 00 01 	srui r4,r4,1                                   <== NOT EXECUTED
 8010de4:	30 64 00 16 	sb (r3+22),r4                                  <== NOT EXECUTED
 8010de8:	2b 83 00 28 	lw r3,(sp+40)                                  <== NOT EXECUTED
 8010dec:	30 6b 00 17 	sb (r3+23),r11                                 <== NOT EXECUTED
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8010df0:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8010df4:	33 83 00 2c 	sb (sp+44),r3                                  <== NOT EXECUTED
 8010df8:	fb ff fc 87 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
 8010dfc:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
 8010e00:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
                                                                      
  rtems_rfs_inode_set_atime (&inode, atime);                          
  rtems_rfs_inode_set_mtime (&inode, mtime);                          
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc)                                                             
 8010e04:	45 61 ff c5 	be r11,r1,8010d18 <rtems_rfs_rtems_utime+0x58> <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
 8010e08:	f8 00 4a cf 	calli 8023944 <__errno>                        <== NOT EXECUTED
 8010e0c:	58 2b 00 00 	sw (r1+0),r11                                  <== NOT EXECUTED
 8010e10:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8010e14:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8010e18:	2b 8b 00 18 	lw r11,(sp+24)                                 <== NOT EXECUTED
 8010e1c:	2b 8c 00 14 	lw r12,(sp+20)                                 <== NOT EXECUTED
 8010e20:	2b 8d 00 10 	lw r13,(sp+16)                                 <== NOT EXECUTED
 8010e24:	2b 8e 00 0c 	lw r14,(sp+12)                                 <== NOT EXECUTED
 8010e28:	2b 8f 00 08 	lw r15,(sp+8)                                  <== NOT EXECUTED
 8010e2c:	37 9c 00 40 	addi sp,sp,64                                  <== NOT EXECUTED
 8010e30:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0800e3b8 <rtems_rfs_rup_quotient>: * Return a rounded up integer quotient given a dividend and divisor. That is: * "quotient = dividend / divisor" */ int rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor) {
 800e3b8:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 800e3bc:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 800e3c0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
  if (dividend == 0)                                                  
    return 1;                                                         
 800e3c4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
 800e3c8:	44 60 00 04 	be r3,r0,800e3d8 <rtems_rfs_rup_quotient+0x20> <== NOT EXECUTED
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
 800e3cc:	34 61 ff ff 	addi r1,r3,-1                                  <== NOT EXECUTED
 800e3d0:	fb ff cd 09 	calli 80017f4 <__udivsi3>                      <== NOT EXECUTED
 800e3d4:	34 21 00 01 	addi r1,r1,1                                   <== NOT EXECUTED
}                                                                     
 800e3d8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800e3dc:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 800e3e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

0801c554 <rtems_rfs_scan_chain>: */ static rtems_rfs_buffer* rtems_rfs_scan_chain (rtems_chain_control* chain, uint32_t* count, rtems_rfs_buffer_block block) {
 801c554:	37 9c ff e4 	addi sp,sp,-28                                 
 801c558:	5b 8b 00 1c 	sw (sp+28),r11                                 
 801c55c:	5b 8c 00 18 	sw (sp+24),r12                                 
 801c560:	5b 8d 00 14 	sw (sp+20),r13                                 
 801c564:	5b 8e 00 10 	sw (sp+16),r14                                 
 801c568:	5b 8f 00 0c 	sw (sp+12),r15                                 
 801c56c:	5b 90 00 08 	sw (sp+8),r16                                  
 801c570:	5b 9d 00 04 	sw (sp+4),ra                                   
 801c574:	b8 20 60 00 	mv r12,r1                                      
 801c578:	b8 40 80 00 	mv r16,r2                                      
  rtems_rfs_buffer* buffer;                                           
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c57c:	34 01 00 00 	mvi r1,0                                       
 801c580:	34 02 00 80 	mvi r2,128                                     
 */                                                                   
static rtems_rfs_buffer*                                              
rtems_rfs_scan_chain (rtems_chain_control*   chain,                   
                      uint32_t*              count,                   
                      rtems_rfs_buffer_block block)                   
{                                                                     
 801c584:	b8 60 70 00 	mv r14,r3                                      
                                true);                                
  if ((rc > 0) && (rrc == 0))                                         
    rrc = rc;                                                         
                                                                      
  return rrc;                                                         
}                                                                     
 801c588:	29 8b 00 08 	lw r11,(r12+8)                                 
  rtems_rfs_buffer* buffer;                                           
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c58c:	fb ff d7 0d 	calli 80121c0 <rtems_rfs_trace>                
 801c590:	5c 20 00 35 	bne r1,r0,801c664 <rtems_rfs_scan_chain+0x110> <== NEVER TAKEN
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
                                                                      
  while (!rtems_chain_is_head (chain, node))                          
 801c594:	45 6c 00 2b 	be r11,r12,801c640 <rtems_rfs_scan_chain+0xec> <== NEVER TAKEN
  {                                                                   
    buffer = (rtems_rfs_buffer*) node;                                
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
      printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));            
 801c598:	78 0f 08 03 	mvhi r15,0x803                                 
 801c59c:	39 ef ab e4 	ori r15,r15,0xabe4                             
 801c5a0:	e0 00 00 05 	bi 801c5b4 <rtems_rfs_scan_chain+0x60>         
                                                                      
    if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
 801c5a4:	29 63 00 34 	lw r3,(r11+52)                                 
 801c5a8:	44 6e 00 0d 	be r3,r14,801c5dc <rtems_rfs_scan_chain+0x88>  
                                true);                                
  if ((rc > 0) && (rrc == 0))                                         
    rrc = rc;                                                         
                                                                      
  return rrc;                                                         
}                                                                     
 801c5ac:	29 6b 00 04 	lw r11,(r11+4)                                 
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
                                                                      
  while (!rtems_chain_is_head (chain, node))                          
 801c5b0:	45 6c 00 24 	be r11,r12,801c640 <rtems_rfs_scan_chain+0xec> 
  {                                                                   
    buffer = (rtems_rfs_buffer*) node;                                
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
 801c5b4:	34 02 00 80 	mvi r2,128                                     
 801c5b8:	34 01 00 00 	mvi r1,0                                       
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
                                                                      
  while (!rtems_chain_is_head (chain, node))                          
  {                                                                   
    buffer = (rtems_rfs_buffer*) node;                                
 801c5bc:	b9 60 68 00 	mv r13,r11                                     
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
 801c5c0:	fb ff d7 00 	calli 80121c0 <rtems_rfs_trace>                
 801c5c4:	44 20 ff f8 	be r1,r0,801c5a4 <rtems_rfs_scan_chain+0x50>   <== ALWAYS TAKEN
      printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));            
 801c5c8:	29 62 00 34 	lw r2,(r11+52)                                 <== NOT EXECUTED
 801c5cc:	b9 e0 08 00 	mv r1,r15                                      <== NOT EXECUTED
 801c5d0:	f8 00 21 b2 	calli 8024c98 <printf>                         <== NOT EXECUTED
                                                                      
    if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
 801c5d4:	29 63 00 34 	lw r3,(r11+52)                                 <== NOT EXECUTED
 801c5d8:	5c 6e ff f5 	bne r3,r14,801c5ac <rtems_rfs_scan_chain+0x58> <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))            
 801c5dc:	34 01 00 00 	mvi r1,0                                       
 801c5e0:	34 02 00 80 	mvi r2,128                                     
 801c5e4:	fb ff d6 f7 	calli 80121c0 <rtems_rfs_trace>                
 801c5e8:	44 20 00 05 	be r1,r0,801c5fc <rtems_rfs_scan_chain+0xa8>   <== ALWAYS TAKEN
        printf (": found block=%" PRIuPTR "\n",                       
 801c5ec:	29 62 00 34 	lw r2,(r11+52)                                 <== NOT EXECUTED
 801c5f0:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c5f4:	38 21 ab e8 	ori r1,r1,0xabe8                               <== NOT EXECUTED
 801c5f8:	f8 00 21 a8 	calli 8024c98 <printf>                         <== NOT EXECUTED
                ((intptr_t)(buffer->user)));                          
                                                                      
      (*count)--;                                                     
 801c5fc:	2a 02 00 00 	lw r2,(r16+0)                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
 801c600:	b9 60 08 00 	mv r1,r11                                      
 801c604:	34 42 ff ff 	addi r2,r2,-1                                  
 801c608:	5a 02 00 00 	sw (r16+0),r2                                  
 801c60c:	fb ff f0 7a 	calli 80187f4 <_Chain_Extract>                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
 801c610:	59 60 00 04 	sw (r11+4),r0                                  
 801c614:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf (": not found\n");                                         
                                                                      
  return NULL;                                                        
}                                                                     
 801c618:	b9 a0 08 00 	mv r1,r13                                      
 801c61c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c620:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 801c624:	2b 8c 00 18 	lw r12,(sp+24)                                 
 801c628:	2b 8d 00 14 	lw r13,(sp+20)                                 
 801c62c:	2b 8e 00 10 	lw r14,(sp+16)                                 
 801c630:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 801c634:	2b 90 00 08 	lw r16,(sp+8)                                  
 801c638:	37 9c 00 1c 	addi sp,sp,28                                  
 801c63c:	c3 a0 00 00 	ret                                            
      return buffer;                                                  
    }                                                                 
    node = rtems_chain_previous (node);                               
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c640:	34 01 00 00 	mvi r1,0                                       
 801c644:	34 02 00 80 	mvi r2,128                                     
 801c648:	fb ff d6 de 	calli 80121c0 <rtems_rfs_trace>                
    printf (": not found\n");                                         
                                                                      
  return NULL;                                                        
 801c64c:	34 0d 00 00 	mvi r13,0                                      
      return buffer;                                                  
    }                                                                 
    node = rtems_chain_previous (node);                               
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
 801c650:	44 20 ff f2 	be r1,r0,801c618 <rtems_rfs_scan_chain+0xc4>   <== ALWAYS TAKEN
    printf (": not found\n");                                         
 801c654:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c658:	38 21 ab fc 	ori r1,r1,0xabfc                               <== NOT EXECUTED
 801c65c:	f8 00 22 57 	calli 8024fb8 <puts>                           <== NOT EXECUTED
 801c660:	e3 ff ff ee 	bi 801c618 <rtems_rfs_scan_chain+0xc4>         <== NOT EXECUTED
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
 801c664:	2a 02 00 00 	lw r2,(r16+0)                                  <== NOT EXECUTED
 801c668:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 801c66c:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 801c670:	38 21 ab b4 	ori r1,r1,0xabb4                               <== NOT EXECUTED
 801c674:	f8 00 21 89 	calli 8024c98 <printf>                         <== NOT EXECUTED
 801c678:	e3 ff ff c7 	bi 801c594 <rtems_rfs_scan_chain+0x40>         <== NOT EXECUTED
                                                                      

0801a2c4 <rtems_rfs_search_map_for_clear_bit.clone.0>: return 0; } static int rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a2c4:	37 9c ff a8 	addi sp,sp,-88                                 
 801a2c8:	5b 8b 00 44 	sw (sp+68),r11                                 
 801a2cc:	5b 8c 00 40 	sw (sp+64),r12                                 
 801a2d0:	5b 8d 00 3c 	sw (sp+60),r13                                 
 801a2d4:	5b 8e 00 38 	sw (sp+56),r14                                 
 801a2d8:	5b 8f 00 34 	sw (sp+52),r15                                 
 801a2dc:	5b 90 00 30 	sw (sp+48),r16                                 
 801a2e0:	5b 91 00 2c 	sw (sp+44),r17                                 
 801a2e4:	5b 92 00 28 	sw (sp+40),r18                                 
 801a2e8:	5b 93 00 24 	sw (sp+36),r19                                 
 801a2ec:	5b 94 00 20 	sw (sp+32),r20                                 
 801a2f0:	5b 95 00 1c 	sw (sp+28),r21                                 
 801a2f4:	5b 96 00 18 	sw (sp+24),r22                                 
 801a2f8:	5b 97 00 14 	sw (sp+20),r23                                 
 801a2fc:	5b 98 00 10 	sw (sp+16),r24                                 
 801a300:	5b 99 00 0c 	sw (sp+12),r25                                 
 801a304:	5b 9b 00 08 	sw (sp+8),fp                                   
 801a308:	5b 9d 00 04 	sw (sp+4),ra                                   
 801a30c:	5b 82 00 54 	sw (sp+84),r2                                  
 801a310:	5b 83 00 4c 	sw (sp+76),r3                                  
  rtems_rfs_bitmap_element* map_bits;                                 
  int                       map_index;                                
  int                       map_offset;                               
  int                       rc;                                       
                                                                      
  *found = false;                                                     
 801a314:	30 60 00 00 	sb (r3+0),r0                                   
                                                                      
  /*                                                                  
   * Load the bitmap.                                                 
   */                                                                 
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
 801a318:	37 82 00 58 	addi r2,sp,88                                  
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a31c:	b8 20 c8 00 	mv r25,r1                                      
 801a320:	b8 80 58 00 	mv r11,r4                                      
  *found = false;                                                     
                                                                      
  /*                                                                  
   * Load the bitmap.                                                 
   */                                                                 
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
 801a324:	fb ff ff cf 	calli 801a260 <rtems_rfs_bitmap_load_map>      
  if (rc > 0)                                                         
 801a328:	48 20 00 42 	bg r1,r0,801a430 <rtems_rfs_search_map_for_clear_bit.clone.0+0x16c><== NEVER TAKEN
    return rc;                                                        
                                                                      
  /*                                                                  
   * Calculate the bit we are testing plus the end point we search over.
   */                                                                 
  test_bit = *bit;                                                    
 801a32c:	2b 81 00 54 	lw r1,(sp+84)                                  
  end_bit  = test_bit + (window * direction);                         
 801a330:	34 02 00 0b 	mvi r2,11                                      
    return rc;                                                        
                                                                      
  /*                                                                  
   * Calculate the bit we are testing plus the end point we search over.
   */                                                                 
  test_bit = *bit;                                                    
 801a334:	28 2e 00 00 	lw r14,(r1+0)                                  
  end_bit  = test_bit + (window * direction);                         
 801a338:	b9 60 08 00 	mv r1,r11                                      
 801a33c:	f8 00 72 96 	calli 8036d94 <__ashlsi3>                      
 801a340:	b4 2e 78 00 	add r15,r1,r14                                 
                                                                      
  if (end_bit < 0)                                                    
 801a344:	48 0f 00 b6 	bg r0,r15,801a61c <rtems_rfs_search_map_for_clear_bit.clone.0+0x358>
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
 801a348:	2b 21 00 0c 	lw r1,(r25+12)                                 
 801a34c:	54 2f 00 02 	bgu r1,r15,801a354 <rtems_rfs_search_map_for_clear_bit.clone.0+0x90>
    end_bit = control->size - 1;                                      
 801a350:	34 2f ff ff 	addi r15,r1,-1                                 
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
 801a354:	15 d1 00 01 	sri r17,r14,1                                  
            map_offset += direction;                                  
            test_bit   += direction;                                  
          }                                                           
        }                                                             
                                                                      
        map_bits  += direction;                                       
 801a358:	b5 6b c0 00 	add r24,r11,r11                                
  if (end_bit < 0)                                                    
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
 801a35c:	16 31 00 01 	sri r17,r17,1                                  
            map_offset += direction;                                  
            test_bit   += direction;                                  
          }                                                           
        }                                                             
                                                                      
        map_bits  += direction;                                       
 801a360:	b7 18 c0 00 	add r24,r24,r24                                
  if (end_bit < 0)                                                    
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
 801a364:	16 31 00 01 	sri r17,r17,1                                  
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
                                                                      
  search_bits = &control->search_bits[search_index];                  
 801a368:	2b 36 00 14 	lw r22,(r25+20)                                
  if (end_bit < 0)                                                    
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
 801a36c:	16 31 00 01 	sri r17,r17,1                                  
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a370:	b7 18 10 00 	add r2,r24,r24                                 
  if (end_bit < 0)                                                    
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
 801a374:	16 31 00 01 	sri r17,r17,1                                  
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
                                                                      
  search_bits = &control->search_bits[search_index];                  
  map_bits    = &map[map_index];                                      
 801a378:	2b 95 00 58 	lw r21,(sp+88)                                 
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
 801a37c:	16 24 00 01 	sri r4,r17,1                                   
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
                                                                      
  search_bits = &control->search_bits[search_index];                  
  map_bits    = &map[map_index];                                      
 801a380:	b6 31 08 00 	add r1,r17,r17                                 
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
 801a384:	14 84 00 01 	sri r4,r4,1                                    
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a388:	b4 42 10 00 	add r2,r2,r2                                   
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
 801a38c:	14 84 00 01 	sri r4,r4,1                                    
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a390:	69 63 00 00 	cmpgi r3,r11,0                                 
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
 801a394:	14 84 00 01 	sri r4,r4,1                                    
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
                                                                      
  search_bits = &control->search_bits[search_index];                  
  map_bits    = &map[map_index];                                      
 801a398:	b4 21 08 00 	add r1,r1,r1                                   
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
 801a39c:	14 84 00 01 	sri r4,r4,1                                    
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a3a0:	b4 42 10 00 	add r2,r2,r2                                   
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
                                                                      
  search_bits = &control->search_bits[search_index];                  
 801a3a4:	b4 84 20 00 	add r4,r4,r4                                   
 801a3a8:	b4 84 20 00 	add r4,r4,r4                                   
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a3ac:	5b 83 00 48 	sw (sp+72),r3                                  
    end_bit = 0;                                                      
  else if (end_bit >= control->size)                                  
    end_bit = control->size - 1;                                      
                                                                      
  map_index     = rtems_rfs_bitmap_map_index (test_bit);              
  map_offset    = rtems_rfs_bitmap_map_offset (test_bit);             
 801a3b0:	21 cc 00 1f 	andi r12,r14,0x1f                              
  search_index  = rtems_rfs_bitmap_map_index (map_index);             
  search_offset = rtems_rfs_bitmap_map_offset (map_index);            
 801a3b4:	22 33 00 1f 	andi r19,r17,0x1f                              
                                                                      
  search_bits = &control->search_bits[search_index];                  
 801a3b8:	b6 c4 b0 00 	add r22,r22,r4                                 
  map_bits    = &map[map_index];                                      
 801a3bc:	b6 a1 a8 00 	add r21,r21,r1                                 
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a3c0:	5b 82 00 50 	sw (sp+80),r2                                  
     * all bits are set there are no map bits so move to the next search
     * element.                                                       
     */                                                               
    if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
    {                                                                 
      while ((search_offset >= 0)                                     
 801a3c4:	34 14 00 1f 	mvi r20,31                                     
    /*                                                                
     * If any bit is clear find that bit and then search the map element. If
     * all bits are set there are no map bits so move to the next search
     * element.                                                       
     */                                                               
    if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
 801a3c8:	2a d7 00 00 	lw r23,(r22+0)                                 
 801a3cc:	46 e0 00 63 	be r23,r0,801a558 <rtems_rfs_search_map_for_clear_bit.clone.0+0x294>
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a3d0:	b6 2b 80 00 	add r16,r17,r11                                
 801a3d4:	b6 10 80 00 	add r16,r16,r16                                
 801a3d8:	b6 10 80 00 	add r16,r16,r16                                
 801a3dc:	b6 10 80 00 	add r16,r16,r16                                
 801a3e0:	b6 10 80 00 	add r16,r16,r16                                
 801a3e4:	b6 10 80 00 	add r16,r16,r16                                
     * all bits are set there are no map bits so move to the next search
     * element.                                                       
     */                                                               
    if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
    {                                                                 
      while ((search_offset >= 0)                                     
 801a3e8:	52 93 00 25 	bgeu r20,r19,801a47c <rtems_rfs_search_map_for_clear_bit.clone.0+0x1b8><== ALWAYS TAKEN
      }                                                               
      map_bits += direction * bits_skipped;                           
      map_index += direction * bits_skipped;                          
    }                                                                 
                                                                      
    search_bits  += direction;                                        
 801a3ec:	b6 d8 b0 00 	add r22,r22,r24                                
    search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
 801a3f0:	ed cf 08 00 	cmpge r1,r14,r15                               
 801a3f4:	34 04 00 00 	mvi r4,0                                       
 801a3f8:	49 60 00 56 	bg r11,r0,801a550 <rtems_rfs_search_map_for_clear_bit.clone.0+0x28c>
 801a3fc:	b9 60 08 00 	mv r1,r11                                      
 801a400:	34 02 00 1f 	mvi r2,31                                      
 801a404:	fb ff 9c c9 	calli 8001728 <__lshrsi3>                      
 801a408:	20 24 00 ff 	andi r4,r1,0xff                                
 801a40c:	ed cf 08 00 	cmpge r1,r14,r15                               
 801a410:	34 13 00 1f 	mvi r19,31                                     
  }                                                                   
  while (((direction < 0) && (test_bit >= end_bit))                   
         || ((direction > 0) && (test_bit <= end_bit)));              
 801a414:	a0 24 20 00 	and r4,r1,r4                                   
 801a418:	5c 80 ff ec 	bne r4,r0,801a3c8 <rtems_rfs_search_map_for_clear_bit.clone.0+0x104>
 801a41c:	2b 83 00 48 	lw r3,(sp+72)                                  
 801a420:	ed ee 08 00 	cmpge r1,r15,r14                               
 801a424:	a0 23 08 00 	and r1,r1,r3                                   
 801a428:	5c 24 ff e8 	bne r1,r4,801a3c8 <rtems_rfs_search_map_for_clear_bit.clone.0+0x104>
                                                                      
  return 0;                                                           
 801a42c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 801a430:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801a434:	2b 8b 00 44 	lw r11,(sp+68)                                 
 801a438:	2b 8c 00 40 	lw r12,(sp+64)                                 
 801a43c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 801a440:	2b 8e 00 38 	lw r14,(sp+56)                                 
 801a444:	2b 8f 00 34 	lw r15,(sp+52)                                 
 801a448:	2b 90 00 30 	lw r16,(sp+48)                                 
 801a44c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 801a450:	2b 92 00 28 	lw r18,(sp+40)                                 
 801a454:	2b 93 00 24 	lw r19,(sp+36)                                 
 801a458:	2b 94 00 20 	lw r20,(sp+32)                                 
 801a45c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 801a460:	2b 96 00 18 	lw r22,(sp+24)                                 
 801a464:	2b 97 00 14 	lw r23,(sp+20)                                 
 801a468:	2b 98 00 10 	lw r24,(sp+16)                                 
 801a46c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 801a470:	2b 9b 00 08 	lw fp,(sp+8)                                   
 801a474:	37 9c 00 58 	addi sp,sp,88                                  
 801a478:	c3 a0 00 00 	ret                                            
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801a47c:	34 01 00 01 	mvi r1,1                                       
 801a480:	ba 60 10 00 	mv r2,r19                                      
 801a484:	f8 00 72 44 	calli 8036d94 <__ashlsi3>                      
 801a488:	b8 20 d8 00 	mv fp,r1                                       
 801a48c:	a0 37 08 00 	and r1,r1,r23                                  
    if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
    {                                                                 
      while ((search_offset >= 0)                                     
             && (search_offset < rtems_rfs_bitmap_element_bits ()))   
      {                                                               
        if (!rtems_rfs_bitmap_test (*search_bits, search_offset))     
 801a490:	44 20 00 0d 	be r1,r0,801a4c4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x200>
           * found. We may find none are spare if searching up from the seed.
           */                                                         
          while ((map_offset >= 0)                                    
                 && (map_offset < rtems_rfs_bitmap_element_bits ()))  
          {                                                           
            if (!rtems_rfs_bitmap_test (*map_bits, map_offset))       
 801a494:	2a b2 00 00 	lw r18,(r21+0)                                 
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801a498:	34 01 00 01 	mvi r1,1                                       
 801a49c:	b9 80 10 00 	mv r2,r12                                      
 801a4a0:	f8 00 72 3d 	calli 8036d94 <__ashlsi3>                      
 801a4a4:	a0 32 18 00 	and r3,r1,r18                                  
           * found. We may find none are spare if searching up from the seed.
           */                                                         
          while ((map_offset >= 0)                                    
                 && (map_offset < rtems_rfs_bitmap_element_bits ()))  
          {                                                           
            if (!rtems_rfs_bitmap_test (*map_bits, map_offset))       
 801a4a8:	5c 60 00 3f 	bne r3,r0,801a5a4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x2e0>
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a4ac:	b5 8b 60 00 	add r12,r12,r11                                
 801a4b0:	b5 cb 68 00 	add r13,r14,r11                                
              *found = true;                                          
              rtems_rfs_buffer_mark_dirty (control->buffer);          
              return 0;                                               
            }                                                         
                                                                      
            if (test_bit == end_bit)                                  
 801a4b4:	45 ee 00 04 	be r15,r14,801a4c4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x200>
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801a4b8:	b9 80 10 00 	mv r2,r12                                      
 801a4bc:	34 01 00 01 	mvi r1,1                                       
        {                                                             
          /*                                                          
           * Find the clear bit in the map. Update the search map and map if
           * found. We may find none are spare if searching up from the seed.
           */                                                         
          while ((map_offset >= 0)                                    
 801a4c0:	52 8c 00 19 	bgeu r20,r12,801a524 <rtems_rfs_search_map_for_clear_bit.clone.0+0x260><== ALWAYS TAKEN
            map_offset += direction;                                  
            test_bit   += direction;                                  
          }                                                           
        }                                                             
                                                                      
        map_bits  += direction;                                       
 801a4c4:	b6 b8 a8 00 	add r21,r21,r24                                
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a4c8:	b5 71 88 00 	add r17,r11,r17                                
          }                                                           
        }                                                             
                                                                      
        map_bits  += direction;                                       
        map_index += direction;                                       
        map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
 801a4cc:	34 0e 00 1f 	mvi r14,31                                     
 801a4d0:	34 0c 00 1f 	mvi r12,31                                     
 801a4d4:	4c 0b 00 03 	bge r0,r11,801a4e0 <rtems_rfs_search_map_for_clear_bit.clone.0+0x21c>
 801a4d8:	34 0e 00 00 	mvi r14,0                                      
 801a4dc:	34 0c 00 00 	mvi r12,0                                      
                                                                      
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
 801a4e0:	b9 60 08 00 	mv r1,r11                                      
 801a4e4:	34 02 00 1f 	mvi r2,31                                      
 801a4e8:	fb ff 9c 90 	calli 8001728 <__lshrsi3>                      
                                                                      
        map_bits  += direction;                                       
        map_index += direction;                                       
        map_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
                                                                      
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
 801a4ec:	b6 0e 70 00 	add r14,r16,r14                                
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
 801a4f0:	ed ee 28 00 	cmpge r5,r15,r14                               
 801a4f4:	20 24 00 ff 	andi r4,r1,0xff                                
 801a4f8:	a0 85 28 00 	and r5,r4,r5                                   
 801a4fc:	5c a0 00 4a 	bne r5,r0,801a624 <rtems_rfs_search_map_for_clear_bit.clone.0+0x360>
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a500:	2b 83 00 48 	lw r3,(sp+72)                                  
 801a504:	ed cf 08 00 	cmpge r1,r14,r15                               
                                                                      
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
 801a508:	2b 82 00 50 	lw r2,(sp+80)                                  
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a50c:	a0 23 08 00 	and r1,r1,r3                                   
                                                                      
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
 801a510:	b6 02 80 00 	add r16,r16,r2                                 
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a514:	5c 25 00 0d 	bne r1,r5,801a548 <rtems_rfs_search_map_for_clear_bit.clone.0+0x284>
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a518:	b5 73 98 00 	add r19,r11,r19                                
     * all bits are set there are no map bits so move to the next search
     * element.                                                       
     */                                                               
    if (!rtems_rfs_bitmap_match (*search_bits, RTEMS_RFS_BITMAP_ELEMENT_SET))
    {                                                                 
      while ((search_offset >= 0)                                     
 801a51c:	52 93 ff d8 	bgeu r20,r19,801a47c <rtems_rfs_search_map_for_clear_bit.clone.0+0x1b8>
 801a520:	e3 ff ff b3 	bi 801a3ec <rtems_rfs_search_map_for_clear_bit.clone.0+0x128>
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801a524:	f8 00 72 1c 	calli 8036d94 <__ashlsi3>                      
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a528:	b9 a0 70 00 	mv r14,r13                                     
 */                                                                   
static bool                                                           
rtems_rfs_bitmap_test (rtems_rfs_bitmap_element target,               
                       rtems_rfs_bitmap_bit     bit)                  
{                                                                     
  return RTEMS_RFS_BITMAP_TEST_BIT (target, bit);                     
 801a52c:	a0 32 20 00 	and r4,r1,r18                                  
                *search_bits = rtems_rfs_bitmap_set (*search_bits,    
                                                     1 << search_offset);
              control->free--;                                        
              *bit = test_bit;                                        
              *found = true;                                          
              rtems_rfs_buffer_mark_dirty (control->buffer);          
 801a530:	b5 ab 68 00 	add r13,r13,r11                                
                                                                      
  return 0;                                                           
}                                                                     
                                                                      
static int                                                            
rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
 801a534:	c9 ab 28 00 	sub r5,r13,r11                                 
           * found. We may find none are spare if searching up from the seed.
           */                                                         
          while ((map_offset >= 0)                                    
                 && (map_offset < rtems_rfs_bitmap_element_bits ()))  
          {                                                           
            if (!rtems_rfs_bitmap_test (*map_bits, map_offset))       
 801a538:	5c 80 00 1b 	bne r4,r0,801a5a4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x2e0>
                *search_bits = rtems_rfs_bitmap_set (*search_bits,    
                                                     1 << search_offset);
              control->free--;                                        
              *bit = test_bit;                                        
              *found = true;                                          
              rtems_rfs_buffer_mark_dirty (control->buffer);          
 801a53c:	b5 8b 60 00 	add r12,r12,r11                                
              return 0;                                               
            }                                                         
                                                                      
            if (test_bit == end_bit)                                  
 801a540:	5d e5 ff de 	bne r15,r5,801a4b8 <rtems_rfs_search_map_for_clear_bit.clone.0+0x1f4>
 801a544:	e3 ff ff e0 	bi 801a4c4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x200>
      }                                                               
      map_bits += direction * bits_skipped;                           
      map_index += direction * bits_skipped;                          
    }                                                                 
                                                                      
    search_bits  += direction;                                        
 801a548:	b6 d8 b0 00 	add r22,r22,r24                                
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
            || ((direction > 0) && (test_bit >= end_bit)))            
 801a54c:	34 01 00 01 	mvi r1,1                                       
      map_bits += direction * bits_skipped;                           
      map_index += direction * bits_skipped;                          
    }                                                                 
                                                                      
    search_bits  += direction;                                        
    search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
 801a550:	34 13 00 00 	mvi r19,0                                      
 801a554:	e3 ff ff b0 	bi 801a414 <rtems_rfs_search_map_for_clear_bit.clone.0+0x150>
       *                                                              
       * Align test_bit either up or down depending on the direction to next 32
       * bit boundary.                                                
       */                                                             
      rtems_rfs_bitmap_bit bits_skipped;                              
      test_bit &= ~((1 << RTEMS_RFS_ELEMENT_BITS_POWER_2) - 1);       
 801a558:	34 01 ff e0 	mvi r1,-32                                     
 801a55c:	a1 c1 70 00 	and r14,r14,r1                                 
      if (direction > 0)                                              
 801a560:	4e eb 00 25 	bge r23,r11,801a5f4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x330>
      {                                                               
        bits_skipped = rtems_rfs_bitmap_element_bits () - search_offset;
 801a564:	34 02 00 20 	mvi r2,32                                      
 801a568:	c8 53 08 00 	sub r1,r2,r19                                  
        test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();  
 801a56c:	b4 21 20 00 	add r4,r1,r1                                   
 801a570:	b4 84 20 00 	add r4,r4,r4                                   
 801a574:	b4 84 20 00 	add r4,r4,r4                                   
 801a578:	b4 84 20 00 	add r4,r4,r4                                   
 801a57c:	b4 84 20 00 	add r4,r4,r4                                   
 801a580:	b4 8e 70 00 	add r14,r4,r14                                 
        map_offset = 0;                                               
 801a584:	34 0c 00 00 	mvi r12,0                                      
         * adds 1. Remember the logic is for subtraction.             
         */                                                           
        test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
        map_offset = rtems_rfs_bitmap_element_bits () - 1;            
      }                                                               
      map_bits += direction * bits_skipped;                           
 801a588:	b9 60 10 00 	mv r2,r11                                      
 801a58c:	fb ff 9c 8e 	calli 80017c4 <__mulsi3>                       
 801a590:	b4 21 20 00 	add r4,r1,r1                                   
 801a594:	b4 84 20 00 	add r4,r4,r4                                   
 801a598:	b6 a4 a8 00 	add r21,r21,r4                                 
      map_index += direction * bits_skipped;                          
 801a59c:	b6 21 88 00 	add r17,r17,r1                                 
 801a5a0:	e3 ff ff 93 	bi 801a3ec <rtems_rfs_search_map_for_clear_bit.clone.0+0x128>
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
 801a5a4:	a4 20 08 00 	not r1,r1                                      
 801a5a8:	a0 32 90 00 	and r18,r1,r18                                 
          while ((map_offset >= 0)                                    
                 && (map_offset < rtems_rfs_bitmap_element_bits ()))  
          {                                                           
            if (!rtems_rfs_bitmap_test (*map_bits, map_offset))       
            {                                                         
              *map_bits = rtems_rfs_bitmap_set (*map_bits, 1 << map_offset);
 801a5ac:	5a b2 00 00 	sw (r21+0),r18                                 
              if (rtems_rfs_bitmap_match(*map_bits,                   
 801a5b0:	5e 40 00 05 	bne r18,r0,801a5c4 <rtems_rfs_search_map_for_clear_bit.clone.0+0x300>
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
 801a5b4:	2a c1 00 00 	lw r1,(r22+0)                                  
 801a5b8:	a7 60 d8 00 	not fp,fp                                      
 801a5bc:	a0 3b d8 00 	and fp,r1,fp                                   
            if (!rtems_rfs_bitmap_test (*map_bits, map_offset))       
            {                                                         
              *map_bits = rtems_rfs_bitmap_set (*map_bits, 1 << map_offset);
              if (rtems_rfs_bitmap_match(*map_bits,                   
                                         RTEMS_RFS_BITMAP_ELEMENT_SET))
                *search_bits = rtems_rfs_bitmap_set (*search_bits,    
 801a5c0:	5a db 00 00 	sw (r22+0),fp                                  
                                                     1 << search_offset);
              control->free--;                                        
 801a5c4:	2b 23 00 10 	lw r3,(r25+16)                                 
              *bit = test_bit;                                        
              *found = true;                                          
              rtems_rfs_buffer_mark_dirty (control->buffer);          
 801a5c8:	2b 22 00 00 	lw r2,(r25+0)                                  
                                         RTEMS_RFS_BITMAP_ELEMENT_SET))
                *search_bits = rtems_rfs_bitmap_set (*search_bits,    
                                                     1 << search_offset);
              control->free--;                                        
              *bit = test_bit;                                        
              *found = true;                                          
 801a5cc:	34 01 00 01 	mvi r1,1                                       
              *map_bits = rtems_rfs_bitmap_set (*map_bits, 1 << map_offset);
              if (rtems_rfs_bitmap_match(*map_bits,                   
                                         RTEMS_RFS_BITMAP_ELEMENT_SET))
                *search_bits = rtems_rfs_bitmap_set (*search_bits,    
                                                     1 << search_offset);
              control->free--;                                        
 801a5d0:	34 63 ff ff 	addi r3,r3,-1                                  
 801a5d4:	5b 23 00 10 	sw (r25+16),r3                                 
              *bit = test_bit;                                        
 801a5d8:	2b 83 00 54 	lw r3,(sp+84)                                  
 801a5dc:	58 6e 00 00 	sw (r3+0),r14                                  
              *found = true;                                          
 801a5e0:	2b 83 00 4c 	lw r3,(sp+76)                                  
 801a5e4:	30 61 00 00 	sb (r3+0),r1                                   
              rtems_rfs_buffer_mark_dirty (control->buffer);          
 801a5e8:	30 41 00 00 	sb (r2+0),r1                                   
              return 0;                                               
 801a5ec:	34 01 00 00 	mvi r1,0                                       
 801a5f0:	e3 ff ff 90 	bi 801a430 <rtems_rfs_search_map_for_clear_bit.clone.0+0x16c>
        bits_skipped = search_offset + 1;                             
        /*                                                            
         * Need to remove 1 for the rounding up. The above rounds down and
         * adds 1. Remember the logic is for subtraction.             
         */                                                           
        test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
 801a5f4:	b6 73 08 00 	add r1,r19,r19                                 
 801a5f8:	b4 21 08 00 	add r1,r1,r1                                   
 801a5fc:	b4 21 08 00 	add r1,r1,r1                                   
 801a600:	b4 21 08 00 	add r1,r1,r1                                   
 801a604:	b4 21 08 00 	add r1,r1,r1                                   
 801a608:	a4 20 10 00 	not r2,r1                                      
 801a60c:	b4 4e 70 00 	add r14,r2,r14                                 
        test_bit += bits_skipped * rtems_rfs_bitmap_element_bits ();  
        map_offset = 0;                                               
      }                                                               
      else                                                            
      {                                                               
        bits_skipped = search_offset + 1;                             
 801a610:	36 61 00 01 	addi r1,r19,1                                  
        /*                                                            
         * Need to remove 1 for the rounding up. The above rounds down and
         * adds 1. Remember the logic is for subtraction.             
         */                                                           
        test_bit -= ((bits_skipped - 1) * rtems_rfs_bitmap_element_bits ()) + 1;
        map_offset = rtems_rfs_bitmap_element_bits () - 1;            
 801a614:	34 0c 00 1f 	mvi r12,31                                     
 801a618:	e3 ff ff dc 	bi 801a588 <rtems_rfs_search_map_for_clear_bit.clone.0+0x2c4>
   */                                                                 
  test_bit = *bit;                                                    
  end_bit  = test_bit + (window * direction);                         
                                                                      
  if (end_bit < 0)                                                    
    end_bit = 0;                                                      
 801a61c:	34 0f 00 00 	mvi r15,0                                      
 801a620:	e3 ff ff 4d 	bi 801a354 <rtems_rfs_search_map_for_clear_bit.clone.0+0x90>
      }                                                               
      map_bits += direction * bits_skipped;                           
      map_index += direction * bits_skipped;                          
    }                                                                 
                                                                      
    search_bits  += direction;                                        
 801a624:	b6 d8 b0 00 	add r22,r22,r24                                
 801a628:	ed cf 08 00 	cmpge r1,r14,r15                               
                                                                      
        test_bit = (map_index * rtems_rfs_bitmap_element_bits ()) + map_offset;
                                                                      
        search_offset += direction;                                   
                                                                      
        if (((direction < 0) && (test_bit <= end_bit))                
 801a62c:	34 04 00 01 	mvi r4,1                                       
      map_bits += direction * bits_skipped;                           
      map_index += direction * bits_skipped;                          
    }                                                                 
                                                                      
    search_bits  += direction;                                        
    search_offset = direction > 0 ? 0 : rtems_rfs_bitmap_element_bits () - 1;
 801a630:	34 13 00 1f 	mvi r19,31                                     
 801a634:	e3 ff ff 78 	bi 801a414 <rtems_rfs_search_map_for_clear_bit.clone.0+0x150>
                                                                      

080209a4 <rtems_rfs_symlink>: const char* link, int link_length, uid_t uid, gid_t gid, rtems_rfs_ino parent) {
 80209a4:	37 9c ff 48 	addi sp,sp,-184                                
 80209a8:	5b 8b 00 2c 	sw (sp+44),r11                                 
 80209ac:	5b 8c 00 28 	sw (sp+40),r12                                 
 80209b0:	5b 8d 00 24 	sw (sp+36),r13                                 
 80209b4:	5b 8e 00 20 	sw (sp+32),r14                                 
 80209b8:	5b 8f 00 1c 	sw (sp+28),r15                                 
 80209bc:	5b 90 00 18 	sw (sp+24),r16                                 
 80209c0:	5b 91 00 14 	sw (sp+20),r17                                 
 80209c4:	5b 92 00 10 	sw (sp+16),r18                                 
 80209c8:	5b 93 00 0c 	sw (sp+12),r19                                 
 80209cc:	5b 9d 00 08 	sw (sp+8),ra                                   
 80209d0:	b8 20 68 00 	mv r13,r1                                      
 80209d4:	b8 40 70 00 	mv r14,r2                                      
  rtems_rfs_inode_handle inode;                                       
  rtems_rfs_ino          ino;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
 80209d8:	34 01 00 02 	mvi r1,2                                       
 80209dc:	34 02 00 00 	mvi r2,0                                       
                   const char*            link,                       
                   int                    link_length,                
                   uid_t                  uid,                        
                   gid_t                  gid,                        
                   rtems_rfs_ino          parent)                     
{                                                                     
 80209e0:	b8 60 80 00 	mv r16,r3                                      
 80209e4:	b8 80 78 00 	mv r15,r4                                      
 80209e8:	b8 a0 60 00 	mv r12,r5                                      
 80209ec:	b9 00 88 00 	mv r17,r8                                      
 80209f0:	20 d3 ff ff 	andi r19,r6,0xffff                             
 80209f4:	20 f2 ff ff 	andi r18,r7,0xffff                             
  rtems_rfs_inode_handle inode;                                       
  rtems_rfs_ino          ino;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
 80209f8:	fb ff c5 f2 	calli 80121c0 <rtems_rfs_trace>                
 80209fc:	5c 20 00 4f 	bne r1,r0,8020b38 <rtems_rfs_symlink+0x194>    <== NEVER TAKEN
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
 8020a00:	29 a1 00 08 	lw r1,(r13+8)                                  
    return ENAMETOOLONG;                                              
 8020a04:	34 0b 00 5b 	mvi r11,91                                     
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
 8020a08:	51 81 00 3f 	bgeu r12,r1,8020b04 <rtems_rfs_symlink+0x160>  <== NEVER TAKEN
    return ENAMETOOLONG;                                              
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, strlen (name),       
 8020a0c:	b9 c0 08 00 	mv r1,r14                                      
 8020a10:	f8 00 15 7e 	calli 8026008 <strlen>                         
 8020a14:	b8 20 20 00 	mv r4,r1                                       
 8020a18:	37 89 00 b8 	addi r9,sp,184                                 
 8020a1c:	ba 20 10 00 	mv r2,r17                                      
 8020a20:	b9 a0 08 00 	mv r1,r13                                      
 8020a24:	b9 c0 18 00 	mv r3,r14                                      
 8020a28:	38 05 a1 ff 	mvu r5,0xa1ff                                  
 8020a2c:	34 06 00 01 	mvi r6,1                                       
 8020a30:	ba 60 38 00 	mv r7,r19                                      
 8020a34:	ba 40 40 00 	mv r8,r18                                      
 8020a38:	5b 89 00 04 	sw (sp+4),r9                                   
 8020a3c:	fb ff be b3 	calli 8010508 <rtems_rfs_inode_create>         
 8020a40:	b8 20 58 00 	mv r11,r1                                      
                               RTEMS_RFS_S_SYMLINK,                   
                               1, uid, gid, &ino);                    
  if (rc > 0)                                                         
 8020a44:	48 20 00 30 	bg r1,r0,8020b04 <rtems_rfs_symlink+0x160>     <== NEVER TAKEN
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
 8020a48:	2b 82 00 b8 	lw r2,(sp+184)                                 
 8020a4c:	37 8e 00 80 	addi r14,sp,128                                
 8020a50:	b9 a0 08 00 	mv r1,r13                                      
 8020a54:	b9 c0 18 00 	mv r3,r14                                      
 8020a58:	34 04 00 01 	mvi r4,1                                       
 8020a5c:	fb ff bc d4 	calli 800fdac <rtems_rfs_inode_open>           
 8020a60:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020a64:	48 20 00 28 	bg r1,r0,8020b04 <rtems_rfs_symlink+0x160>     <== NEVER TAKEN
  /*                                                                  
   * If the link length is less than the length of data union in the inode
   * place the link into the data area else allocate a block and write the link
   * to that.                                                         
   */                                                                 
  if (link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)                   
 8020a68:	34 01 00 13 	mvi r1,19                                      
 8020a6c:	55 81 00 49 	bgu r12,r1,8020b90 <rtems_rfs_symlink+0x1ec>   <== NEVER TAKEN
  {                                                                   
    memset (inode.node->data.name, 0, RTEMS_RFS_INODE_DATA_NAME_SIZE);
 8020a70:	2b 84 00 8c 	lw r4,(sp+140)                                 
    memcpy (inode.node->data.name, link, link_length);                
 8020a74:	b9 e0 10 00 	mv r2,r15                                      
 8020a78:	b9 80 18 00 	mv r3,r12                                      
   * place the link into the data area else allocate a block and write the link
   * to that.                                                         
   */                                                                 
  if (link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)                   
  {                                                                   
    memset (inode.node->data.name, 0, RTEMS_RFS_INODE_DATA_NAME_SIZE);
 8020a7c:	34 81 00 1c 	addi r1,r4,28                                  
 8020a80:	58 80 00 1c 	sw (r4+28),r0                                  
 8020a84:	58 20 00 04 	sw (r1+4),r0                                   
 8020a88:	58 20 00 08 	sw (r1+8),r0                                   
 8020a8c:	58 20 00 0c 	sw (r1+12),r0                                  
 8020a90:	58 20 00 10 	sw (r1+16),r0                                  
    memcpy (inode.node->data.name, link, link_length);                
 8020a94:	f8 00 0f 57 	calli 80247f0 <memcpy>                         
 * @param block_count The block count.                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->block_count, block_count);      
 8020a98:	2b 81 00 8c 	lw r1,(sp+140)                                 
 8020a9c:	30 20 00 0c 	sb (r1+12),r0                                  
 8020aa0:	2b 81 00 8c 	lw r1,(sp+140)                                 
 8020aa4:	30 20 00 0d 	sb (r1+13),r0                                  
 8020aa8:	2b 81 00 8c 	lw r1,(sp+140)                                 
 8020aac:	30 20 00 0e 	sb (r1+14),r0                                  
 8020ab0:	2b 81 00 8c 	lw r1,(sp+140)                                 
 8020ab4:	30 20 00 0f 	sb (r1+15),r0                                  
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_inode_set_block_offset (&inode, link_length);             
 8020ab8:	21 8c ff ff 	andi r12,r12,0xffff                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,     
                                  uint16_t                block_offset)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);    
 8020abc:	01 84 00 01 	srui r4,r12,1                                  
 8020ac0:	2b 83 00 8c 	lw r3,(sp+140)                                 
 8020ac4:	00 84 00 01 	srui r4,r4,1                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8020ac8:	b9 a0 08 00 	mv r1,r13                                      
 8020acc:	00 84 00 01 	srui r4,r4,1                                   
 8020ad0:	b9 c0 10 00 	mv r2,r14                                      
 8020ad4:	00 84 00 01 	srui r4,r4,1                                   
 8020ad8:	00 84 00 01 	srui r4,r4,1                                   
 8020adc:	00 84 00 01 	srui r4,r4,1                                   
 8020ae0:	00 84 00 01 	srui r4,r4,1                                   
 8020ae4:	00 84 00 01 	srui r4,r4,1                                   
 8020ae8:	30 64 00 0a 	sb (r3+10),r4                                  
 8020aec:	2b 83 00 8c 	lw r3,(sp+140)                                 
 8020af0:	30 6c 00 0b 	sb (r3+11),r12                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8020af4:	34 03 00 01 	mvi r3,1                                       
 8020af8:	33 83 00 90 	sb (sp+144),r3                                 
 8020afc:	fb ff bd 46 	calli 8010014 <rtems_rfs_inode_close>          
 8020b00:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  return rc;                                                          
}                                                                     
 8020b04:	b9 60 08 00 	mv r1,r11                                      
 8020b08:	2b 9d 00 08 	lw ra,(sp+8)                                   
 8020b0c:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8020b10:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8020b14:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8020b18:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8020b1c:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8020b20:	2b 90 00 18 	lw r16,(sp+24)                                 
 8020b24:	2b 91 00 14 	lw r17,(sp+20)                                 
 8020b28:	2b 92 00 10 	lw r18,(sp+16)                                 
 8020b2c:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8020b30:	37 9c 00 b8 	addi sp,sp,184                                 
 8020b34:	c3 a0 00 00 	ret                                            
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
 8020b38:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020b3c:	38 21 bf bc 	ori r1,r1,0xbfbc                               <== NOT EXECUTED
 8020b40:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8020b44:	f8 00 10 55 	calli 8024c98 <printf>                         <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
 8020b48:	4c 10 00 07 	bge r0,r16,8020b64 <rtems_rfs_symlink+0x1c0>   <== NOT EXECUTED
 8020b4c:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_symlink (rtems_rfs_file_system* fs,                         
 8020b50:	b5 cb 08 00 	add r1,r14,r11                                 <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
 8020b54:	40 21 00 00 	lbu r1,(r1+0)                                  <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
 8020b58:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
 8020b5c:	f8 00 10 d5 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
 8020b60:	4a 0b ff fc 	bg r16,r11,8020b50 <rtems_rfs_symlink+0x1ac>   <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
 8020b64:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020b68:	38 21 bf e4 	ori r1,r1,0xbfe4                               <== NOT EXECUTED
 8020b6c:	f8 00 10 4b 	calli 8024c98 <printf>                         <== NOT EXECUTED
    for (c = 0; c < link_length; c++)                                 
 8020b70:	4c 0c ff a4 	bge r0,r12,8020a00 <rtems_rfs_symlink+0x5c>    <== NOT EXECUTED
 8020b74:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_symlink (rtems_rfs_file_system* fs,                         
 8020b78:	b5 eb 08 00 	add r1,r15,r11                                 <== NOT EXECUTED
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
 8020b7c:	40 21 00 00 	lbu r1,(r1+0)                                  <== NOT EXECUTED
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
 8020b80:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
      printf ("%c", link[c]);                                         
 8020b84:	f8 00 10 cb 	calli 8024eb0 <putchar>                        <== NOT EXECUTED
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
 8020b88:	49 8b ff fc 	bg r12,r11,8020b78 <rtems_rfs_symlink+0x1d4>   <== NOT EXECUTED
 8020b8c:	e3 ff ff 9d 	bi 8020a00 <rtems_rfs_symlink+0x5c>            <== NOT EXECUTED
    rtems_rfs_block_map     map;                                      
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    uint8_t*                data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
 8020b90:	37 90 00 30 	addi r16,sp,48                                 <== NOT EXECUTED
 8020b94:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020b98:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020b9c:	ba 00 18 00 	mv r3,r16                                      <== NOT EXECUTED
 8020ba0:	fb ff e9 f5 	calli 801b374 <rtems_rfs_block_map_open>       <== NOT EXECUTED
 8020ba4:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020ba8:	4c 01 00 05 	bge r0,r1,8020bbc <rtems_rfs_symlink+0x218>    <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
    if (rc > 0)                                                       
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
 8020bac:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020bb0:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020bb4:	fb ff bd 18 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
      return rc;                                                      
 8020bb8:	e3 ff ff d3 	bi 8020b04 <rtems_rfs_symlink+0x160>           <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);              
 8020bbc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020bc0:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 8020bc4:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8020bc8:	37 84 00 b4 	addi r4,sp,180                                 <== NOT EXECUTED
 8020bcc:	fb ff eb f8 	calli 801bbac <rtems_rfs_block_map_grow>       <== NOT EXECUTED
 8020bd0:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020bd4:	4c 01 00 08 	bge r0,r1,8020bf4 <rtems_rfs_symlink+0x250>    <== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
 8020bd8:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 8020bdc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020be0:	fb ff ea 8d 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
 8020be4:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020be8:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020bec:	fb ff bd 0a 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
      return rc;                                                      
 8020bf0:	e3 ff ff c5 	bi 8020b04 <rtems_rfs_symlink+0x160>           <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
 8020bf4:	2b 83 00 b4 	lw r3,(sp+180)                                 <== NOT EXECUTED
 8020bf8:	37 91 00 a8 	addi r17,sp,168                                <== NOT EXECUTED
 8020bfc:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020c00:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8020c04:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 8020c08:	33 80 00 a8 	sb (sp+168),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 8020c0c:	5b 80 00 ac 	sw (sp+172),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020c10:	5b 80 00 b0 	sw (sp+176),r0                                 <== NOT EXECUTED
 8020c14:	fb ff ef 0c 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 8020c18:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020c1c:	4c 01 00 05 	bge r0,r1,8020c30 <rtems_rfs_symlink+0x28c>    <== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
 8020c20:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020c24:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 8020c28:	fb ff ea 7b 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
 8020c2c:	e3 ff ff e0 	bi 8020bac <rtems_rfs_symlink+0x208>           <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    data = rtems_rfs_buffer_data (&buffer);                           
 8020c30:	2b 81 00 b0 	lw r1,(sp+176)                                 <== NOT EXECUTED
                                                                      
    memset (data, 0xff, rtems_rfs_fs_block_size (fs));                
 8020c34:	29 a3 00 08 	lw r3,(r13+8)                                  <== NOT EXECUTED
 8020c38:	34 02 00 ff 	mvi r2,255                                     <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    data = rtems_rfs_buffer_data (&buffer);                           
 8020c3c:	28 2b 00 1c 	lw r11,(r1+28)                                 <== NOT EXECUTED
                                                                      
    memset (data, 0xff, rtems_rfs_fs_block_size (fs));                
 8020c40:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020c44:	f8 00 0f 79 	calli 8024a28 <memset>                         <== NOT EXECUTED
    memcpy (data, link, link_length);                                 
 8020c48:	b9 80 18 00 	mv r3,r12                                      <== NOT EXECUTED
 8020c4c:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020c50:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8020c54:	f8 00 0e e7 	calli 80247f0 <memcpy>                         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 8020c58:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8020c5c:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020c60:	fb ff ee 87 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &map);                        
 8020c64:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8020c68:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 8020c6c:	33 80 00 a8 	sb (sp+168),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 8020c70:	5b 80 00 ac 	sw (sp+172),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020c74:	5b 80 00 b0 	sw (sp+176),r0                                 <== NOT EXECUTED
 8020c78:	fb ff ea 67 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
 8020c7c:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020c80:	4c 01 ff 8e 	bge r0,r1,8020ab8 <rtems_rfs_symlink+0x114>    <== NOT EXECUTED
 8020c84:	e3 ff ff ca 	bi 8020bac <rtems_rfs_symlink+0x208>           <== NOT EXECUTED
                                                                      

08020c88 <rtems_rfs_symlink_read>: rtems_rfs_symlink_read (rtems_rfs_file_system* fs, rtems_rfs_ino link, char* path, size_t size, size_t* length) {
 8020c88:	37 9c ff 58 	addi sp,sp,-168                                
 8020c8c:	5b 8b 00 20 	sw (sp+32),r11                                 
 8020c90:	5b 8c 00 1c 	sw (sp+28),r12                                 
 8020c94:	5b 8d 00 18 	sw (sp+24),r13                                 
 8020c98:	5b 8e 00 14 	sw (sp+20),r14                                 
 8020c9c:	5b 8f 00 10 	sw (sp+16),r15                                 
 8020ca0:	5b 90 00 0c 	sw (sp+12),r16                                 
 8020ca4:	5b 91 00 08 	sw (sp+8),r17                                  
 8020ca8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8020cac:	b8 20 60 00 	mv r12,r1                                      
 8020cb0:	b8 40 58 00 	mv r11,r2                                      
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
 8020cb4:	34 01 00 04 	mvi r1,4                                       
 8020cb8:	34 02 00 00 	mvi r2,0                                       
rtems_rfs_symlink_read (rtems_rfs_file_system* fs,                    
                        rtems_rfs_ino          link,                  
                        char*                  path,                  
                        size_t                 size,                  
                        size_t*                length)                
{                                                                     
 8020cbc:	b8 60 80 00 	mv r16,r3                                      
 8020cc0:	b8 80 78 00 	mv r15,r4                                      
 8020cc4:	b8 a0 70 00 	mv r14,r5                                      
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
 8020cc8:	fb ff c5 3e 	calli 80121c0 <rtems_rfs_trace>                
 8020ccc:	5c 20 00 25 	bne r1,r0,8020d60 <rtems_rfs_symlink_read+0xd8><== NEVER TAKEN
    printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);     
                                                                      
  rc = rtems_rfs_inode_open (fs, link, &inode, true);                 
 8020cd0:	37 8d 00 74 	addi r13,sp,116                                
 8020cd4:	b9 60 10 00 	mv r2,r11                                      
 8020cd8:	b9 80 08 00 	mv r1,r12                                      
 8020cdc:	b9 a0 18 00 	mv r3,r13                                      
 8020ce0:	34 04 00 01 	mvi r4,1                                       
 8020ce4:	fb ff bc 32 	calli 800fdac <rtems_rfs_inode_open>           
 8020ce8:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 8020cec:	5c 20 00 12 	bne r1,r0,8020d34 <rtems_rfs_symlink_read+0xac><== NEVER TAKEN
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
                                                                      
  return rc;                                                          
}                                                                     
 8020cf0:	2b 8b 00 80 	lw r11,(sp+128)                                
                                                                      
  rc = rtems_rfs_inode_open (fs, link, &inode, true);                 
  if (rc)                                                             
    return rc;                                                        
                                                                      
  if (!RTEMS_RFS_S_ISLNK (rtems_rfs_inode_get_mode (&inode)))         
 8020cf4:	38 02 a0 00 	mvu r2,0xa000                                  
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 8020cf8:	41 66 00 02 	lbu r6,(r11+2)                                 
 8020cfc:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d00:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d04:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d08:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d0c:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d10:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d14:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d18:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d1c:	20 c6 f0 00 	andi r6,r6,0xf000                              
 8020d20:	44 c2 00 15 	be r6,r2,8020d74 <rtems_rfs_symlink_read+0xec> <== ALWAYS TAKEN
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
 8020d24:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020d28:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020d2c:	fb ff bc ba 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    return EINVAL;                                                    
 8020d30:	34 0b 00 16 	mvi r11,22                                     <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
                                                                      
  return rc;                                                          
}                                                                     
 8020d34:	b9 60 08 00 	mv r1,r11                                      
 8020d38:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8020d3c:	2b 8b 00 20 	lw r11,(sp+32)                                 
 8020d40:	2b 8c 00 1c 	lw r12,(sp+28)                                 
 8020d44:	2b 8d 00 18 	lw r13,(sp+24)                                 
 8020d48:	2b 8e 00 14 	lw r14,(sp+20)                                 
 8020d4c:	2b 8f 00 10 	lw r15,(sp+16)                                 
 8020d50:	2b 90 00 0c 	lw r16,(sp+12)                                 
 8020d54:	2b 91 00 08 	lw r17,(sp+8)                                  
 8020d58:	37 9c 00 a8 	addi sp,sp,168                                 
 8020d5c:	c3 a0 00 00 	ret                                            
{                                                                     
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
    printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);     
 8020d60:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020d64:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020d68:	38 21 bf ec 	ori r1,r1,0xbfec                               <== NOT EXECUTED
 8020d6c:	f8 00 0f cb 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020d70:	e3 ff ff d8 	bi 8020cd0 <rtems_rfs_symlink_read+0x48>       <== NOT EXECUTED
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
 8020d74:	41 66 00 0a 	lbu r6,(r11+10)                                
 8020d78:	41 61 00 0b 	lbu r1,(r11+11)                                
 8020d7c:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d80:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d84:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d88:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d8c:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d90:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d94:	b4 c6 30 00 	add r6,r6,r6                                   
 8020d98:	b4 c6 30 00 	add r6,r6,r6                                   
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return EINVAL;                                                    
  }                                                                   
                                                                      
  *length = rtems_rfs_inode_get_block_offset (&inode);                
 8020d9c:	b8 c1 30 00 	or r6,r6,r1                                    
 8020da0:	59 c6 00 00 	sw (r14+0),r6                                  
                                                                      
  if (size < *length)                                                 
 8020da4:	51 e6 00 02 	bgeu r15,r6,8020dac <rtems_rfs_symlink_read+0x124>
  {                                                                   
    *length = size;                                                   
 8020da8:	59 cf 00 00 	sw (r14+0),r15                                 
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
 8020dac:	35 6f 00 0c 	addi r15,r11,12                                
 8020db0:	41 61 00 0c 	lbu r1,(r11+12)                                
 8020db4:	41 f1 00 03 	lbu r17,(r15+3)                                
 8020db8:	34 02 00 18 	mvi r2,24                                      
 8020dbc:	f8 00 57 f6 	calli 8036d94 <__ashlsi3>                      
 8020dc0:	ba 21 88 00 	or r17,r17,r1                                  
 8020dc4:	41 e1 00 01 	lbu r1,(r15+1)                                 
 8020dc8:	34 02 00 10 	mvi r2,16                                      
 8020dcc:	f8 00 57 f2 	calli 8036d94 <__ashlsi3>                      
 8020dd0:	41 e4 00 02 	lbu r4,(r15+2)                                 
 8020dd4:	ba 21 08 00 	or r1,r17,r1                                   
 8020dd8:	b4 84 20 00 	add r4,r4,r4                                   
 8020ddc:	b4 84 20 00 	add r4,r4,r4                                   
 8020de0:	b4 84 20 00 	add r4,r4,r4                                   
 8020de4:	b4 84 20 00 	add r4,r4,r4                                   
 8020de8:	b4 84 20 00 	add r4,r4,r4                                   
 8020dec:	b4 84 20 00 	add r4,r4,r4                                   
 8020df0:	b4 84 20 00 	add r4,r4,r4                                   
 8020df4:	b4 84 20 00 	add r4,r4,r4                                   
 8020df8:	b8 24 20 00 	or r4,r1,r4                                    
  }                                                                   
                                                                      
  if (rtems_rfs_inode_get_block_count (&inode) == 0)                  
 8020dfc:	5c 80 00 0a 	bne r4,r0,8020e24 <rtems_rfs_symlink_read+0x19c><== NEVER TAKEN
  {                                                                   
    memcpy (path, inode.node->data.name, *length);                    
 8020e00:	29 c3 00 00 	lw r3,(r14+0)                                  
 8020e04:	ba 00 08 00 	mv r1,r16                                      
 8020e08:	35 62 00 1c 	addi r2,r11,28                                 
 8020e0c:	f8 00 0e 79 	calli 80247f0 <memcpy>                         
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
 8020e10:	b9 80 08 00 	mv r1,r12                                      
 8020e14:	b9 a0 10 00 	mv r2,r13                                      
 8020e18:	fb ff bc 7f 	calli 8010014 <rtems_rfs_inode_close>          
 8020e1c:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  return rc;                                                          
 8020e20:	e3 ff ff c5 	bi 8020d34 <rtems_rfs_symlink_read+0xac>       
    rtems_rfs_block_map     map;                                      
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    char*                   data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
 8020e24:	37 8f 00 24 	addi r15,sp,36                                 <== NOT EXECUTED
 8020e28:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e2c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020e30:	b9 e0 18 00 	mv r3,r15                                      <== NOT EXECUTED
 8020e34:	fb ff e9 50 	calli 801b374 <rtems_rfs_block_map_open>       <== NOT EXECUTED
 8020e38:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020e3c:	4c 01 00 05 	bge r0,r1,8020e50 <rtems_rfs_symlink_read+0x1c8><== NOT EXECUTED
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
    if (rc > 0)                                                       
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
 8020e40:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e44:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020e48:	fb ff bc 73 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
      return rc;                                                      
 8020e4c:	e3 ff ff ba 	bi 8020d34 <rtems_rfs_symlink_read+0xac>       <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
 8020e50:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e54:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8020e58:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8020e5c:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 8020e60:	37 85 00 a8 	addi r5,sp,168                                 <== NOT EXECUTED
 8020e64:	fb ff eb 10 	calli 801baa4 <rtems_rfs_block_map_seek>       <== NOT EXECUTED
 8020e68:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020e6c:	4c 01 00 08 	bge r0,r1,8020e8c <rtems_rfs_symlink_read+0x204><== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
 8020e70:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8020e74:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e78:	fb ff e9 e7 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
 8020e7c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e80:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020e84:	fb ff bc 64 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
      return rc;                                                      
 8020e88:	e3 ff ff ab 	bi 8020d34 <rtems_rfs_symlink_read+0xac>       <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
 8020e8c:	2b 83 00 a8 	lw r3,(sp+168)                                 <== NOT EXECUTED
 8020e90:	37 91 00 9c 	addi r17,sp,156                                <== NOT EXECUTED
 8020e94:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020e98:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8020e9c:	34 04 00 00 	mvi r4,0                                       <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
 8020ea0:	33 80 00 9c 	sb (sp+156),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 8020ea4:	5b 80 00 a0 	sw (sp+160),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020ea8:	5b 80 00 a4 	sw (sp+164),r0                                 <== NOT EXECUTED
 8020eac:	fb ff ee 66 	calli 801c844 <rtems_rfs_buffer_handle_request><== NOT EXECUTED
 8020eb0:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020eb4:	4c 01 00 05 	bge r0,r1,8020ec8 <rtems_rfs_symlink_read+0x240><== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
 8020eb8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020ebc:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8020ec0:	fb ff e9 d5 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
 8020ec4:	e3 ff ff df 	bi 8020e40 <rtems_rfs_symlink_read+0x1b8>      <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    data = rtems_rfs_buffer_data (&buffer);                           
    memcpy (path, data, *length);                                     
 8020ec8:	2b 82 00 a4 	lw r2,(sp+164)                                 <== NOT EXECUTED
 8020ecc:	29 c3 00 00 	lw r3,(r14+0)                                  <== NOT EXECUTED
 8020ed0:	ba 00 08 00 	mv r1,r16                                      <== NOT EXECUTED
 8020ed4:	28 42 00 1c 	lw r2,(r2+28)                                  <== NOT EXECUTED
 8020ed8:	f8 00 0e 46 	calli 80247f0 <memcpy>                         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
 8020edc:	ba 20 10 00 	mv r2,r17                                      <== NOT EXECUTED
 8020ee0:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020ee4:	fb ff ed e6 	calli 801c67c <rtems_rfs_buffer_handle_release><== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &map);                        
 8020ee8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020eec:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
  handle->dirty = false;                                              
 8020ef0:	33 80 00 9c 	sb (sp+156),r0                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
 8020ef4:	5b 80 00 a0 	sw (sp+160),r0                                 <== NOT EXECUTED
  handle->buffer = NULL;                                              
 8020ef8:	5b 80 00 a4 	sw (sp+164),r0                                 <== NOT EXECUTED
 8020efc:	fb ff e9 c6 	calli 801b614 <rtems_rfs_block_map_close>      <== NOT EXECUTED
 8020f00:	b8 20 58 00 	mv r11,r1                                      <== NOT EXECUTED
    if (rc > 0)                                                       
 8020f04:	4c 01 ff c3 	bge r0,r1,8020e10 <rtems_rfs_symlink_read+0x188><== NOT EXECUTED
 8020f08:	e3 ff ff ce 	bi 8020e40 <rtems_rfs_symlink_read+0x1b8>      <== NOT EXECUTED
                                                                      

08012210 <rtems_rfs_trace_clear_mask>: rtems_rfs_trace_mask rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask) { rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
 8012210:	78 03 08 04 	mvhi r3,0x804                                  <== NOT EXECUTED
 8012214:	38 63 e7 f8 	ori r3,r3,0xe7f8                               <== NOT EXECUTED
 8012218:	28 65 00 00 	lw r5,(r3+0)                                   <== NOT EXECUTED
 801221c:	28 64 00 04 	lw r4,(r3+4)                                   <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
 8012220:	a4 20 08 00 	not r1,r1                                      <== NOT EXECUTED
 8012224:	a4 40 10 00 	not r2,r2                                      <== NOT EXECUTED
 8012228:	a0 25 08 00 	and r1,r1,r5                                   <== NOT EXECUTED
 801222c:	a0 44 10 00 	and r2,r2,r4                                   <== NOT EXECUTED
 8012230:	58 61 00 00 	sw (r3+0),r1                                   <== NOT EXECUTED
 8012234:	58 62 00 04 	sw (r3+4),r2                                   <== NOT EXECUTED
  return state;                                                       
}                                                                     
 8012238:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 801223c:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 8012240:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080121e4 <rtems_rfs_trace_set_mask>: rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask) { rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
 80121e4:	78 03 08 04 	mvhi r3,0x804                                  <== NOT EXECUTED
 80121e8:	38 63 e7 f8 	ori r3,r3,0xe7f8                               <== NOT EXECUTED
 80121ec:	28 65 00 00 	lw r5,(r3+0)                                   <== NOT EXECUTED
 80121f0:	28 64 00 04 	lw r4,(r3+4)                                   <== NOT EXECUTED
  rtems_rfs_trace_flags |= mask;                                      
 80121f4:	b8 25 08 00 	or r1,r1,r5                                    <== NOT EXECUTED
 80121f8:	b8 44 10 00 	or r2,r2,r4                                    <== NOT EXECUTED
 80121fc:	58 61 00 00 	sw (r3+0),r1                                   <== NOT EXECUTED
 8012200:	58 62 00 04 	sw (r3+4),r2                                   <== NOT EXECUTED
  return state;                                                       
}                                                                     
 8012204:	b8 a0 08 00 	mv r1,r5                                       <== NOT EXECUTED
 8012208:	b8 80 10 00 	mv r2,r4                                       <== NOT EXECUTED
 801220c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08012244 <rtems_rfs_trace_shell_command>: int rtems_rfs_trace_shell_command (int argc, char *argv[]) {
 8012244:	37 9c ff 1c 	addi sp,sp,-228                                <== NOT EXECUTED
 8012248:	5b 8b 00 44 	sw (sp+68),r11                                 <== NOT EXECUTED
 801224c:	5b 8c 00 40 	sw (sp+64),r12                                 <== NOT EXECUTED
 8012250:	5b 8d 00 3c 	sw (sp+60),r13                                 <== NOT EXECUTED
 8012254:	5b 8e 00 38 	sw (sp+56),r14                                 <== NOT EXECUTED
 8012258:	5b 8f 00 34 	sw (sp+52),r15                                 <== NOT EXECUTED
 801225c:	5b 90 00 30 	sw (sp+48),r16                                 <== NOT EXECUTED
 8012260:	5b 91 00 2c 	sw (sp+44),r17                                 <== NOT EXECUTED
 8012264:	5b 92 00 28 	sw (sp+40),r18                                 <== NOT EXECUTED
 8012268:	5b 93 00 24 	sw (sp+36),r19                                 <== NOT EXECUTED
 801226c:	5b 94 00 20 	sw (sp+32),r20                                 <== NOT EXECUTED
 8012270:	5b 95 00 1c 	sw (sp+28),r21                                 <== NOT EXECUTED
 8012274:	5b 96 00 18 	sw (sp+24),r22                                 <== NOT EXECUTED
 8012278:	5b 97 00 14 	sw (sp+20),r23                                 <== NOT EXECUTED
 801227c:	5b 98 00 10 	sw (sp+16),r24                                 <== NOT EXECUTED
 8012280:	5b 99 00 0c 	sw (sp+12),r25                                 <== NOT EXECUTED
 8012284:	5b 9b 00 08 	sw (sp+8),fp                                   <== NOT EXECUTED
 8012288:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
 801228c:	5b 82 00 48 	sw (sp+72),r2                                  <== NOT EXECUTED
  const char* table[] =                                               
 8012290:	78 02 08 03 	mvhi r2,0x803                                  <== NOT EXECUTED
 8012294:	38 42 a1 20 	ori r2,r2,0xa120                               <== NOT EXECUTED
  return state;                                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_trace_shell_command (int argc, char *argv[])                
{                                                                     
 8012298:	b8 20 c8 00 	mv r25,r1                                      <== NOT EXECUTED
  const char* table[] =                                               
 801229c:	34 03 00 9c 	mvi r3,156                                     <== NOT EXECUTED
 80122a0:	37 81 00 4c 	addi r1,sp,76                                  <== NOT EXECUTED
 80122a4:	f8 00 49 53 	calli 80247f0 <memcpy>                         <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 80122a8:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
 80122ac:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 80122b0:	4c 59 00 2d 	bge r2,r25,8012364 <rtems_rfs_trace_shell_command+0x120><== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
 80122b4:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 80122b8:	28 2c 00 04 	lw r12,(r1+4)                                  <== NOT EXECUTED
 80122bc:	34 01 00 2d 	mvi r1,45                                      <== NOT EXECUTED
 80122c0:	41 82 00 00 	lbu r2,(r12+0)                                 <== NOT EXECUTED
 80122c4:	44 41 00 40 	be r2,r1,80123c4 <rtems_rfs_trace_shell_command+0x180><== NOT EXECUTED
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
          return 0;                                                   
        default:                                                      
          printf ("error: unknown option\n");                         
          return 1;                                                   
 80122c8:	78 0e 08 04 	mvhi r14,0x804                                 <== NOT EXECUTED
 80122cc:	39 ce e7 f8 	ori r14,r14,0xe7f8                             <== NOT EXECUTED
 80122d0:	29 cd 00 00 	lw r13,(r14+0)                                 <== NOT EXECUTED
 80122d4:	29 cb 00 04 	lw r11,(r14+4)                                 <== NOT EXECUTED
 80122d8:	2b 90 00 48 	lw r16,(sp+72)                                 <== NOT EXECUTED
 80122dc:	78 16 08 03 	mvhi r22,0x803                                 <== NOT EXECUTED
 80122e0:	78 15 08 03 	mvhi r21,0x803                                 <== NOT EXECUTED
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
 80122e4:	78 1b 08 03 	mvhi fp,0x803                                  <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 80122e8:	34 0f 00 01 	mvi r15,1                                      <== NOT EXECUTED
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
 80122ec:	34 14 00 01 	mvi r20,1                                      <== NOT EXECUTED
    "file-io",                                                        
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
  rtems_rfs_trace_mask clear_value = 0;                               
 80122f0:	34 13 00 00 	mvi r19,0                                      <== NOT EXECUTED
 80122f4:	34 12 00 00 	mvi r18,0                                      <== NOT EXECUTED
    "file-close",                                                     
    "file-io",                                                        
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
 80122f8:	34 18 00 00 	mvi r24,0                                      <== NOT EXECUTED
 80122fc:	34 17 00 00 	mvi r23,0                                      <== NOT EXECUTED
 8012300:	3a d6 83 2c 	ori r22,r22,0x832c                             <== NOT EXECUTED
 8012304:	3a b5 9e f4 	ori r21,r21,0x9ef4                             <== NOT EXECUTED
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
 8012308:	3b 7b c2 38 	ori fp,fp,0xc238                               <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
 801230c:	34 11 00 27 	mvi r17,39                                     <== NOT EXECUTED
          return 1;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
 8012310:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8012314:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 8012318:	f8 00 4d ae 	calli 80259d0 <strcmp>                         <== NOT EXECUTED
 801231c:	5c 20 00 02 	bne r1,r0,8012324 <rtems_rfs_trace_shell_command+0xe0><== NOT EXECUTED
        set = true;                                                   
 8012320:	34 14 00 01 	mvi r20,1                                      <== NOT EXECUTED
      if (strcmp (argv[arg], "clear") == 0)                           
 8012324:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8012328:	ba a0 10 00 	mv r2,r21                                      <== NOT EXECUTED
 801232c:	f8 00 4d a9 	calli 80259d0 <strcmp>                         <== NOT EXECUTED
 8012330:	5c 20 00 2f 	bne r1,r0,80123ec <rtems_rfs_trace_shell_command+0x1a8><== NOT EXECUTED
 8012334:	bb 0d 68 00 	or r13,r24,r13                                 <== NOT EXECUTED
 8012338:	ba eb 58 00 	or r11,r23,r11                                 <== NOT EXECUTED
 801233c:	a6 60 18 00 	not r3,r19                                     <== NOT EXECUTED
 8012340:	a6 40 08 00 	not r1,r18                                     <== NOT EXECUTED
 8012344:	a1 a3 68 00 	and r13,r13,r3                                 <== NOT EXECUTED
 8012348:	a1 61 58 00 	and r11,r11,r1                                 <== NOT EXECUTED
        set = false;                                                  
 801234c:	34 14 00 00 	mvi r20,0                                      <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
 8012350:	59 cd 00 00 	sw (r14+0),r13                                 <== NOT EXECUTED
 8012354:	59 cb 00 04 	sw (r14+4),r11                                 <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 8012358:	35 ef 00 01 	addi r15,r15,1                                 <== NOT EXECUTED
 801235c:	4b 2f 00 15 	bg r25,r15,80123b0 <rtems_rfs_trace_shell_command+0x16c><== NOT EXECUTED
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
 8012360:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
}                                                                     
 8012364:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8012368:	2b 8b 00 44 	lw r11,(sp+68)                                 <== NOT EXECUTED
 801236c:	2b 8c 00 40 	lw r12,(sp+64)                                 <== NOT EXECUTED
 8012370:	2b 8d 00 3c 	lw r13,(sp+60)                                 <== NOT EXECUTED
 8012374:	2b 8e 00 38 	lw r14,(sp+56)                                 <== NOT EXECUTED
 8012378:	2b 8f 00 34 	lw r15,(sp+52)                                 <== NOT EXECUTED
 801237c:	2b 90 00 30 	lw r16,(sp+48)                                 <== NOT EXECUTED
 8012380:	2b 91 00 2c 	lw r17,(sp+44)                                 <== NOT EXECUTED
 8012384:	2b 92 00 28 	lw r18,(sp+40)                                 <== NOT EXECUTED
 8012388:	2b 93 00 24 	lw r19,(sp+36)                                 <== NOT EXECUTED
 801238c:	2b 94 00 20 	lw r20,(sp+32)                                 <== NOT EXECUTED
 8012390:	2b 95 00 1c 	lw r21,(sp+28)                                 <== NOT EXECUTED
 8012394:	2b 96 00 18 	lw r22,(sp+24)                                 <== NOT EXECUTED
 8012398:	2b 97 00 14 	lw r23,(sp+20)                                 <== NOT EXECUTED
 801239c:	2b 98 00 10 	lw r24,(sp+16)                                 <== NOT EXECUTED
 80123a0:	2b 99 00 0c 	lw r25,(sp+12)                                 <== NOT EXECUTED
 80123a4:	2b 9b 00 08 	lw fp,(sp+8)                                   <== NOT EXECUTED
 80123a8:	37 9c 00 e4 	addi sp,sp,228                                 <== NOT EXECUTED
 80123ac:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
  {                                                                   
    if (argv[arg][0] == '-')                                          
 80123b0:	2a 0c 00 08 	lw r12,(r16+8)                                 <== NOT EXECUTED
 80123b4:	34 01 00 2d 	mvi r1,45                                      <== NOT EXECUTED
 80123b8:	36 10 00 04 	addi r16,r16,4                                 <== NOT EXECUTED
 80123bc:	41 83 00 00 	lbu r3,(r12+0)                                 <== NOT EXECUTED
 80123c0:	5c 61 ff d4 	bne r3,r1,8012310 <rtems_rfs_trace_shell_command+0xcc><== NOT EXECUTED
    {                                                                 
      switch (argv[arg][1])                                           
 80123c4:	41 81 00 01 	lbu r1,(r12+1)                                 <== NOT EXECUTED
 80123c8:	34 02 00 68 	mvi r2,104                                     <== NOT EXECUTED
 80123cc:	44 22 00 3d 	be r1,r2,80124c0 <rtems_rfs_trace_shell_command+0x27c><== NOT EXECUTED
 80123d0:	34 02 00 6c 	mvi r2,108                                     <== NOT EXECUTED
 80123d4:	44 22 00 42 	be r1,r2,80124dc <rtems_rfs_trace_shell_command+0x298><== NOT EXECUTED
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
          return 0;                                                   
        default:                                                      
          printf ("error: unknown option\n");                         
 80123d8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80123dc:	38 21 9e dc 	ori r1,r1,0x9edc                               <== NOT EXECUTED
 80123e0:	f8 00 4a f6 	calli 8024fb8 <puts>                           <== NOT EXECUTED
          return 1;                                                   
 80123e4:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
 80123e8:	e3 ff ff df 	bi 8012364 <rtems_rfs_trace_shell_command+0x120><== NOT EXECUTED
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
 80123ec:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80123f0:	bb 60 10 00 	mv r2,fp                                       <== NOT EXECUTED
 80123f4:	f8 00 4d 77 	calli 80259d0 <strcmp>                         <== NOT EXECUTED
      {                                                               
        if (set)                                                      
 80123f8:	37 8b 00 4c 	addi r11,sp,76                                 <== NOT EXECUTED
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
 80123fc:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 8012400:	5c 20 00 09 	bne r1,r0,8012424 <rtems_rfs_trace_shell_command+0x1e0><== NOT EXECUTED
      {                                                               
        if (set)                                                      
 8012404:	46 81 00 2a 	be r20,r1,80124ac <rtems_rfs_trace_shell_command+0x268><== NOT EXECUTED
 8012408:	a6 60 68 00 	not r13,r19                                    <== NOT EXECUTED
 801240c:	a6 40 58 00 	not r11,r18                                    <== NOT EXECUTED
          set_value = RTEMS_RFS_TRACE_ALL;                            
 8012410:	34 18 ff ff 	mvi r24,-1                                     <== NOT EXECUTED
 8012414:	34 17 ff ff 	mvi r23,-1                                     <== NOT EXECUTED
 8012418:	e3 ff ff ce 	bi 8012350 <rtems_rfs_trace_shell_command+0x10c><== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
 801241c:	35 ad 00 01 	addi r13,r13,1                                 <== NOT EXECUTED
 8012420:	45 b1 00 1a 	be r13,r17,8012488 <rtems_rfs_trace_shell_command+0x244><== NOT EXECUTED
        {                                                             
          if (strcmp (argv[arg], table[t]) == 0)                      
 8012424:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
 8012428:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
 801242c:	35 6b 00 04 	addi r11,r11,4                                 <== NOT EXECUTED
        {                                                             
          if (strcmp (argv[arg], table[t]) == 0)                      
 8012430:	f8 00 4d 68 	calli 80259d0 <strcmp>                         <== NOT EXECUTED
 8012434:	5c 20 ff fa 	bne r1,r0,801241c <rtems_rfs_trace_shell_command+0x1d8><== NOT EXECUTED
          {                                                           
            if (set)                                                  
 8012438:	46 81 00 0f 	be r20,r1,8012474 <rtems_rfs_trace_shell_command+0x230><== NOT EXECUTED
              set_value = 1ULL << t;                                  
 801243c:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 8012440:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8012444:	f8 00 7d 76 	calli 8031a1c <__ashldi3>                      <== NOT EXECUTED
 8012448:	29 cd 00 00 	lw r13,(r14+0)                                 <== NOT EXECUTED
 801244c:	29 cb 00 04 	lw r11,(r14+4)                                 <== NOT EXECUTED
 8012450:	b8 20 c0 00 	mv r24,r1                                      <== NOT EXECUTED
 8012454:	b8 40 b8 00 	mv r23,r2                                      <== NOT EXECUTED
 8012458:	bb 0d 68 00 	or r13,r24,r13                                 <== NOT EXECUTED
 801245c:	a6 60 10 00 	not r2,r19                                     <== NOT EXECUTED
 8012460:	ba eb 58 00 	or r11,r23,r11                                 <== NOT EXECUTED
 8012464:	a6 40 08 00 	not r1,r18                                     <== NOT EXECUTED
 8012468:	a1 a2 68 00 	and r13,r13,r2                                 <== NOT EXECUTED
 801246c:	a1 61 58 00 	and r11,r11,r1                                 <== NOT EXECUTED
 8012470:	e3 ff ff b8 	bi 8012350 <rtems_rfs_trace_shell_command+0x10c><== NOT EXECUTED
            else                                                      
              clear_value = 1ULL << t;                                
 8012474:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8012478:	b9 a0 18 00 	mv r3,r13                                      <== NOT EXECUTED
 801247c:	f8 00 7d 68 	calli 8031a1c <__ashldi3>                      <== NOT EXECUTED
 8012480:	b8 20 98 00 	mv r19,r1                                      <== NOT EXECUTED
 8012484:	b8 40 90 00 	mv r18,r2                                      <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
 8012488:	29 c2 00 00 	lw r2,(r14+0)                                  <== NOT EXECUTED
 801248c:	29 c1 00 04 	lw r1,(r14+4)                                  <== NOT EXECUTED
 8012490:	a6 60 68 00 	not r13,r19                                    <== NOT EXECUTED
 8012494:	a6 40 58 00 	not r11,r18                                    <== NOT EXECUTED
 8012498:	bb 02 10 00 	or r2,r24,r2                                   <== NOT EXECUTED
 801249c:	ba e1 08 00 	or r1,r23,r1                                   <== NOT EXECUTED
 80124a0:	a1 a2 68 00 	and r13,r13,r2                                 <== NOT EXECUTED
 80124a4:	a1 61 58 00 	and r11,r11,r1                                 <== NOT EXECUTED
 80124a8:	e3 ff ff aa 	bi 8012350 <rtems_rfs_trace_shell_command+0x10c><== NOT EXECUTED
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
      {                                                               
        if (set)                                                      
 80124ac:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
 80124b0:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
          set_value = RTEMS_RFS_TRACE_ALL;                            
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
 80124b4:	34 13 ff ff 	mvi r19,-1                                     <== NOT EXECUTED
 80124b8:	34 12 ff ff 	mvi r18,-1                                     <== NOT EXECUTED
 80124bc:	e3 ff ff a5 	bi 8012350 <rtems_rfs_trace_shell_command+0x10c><== NOT EXECUTED
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
      {                                                               
        case 'h':                                                     
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
 80124c0:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 80124c4:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 80124c8:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80124cc:	38 21 9e 84 	ori r1,r1,0x9e84                               <== NOT EXECUTED
 80124d0:	f8 00 49 f2 	calli 8024c98 <printf>                         <== NOT EXECUTED
          return 0;                                                   
 80124d4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80124d8:	e3 ff ff a3 	bi 8012364 <rtems_rfs_trace_shell_command+0x120><== NOT EXECUTED
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
 80124dc:	2b 81 00 48 	lw r1,(sp+72)                                  <== NOT EXECUTED
 80124e0:	78 0c 08 03 	mvhi r12,0x803                                 <== NOT EXECUTED
 80124e4:	37 8b 00 4c 	addi r11,sp,76                                 <== NOT EXECUTED
 80124e8:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
 80124ec:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80124f0:	38 21 9e ac 	ori r1,r1,0x9eac                               <== NOT EXECUTED
 80124f4:	f8 00 49 e9 	calli 8024c98 <printf>                         <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
  return state;                                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_trace_shell_command (int argc, char *argv[])                
 80124f8:	37 8d 00 e8 	addi r13,sp,232                                <== NOT EXECUTED
 80124fc:	39 8c 9e d4 	ori r12,r12,0x9ed4                             <== NOT EXECUTED
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
          return 0;                                                   
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
 8012500:	29 62 00 00 	lw r2,(r11+0)                                  <== NOT EXECUTED
 8012504:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8012508:	35 6b 00 04 	addi r11,r11,4                                 <== NOT EXECUTED
 801250c:	f8 00 49 e3 	calli 8024c98 <printf>                         <== NOT EXECUTED
        case 'h':                                                     
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
          return 0;                                                   
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
 8012510:	5d 6d ff fc 	bne r11,r13,8012500 <rtems_rfs_trace_shell_command+0x2bc><== NOT EXECUTED
 8012514:	e3 ff ff 93 	bi 8012360 <rtems_rfs_trace_shell_command+0x11c><== NOT EXECUTED
                                                                      

0802053c <rtems_rfs_unlink>: rtems_rfs_unlink (rtems_rfs_file_system* fs, rtems_rfs_ino parent, rtems_rfs_ino target, uint32_t doff, rtems_rfs_unlink_dir dir_mode) {
 802053c:	37 9c ff 8c 	addi sp,sp,-116                                
 8020540:	5b 8b 00 24 	sw (sp+36),r11                                 
 8020544:	5b 8c 00 20 	sw (sp+32),r12                                 
 8020548:	5b 8d 00 1c 	sw (sp+28),r13                                 
 802054c:	5b 8e 00 18 	sw (sp+24),r14                                 
 8020550:	5b 8f 00 14 	sw (sp+20),r15                                 
 8020554:	5b 90 00 10 	sw (sp+16),r16                                 
 8020558:	5b 91 00 0c 	sw (sp+12),r17                                 
 802055c:	5b 92 00 08 	sw (sp+8),r18                                  
 8020560:	5b 9d 00 04 	sw (sp+4),ra                                   
 8020564:	b8 20 60 00 	mv r12,r1                                      
 8020568:	b8 40 80 00 	mv r16,r2                                      
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
 802056c:	34 01 00 00 	mvi r1,0                                       
 8020570:	78 02 02 00 	mvhi r2,0x200                                  
rtems_rfs_unlink (rtems_rfs_file_system* fs,                          
                  rtems_rfs_ino          parent,                      
                  rtems_rfs_ino          target,                      
                  uint32_t               doff,                        
                  rtems_rfs_unlink_dir   dir_mode)                    
{                                                                     
 8020574:	b8 60 70 00 	mv r14,r3                                      
 8020578:	b8 80 90 00 	mv r18,r4                                      
 802057c:	b8 a0 78 00 	mv r15,r5                                      
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
 8020580:	fb ff c7 10 	calli 80121c0 <rtems_rfs_trace>                
 8020584:	5c 20 00 45 	bne r1,r0,8020698 <rtems_rfs_unlink+0x15c>     <== NEVER TAKEN
    printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
                                                                      
  rc = rtems_rfs_inode_open (fs, target, &target_inode, true);        
 8020588:	37 8d 00 28 	addi r13,sp,40                                 
 802058c:	b9 80 08 00 	mv r1,r12                                      
 8020590:	b9 c0 10 00 	mv r2,r14                                      
 8020594:	b9 a0 18 00 	mv r3,r13                                      
 8020598:	34 04 00 01 	mvi r4,1                                       
 802059c:	fb ff be 04 	calli 800fdac <rtems_rfs_inode_open>           
 80205a0:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 80205a4:	5c 20 00 31 	bne r1,r0,8020668 <rtems_rfs_unlink+0x12c>     <== NEVER TAKEN
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
 80205a8:	2b 82 00 34 	lw r2,(sp+52)                                  
 80205ac:	40 46 00 02 	lbu r6,(r2+2)                                  
 80205b0:	b4 c6 30 00 	add r6,r6,r6                                   
 80205b4:	b4 c6 30 00 	add r6,r6,r6                                   
 80205b8:	b4 c6 30 00 	add r6,r6,r6                                   
 80205bc:	b4 c6 30 00 	add r6,r6,r6                                   
 80205c0:	b4 c6 30 00 	add r6,r6,r6                                   
 80205c4:	b4 c6 30 00 	add r6,r6,r6                                   
 80205c8:	b4 c6 30 00 	add r6,r6,r6                                   
 80205cc:	b4 c6 30 00 	add r6,r6,r6                                   
                                                                      
  /*                                                                  
   * If a directory process the unlink mode.                          
   */                                                                 
                                                                      
  dir = RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)); 
 80205d0:	20 c6 f0 00 	andi r6,r6,0xf000                              
 80205d4:	64 d1 40 00 	cmpei r17,r6,16384                             
  if (dir)                                                            
 80205d8:	46 21 00 04 	be r17,r1,80205e8 <rtems_rfs_unlink+0xac>      
  {                                                                   
    switch (dir_mode)                                                 
 80205dc:	45 e0 00 55 	be r15,r0,8020730 <rtems_rfs_unlink+0x1f4>     <== NEVER TAKEN
 80205e0:	34 01 00 01 	mvi r1,1                                       
 80205e4:	45 e1 00 42 	be r15,r1,80206ec <rtems_rfs_unlink+0x1b0>     <== ALWAYS TAKEN
      default:                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
 80205e8:	37 8f 00 50 	addi r15,sp,80                                 
 80205ec:	b9 80 08 00 	mv r1,r12                                      
 80205f0:	ba 00 10 00 	mv r2,r16                                      
 80205f4:	b9 e0 18 00 	mv r3,r15                                      
 80205f8:	34 04 00 01 	mvi r4,1                                       
 80205fc:	fb ff bd ec 	calli 800fdac <rtems_rfs_inode_open>           
 8020600:	b8 20 58 00 	mv r11,r1                                      
  if (rc)                                                             
 8020604:	5c 20 00 2b 	bne r1,r0,80206b0 <rtems_rfs_unlink+0x174>     <== NEVER TAKEN
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);     
 8020608:	b9 80 08 00 	mv r1,r12                                      
 802060c:	b9 e0 10 00 	mv r2,r15                                      
 8020610:	b9 c0 18 00 	mv r3,r14                                      
 8020614:	ba 40 20 00 	mv r4,r18                                      
 8020618:	fb ff f5 20 	calli 801da98 <rtems_rfs_dir_del_entry>        
 802061c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020620:	4c 01 00 4f 	bge r0,r1,802075c <rtems_rfs_unlink+0x220>     <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
 8020624:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020628:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 802062c:	fb ff c6 e5 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020630:	44 20 00 08 	be r1,r0,8020650 <rtems_rfs_unlink+0x114>      <== NOT EXECUTED
      printf ("rtems-rfs: unlink: dir-del failed: %d: %s\n",          
 8020634:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020638:	f8 00 16 53 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 802063c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020640:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020644:	38 21 be 9c 	ori r1,r1,0xbe9c                               <== NOT EXECUTED
 8020648:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 802064c:	f8 00 11 93 	calli 8024c98 <printf>                         <== NOT EXECUTED
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
      printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",   
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &parent_inode);                        
 8020650:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 8020654:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020658:	fb ff be 6f 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
 802065c:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8020660:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020664:	fb ff be 6c 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))           
    printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",   
            rc, strerror (rc));                                       
                                                                      
  return rc;                                                          
}                                                                     
 8020668:	b9 60 08 00 	mv r1,r11                                      
 802066c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8020670:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8020674:	2b 8c 00 20 	lw r12,(sp+32)                                 
 8020678:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 802067c:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8020680:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8020684:	2b 90 00 10 	lw r16,(sp+16)                                 
 8020688:	2b 91 00 0c 	lw r17,(sp+12)                                 
 802068c:	2b 92 00 08 	lw r18,(sp+8)                                  
 8020690:	37 9c 00 74 	addi sp,sp,116                                 
 8020694:	c3 a0 00 00 	ret                                            
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
    printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
 8020698:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802069c:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 80206a0:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 80206a4:	38 21 be 04 	ori r1,r1,0xbe04                               <== NOT EXECUTED
 80206a8:	f8 00 11 7c 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80206ac:	e3 ff ff b7 	bi 8020588 <rtems_rfs_unlink+0x4c>             <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
  if (rc)                                                             
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
 80206b0:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80206b4:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 80206b8:	fb ff c6 c2 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80206bc:	44 20 00 08 	be r1,r0,80206dc <rtems_rfs_unlink+0x1a0>      <== NOT EXECUTED
      printf ("rtems-rfs: link: inode-open failed: %d: %s\n",         
 80206c0:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80206c4:	f8 00 16 30 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80206c8:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80206cc:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80206d0:	38 21 be 70 	ori r1,r1,0xbe70                               <== NOT EXECUTED
 80206d4:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80206d8:	f8 00 11 70 	calli 8024c98 <printf>                         <== NOT EXECUTED
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
      printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n", 
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
 80206dc:	b9 80 08 00 	mv r1,r12                                      
 80206e0:	b9 a0 10 00 	mv r2,r13                                      
 80206e4:	fb ff be 4c 	calli 8010014 <rtems_rfs_inode_close>          
    return rc;                                                        
 80206e8:	e3 ff ff e0 	bi 8020668 <rtems_rfs_unlink+0x12c>            
          printf ("rtems-rfs: link is a directory\n");                
        rtems_rfs_inode_close (fs, &target_inode);                    
        return EISDIR;                                                
                                                                      
      case rtems_rfs_unlink_dir_if_empty:                             
        rc = rtems_rfs_dir_empty (fs, &target_inode);                 
 80206ec:	b9 80 08 00 	mv r1,r12                                      
 80206f0:	b9 a0 10 00 	mv r2,r13                                      
 80206f4:	fb ff f7 32 	calli 801e3bc <rtems_rfs_dir_empty>            
 80206f8:	b8 20 58 00 	mv r11,r1                                      
        if (rc > 0)                                                   
 80206fc:	4c 01 ff bb 	bge r0,r1,80205e8 <rtems_rfs_unlink+0xac>      
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))               
 8020700:	34 01 00 00 	mvi r1,0                                       
 8020704:	78 02 02 00 	mvhi r2,0x200                                  
 8020708:	fb ff c6 ae 	calli 80121c0 <rtems_rfs_trace>                
 802070c:	44 20 ff f4 	be r1,r0,80206dc <rtems_rfs_unlink+0x1a0>      <== ALWAYS TAKEN
            printf ("rtems-rfs: dir-empty: %d: %s\n", rc, strerror (rc));
 8020710:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020714:	f8 00 16 1c 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8020718:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 802071c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020720:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020724:	38 21 be 50 	ori r1,r1,0xbe50                               <== NOT EXECUTED
 8020728:	f8 00 11 5c 	calli 8024c98 <printf>                         <== NOT EXECUTED
 802072c:	e3 ff ff ec 	bi 80206dc <rtems_rfs_unlink+0x1a0>            <== NOT EXECUTED
  if (dir)                                                            
  {                                                                   
    switch (dir_mode)                                                 
    {                                                                 
      case rtems_rfs_unlink_dir_denied:                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                 
 8020730:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 8020734:	fb ff c6 a3 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020738:	44 2f 00 04 	be r1,r15,8020748 <rtems_rfs_unlink+0x20c>     <== NOT EXECUTED
          printf ("rtems-rfs: link is a directory\n");                
 802073c:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020740:	38 21 be 30 	ori r1,r1,0xbe30                               <== NOT EXECUTED
 8020744:	f8 00 12 1d 	calli 8024fb8 <puts>                           <== NOT EXECUTED
        rtems_rfs_inode_close (fs, &target_inode);                    
 8020748:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 802074c:	b9 a0 10 00 	mv r2,r13                                      <== NOT EXECUTED
 8020750:	fb ff be 31 	calli 8010014 <rtems_rfs_inode_close>          <== NOT EXECUTED
        return EISDIR;                                                
 8020754:	34 0b 00 15 	mvi r11,21                                     <== NOT EXECUTED
 8020758:	e3 ff ff c4 	bi 8020668 <rtems_rfs_unlink+0x12c>            <== NOT EXECUTED
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 802075c:	2b 82 00 34 	lw r2,(sp+52)                                  
  if (links == 0xffff)                                                
    links = 0;                                                        
 8020760:	38 03 ff ff 	mvu r3,0xffff                                  
    return rc;                                                        
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode);                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
 8020764:	34 01 00 00 	mvi r1,0                                       
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8020768:	40 44 00 00 	lbu r4,(r2+0)                                  
 802076c:	40 4b 00 01 	lbu r11,(r2+1)                                 
 8020770:	78 02 02 00 	mvhi r2,0x200                                  
 8020774:	b4 84 20 00 	add r4,r4,r4                                   
 8020778:	b4 84 20 00 	add r4,r4,r4                                   
 802077c:	b4 84 20 00 	add r4,r4,r4                                   
 8020780:	b4 84 20 00 	add r4,r4,r4                                   
 8020784:	b4 84 20 00 	add r4,r4,r4                                   
 8020788:	b4 84 20 00 	add r4,r4,r4                                   
 802078c:	b4 84 20 00 	add r4,r4,r4                                   
 8020790:	b4 84 20 00 	add r4,r4,r4                                   
 8020794:	b8 8b 58 00 	or r11,r4,r11                                  
  if (links == 0xffff)                                                
    links = 0;                                                        
 8020798:	fd 63 18 00 	cmpne r3,r11,r3                                
 802079c:	c8 03 18 00 	sub r3,r0,r3                                   
 80207a0:	a1 63 58 00 	and r11,r11,r3                                 
 80207a4:	fb ff c6 87 	calli 80121c0 <rtems_rfs_trace>                
 80207a8:	5c 20 00 24 	bne r1,r0,8020838 <rtems_rfs_unlink+0x2fc>     <== NEVER TAKEN
    printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
                                                                      
  if (links > 1)                                                      
 80207ac:	34 0e 00 01 	mvi r14,1                                      
 80207b0:	51 cb 00 39 	bgeu r14,r11,8020894 <rtems_rfs_unlink+0x358>  
  {                                                                   
    links--;                                                          
 80207b4:	35 6b ff ff 	addi r11,r11,-1                                
 80207b8:	21 6b ff ff 	andi r11,r11,0xffff                            
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
 80207bc:	01 65 00 01 	srui r5,r11,1                                  
 80207c0:	2b 81 00 34 	lw r1,(sp+52)                                  
 80207c4:	00 a5 00 01 	srui r5,r5,1                                   
 80207c8:	00 a5 00 01 	srui r5,r5,1                                   
 80207cc:	00 a5 00 01 	srui r5,r5,1                                   
 80207d0:	00 a5 00 01 	srui r5,r5,1                                   
 80207d4:	00 a5 00 01 	srui r5,r5,1                                   
 80207d8:	00 a5 00 01 	srui r5,r5,1                                   
 80207dc:	00 a5 00 01 	srui r5,r5,1                                   
 80207e0:	30 25 00 00 	sb (r1+0),r5                                   
 80207e4:	2b 81 00 34 	lw r1,(sp+52)                                  
 80207e8:	30 2b 00 01 	sb (r1+1),r11                                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 80207ec:	33 8e 00 38 	sb (sp+56),r14                                 
        links--;                                                      
      rtems_rfs_inode_set_links (&parent_inode, links);               
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);    
 80207f0:	b9 e0 08 00 	mv r1,r15                                      
 80207f4:	34 02 00 01 	mvi r2,1                                       
 80207f8:	34 03 00 01 	mvi r3,1                                       
 80207fc:	fb ff be 79 	calli 80101e0 <rtems_rfs_inode_time_stamp_now> 
 8020800:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020804:	4c 01 00 13 	bge r0,r1,8020850 <rtems_rfs_unlink+0x314>     <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
 8020808:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 802080c:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 8020810:	fb ff c6 6c 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020814:	44 20 ff 8f 	be r1,r0,8020650 <rtems_rfs_unlink+0x114>      <== NOT EXECUTED
      printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",   
 8020818:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 802081c:	f8 00 15 da 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8020820:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020824:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020828:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 802082c:	38 21 bf 20 	ori r1,r1,0xbf20                               <== NOT EXECUTED
 8020830:	f8 00 11 1a 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020834:	e3 ff ff 87 	bi 8020650 <rtems_rfs_unlink+0x114>            <== NOT EXECUTED
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode);                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
    printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
 8020838:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802083c:	b9 c0 10 00 	mv r2,r14                                      <== NOT EXECUTED
 8020840:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 8020844:	38 21 be c8 	ori r1,r1,0xbec8                               <== NOT EXECUTED
 8020848:	f8 00 11 14 	calli 8024c98 <printf>                         <== NOT EXECUTED
 802084c:	e3 ff ff d8 	bi 80207ac <rtems_rfs_unlink+0x270>            <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
 8020850:	b9 80 08 00 	mv r1,r12                                      
 8020854:	b9 e0 10 00 	mv r2,r15                                      
 8020858:	fb ff bd ef 	calli 8010014 <rtems_rfs_inode_close>          
 802085c:	b8 20 58 00 	mv r11,r1                                      
  if (rc > 0)                                                         
 8020860:	4c 01 00 1e 	bge r0,r1,80208d8 <rtems_rfs_unlink+0x39c>     <== ALWAYS TAKEN
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
 8020864:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8020868:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 802086c:	fb ff c6 55 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 8020870:	44 20 ff 9b 	be r1,r0,80206dc <rtems_rfs_unlink+0x1a0>      <== NOT EXECUTED
      printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n", 
 8020874:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020878:	f8 00 15 c3 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 802087c:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020880:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 8020884:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020888:	38 21 bf 54 	ori r1,r1,0xbf54                               <== NOT EXECUTED
 802088c:	f8 00 11 03 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020890:	e3 ff ff 93 	bi 80206dc <rtems_rfs_unlink+0x1a0>            <== NOT EXECUTED
  else                                                                
  {                                                                   
    /*                                                                
     * Erasing the inode releases all blocks attached to it.          
     */                                                               
    rc = rtems_rfs_inode_delete (fs, &target_inode);                  
 8020894:	b9 80 08 00 	mv r1,r12                                      
 8020898:	b9 a0 10 00 	mv r2,r13                                      
 802089c:	fb ff be 0b 	calli 80100c8 <rtems_rfs_inode_delete>         
 80208a0:	b8 20 58 00 	mv r11,r1                                      
    if (rc > 0)                                                       
 80208a4:	4c 01 00 1e 	bge r0,r1,802091c <rtems_rfs_unlink+0x3e0>     <== ALWAYS TAKEN
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                   
 80208a8:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80208ac:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 80208b0:	fb ff c6 44 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80208b4:	44 20 ff 67 	be r1,r0,8020650 <rtems_rfs_unlink+0x114>      <== NOT EXECUTED
        printf ("rtems-rfs: unlink: inode-del failed: %d: %s\n",      
 80208b8:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 80208bc:	f8 00 15 b2 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 80208c0:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80208c4:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 80208c8:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 80208cc:	38 21 be f0 	ori r1,r1,0xbef0                               <== NOT EXECUTED
 80208d0:	f8 00 10 f2 	calli 8024c98 <printf>                         <== NOT EXECUTED
 80208d4:	e3 ff ff 5f 	bi 8020650 <rtems_rfs_unlink+0x114>            <== NOT EXECUTED
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
 80208d8:	b9 80 08 00 	mv r1,r12                                      
 80208dc:	b9 a0 10 00 	mv r2,r13                                      
 80208e0:	fb ff bd cd 	calli 8010014 <rtems_rfs_inode_close>          
 80208e4:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))           
 80208e8:	4c 01 ff 60 	bge r0,r1,8020668 <rtems_rfs_unlink+0x12c>     <== ALWAYS TAKEN
 80208ec:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80208f0:	78 02 02 00 	mvhi r2,0x200                                  <== NOT EXECUTED
 80208f4:	fb ff c6 33 	calli 80121c0 <rtems_rfs_trace>                <== NOT EXECUTED
 80208f8:	44 20 ff 5c 	be r1,r0,8020668 <rtems_rfs_unlink+0x12c>      <== NOT EXECUTED
    printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",   
 80208fc:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8020900:	f8 00 15 a1 	calli 8025f84 <strerror>                       <== NOT EXECUTED
 8020904:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 8020908:	78 01 08 03 	mvhi r1,0x803                                  <== NOT EXECUTED
 802090c:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8020910:	38 21 bf 88 	ori r1,r1,0xbf88                               <== NOT EXECUTED
 8020914:	f8 00 10 e1 	calli 8024c98 <printf>                         <== NOT EXECUTED
 8020918:	e3 ff ff 54 	bi 8020668 <rtems_rfs_unlink+0x12c>            <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &parent_inode);                      
      rtems_rfs_inode_close (fs, &target_inode);                      
      return rc;                                                      
    }                                                                 
                                                                      
    if (dir)                                                          
 802091c:	46 20 ff b5 	be r17,r0,80207f0 <rtems_rfs_unlink+0x2b4>     
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
 8020920:	2b 83 00 5c 	lw r3,(sp+92)                                  
 8020924:	40 61 00 00 	lbu r1,(r3+0)                                  
 8020928:	40 62 00 01 	lbu r2,(r3+1)                                  
 802092c:	b4 21 08 00 	add r1,r1,r1                                   
 8020930:	b4 21 08 00 	add r1,r1,r1                                   
 8020934:	b4 21 08 00 	add r1,r1,r1                                   
 8020938:	b4 21 08 00 	add r1,r1,r1                                   
 802093c:	b4 21 08 00 	add r1,r1,r1                                   
 8020940:	b4 21 08 00 	add r1,r1,r1                                   
 8020944:	b4 21 08 00 	add r1,r1,r1                                   
 8020948:	b4 21 08 00 	add r1,r1,r1                                   
 802094c:	b8 22 08 00 	or r1,r1,r2                                    
  if (links == 0xffff)                                                
 8020950:	38 02 ff ff 	mvu r2,0xffff                                  
 8020954:	44 22 00 12 	be r1,r2,802099c <rtems_rfs_unlink+0x460>      <== NEVER TAKEN
    {                                                                 
      links = rtems_rfs_inode_get_links (&parent_inode);              
      if (links > 1)                                                  
 8020958:	51 c1 00 03 	bgeu r14,r1,8020964 <rtems_rfs_unlink+0x428>   
        links--;                                                      
 802095c:	34 21 ff ff 	addi r1,r1,-1                                  
 8020960:	20 21 ff ff 	andi r1,r1,0xffff                              
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
 8020964:	00 22 00 01 	srui r2,r1,1                                   
 8020968:	00 42 00 01 	srui r2,r2,1                                   
 802096c:	00 42 00 01 	srui r2,r2,1                                   
 8020970:	00 42 00 01 	srui r2,r2,1                                   
 8020974:	00 42 00 01 	srui r2,r2,1                                   
 8020978:	00 42 00 01 	srui r2,r2,1                                   
 802097c:	00 42 00 01 	srui r2,r2,1                                   
 8020980:	00 42 00 01 	srui r2,r2,1                                   
 8020984:	30 62 00 00 	sb (r3+0),r2                                   
 8020988:	2b 82 00 5c 	lw r2,(sp+92)                                  
 802098c:	30 41 00 01 	sb (r2+1),r1                                   
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
 8020990:	34 01 00 01 	mvi r1,1                                       
 8020994:	33 81 00 60 	sb (sp+96),r1                                  
 8020998:	e3 ff ff 96 	bi 80207f0 <rtems_rfs_unlink+0x2b4>            
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
  if (links == 0xffff)                                                
    links = 0;                                                        
 802099c:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80209a0:	e3 ff ff f1 	bi 8020964 <rtems_rfs_unlink+0x428>            <== NOT EXECUTED
                                                                      

0802192c <rtems_shell_rfs_format>: return 1; } int rtems_shell_rfs_format (int argc, char* argv[]) {
 802192c:	37 9c ff c4 	addi sp,sp,-60                                 <== NOT EXECUTED
 8021930:	5b 8b 00 24 	sw (sp+36),r11                                 <== NOT EXECUTED
 8021934:	5b 8c 00 20 	sw (sp+32),r12                                 <== NOT EXECUTED
 8021938:	5b 8d 00 1c 	sw (sp+28),r13                                 <== NOT EXECUTED
 802193c:	5b 8e 00 18 	sw (sp+24),r14                                 <== NOT EXECUTED
 8021940:	5b 8f 00 14 	sw (sp+20),r15                                 <== NOT EXECUTED
 8021944:	5b 90 00 10 	sw (sp+16),r16                                 <== NOT EXECUTED
 8021948:	5b 91 00 0c 	sw (sp+12),r17                                 <== NOT EXECUTED
 802194c:	5b 92 00 08 	sw (sp+8),r18                                  <== NOT EXECUTED
 8021950:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  rtems_rfs_format_config config;                                     
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
 8021954:	37 90 00 28 	addi r16,sp,40                                 <== NOT EXECUTED
  return 1;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_shell_rfs_format (int argc, char* argv[])                       
{                                                                     
 8021958:	b8 20 68 00 	mv r13,r1                                      <== NOT EXECUTED
  rtems_rfs_format_config config;                                     
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
 802195c:	5b 80 00 28 	sw (sp+40),r0                                  <== NOT EXECUTED
 8021960:	5a 00 00 04 	sw (r16+4),r0                                  <== NOT EXECUTED
 8021964:	5a 00 00 08 	sw (r16+8),r0                                  <== NOT EXECUTED
 8021968:	5a 00 00 0c 	sw (r16+12),r0                                 <== NOT EXECUTED
 802196c:	5a 00 00 10 	sw (r16+16),r0                                 <== NOT EXECUTED
 8021970:	5a 00 00 14 	sw (r16+20),r0                                 <== NOT EXECUTED
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 8021974:	34 01 00 01 	mvi r1,1                                       <== NOT EXECUTED
  return 1;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_shell_rfs_format (int argc, char* argv[])                       
{                                                                     
 8021978:	b8 40 70 00 	mv r14,r2                                      <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 802197c:	4c 2d 00 85 	bge r1,r13,8021b90 <rtems_shell_rfs_format+0x264><== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
 8021980:	78 11 08 06 	mvhi r17,0x806                                 <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 8021984:	34 0b 00 01 	mvi r11,1                                      <== NOT EXECUTED
 8021988:	34 0c 00 00 	mvi r12,0                                      <== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
 802198c:	34 0f 00 2d 	mvi r15,45                                     <== NOT EXECUTED
    {                                                                 
      switch (argv[arg][1])                                           
 8021990:	3a 31 3b 7c 	ori r17,r17,0x3b7c                             <== NOT EXECUTED
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'I':                                                     
          config.initialise_inodes = true;                            
 8021994:	34 12 00 01 	mvi r18,1                                      <== NOT EXECUTED
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
  {                                                                   
    if (argv[arg][0] == '-')                                          
 8021998:	b5 6b 18 00 	add r3,r11,r11                                 <== NOT EXECUTED
 802199c:	b4 63 18 00 	add r3,r3,r3                                   <== NOT EXECUTED
 80219a0:	b5 c3 18 00 	add r3,r14,r3                                  <== NOT EXECUTED
 80219a4:	28 63 00 00 	lw r3,(r3+0)                                   <== NOT EXECUTED
 80219a8:	40 64 00 00 	lbu r4,(r3+0)                                  <== NOT EXECUTED
 80219ac:	44 8f 00 15 	be r4,r15,8021a00 <rtems_shell_rfs_format+0xd4><== NOT EXECUTED
          return 1;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (!driver)                                                    
 80219b0:	5d 80 00 72 	bne r12,r0,8021b78 <rtems_shell_rfs_format+0x24c><== NOT EXECUTED
 80219b4:	b8 60 60 00 	mv r12,r3                                      <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
 80219b8:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
 80219bc:	49 ab ff f7 	bg r13,r11,8021998 <rtems_shell_rfs_format+0x6c><== NOT EXECUTED
        return 1;                                                     
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (!driver) {                                                      
 80219c0:	45 80 00 74 	be r12,r0,8021b90 <rtems_shell_rfs_format+0x264><== NOT EXECUTED
    printf ("error: no driver name provided\n");                      
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
 80219c4:	ba 00 10 00 	mv r2,r16                                      <== NOT EXECUTED
 80219c8:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80219cc:	f8 00 43 33 	calli 8032698 <rtems_rfs_format>               <== NOT EXECUTED
    printf ("error: format of %s failed: %s\n",                       
            driver, strerror (errno));                                
    return 1;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
 80219d0:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
  if (!driver) {                                                      
    printf ("error: no driver name provided\n");                      
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
 80219d4:	4c 20 00 5d 	bge r1,r0,8021b48 <rtems_shell_rfs_format+0x21c><== NOT EXECUTED
  {                                                                   
    printf ("error: format of %s failed: %s\n",                       
            driver, strerror (errno));                                
 80219d8:	f8 00 6f 91 	calli 803d81c <__errno>                        <== NOT EXECUTED
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
  {                                                                   
    printf ("error: format of %s failed: %s\n",                       
 80219dc:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 80219e0:	f8 00 8d d3 	calli 804512c <strerror>                       <== NOT EXECUTED
 80219e4:	b8 20 18 00 	mv r3,r1                                       <== NOT EXECUTED
 80219e8:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 80219ec:	b9 80 10 00 	mv r2,r12                                      <== NOT EXECUTED
 80219f0:	38 21 3b 58 	ori r1,r1,0x3b58                               <== NOT EXECUTED
 80219f4:	f8 00 83 d2 	calli 804293c <printf>                         <== NOT EXECUTED
            driver, strerror (errno));                                
    return 1;                                                         
 80219f8:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 80219fc:	e0 00 00 53 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
  {                                                                   
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
 8021a00:	40 61 00 01 	lbu r1,(r3+1)                                  <== NOT EXECUTED
 8021a04:	34 21 ff b7 	addi r1,r1,-73                                 <== NOT EXECUTED
 8021a08:	20 21 00 ff 	andi r1,r1,0xff                                <== NOT EXECUTED
 8021a0c:	54 2f 00 4a 	bgu r1,r15,8021b34 <rtems_shell_rfs_format+0x208><== NOT EXECUTED
 8021a10:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021a14:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021a18:	b6 21 08 00 	add r1,r17,r1                                  <== NOT EXECUTED
 8021a1c:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021a20:	c0 20 00 00 	b r1                                           <== NOT EXECUTED
      {                                                               
        case 'v':                                                     
          config.verbose = true;                                      
 8021a24:	33 92 00 3d 	sb (sp+61),r18                                 <== NOT EXECUTED
          break;                                                      
 8021a28:	e3 ff ff e4 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
                                                                      
        case 's':                                                     
          arg++;                                                      
 8021a2c:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
          if (arg >= argc)                                            
 8021a30:	49 ab 00 06 	bg r13,r11,8021a48 <rtems_shell_rfs_format+0x11c><== NOT EXECUTED
          {                                                           
            printf ("error: block size needs an argument\n");         
 8021a34:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021a38:	38 21 3a 5c 	ori r1,r1,0x3a5c                               <== NOT EXECUTED
 8021a3c:	f8 00 84 88 	calli 8042c5c <puts>                           <== NOT EXECUTED
            return 1;                                                 
 8021a40:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021a44:	e0 00 00 41 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
          }                                                           
          config.block_size = strtoul (argv[arg], 0, 0);              
 8021a48:	b5 6b 08 00 	add r1,r11,r11                                 <== NOT EXECUTED
 8021a4c:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021a50:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 8021a54:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021a58:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8021a5c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8021a60:	f8 00 94 20 	calli 8046ae0 <strtoul>                        <== NOT EXECUTED
 8021a64:	5b 81 00 28 	sw (sp+40),r1                                  <== NOT EXECUTED
          break;                                                      
 8021a68:	e3 ff ff d4 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
        case 'I':                                                     
          config.initialise_inodes = true;                            
          break;                                                      
                                                                      
        case 'o':                                                     
          arg++;                                                      
 8021a6c:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
          if (arg >= argc)                                            
 8021a70:	49 ab 00 06 	bg r13,r11,8021a88 <rtems_shell_rfs_format+0x15c><== NOT EXECUTED
          {                                                           
            printf ("error: inode percentage overhead needs an argument\n");
 8021a74:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021a78:	38 21 3a d8 	ori r1,r1,0x3ad8                               <== NOT EXECUTED
 8021a7c:	f8 00 84 78 	calli 8042c5c <puts>                           <== NOT EXECUTED
            return 1;                                                 
 8021a80:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021a84:	e0 00 00 31 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
          }                                                           
          config.inode_overhead = strtoul (argv[arg], 0, 0);          
 8021a88:	b5 6b 08 00 	add r1,r11,r11                                 <== NOT EXECUTED
 8021a8c:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021a90:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 8021a94:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021a98:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8021a9c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8021aa0:	f8 00 94 10 	calli 8046ae0 <strtoul>                        <== NOT EXECUTED
 8021aa4:	5b 81 00 34 	sw (sp+52),r1                                  <== NOT EXECUTED
          break;                                                      
 8021aa8:	e3 ff ff c4 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
          }                                                           
          config.group_blocks = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'i':                                                     
          arg++;                                                      
 8021aac:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
          if (arg >= argc)                                            
 8021ab0:	49 ab 00 06 	bg r13,r11,8021ac8 <rtems_shell_rfs_format+0x19c><== NOT EXECUTED
          {                                                           
            printf ("error: group inode count needs an argument\n");  
 8021ab4:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021ab8:	38 21 3a ac 	ori r1,r1,0x3aac                               <== NOT EXECUTED
 8021abc:	f8 00 84 68 	calli 8042c5c <puts>                           <== NOT EXECUTED
            return 1;                                                 
 8021ac0:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021ac4:	e0 00 00 21 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
 8021ac8:	b5 6b 08 00 	add r1,r11,r11                                 <== NOT EXECUTED
 8021acc:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021ad0:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 8021ad4:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021ad8:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8021adc:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8021ae0:	f8 00 94 00 	calli 8046ae0 <strtoul>                        <== NOT EXECUTED
 8021ae4:	5b 81 00 30 	sw (sp+48),r1                                  <== NOT EXECUTED
          break;                                                      
 8021ae8:	e3 ff ff b4 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
          }                                                           
          config.block_size = strtoul (argv[arg], 0, 0);              
          break;                                                      
                                                                      
        case 'b':                                                     
          arg++;                                                      
 8021aec:	35 6b 00 01 	addi r11,r11,1                                 <== NOT EXECUTED
          if (arg >= argc)                                            
 8021af0:	49 ab 00 06 	bg r13,r11,8021b08 <rtems_shell_rfs_format+0x1dc><== NOT EXECUTED
          {                                                           
            printf ("error: group block count needs an argument\n");  
 8021af4:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021af8:	38 21 3a 80 	ori r1,r1,0x3a80                               <== NOT EXECUTED
 8021afc:	f8 00 84 58 	calli 8042c5c <puts>                           <== NOT EXECUTED
            return 1;                                                 
 8021b00:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021b04:	e0 00 00 11 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
          }                                                           
          config.group_blocks = strtoul (argv[arg], 0, 0);            
 8021b08:	b5 6b 08 00 	add r1,r11,r11                                 <== NOT EXECUTED
 8021b0c:	b4 21 08 00 	add r1,r1,r1                                   <== NOT EXECUTED
 8021b10:	b5 c1 08 00 	add r1,r14,r1                                  <== NOT EXECUTED
 8021b14:	28 21 00 00 	lw r1,(r1+0)                                   <== NOT EXECUTED
 8021b18:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8021b1c:	34 03 00 00 	mvi r3,0                                       <== NOT EXECUTED
 8021b20:	f8 00 93 f0 	calli 8046ae0 <strtoul>                        <== NOT EXECUTED
 8021b24:	5b 81 00 2c 	sw (sp+44),r1                                  <== NOT EXECUTED
          break;                                                      
 8021b28:	e3 ff ff a4 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'I':                                                     
          config.initialise_inodes = true;                            
 8021b2c:	33 92 00 3c 	sb (sp+60),r18                                 <== NOT EXECUTED
          break;                                                      
 8021b30:	e3 ff ff a2 	bi 80219b8 <rtems_shell_rfs_format+0x8c>       <== NOT EXECUTED
          }                                                           
          config.inode_overhead = strtoul (argv[arg], 0, 0);          
          break;                                                      
                                                                      
        default:                                                      
          printf ("error: invalid option: %s\n", argv[arg]);          
 8021b34:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021b38:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 8021b3c:	38 21 15 b0 	ori r1,r1,0x15b0                               <== NOT EXECUTED
 8021b40:	f8 00 83 7f 	calli 804293c <printf>                         <== NOT EXECUTED
          return 1;                                                   
 8021b44:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
            driver, strerror (errno));                                
    return 1;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
 8021b48:	b8 40 08 00 	mv r1,r2                                       <== NOT EXECUTED
 8021b4c:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8021b50:	2b 8b 00 24 	lw r11,(sp+36)                                 <== NOT EXECUTED
 8021b54:	2b 8c 00 20 	lw r12,(sp+32)                                 <== NOT EXECUTED
 8021b58:	2b 8d 00 1c 	lw r13,(sp+28)                                 <== NOT EXECUTED
 8021b5c:	2b 8e 00 18 	lw r14,(sp+24)                                 <== NOT EXECUTED
 8021b60:	2b 8f 00 14 	lw r15,(sp+20)                                 <== NOT EXECUTED
 8021b64:	2b 90 00 10 	lw r16,(sp+16)                                 <== NOT EXECUTED
 8021b68:	2b 91 00 0c 	lw r17,(sp+12)                                 <== NOT EXECUTED
 8021b6c:	2b 92 00 08 	lw r18,(sp+8)                                  <== NOT EXECUTED
 8021b70:	37 9c 00 3c 	addi sp,sp,60                                  <== NOT EXECUTED
 8021b74:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
    {                                                                 
      if (!driver)                                                    
        driver = argv[arg];                                           
      else                                                            
      {                                                               
        printf ("error: only one driver name allowed: %s\n", argv[arg]);
 8021b78:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021b7c:	b8 60 10 00 	mv r2,r3                                       <== NOT EXECUTED
 8021b80:	38 21 3b 0c 	ori r1,r1,0x3b0c                               <== NOT EXECUTED
 8021b84:	f8 00 83 6e 	calli 804293c <printf>                         <== NOT EXECUTED
        return 1;                                                     
 8021b88:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021b8c:	e3 ff ff ef 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (!driver) {                                                      
    printf ("error: no driver name provided\n");                      
 8021b90:	78 01 08 06 	mvhi r1,0x806                                  <== NOT EXECUTED
 8021b94:	38 21 3b 38 	ori r1,r1,0x3b38                               <== NOT EXECUTED
 8021b98:	f8 00 84 31 	calli 8042c5c <puts>                           <== NOT EXECUTED
    return 1;                                                         
 8021b9c:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8021ba0:	e3 ff ff ea 	bi 8021b48 <rtems_shell_rfs_format+0x21c>      <== NOT EXECUTED
                                                                      

080143e4 <rtems_signal_send>: rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) {
 80143e4:	37 9c ff f4 	addi sp,sp,-12                                 
 80143e8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80143ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
 80143f0:	34 03 00 0a 	mvi r3,10                                      
                                                                      
rtems_status_code rtems_signal_send(                                  
  rtems_id          id,                                               
  rtems_signal_set  signal_set                                        
)                                                                     
{                                                                     
 80143f4:	b8 40 58 00 	mv r11,r2                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
 80143f8:	5c 40 00 06 	bne r2,r0,8014410 <rtems_signal_send+0x2c>     
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80143fc:	b8 60 08 00 	mv r1,r3                                       
 8014400:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8014404:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8014408:	37 9c 00 0c 	addi sp,sp,12                                  
 801440c:	c3 a0 00 00 	ret                                            
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 8014410:	37 82 00 0c 	addi r2,sp,12                                  
 8014414:	f8 00 16 b9 	calli 8019ef8 <_Thread_Get>                    
  switch ( location ) {                                               
 8014418:	2b 83 00 0c 	lw r3,(sp+12)                                  
 801441c:	44 60 00 07 	be r3,r0,8014438 <rtems_signal_send+0x54>      
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 8014420:	34 03 00 04 	mvi r3,4                                       
}                                                                     
 8014424:	b8 60 08 00 	mv r1,r3                                       
 8014428:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801442c:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8014430:	37 9c 00 0c 	addi sp,sp,12                                  
 8014434:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_RTEMS ];           
 8014438:	28 22 01 18 	lw r2,(r1+280)                                 
      asr = &api->Signal;                                             
                                                                      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
 801443c:	28 44 00 0c 	lw r4,(r2+12)                                  
 8014440:	44 83 00 23 	be r4,r3,80144cc <rtems_signal_send+0xe8>      
        if ( asr->is_enabled ) {                                      
 8014444:	40 43 00 08 	lbu r3,(r2+8)                                  
 8014448:	44 60 00 12 	be r3,r0,8014490 <rtems_signal_send+0xac>      <== NEVER TAKEN
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 801444c:	90 00 18 00 	rcsr r3,IE                                     
 8014450:	34 04 ff fe 	mvi r4,-2                                      
 8014454:	a0 64 20 00 	and r4,r3,r4                                   
 8014458:	d0 04 00 00 	wcsr IE,r4                                     
    *signal_set |= signals;                                           
 801445c:	28 44 00 14 	lw r4,(r2+20)                                  
 8014460:	b8 8b 58 00 	or r11,r4,r11                                  
 8014464:	58 4b 00 14 	sw (r2+20),r11                                 
  _ISR_Enable( _level );                                              
 8014468:	d0 03 00 00 	wcsr IE,r3                                     
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
 801446c:	78 02 08 04 	mvhi r2,0x804                                  
 8014470:	38 42 01 e0 	ori r2,r2,0x1e0                                
 8014474:	28 43 00 08 	lw r3,(r2+8)                                   
 8014478:	44 60 00 0e 	be r3,r0,80144b0 <rtems_signal_send+0xcc>      
 801447c:	28 43 00 10 	lw r3,(r2+16)                                  
 8014480:	5c 23 00 0c 	bne r1,r3,80144b0 <rtems_signal_send+0xcc>     <== NEVER TAKEN
            _Thread_Dispatch_necessary = true;                        
 8014484:	34 01 00 01 	mvi r1,1                                       
 8014488:	30 41 00 0c 	sb (r2+12),r1                                  
 801448c:	e0 00 00 09 	bi 80144b0 <rtems_signal_send+0xcc>            
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
 8014490:	90 00 08 00 	rcsr r1,IE                                     
 8014494:	34 03 ff fe 	mvi r3,-2                                      
 8014498:	a0 23 18 00 	and r3,r1,r3                                   
 801449c:	d0 03 00 00 	wcsr IE,r3                                     
    *signal_set |= signals;                                           
 80144a0:	28 43 00 18 	lw r3,(r2+24)                                  
 80144a4:	b8 6b 58 00 	or r11,r3,r11                                  
 80144a8:	58 4b 00 18 	sw (r2+24),r11                                 
  _ISR_Enable( _level );                                              
 80144ac:	d0 01 00 00 	wcsr IE,r1                                     
        } else {                                                      
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
 80144b0:	f8 00 16 86 	calli 8019ec8 <_Thread_Enable_dispatch>        
        return RTEMS_SUCCESSFUL;                                      
 80144b4:	34 03 00 00 	mvi r3,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80144b8:	b8 60 08 00 	mv r1,r3                                       
 80144bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80144c0:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80144c4:	37 9c 00 0c 	addi sp,sp,12                                  
 80144c8:	c3 a0 00 00 	ret                                            
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
 80144cc:	f8 00 16 7f 	calli 8019ec8 <_Thread_Enable_dispatch>        
      return RTEMS_NOT_DEFINED;                                       
 80144d0:	34 03 00 0b 	mvi r3,11                                      
 80144d4:	e3 ff ff ca 	bi 80143fc <rtems_signal_send+0x18>            
                                                                      

0800c07c <rtems_sparse_disk_create_and_register>: const char *device_file_name, uint32_t media_block_size, rtems_blkdev_bnum blocks_with_buffer, rtems_blkdev_bnum media_block_count, uint8_t fill_pattern ) {
 800c07c:	37 9c ff e8 	addi sp,sp,-24                                 
 800c080:	5b 8b 00 18 	sw (sp+24),r11                                 
 800c084:	5b 8c 00 14 	sw (sp+20),r12                                 
 800c088:	5b 8d 00 10 	sw (sp+16),r13                                 
 800c08c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800c090:	5b 8f 00 08 	sw (sp+8),r15                                  
 800c094:	5b 9d 00 04 	sw (sp+4),ra                                   
 800c098:	b8 40 60 00 	mv r12,r2                                      
 800c09c:	b8 20 78 00 	mv r15,r1                                      
  const rtems_blkdev_bnum blocks_with_buffer )                        
{                                                                     
  size_t const key_table_size = blocks_with_buffer                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
  size_t const alloc_size     = sizeof( rtems_sparse_disk )           
 800c0a0:	b8 60 10 00 	mv r2,r3                                       
 800c0a4:	35 81 00 08 	addi r1,r12,8                                  
  const char       *device_file_name,                                 
  uint32_t          media_block_size,                                 
  rtems_blkdev_bnum blocks_with_buffer,                               
  rtems_blkdev_bnum media_block_count,                                
  uint8_t           fill_pattern )                                    
{                                                                     
 800c0a8:	b8 60 58 00 	mv r11,r3                                      
 800c0ac:	b8 80 70 00 	mv r14,r4                                      
 800c0b0:	20 ad 00 ff 	andi r13,r5,0xff                               
  const rtems_blkdev_bnum blocks_with_buffer )                        
{                                                                     
  size_t const key_table_size = blocks_with_buffer                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
  size_t const alloc_size     = sizeof( rtems_sparse_disk )           
 800c0b4:	fb ff d4 7a 	calli 800129c <__mulsi3>                       
                                + key_table_size + data_size;         
                                                                      
  rtems_sparse_disk *const sd = (rtems_sparse_disk *) malloc(         
 800c0b8:	34 21 00 1c 	addi r1,r1,28                                  
 800c0bc:	fb ff dd 89 	calli 80036e0 <malloc>                         
 800c0c0:	b8 20 40 00 	mv r8,r1                                       
      media_block_count,                                              
      fill_pattern,                                                   
      rtems_sparse_disk_free                                          
    );                                                                
  } else {                                                            
    sc = RTEMS_NO_MEMORY;                                             
 800c0c4:	34 07 00 1a 	mvi r7,26                                      
  rtems_sparse_disk *sparse_disk = sparse_disk_allocate(              
    media_block_size,                                                 
    blocks_with_buffer                                                
  );                                                                  
                                                                      
  if ( sparse_disk != NULL ) {                                        
 800c0c8:	44 20 00 0b 	be r1,r0,800c0f4 <rtems_sparse_disk_create_and_register+0x78><== NEVER TAKEN
    sc = rtems_sparse_disk_register(                                  
 800c0cc:	78 07 08 00 	mvhi r7,0x800                                  
 800c0d0:	38 e7 bf 28 	ori r7,r7,0xbf28                               
 800c0d4:	b9 e0 08 00 	mv r1,r15                                      
 800c0d8:	b9 00 10 00 	mv r2,r8                                       
 800c0dc:	b9 80 18 00 	mv r3,r12                                      
 800c0e0:	b9 60 20 00 	mv r4,r11                                      
 800c0e4:	b9 c0 28 00 	mv r5,r14                                      
 800c0e8:	b9 a0 30 00 	mv r6,r13                                      
 800c0ec:	fb ff ff 95 	calli 800bf40 <rtems_sparse_disk_register>     
 800c0f0:	b8 20 38 00 	mv r7,r1                                       
  } else {                                                            
    sc = RTEMS_NO_MEMORY;                                             
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 800c0f4:	b8 e0 08 00 	mv r1,r7                                       
 800c0f8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c0fc:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800c100:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800c104:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800c108:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800c10c:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800c110:	37 9c 00 18 	addi sp,sp,24                                  
 800c114:	c3 a0 00 00 	ret                                            
                                                                      

0800bf40 <rtems_sparse_disk_register>: uint32_t media_block_size, rtems_blkdev_bnum blocks_with_buffer, rtems_blkdev_bnum media_block_count, uint8_t fill_pattern, rtems_sparse_disk_delete_handler sparse_disk_delete ) {
 800bf40:	37 9c ff d8 	addi sp,sp,-40                                 
 800bf44:	5b 8b 00 24 	sw (sp+36),r11                                 
 800bf48:	5b 8c 00 20 	sw (sp+32),r12                                 
 800bf4c:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800bf50:	5b 8e 00 18 	sw (sp+24),r14                                 
 800bf54:	5b 8f 00 14 	sw (sp+20),r15                                 
 800bf58:	5b 90 00 10 	sw (sp+16),r16                                 
 800bf5c:	5b 91 00 0c 	sw (sp+12),r17                                 
 800bf60:	5b 92 00 08 	sw (sp+8),r18                                  
 800bf64:	5b 9d 00 04 	sw (sp+4),ra                                   
 800bf68:	b8 20 88 00 	mv r17,r1                                      
 800bf6c:	b8 80 58 00 	mv r11,r4                                      
 800bf70:	b8 a0 78 00 	mv r15,r5                                      
 800bf74:	b8 40 60 00 	mv r12,r2                                      
 800bf78:	b8 60 70 00 	mv r14,r3                                      
 800bf7c:	20 d0 00 ff 	andi r16,r6,0xff                               
        sparse_disk_ioctl,                                            
        sparse_disk                                                   
      );                                                              
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
 800bf80:	34 01 00 0a 	mvi r1,10                                      
  uint8_t                          fill_pattern,                      
  rtems_sparse_disk_delete_handler sparse_disk_delete )               
{                                                                     
  rtems_status_code sc;                                               
                                                                      
  if ( blocks_with_buffer <= media_block_count ) {                    
 800bf84:	54 85 00 33 	bgu r4,r5,800c050 <rtems_sparse_disk_register+0x110><== NEVER TAKEN
{                                                                     
  rtems_status_code sc;                                               
  rtems_blkdev_bnum i;                                                
                                                                      
  if ( NULL == sd )                                                   
    return RTEMS_INVALID_ADDRESS;                                     
 800bf88:	34 01 00 09 	mvi r1,9                                       
  const uint8_t                                                     fill_pattern )
{                                                                     
  rtems_status_code sc;                                               
  rtems_blkdev_bnum i;                                                
                                                                      
  if ( NULL == sd )                                                   
 800bf8c:	44 40 00 31 	be r2,r0,800c050 <rtems_sparse_disk_register+0x110><== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  uint8_t     *data           = (uint8_t *) sd;                       
  size_t const key_table_size = blocks_with_buffer                    
 800bf90:	b4 84 68 00 	add r13,r4,r4                                  
 800bf94:	b5 ad 68 00 	add r13,r13,r13                                
 800bf98:	b5 ad 68 00 	add r13,r13,r13                                
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
                                                                      
  memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );    
 800bf9c:	35 b2 00 1c 	addi r18,r13,28                                
 800bfa0:	ba 40 18 00 	mv r3,r18                                      
 800bfa4:	34 02 00 00 	mvi r2,0                                       
 800bfa8:	b9 80 08 00 	mv r1,r12                                      
 800bfac:	5b 87 00 28 	sw (sp+40),r7                                  
 800bfb0:	f8 00 45 a0 	calli 801d630 <memset>                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  uint8_t     *data           = (uint8_t *) sd;                       
  size_t const key_table_size = blocks_with_buffer                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
 800bfb4:	b9 c0 10 00 	mv r2,r14                                      
                                                                      
  memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );    
                                                                      
  sd->fill_pattern = fill_pattern;                                    
 800bfb8:	31 90 00 14 	sb (r12+20),r16                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  uint8_t     *data           = (uint8_t *) sd;                       
  size_t const key_table_size = blocks_with_buffer                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
 800bfbc:	b9 60 08 00 	mv r1,r11                                      
 800bfc0:	fb ff d4 b7 	calli 800129c <__mulsi3>                       
                                                                      
  memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );    
                                                                      
  sd->fill_pattern = fill_pattern;                                    
  memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
 800bfc4:	b8 20 18 00 	mv r3,r1                                       
 800bfc8:	ba 00 10 00 	mv r2,r16                                      
 800bfcc:	b5 92 08 00 	add r1,r12,r18                                 
 800bfd0:	f8 00 45 98 	calli 801d630 <memset>                         
          sd->fill_pattern,                                           
          data_size );                                                
                                                                      
  sd->delete_handler = sparse_disk_delete;                            
                                                                      
  sc                 = rtems_semaphore_create(                        
 800bfd4:	78 02 08 03 	mvhi r2,0x803                                  
 800bfd8:	38 42 01 60 	ori r2,r2,0x160                                
  sd->fill_pattern = fill_pattern;                                    
  memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
          sd->fill_pattern,                                           
          data_size );                                                
                                                                      
  sd->delete_handler = sparse_disk_delete;                            
 800bfdc:	2b 87 00 28 	lw r7,(sp+40)                                  
                                                                      
  sc                 = rtems_semaphore_create(                        
 800bfe0:	28 41 00 00 	lw r1,(r2+0)                                   
 800bfe4:	34 03 00 54 	mvi r3,84                                      
  sd->fill_pattern = fill_pattern;                                    
  memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
          sd->fill_pattern,                                           
          data_size );                                                
                                                                      
  sd->delete_handler = sparse_disk_delete;                            
 800bfe8:	59 87 00 10 	sw (r12+16),r7                                 
                                                                      
  sc                 = rtems_semaphore_create(                        
 800bfec:	34 02 00 01 	mvi r2,1                                       
 800bff0:	34 04 00 00 	mvi r4,0                                       
 800bff4:	b9 80 28 00 	mv r5,r12                                      
 800bff8:	fb ff e6 8c 	calli 8005a28 <rtems_semaphore_create>         
    RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY, 
    0,                                                                
    &sd->mutex                                                        
    );                                                                
                                                                      
  if ( sc != RTEMS_SUCCESSFUL ) {                                     
 800bffc:	5c 20 00 15 	bne r1,r0,800c050 <rtems_sparse_disk_register+0x110><== NEVER TAKEN
    return sc;                                                        
  }                                                                   
                                                                      
  data                  += sizeof( rtems_sparse_disk );               
 800c000:	35 87 00 1c 	addi r7,r12,28                                 
                                                                      
  sd->blocks_with_buffer = blocks_with_buffer;                        
 800c004:	59 8b 00 04 	sw (r12+4),r11                                 
  sd->key_table          = (rtems_sparse_disk_key *) data;            
 800c008:	59 87 00 18 	sw (r12+24),r7                                 
                                                                      
  data                  += key_table_size;                            
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
 800c00c:	45 61 00 09 	be r11,r1,800c030 <rtems_sparse_disk_register+0xf0><== NEVER TAKEN
  data                  += sizeof( rtems_sparse_disk );               
                                                                      
  sd->blocks_with_buffer = blocks_with_buffer;                        
  sd->key_table          = (rtems_sparse_disk_key *) data;            
                                                                      
  data                  += key_table_size;                            
 800c010:	b4 ed 38 00 	add r7,r7,r13                                  
 800c014:	b9 80 30 00 	mv r6,r12                                      
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
 800c018:	34 04 00 00 	mvi r4,0                                       
    sd->key_table[i].data = data;                                     
 800c01c:	58 c7 00 20 	sw (r6+32),r7                                  
  sd->blocks_with_buffer = blocks_with_buffer;                        
  sd->key_table          = (rtems_sparse_disk_key *) data;            
                                                                      
  data                  += key_table_size;                            
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
 800c020:	34 84 00 01 	addi r4,r4,1                                   
 800c024:	b4 ee 38 00 	add r7,r7,r14                                  
 800c028:	34 c6 00 08 	addi r6,r6,8                                   
 800c02c:	55 64 ff fc 	bgu r11,r4,800c01c <rtems_sparse_disk_register+0xdc>
      sparse_disk_delete,                                             
      fill_pattern                                                    
    );                                                                
                                                                      
    if ( RTEMS_SUCCESSFUL == sc ) {                                   
      sc = rtems_blkdev_create(                                       
 800c030:	78 04 08 00 	mvhi r4,0x800                                  
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    sd->key_table[i].data = data;                                     
  }                                                                   
                                                                      
  sd->media_block_size = media_block_size;                            
 800c034:	59 8e 00 0c 	sw (r12+12),r14                                
      sparse_disk_delete,                                             
      fill_pattern                                                    
    );                                                                
                                                                      
    if ( RTEMS_SUCCESSFUL == sc ) {                                   
      sc = rtems_blkdev_create(                                       
 800c038:	ba 20 08 00 	mv r1,r17                                      
 800c03c:	b9 c0 10 00 	mv r2,r14                                      
 800c040:	b9 e0 18 00 	mv r3,r15                                      
 800c044:	38 84 bc 08 	ori r4,r4,0xbc08                               
 800c048:	b9 80 28 00 	mv r5,r12                                      
 800c04c:	f8 00 0c d2 	calli 800f394 <rtems_blkdev_create>            
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
 800c050:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800c054:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800c058:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800c05c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800c060:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800c064:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800c068:	2b 90 00 10 	lw r16,(sp+16)                                 
 800c06c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800c070:	2b 92 00 08 	lw r18,(sp+8)                                  
 800c074:	37 9c 00 28 	addi sp,sp,40                                  
 800c078:	c3 a0 00 00 	ret                                            
                                                                      

08023a28 <rtems_stack_checker_begin_extension>: Thread_Control *the_thread ) { Stack_check_Control *the_pattern; if ( the_thread->Object.id == 0 ) /* skip system tasks */
 8023a28:	28 22 00 08 	lw r2,(r1+8)                                   
 8023a2c:	44 40 00 0c 	be r2,r0,8023a5c <rtems_stack_checker_begin_extension+0x34><== NEVER TAKEN
    return;                                                           
                                                                      
  the_pattern = Stack_check_Get_pattern_area(&the_thread->Start.Initial_stack);
                                                                      
  *the_pattern = Stack_check_Pattern;                                 
 8023a30:	78 02 08 06 	mvhi r2,0x806                                  
 8023a34:	38 42 fa 94 	ori r2,r2,0xfa94                               
 8023a38:	28 43 00 00 	lw r3,(r2+0)                                   
 8023a3c:	28 21 00 b8 	lw r1,(r1+184)                                 
 8023a40:	58 23 00 08 	sw (r1+8),r3                                   
 8023a44:	28 43 00 04 	lw r3,(r2+4)                                   
 8023a48:	58 23 00 0c 	sw (r1+12),r3                                  
 8023a4c:	28 43 00 08 	lw r3,(r2+8)                                   
 8023a50:	58 23 00 10 	sw (r1+16),r3                                  
 8023a54:	28 42 00 0c 	lw r2,(r2+12)                                  
 8023a58:	58 22 00 14 	sw (r1+20),r2                                  
 8023a5c:	c3 a0 00 00 	ret                                            
                                                                      

0802394c <rtems_stack_checker_create_extension>: */ bool rtems_stack_checker_create_extension( Thread_Control *running __attribute__((unused)), Thread_Control *the_thread ) {
 802394c:	37 9c ff f4 	addi sp,sp,-12                                 
 8023950:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8023954:	5b 8c 00 08 	sw (sp+8),r12                                  
 8023958:	5b 9d 00 04 	sw (sp+4),ra                                   
  static    uint32_t pattern[ 4 ] = {                                 
    0xFEEDF00D, 0x0BAD0D06,  /* FEED FOOD to  BAD DOG */              
    0xDEADF00D, 0x600D0D06   /* DEAD FOOD but GOOD DOG */             
  };                                                                  
                                                                      
  if ( Stack_check_Initialized )                                      
 802395c:	78 0b 08 06 	mvhi r11,0x806                                 
 8023960:	39 6b ea 78 	ori r11,r11,0xea78                             
 8023964:	29 61 00 00 	lw r1,(r11+0)                                  
 */                                                                   
bool rtems_stack_checker_create_extension(                            
  Thread_Control *running __attribute__((unused)),                    
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
 8023968:	b8 40 60 00 	mv r12,r2                                      
  static    uint32_t pattern[ 4 ] = {                                 
    0xFEEDF00D, 0x0BAD0D06,  /* FEED FOOD to  BAD DOG */              
    0xDEADF00D, 0x600D0D06   /* DEAD FOOD but GOOD DOG */             
  };                                                                  
                                                                      
  if ( Stack_check_Initialized )                                      
 802396c:	5c 20 00 24 	bne r1,r0,80239fc <rtems_stack_checker_create_extension+0xb0>
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 8023970:	78 06 08 06 	mvhi r6,0x806                                  
 8023974:	38 c6 45 50 	ori r6,r6,0x4550                               
 8023978:	28 c5 00 00 	lw r5,(r6+0)                                   
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 802397c:	78 03 08 06 	mvhi r3,0x806                                  
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 8023980:	78 02 08 06 	mvhi r2,0x806                                  
 8023984:	78 06 08 06 	mvhi r6,0x806                                  
 8023988:	38 42 fa 94 	ori r2,r2,0xfa94                               
 802398c:	38 c6 45 54 	ori r6,r6,0x4554                               
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 8023990:	38 63 f5 00 	ori r3,r3,0xf500                               
 8023994:	28 64 00 00 	lw r4,(r3+0)                                   
  /*                                                                  
   * Dope the pattern and fill areas                                  
   */                                                                 
  p = Stack_check_Pattern.pattern;                                    
  for ( i = 0; i < PATTERN_SIZE_WORDS; i++ ) {                        
      p[i] = pattern[ i%4 ];                                          
 8023998:	58 45 00 00 	sw (r2+0),r5                                   
 802399c:	28 c5 00 00 	lw r5,(r6+0)                                   
 80239a0:	78 06 08 06 	mvhi r6,0x806                                  
 80239a4:	38 c6 45 58 	ori r6,r6,0x4558                               
 80239a8:	58 45 00 04 	sw (r2+4),r5                                   
 80239ac:	28 c5 00 00 	lw r5,(r6+0)                                   
 80239b0:	78 06 08 06 	mvhi r6,0x806                                  
 80239b4:	38 c6 45 5c 	ori r6,r6,0x455c                               
 80239b8:	58 45 00 08 	sw (r2+8),r5                                   
 80239bc:	28 c5 00 00 	lw r5,(r6+0)                                   
 80239c0:	58 45 00 0c 	sw (r2+12),r5                                  
  /*                                                                  
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
 80239c4:	44 81 00 0c 	be r4,r1,80239f4 <rtems_stack_checker_create_extension+0xa8><== NEVER TAKEN
 80239c8:	28 63 00 04 	lw r3,(r3+4)                                   
 80239cc:	44 60 00 0a 	be r3,r0,80239f4 <rtems_stack_checker_create_extension+0xa8><== NEVER TAKEN
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 80239d0:	78 05 08 06 	mvhi r5,0x806                                  
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
 80239d4:	c8 64 30 00 	sub r6,r3,r4                                   
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 80239d8:	38 a5 fa a4 	ori r5,r5,0xfaa4                               
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
                                  (char *) _CPU_Interrupt_stack_low;  
      Stack_check_Dope_stack(&Stack_check_Interrupt_stack);           
 80239dc:	b8 80 08 00 	mv r1,r4                                       
 80239e0:	34 02 00 a5 	mvi r2,165                                     
 80239e4:	b8 c0 18 00 	mv r3,r6                                       
   * If appropriate, setup the interrupt stack for high water testing 
   * also.                                                            
   */                                                                 
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if (_CPU_Interrupt_stack_low && _CPU_Interrupt_stack_high) {      
      Stack_check_Interrupt_stack.area = _CPU_Interrupt_stack_low;    
 80239e8:	58 a4 00 04 	sw (r5+4),r4                                   
      Stack_check_Interrupt_stack.size = (char *) _CPU_Interrupt_stack_high -
 80239ec:	58 a6 00 00 	sw (r5+0),r6                                   
                                  (char *) _CPU_Interrupt_stack_low;  
      Stack_check_Dope_stack(&Stack_check_Interrupt_stack);           
 80239f0:	f8 00 77 3a 	calli 80416d8 <memset>                         
   }                                                                  
  #endif                                                              
                                                                      
  Stack_check_Initialized = 1;                                        
 80239f4:	34 01 00 01 	mvi r1,1                                       
 80239f8:	59 61 00 00 	sw (r11+0),r1                                  
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  Stack_check_Initialize();                                           
                                                                      
  if (the_thread)                                                     
 80239fc:	45 80 00 05 	be r12,r0,8023a10 <rtems_stack_checker_create_extension+0xc4><== NEVER TAKEN
    Stack_check_Dope_stack(&the_thread->Start.Initial_stack);         
 8023a00:	29 81 00 b8 	lw r1,(r12+184)                                
 8023a04:	29 83 00 b4 	lw r3,(r12+180)                                
 8023a08:	34 02 00 a5 	mvi r2,165                                     
 8023a0c:	f8 00 77 33 	calli 80416d8 <memset>                         
                                                                      
  return true;                                                        
}                                                                     
 8023a10:	34 01 00 01 	mvi r1,1                                       
 8023a14:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023a18:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8023a1c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8023a20:	37 9c 00 0c 	addi sp,sp,12                                  
 8023a24:	c3 a0 00 00 	ret                                            
                                                                      

08023ba0 <rtems_stack_checker_is_blown>: /* * Check if blown */ bool rtems_stack_checker_is_blown( void ) {
 8023ba0:	37 9c ff f0 	addi sp,sp,-16                                 
 8023ba4:	5b 9b 00 08 	sw (sp+8),fp                                   
 8023ba8:	34 1b 00 10 	mvi fp,16                                      
 8023bac:	b7 7c d8 00 	add fp,fp,sp                                   
 8023bb0:	5b 8b 00 10 	sw (sp+16),r11                                 
 8023bb4:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8023bb8:	5b 9d 00 04 	sw (sp+4),ra                                   
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
 8023bbc:	78 0b 08 06 	mvhi r11,0x806                                 
 8023bc0:	39 6b f5 00 	ori r11,r11,0xf500                             
 8023bc4:	29 62 00 10 	lw r2,(r11+16)                                 
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
      return false;                                                   
 8023bc8:	34 0c 00 00 	mvi r12,0                                      
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
 8023bcc:	28 41 00 b8 	lw r1,(r2+184)                                 
 8023bd0:	54 3b 00 04 	bgu r1,fp,8023be0 <rtems_stack_checker_is_blown+0x40><== NEVER TAKEN
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
 8023bd4:	28 4c 00 b4 	lw r12,(r2+180)                                
}                                                                     
                                                                      
/*                                                                    
 *  Check if blown                                                    
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
 8023bd8:	b4 2c 60 00 	add r12,r1,r12                                 
 8023bdc:	f1 9b 60 00 	cmpgeu r12,r12,fp                              
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
 8023be0:	78 02 08 06 	mvhi r2,0x806                                  
 8023be4:	38 42 ea 78 	ori r2,r2,0xea78                               
 8023be8:	28 43 00 00 	lw r3,(r2+0)                                   
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
{                                                                     
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
 8023bec:	34 02 00 01 	mvi r2,1                                       
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
 8023bf0:	44 60 00 07 	be r3,r0,8023c0c <rtems_stack_checker_is_blown+0x6c><== NEVER TAKEN
    pattern_ok = (!memcmp(                                            
 8023bf4:	78 02 08 06 	mvhi r2,0x806                                  
 8023bf8:	38 42 fa 94 	ori r2,r2,0xfa94                               
 8023bfc:	34 21 00 08 	addi r1,r1,8                                   
 8023c00:	34 03 00 10 	mvi r3,16                                      
 8023c04:	f8 00 76 06 	calli 804141c <memcmp>                         
 8023c08:	64 22 00 00 	cmpei r2,r1,0                                  
                                                                      
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
 8023c0c:	45 80 00 09 	be r12,r0,8023c30 <rtems_stack_checker_is_blown+0x90><== NEVER TAKEN
 8023c10:	44 40 00 08 	be r2,r0,8023c30 <rtems_stack_checker_is_blown+0x90><== NEVER TAKEN
                                                                      
  /*                                                                  
   * The Stack Pointer and the Pattern Area are OK so return false.   
   */                                                                 
  return false;                                                       
}                                                                     
 8023c14:	34 01 00 00 	mvi r1,0                                       
 8023c18:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023c1c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8023c20:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8023c24:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8023c28:	37 9c 00 10 	addi sp,sp,16                                  
 8023c2c:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( _Thread_Executing, pattern_ok );   
 8023c30:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8023c34:	fb ff ff 8b 	calli 8023a60 <Stack_check_report_blown_task>  <== NOT EXECUTED
                                                                      

08023c38 <rtems_stack_checker_report_usage_with_plugin>: void rtems_stack_checker_report_usage_with_plugin( void *context, rtems_printk_plugin_t print ) {
 8023c38:	37 9c ff ec 	addi sp,sp,-20                                 
 8023c3c:	5b 8b 00 14 	sw (sp+20),r11                                 
 8023c40:	5b 8c 00 10 	sw (sp+16),r12                                 
 8023c44:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8023c48:	5b 8e 00 08 	sw (sp+8),r14                                  
 8023c4c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8023c50:	b8 40 58 00 	mv r11,r2                                      
 8023c54:	b8 20 70 00 	mv r14,r1                                      
  if ( !print )                                                       
 8023c58:	44 40 00 15 	be r2,r0,8023cac <rtems_stack_checker_report_usage_with_plugin+0x74><== NEVER TAKEN
    return;                                                           
                                                                      
  print_context = context;                                            
 8023c5c:	78 0d 08 06 	mvhi r13,0x806                                 
  print_handler = print;                                              
 8023c60:	78 0c 08 06 	mvhi r12,0x806                                 
)                                                                     
{                                                                     
  if ( !print )                                                       
    return;                                                           
                                                                      
  print_context = context;                                            
 8023c64:	39 ad ea 70 	ori r13,r13,0xea70                             
  print_handler = print;                                              
 8023c68:	39 8c ea 74 	ori r12,r12,0xea74                             
                                                                      
  (*print)( context, "Stack usage by thread\n");                      
 8023c6c:	78 02 08 06 	mvhi r2,0x806                                  
 8023c70:	38 42 44 e8 	ori r2,r2,0x44e8                               
)                                                                     
{                                                                     
  if ( !print )                                                       
    return;                                                           
                                                                      
  print_context = context;                                            
 8023c74:	59 a1 00 00 	sw (r13+0),r1                                  
  print_handler = print;                                              
 8023c78:	59 8b 00 00 	sw (r12+0),r11                                 
                                                                      
  (*print)( context, "Stack usage by thread\n");                      
 8023c7c:	d9 60 00 00 	call r11                                       
  (*print)( context,                                                  
 8023c80:	78 02 08 06 	mvhi r2,0x806                                  
 8023c84:	38 42 45 00 	ori r2,r2,0x4500                               
 8023c88:	b9 c0 08 00 	mv r1,r14                                      
 8023c8c:	d9 60 00 00 	call r11                                       
"    ID      NAME    LOW          HIGH     CURRENT     AVAILABLE     USED\n"
  );                                                                  
                                                                      
  /* iterate over all threads and dump the usage */                   
  rtems_iterate_over_all_threads( Stack_check_Dump_threads_usage );   
 8023c90:	78 01 08 02 	mvhi r1,0x802                                  
 8023c94:	38 21 37 78 	ori r1,r1,0x3778                               
 8023c98:	f8 00 18 2a 	calli 8029d40 <rtems_iterate_over_all_threads> 
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    /* dump interrupt stack info if any */                            
    Stack_check_Dump_threads_usage((Thread_Control *) -1);            
 8023c9c:	34 01 ff ff 	mvi r1,-1                                      
 8023ca0:	fb ff fe b6 	calli 8023778 <Stack_check_Dump_threads_usage> 
  #endif                                                              
                                                                      
  print_context = NULL;                                               
 8023ca4:	59 a0 00 00 	sw (r13+0),r0                                  
  print_handler = NULL;                                               
 8023ca8:	59 80 00 00 	sw (r12+0),r0                                  
}                                                                     
 8023cac:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023cb0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8023cb4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8023cb8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8023cbc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8023cc0:	37 9c 00 14 	addi sp,sp,20                                  
 8023cc4:	c3 a0 00 00 	ret                                            
                                                                      

08023b20 <rtems_stack_checker_switch_extension>: */ void rtems_stack_checker_switch_extension( Thread_Control *running __attribute__((unused)), Thread_Control *heir __attribute__((unused)) ) {
 8023b20:	37 9c ff f4 	addi sp,sp,-12                                 
 8023b24:	5b 9b 00 08 	sw (sp+8),fp                                   
 8023b28:	34 1b 00 0c 	mvi fp,12                                      
 8023b2c:	b7 7c d8 00 	add fp,fp,sp                                   
 8023b30:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8023b34:	5b 9d 00 04 	sw (sp+4),ra                                   
  Stack_Control *the_stack = &running->Start.Initial_stack;           
  void          *pattern;                                             
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
                                                                      
  pattern = Stack_check_Get_pattern_area(the_stack);                  
 8023b38:	28 22 00 b8 	lw r2,(r1+184)                                 
 */                                                                   
void rtems_stack_checker_switch_extension(                            
  Thread_Control *running __attribute__((unused)),                    
  Thread_Control *heir __attribute__((unused))                        
)                                                                     
{                                                                     
 8023b3c:	b8 20 58 00 	mv r11,r1                                      
  Stack_Control *the_stack = &running->Start.Initial_stack;           
  void          *pattern;                                             
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
                                                                      
  pattern = Stack_check_Get_pattern_area(the_stack);                  
 8023b40:	34 41 00 08 	addi r1,r2,8                                   
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
 8023b44:	54 5b 00 04 	bgu r2,fp,8023b54 <rtems_stack_checker_switch_extension+0x34><== NEVER TAKEN
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
 8023b48:	29 63 00 b4 	lw r3,(r11+180)                                
 8023b4c:	b4 43 10 00 	add r2,r2,r3                                   
 8023b50:	50 5b 00 08 	bgeu r2,fp,8023b70 <rtems_stack_checker_switch_extension+0x50><== ALWAYS TAKEN
  /*                                                                  
   *  Check for an out of bounds stack pointer or an overwrite        
   */                                                                 
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
 8023b54:	78 02 08 06 	mvhi r2,0x806                                  <== NOT EXECUTED
 8023b58:	38 42 fa 94 	ori r2,r2,0xfa94                               <== NOT EXECUTED
 8023b5c:	34 03 00 10 	mvi r3,16                                      <== NOT EXECUTED
 8023b60:	f8 00 76 2f 	calli 804141c <memcmp>                         <== NOT EXECUTED
 8023b64:	64 22 00 00 	cmpei r2,r1,0                                  <== NOT EXECUTED
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( running, pattern_ok );             
 8023b68:	b9 60 08 00 	mv r1,r11                                      
 8023b6c:	fb ff ff bd 	calli 8023a60 <Stack_check_report_blown_task>  
  /*                                                                  
   *  Check for an out of bounds stack pointer or an overwrite        
   */                                                                 
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
 8023b70:	78 02 08 06 	mvhi r2,0x806                                  
 8023b74:	38 42 fa 94 	ori r2,r2,0xfa94                               
 8023b78:	34 03 00 10 	mvi r3,16                                      
 8023b7c:	f8 00 76 28 	calli 804141c <memcmp>                         
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
 8023b80:	5c 20 00 06 	bne r1,r0,8023b98 <rtems_stack_checker_switch_extension+0x78>
    Stack_check_report_blown_task( running, pattern_ok );             
  }                                                                   
}                                                                     
 8023b84:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8023b88:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8023b8c:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8023b90:	37 9c 00 0c 	addi sp,sp,12                                  
 8023b94:	c3 a0 00 00 	ret                                            
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
 8023b98:	34 02 00 00 	mvi r2,0                                       
 8023b9c:	e3 ff ff f3 	bi 8023b68 <rtems_stack_checker_switch_extension+0x48>
                                                                      

0800a20c <rtems_string_to_double>: rtems_status_code rtems_string_to_double ( const char *s, double *n, char **endptr ) {
 800a20c:	37 9c ff e0 	addi sp,sp,-32                                 
 800a210:	5b 8b 00 1c 	sw (sp+28),r11                                 
 800a214:	5b 8c 00 18 	sw (sp+24),r12                                 
 800a218:	5b 8d 00 14 	sw (sp+20),r13                                 
 800a21c:	5b 8e 00 10 	sw (sp+16),r14                                 
 800a220:	5b 8f 00 0c 	sw (sp+12),r15                                 
 800a224:	5b 90 00 08 	sw (sp+8),r16                                  
 800a228:	5b 9d 00 04 	sw (sp+4),ra                                   
  double result;                                                      
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a22c:	34 0c 00 09 	mvi r12,9                                      
rtems_status_code rtems_string_to_double (                            
  const char *s,                                                      
  double *n,                                                          
  char **endptr                                                       
)                                                                     
{                                                                     
 800a230:	b8 40 58 00 	mv r11,r2                                      
 800a234:	b8 20 78 00 	mv r15,r1                                      
 800a238:	b8 60 80 00 	mv r16,r3                                      
  double result;                                                      
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a23c:	44 40 00 16 	be r2,r0,800a294 <rtems_string_to_double+0x88> 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a240:	f8 00 10 f0 	calli 800e600 <__errno>                        
 800a244:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
 800a248:	59 60 00 00 	sw (r11+0),r0                                  
 800a24c:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtod( s, &end );                                         
 800a250:	b9 e0 08 00 	mv r1,r15                                      
 800a254:	37 82 00 20 	addi r2,sp,32                                  
 800a258:	f8 00 1c 00 	calli 8011258 <strtod>                         
 800a25c:	b8 20 70 00 	mv r14,r1                                      
 800a260:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  if ( endptr )                                                       
 800a264:	46 00 00 2e 	be r16,r0,800a31c <rtems_string_to_double+0x110>
    *endptr = end;                                                    
 800a268:	2b 84 00 20 	lw r4,(sp+32)                                  
 800a26c:	5a 04 00 00 	sw (r16+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a270:	34 0c 00 0b 	mvi r12,11                                     
  result = strtod( s, &end );                                         
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a274:	45 e4 00 08 	be r15,r4,800a294 <rtems_string_to_double+0x88>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a278:	f8 00 10 e2 	calli 800e600 <__errno>                        
 800a27c:	28 22 00 00 	lw r2,(r1+0)                                   
 800a280:	34 01 00 22 	mvi r1,34                                      
 800a284:	44 41 00 0e 	be r2,r1,800a2bc <rtems_string_to_double+0xb0> 
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 800a288:	59 6e 00 00 	sw (r11+0),r14                                 
 800a28c:	59 6d 00 04 	sw (r11+4),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a290:	34 0c 00 00 	mvi r12,0                                      
}                                                                     
 800a294:	b9 80 08 00 	mv r1,r12                                      
 800a298:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a29c:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 800a2a0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 800a2a4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 800a2a8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800a2ac:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 800a2b0:	2b 90 00 08 	lw r16,(sp+8)                                  
 800a2b4:	37 9c 00 20 	addi sp,sp,32                                  
 800a2b8:	c3 a0 00 00 	ret                                            
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a2bc:	b9 c0 08 00 	mv r1,r14                                      
 800a2c0:	b9 a0 10 00 	mv r2,r13                                      
 800a2c4:	34 03 00 00 	mvi r3,0                                       
 800a2c8:	34 04 00 00 	mvi r4,0                                       
 800a2cc:	fb ff e3 c7 	calli 80031e8 <__eqdf2>                        
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
      return RTEMS_INVALID_NUMBER;                                    
 800a2d0:	34 0c 00 0a 	mvi r12,10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a2d4:	44 20 ff f0 	be r1,r0,800a294 <rtems_string_to_double+0x88> <== NEVER TAKEN
    (( result == 0 ) || ( result == HUGE_VAL ) || ( result == -HUGE_VAL )))
 800a2d8:	78 01 08 02 	mvhi r1,0x802                                  
 800a2dc:	38 21 25 3c 	ori r1,r1,0x253c                               
 800a2e0:	28 23 00 00 	lw r3,(r1+0)                                   
 800a2e4:	b9 a0 10 00 	mv r2,r13                                      
 800a2e8:	b9 c0 08 00 	mv r1,r14                                      
 800a2ec:	34 04 ff ff 	mvi r4,-1                                      
 800a2f0:	f8 00 4b ad 	calli 801d1a4 <__gedf2>                        
 800a2f4:	48 20 ff e8 	bg r1,r0,800a294 <rtems_string_to_double+0x88> 
 800a2f8:	78 01 08 02 	mvhi r1,0x802                                  
 800a2fc:	38 21 25 40 	ori r1,r1,0x2540                               
 800a300:	28 23 00 00 	lw r3,(r1+0)                                   
 800a304:	b9 a0 10 00 	mv r2,r13                                      
 800a308:	b9 c0 08 00 	mv r1,r14                                      
 800a30c:	34 04 ff ff 	mvi r4,-1                                      
 800a310:	f8 00 4c 0e 	calli 801d348 <__ledf2>                        
 800a314:	48 01 ff e0 	bg r0,r1,800a294 <rtems_string_to_double+0x88> <== ALWAYS TAKEN
 800a318:	e3 ff ff dc 	bi 800a288 <rtems_string_to_double+0x7c>       <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtod( s, &end );                                         
                                                                      
  if ( endptr )                                                       
 800a31c:	2b 84 00 20 	lw r4,(sp+32)                                  
 800a320:	e3 ff ff d4 	bi 800a270 <rtems_string_to_double+0x64>       
                                                                      

0800a324 <rtems_string_to_float>: rtems_status_code rtems_string_to_float ( const char *s, float *n, char **endptr ) {
 800a324:	37 9c ff e4 	addi sp,sp,-28                                 
 800a328:	5b 8b 00 18 	sw (sp+24),r11                                 
 800a32c:	5b 8c 00 14 	sw (sp+20),r12                                 
 800a330:	5b 8d 00 10 	sw (sp+16),r13                                 
 800a334:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800a338:	5b 8f 00 08 	sw (sp+8),r15                                  
 800a33c:	5b 9d 00 04 	sw (sp+4),ra                                   
  float result;                                                       
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a340:	34 0b 00 09 	mvi r11,9                                      
rtems_status_code rtems_string_to_float (                             
  const char *s,                                                      
  float *n,                                                           
  char **endptr                                                       
)                                                                     
{                                                                     
 800a344:	b8 40 60 00 	mv r12,r2                                      
 800a348:	b8 20 70 00 	mv r14,r1                                      
 800a34c:	b8 60 78 00 	mv r15,r3                                      
  float result;                                                       
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a350:	44 40 00 13 	be r2,r0,800a39c <rtems_string_to_float+0x78>  
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a354:	f8 00 10 ab 	calli 800e600 <__errno>                        
 800a358:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
 800a35c:	59 80 00 00 	sw (r12+0),r0                                  
                                                                      
  result = strtof( s, &end );                                         
 800a360:	b9 c0 08 00 	mv r1,r14                                      
 800a364:	37 82 00 1c 	addi r2,sp,28                                  
 800a368:	f8 00 1b c8 	calli 8011288 <strtof>                         
 800a36c:	b8 20 68 00 	mv r13,r1                                      
                                                                      
  if ( endptr )                                                       
 800a370:	45 e0 00 26 	be r15,r0,800a408 <rtems_string_to_float+0xe4> 
    *endptr = end;                                                    
 800a374:	2b 82 00 1c 	lw r2,(sp+28)                                  
 800a378:	59 e2 00 00 	sw (r15+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a37c:	34 0b 00 0b 	mvi r11,11                                     
  result = strtof( s, &end );                                         
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a380:	45 c2 00 07 	be r14,r2,800a39c <rtems_string_to_float+0x78> 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a384:	f8 00 10 9f 	calli 800e600 <__errno>                        
 800a388:	28 22 00 00 	lw r2,(r1+0)                                   
 800a38c:	34 01 00 22 	mvi r1,34                                      
 800a390:	44 41 00 0c 	be r2,r1,800a3c0 <rtems_string_to_float+0x9c>  
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 800a394:	59 8d 00 00 	sw (r12+0),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a398:	34 0b 00 00 	mvi r11,0                                      
}                                                                     
 800a39c:	b9 60 08 00 	mv r1,r11                                      
 800a3a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a3a4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800a3a8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800a3ac:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800a3b0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800a3b4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800a3b8:	37 9c 00 1c 	addi sp,sp,28                                  
 800a3bc:	c3 a0 00 00 	ret                                            
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a3c0:	b9 a0 08 00 	mv r1,r13                                      
 800a3c4:	34 02 00 00 	mvi r2,0                                       
 800a3c8:	fb ff e3 50 	calli 8003108 <__eqsf2>                        
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
      return RTEMS_INVALID_NUMBER;                                    
 800a3cc:	34 0b 00 0a 	mvi r11,10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a3d0:	44 20 ff f3 	be r1,r0,800a39c <rtems_string_to_float+0x78>  <== NEVER TAKEN
    (( result == 0 ) || ( result == HUGE_VALF ) || ( result == -HUGE_VALF )))
 800a3d4:	78 01 08 02 	mvhi r1,0x802                                  
 800a3d8:	38 21 25 44 	ori r1,r1,0x2544                               
 800a3dc:	28 22 00 00 	lw r2,(r1+0)                                   
 800a3e0:	b9 a0 08 00 	mv r1,r13                                      
 800a3e4:	f8 00 45 25 	calli 801b878 <__gesf2>                        
 800a3e8:	48 20 ff ed 	bg r1,r0,800a39c <rtems_string_to_float+0x78>  
 800a3ec:	78 01 08 02 	mvhi r1,0x802                                  
 800a3f0:	38 21 25 48 	ori r1,r1,0x2548                               
 800a3f4:	28 22 00 00 	lw r2,(r1+0)                                   
 800a3f8:	b9 a0 08 00 	mv r1,r13                                      
 800a3fc:	f8 00 45 71 	calli 801b9c0 <__lesf2>                        
 800a400:	48 01 ff e7 	bg r0,r1,800a39c <rtems_string_to_float+0x78>  <== ALWAYS TAKEN
 800a404:	e3 ff ff e4 	bi 800a394 <rtems_string_to_float+0x70>        <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtof( s, &end );                                         
                                                                      
  if ( endptr )                                                       
 800a408:	2b 82 00 1c 	lw r2,(sp+28)                                  
 800a40c:	e3 ff ff dc 	bi 800a37c <rtems_string_to_float+0x58>        
                                                                      

0801d41c <rtems_string_to_int>: const char *s, int *n, char **endptr, int base ) {
 801d41c:	37 9c ff e8 	addi sp,sp,-24                                 
 801d420:	5b 8b 00 14 	sw (sp+20),r11                                 
 801d424:	5b 8c 00 10 	sw (sp+16),r12                                 
 801d428:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801d42c:	5b 8e 00 08 	sw (sp+8),r14                                  
 801d430:	5b 9d 00 04 	sw (sp+4),ra                                   
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 801d434:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  int *n,                                                             
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 801d438:	b8 40 58 00 	mv r11,r2                                      
 801d43c:	b8 20 68 00 	mv r13,r1                                      
 801d440:	b8 60 70 00 	mv r14,r3                                      
 801d444:	b8 80 60 00 	mv r12,r4                                      
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 801d448:	44 40 00 14 	be r2,r0,801d498 <rtems_string_to_int+0x7c>    
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 801d44c:	f8 00 80 f4 	calli 803d81c <__errno>                        
 801d450:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
 801d454:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 801d458:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtol( s, &end, base );                                   
 801d45c:	b9 a0 08 00 	mv r1,r13                                      
 801d460:	37 82 00 18 	addi r2,sp,24                                  
 801d464:	f8 00 a4 26 	calli 80464fc <strtol>                         
 801d468:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 801d46c:	45 c0 00 1e 	be r14,r0,801d4e4 <rtems_string_to_int+0xc8>   
    *endptr = end;                                                    
 801d470:	2b 82 00 18 	lw r2,(sp+24)                                  
 801d474:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 801d478:	34 05 00 0b 	mvi r5,11                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 801d47c:	45 a2 00 07 	be r13,r2,801d498 <rtems_string_to_int+0x7c>   
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 801d480:	f8 00 80 e7 	calli 803d81c <__errno>                        
 801d484:	28 22 00 00 	lw r2,(r1+0)                                   
 801d488:	34 01 00 22 	mvi r1,34                                      
 801d48c:	44 41 00 0b 	be r2,r1,801d4b8 <rtems_string_to_int+0x9c>    
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 801d490:	59 6c 00 00 	sw (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 801d494:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 801d498:	b8 a0 08 00 	mv r1,r5                                       
 801d49c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801d4a0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801d4a4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801d4a8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801d4ac:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801d4b0:	37 9c 00 18 	addi sp,sp,24                                  
 801d4b4:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 801d4b8:	78 03 08 06 	mvhi r3,0x806                                  
 801d4bc:	38 63 2d fc 	ori r3,r3,0x2dfc                               
 801d4c0:	28 61 00 00 	lw r1,(r3+0)                                   
 801d4c4:	65 82 00 00 	cmpei r2,r12,0                                 
      return RTEMS_INVALID_NUMBER;                                    
 801d4c8:	34 05 00 0a 	mvi r5,10                                      
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 801d4cc:	e5 81 08 00 	cmpe r1,r12,r1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 801d4d0:	b8 22 08 00 	or r1,r1,r2                                    
 801d4d4:	5c 20 ff f1 	bne r1,r0,801d498 <rtems_string_to_int+0x7c>   
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 801d4d8:	78 01 80 00 	mvhi r1,0x8000                                 
 801d4dc:	5d 81 ff ed 	bne r12,r1,801d490 <rtems_string_to_int+0x74>  <== NEVER TAKEN
 801d4e0:	e3 ff ff ee 	bi 801d498 <rtems_string_to_int+0x7c>          
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
 801d4e4:	2b 82 00 18 	lw r2,(sp+24)                                  
 801d4e8:	e3 ff ff e4 	bi 801d478 <rtems_string_to_int+0x5c>          
                                                                      

0800a5d8 <rtems_string_to_long>: const char *s, long *n, char **endptr, int base ) {
 800a5d8:	37 9c ff e8 	addi sp,sp,-24                                 
 800a5dc:	5b 8b 00 14 	sw (sp+20),r11                                 
 800a5e0:	5b 8c 00 10 	sw (sp+16),r12                                 
 800a5e4:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800a5e8:	5b 8e 00 08 	sw (sp+8),r14                                  
 800a5ec:	5b 9d 00 04 	sw (sp+4),ra                                   
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a5f0:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  long *n,                                                            
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 800a5f4:	b8 40 58 00 	mv r11,r2                                      
 800a5f8:	b8 20 68 00 	mv r13,r1                                      
 800a5fc:	b8 60 70 00 	mv r14,r3                                      
 800a600:	b8 80 60 00 	mv r12,r4                                      
  long result;                                                        
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a604:	44 40 00 14 	be r2,r0,800a654 <rtems_string_to_long+0x7c>   
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a608:	f8 00 0f fe 	calli 800e600 <__errno>                        
 800a60c:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
 800a610:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 800a614:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtol( s, &end, base );                                   
 800a618:	b9 a0 08 00 	mv r1,r13                                      
 800a61c:	37 82 00 18 	addi r2,sp,24                                  
 800a620:	f8 00 1b cd 	calli 8011554 <strtol>                         
 800a624:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 800a628:	45 c0 00 1e 	be r14,r0,800a6a0 <rtems_string_to_long+0xc8>  
    *endptr = end;                                                    
 800a62c:	2b 82 00 18 	lw r2,(sp+24)                                  
 800a630:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a634:	34 05 00 0b 	mvi r5,11                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a638:	45 a2 00 07 	be r13,r2,800a654 <rtems_string_to_long+0x7c>  
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a63c:	f8 00 0f f1 	calli 800e600 <__errno>                        
 800a640:	28 22 00 00 	lw r2,(r1+0)                                   
 800a644:	34 01 00 22 	mvi r1,34                                      
 800a648:	44 41 00 0b 	be r2,r1,800a674 <rtems_string_to_long+0x9c>   
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 800a64c:	59 6c 00 00 	sw (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a650:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 800a654:	b8 a0 08 00 	mv r1,r5                                       
 800a658:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a65c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800a660:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800a664:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800a668:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800a66c:	37 9c 00 18 	addi sp,sp,24                                  
 800a670:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 800a674:	78 03 08 02 	mvhi r3,0x802                                  
 800a678:	38 63 1c 78 	ori r3,r3,0x1c78                               
 800a67c:	28 61 00 00 	lw r1,(r3+0)                                   
 800a680:	65 82 00 00 	cmpei r2,r12,0                                 
      return RTEMS_INVALID_NUMBER;                                    
 800a684:	34 05 00 0a 	mvi r5,10                                      
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 800a688:	e5 81 08 00 	cmpe r1,r12,r1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a68c:	b8 22 08 00 	or r1,r1,r2                                    
 800a690:	5c 20 ff f1 	bne r1,r0,800a654 <rtems_string_to_long+0x7c>  
    (( result == 0 ) || ( result == LONG_MAX ) || ( result == LONG_MIN )))
 800a694:	78 01 80 00 	mvhi r1,0x8000                                 
 800a698:	5d 81 ff ed 	bne r12,r1,800a64c <rtems_string_to_long+0x74> <== NEVER TAKEN
 800a69c:	e3 ff ff ee 	bi 800a654 <rtems_string_to_long+0x7c>         
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtol( s, &end, base );                                   
                                                                      
  if ( endptr )                                                       
 800a6a0:	2b 82 00 18 	lw r2,(sp+24)                                  
 800a6a4:	e3 ff ff e4 	bi 800a634 <rtems_string_to_long+0x5c>         
                                                                      

0800a4e0 <rtems_string_to_long_long>: const char *s, long long *n, char **endptr, int base ) {
 800a4e0:	37 9c ff e4 	addi sp,sp,-28                                 
 800a4e4:	5b 8b 00 18 	sw (sp+24),r11                                 
 800a4e8:	5b 8c 00 14 	sw (sp+20),r12                                 
 800a4ec:	5b 8d 00 10 	sw (sp+16),r13                                 
 800a4f0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800a4f4:	5b 8f 00 08 	sw (sp+8),r15                                  
 800a4f8:	5b 9d 00 04 	sw (sp+4),ra                                   
  long long result;                                                   
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a4fc:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  long long *n,                                                       
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 800a500:	b8 40 58 00 	mv r11,r2                                      
 800a504:	b8 20 70 00 	mv r14,r1                                      
 800a508:	b8 60 78 00 	mv r15,r3                                      
 800a50c:	b8 80 60 00 	mv r12,r4                                      
  long long result;                                                   
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a510:	44 40 00 17 	be r2,r0,800a56c <rtems_string_to_long_long+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a514:	f8 00 10 3b 	calli 800e600 <__errno>                        
 800a518:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoll( s, &end, base );                                  
 800a51c:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 800a520:	59 60 00 00 	sw (r11+0),r0                                  
 800a524:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtoll( s, &end, base );                                  
 800a528:	b9 c0 08 00 	mv r1,r14                                      
 800a52c:	37 82 00 1c 	addi r2,sp,28                                  
 800a530:	f8 00 1c 17 	calli 801158c <strtoll>                        
 800a534:	b8 20 60 00 	mv r12,r1                                      
 800a538:	b8 40 68 00 	mv r13,r2                                      
                                                                      
  if ( endptr )                                                       
 800a53c:	45 e0 00 25 	be r15,r0,800a5d0 <rtems_string_to_long_long+0xf0>
    *endptr = end;                                                    
 800a540:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800a544:	59 e4 00 00 	sw (r15+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a548:	34 05 00 0b 	mvi r5,11                                      
  result = strtoll( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a54c:	45 c4 00 08 	be r14,r4,800a56c <rtems_string_to_long_long+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a550:	f8 00 10 2c 	calli 800e600 <__errno>                        
 800a554:	28 22 00 00 	lw r2,(r1+0)                                   
 800a558:	34 01 00 22 	mvi r1,34                                      
 800a55c:	44 41 00 0d 	be r2,r1,800a590 <rtems_string_to_long_long+0xb0>
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 800a560:	59 6c 00 00 	sw (r11+0),r12                                 
 800a564:	59 6d 00 04 	sw (r11+4),r13                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a568:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 800a56c:	b8 a0 08 00 	mv r1,r5                                       
 800a570:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a574:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800a578:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800a57c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800a580:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800a584:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800a588:	37 9c 00 1c 	addi sp,sp,28                                  
 800a58c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
 800a590:	78 04 08 02 	mvhi r4,0x802                                  
 800a594:	38 84 1c 78 	ori r4,r4,0x1c78                               
 800a598:	28 82 00 00 	lw r2,(r4+0)                                   
 800a59c:	a5 a0 18 00 	not r3,r13                                     
 800a5a0:	b9 8d 08 00 	or r1,r12,r13                                  
 800a5a4:	99 82 10 00 	xor r2,r12,r2                                  
 800a5a8:	b8 43 10 00 	or r2,r2,r3                                    
 800a5ac:	64 42 00 00 	cmpei r2,r2,0                                  
 800a5b0:	64 21 00 00 	cmpei r1,r1,0                                  
      return RTEMS_INVALID_NUMBER;                                    
 800a5b4:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a5b8:	b8 41 08 00 	or r1,r2,r1                                    
 800a5bc:	5c 20 ff ec 	bne r1,r0,800a56c <rtems_string_to_long_long+0x8c>
    (( result == 0 ) || ( result == LONG_LONG_MAX ) || ( result == LONG_LONG_MIN )))
 800a5c0:	78 01 80 00 	mvhi r1,0x8000                                 
 800a5c4:	5d 81 ff e7 	bne r12,r1,800a560 <rtems_string_to_long_long+0x80><== NEVER TAKEN
 800a5c8:	5d a0 ff e6 	bne r13,r0,800a560 <rtems_string_to_long_long+0x80><== NEVER TAKEN
 800a5cc:	e3 ff ff e8 	bi 800a56c <rtems_string_to_long_long+0x8c>    
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoll( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 800a5d0:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800a5d4:	e3 ff ff dd 	bi 800a548 <rtems_string_to_long_long+0x68>    
                                                                      

0801d508 <rtems_string_to_unsigned_char>: const char *s, unsigned char *n, char **endptr, int base ) {
 801d508:	37 9c ff e8 	addi sp,sp,-24                                 
 801d50c:	5b 8b 00 14 	sw (sp+20),r11                                 
 801d510:	5b 8c 00 10 	sw (sp+16),r12                                 
 801d514:	5b 8d 00 0c 	sw (sp+12),r13                                 
 801d518:	5b 8e 00 08 	sw (sp+8),r14                                  
 801d51c:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 801d520:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned char *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 801d524:	b8 40 58 00 	mv r11,r2                                      
 801d528:	b8 20 68 00 	mv r13,r1                                      
 801d52c:	b8 60 70 00 	mv r14,r3                                      
 801d530:	b8 80 60 00 	mv r12,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 801d534:	44 40 00 18 	be r2,r0,801d594 <rtems_string_to_unsigned_char+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 801d538:	f8 00 80 b9 	calli 803d81c <__errno>                        
 801d53c:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 801d540:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 801d544:	31 60 00 00 	sb (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 801d548:	b9 a0 08 00 	mv r1,r13                                      
 801d54c:	37 82 00 18 	addi r2,sp,24                                  
 801d550:	f8 00 a5 64 	calli 8046ae0 <strtoul>                        
 801d554:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if ( endptr )                                                       
 801d558:	45 c0 00 28 	be r14,r0,801d5f8 <rtems_string_to_unsigned_char+0xf0>
    *endptr = end;                                                    
 801d55c:	2b 82 00 18 	lw r2,(sp+24)                                  
 801d560:	59 c2 00 00 	sw (r14+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 801d564:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 801d568:	45 a2 00 0b 	be r13,r2,801d594 <rtems_string_to_unsigned_char+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 801d56c:	f8 00 80 ac 	calli 803d81c <__errno>                        
 801d570:	28 22 00 00 	lw r2,(r1+0)                                   
 801d574:	34 01 00 22 	mvi r1,34                                      
 801d578:	44 41 00 19 	be r2,r1,801d5dc <rtems_string_to_unsigned_char+0xd4>
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
 801d57c:	34 01 00 ff 	mvi r1,255                                     
 801d580:	50 2c 00 0d 	bgeu r1,r12,801d5b4 <rtems_string_to_unsigned_char+0xac>
    errno = ERANGE;                                                   
 801d584:	f8 00 80 a6 	calli 803d81c <__errno>                        
 801d588:	34 02 00 22 	mvi r2,34                                      
 801d58c:	58 22 00 00 	sw (r1+0),r2                                   
    return RTEMS_INVALID_NUMBER;                                      
 801d590:	34 05 00 0a 	mvi r5,10                                      
#endif                                                                
                                                                      
  *n = result;                                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 801d594:	b8 a0 08 00 	mv r1,r5                                       
 801d598:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801d59c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801d5a0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801d5a4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801d5a8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801d5ac:	37 9c 00 18 	addi sp,sp,24                                  
 801d5b0:	c3 a0 00 00 	ret                                            
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 801d5b4:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 801d5b8:	b8 a0 08 00 	mv r1,r5                                       
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 801d5bc:	31 6c 00 00 	sb (r11+0),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 801d5c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801d5c4:	2b 8b 00 14 	lw r11,(sp+20)                                 
 801d5c8:	2b 8c 00 10 	lw r12,(sp+16)                                 
 801d5cc:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 801d5d0:	2b 8e 00 08 	lw r14,(sp+8)                                  
 801d5d4:	37 9c 00 18 	addi sp,sp,24                                  
 801d5d8:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 801d5dc:	35 82 ff ff 	addi r2,r12,-1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 801d5e0:	34 01 ff fd 	mvi r1,-3                                      
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 801d5e4:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 801d5e8:	54 41 ff eb 	bgu r2,r1,801d594 <rtems_string_to_unsigned_char+0x8c><== ALWAYS TAKEN
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
 801d5ec:	34 01 00 ff 	mvi r1,255                                     <== NOT EXECUTED
 801d5f0:	50 2c ff f1 	bgeu r1,r12,801d5b4 <rtems_string_to_unsigned_char+0xac><== NOT EXECUTED
 801d5f4:	e3 ff ff e4 	bi 801d584 <rtems_string_to_unsigned_char+0x7c><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 801d5f8:	2b 82 00 18 	lw r2,(sp+24)                                  
 801d5fc:	e3 ff ff da 	bi 801d564 <rtems_string_to_unsigned_char+0x5c>
                                                                      

0800a7bc <rtems_string_to_unsigned_int>: const char *s, unsigned int *n, char **endptr, int base ) {
 800a7bc:	37 9c ff e8 	addi sp,sp,-24                                 
 800a7c0:	5b 8b 00 14 	sw (sp+20),r11                                 
 800a7c4:	5b 8c 00 10 	sw (sp+16),r12                                 
 800a7c8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800a7cc:	5b 8e 00 08 	sw (sp+8),r14                                  
 800a7d0:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a7d4:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned int *n,                                                    
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 800a7d8:	b8 40 58 00 	mv r11,r2                                      
 800a7dc:	b8 20 60 00 	mv r12,r1                                      
 800a7e0:	b8 60 68 00 	mv r13,r3                                      
 800a7e4:	b8 80 70 00 	mv r14,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a7e8:	44 40 00 14 	be r2,r0,800a838 <rtems_string_to_unsigned_int+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a7ec:	f8 00 0f 85 	calli 800e600 <__errno>                        
 800a7f0:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 800a7f4:	b9 c0 18 00 	mv r3,r14                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 800a7f8:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 800a7fc:	b9 80 08 00 	mv r1,r12                                      
 800a800:	37 82 00 18 	addi r2,sp,24                                  
 800a804:	f8 00 1c cd 	calli 8011b38 <strtoul>                        
 800a808:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  if ( endptr )                                                       
 800a80c:	45 a0 00 18 	be r13,r0,800a86c <rtems_string_to_unsigned_int+0xb0>
    *endptr = end;                                                    
 800a810:	2b 82 00 18 	lw r2,(sp+24)                                  
 800a814:	59 a2 00 00 	sw (r13+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a818:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a81c:	45 82 00 07 	be r12,r2,800a838 <rtems_string_to_unsigned_int+0x7c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a820:	f8 00 0f 78 	calli 800e600 <__errno>                        
 800a824:	28 22 00 00 	lw r2,(r1+0)                                   
 800a828:	34 01 00 22 	mvi r1,34                                      
 800a82c:	44 41 00 0b 	be r2,r1,800a858 <rtems_string_to_unsigned_int+0x9c>
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
 800a830:	59 6e 00 00 	sw (r11+0),r14                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a834:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 800a838:	b8 a0 08 00 	mv r1,r5                                       
 800a83c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a840:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800a844:	2b 8c 00 10 	lw r12,(sp+16)                                 
 800a848:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 800a84c:	2b 8e 00 08 	lw r14,(sp+8)                                  
 800a850:	37 9c 00 18 	addi sp,sp,24                                  
 800a854:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 800a858:	35 c2 ff ff 	addi r2,r14,-1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a85c:	34 01 ff fd 	mvi r1,-3                                      
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 800a860:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a864:	54 41 ff f5 	bgu r2,r1,800a838 <rtems_string_to_unsigned_int+0x7c><== ALWAYS TAKEN
 800a868:	e3 ff ff f2 	bi 800a830 <rtems_string_to_unsigned_int+0x74> <== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 800a86c:	2b 82 00 18 	lw r2,(sp+24)                                  
 800a870:	e3 ff ff ea 	bi 800a818 <rtems_string_to_unsigned_int+0x5c> 
                                                                      

080083b4 <rtems_string_to_unsigned_long>: const char *s, unsigned long *n, char **endptr, int base ) {
 80083b4:	37 9c ff e8 	addi sp,sp,-24                                 
 80083b8:	5b 8b 00 14 	sw (sp+20),r11                                 
 80083bc:	5b 8c 00 10 	sw (sp+16),r12                                 
 80083c0:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80083c4:	5b 8e 00 08 	sw (sp+8),r14                                  
 80083c8:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 80083cc:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned long *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 80083d0:	b8 40 58 00 	mv r11,r2                                      
 80083d4:	b8 20 60 00 	mv r12,r1                                      
 80083d8:	b8 60 68 00 	mv r13,r3                                      
 80083dc:	b8 80 70 00 	mv r14,r4                                      
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 80083e0:	44 40 00 14 	be r2,r0,8008430 <rtems_string_to_unsigned_long+0x7c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 80083e4:	f8 00 d5 0e 	calli 803d81c <__errno>                        
 80083e8:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
 80083ec:	b9 c0 18 00 	mv r3,r14                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 80083f0:	59 60 00 00 	sw (r11+0),r0                                  
                                                                      
  result = strtoul( s, &end, base );                                  
 80083f4:	b9 80 08 00 	mv r1,r12                                      
 80083f8:	37 82 00 18 	addi r2,sp,24                                  
 80083fc:	f8 00 f9 b9 	calli 8046ae0 <strtoul>                        
 8008400:	b8 20 70 00 	mv r14,r1                                      
                                                                      
  if ( endptr )                                                       
 8008404:	45 a0 00 18 	be r13,r0,8008464 <rtems_string_to_unsigned_long+0xb0>
    *endptr = end;                                                    
 8008408:	2b 82 00 18 	lw r2,(sp+24)                                  
 800840c:	59 a2 00 00 	sw (r13+0),r2                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 8008410:	34 05 00 0b 	mvi r5,11                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 8008414:	45 82 00 07 	be r12,r2,8008430 <rtems_string_to_unsigned_long+0x7c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8008418:	f8 00 d5 01 	calli 803d81c <__errno>                        
 800841c:	28 22 00 00 	lw r2,(r1+0)                                   
 8008420:	34 01 00 22 	mvi r1,34                                      
 8008424:	44 41 00 0b 	be r2,r1,8008450 <rtems_string_to_unsigned_long+0x9c>
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 8008428:	59 6e 00 00 	sw (r11+0),r14                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800842c:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 8008430:	b8 a0 08 00 	mv r1,r5                                       
 8008434:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8008438:	2b 8b 00 14 	lw r11,(sp+20)                                 
 800843c:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8008440:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8008444:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8008448:	37 9c 00 18 	addi sp,sp,24                                  
 800844c:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
 8008450:	35 c2 ff ff 	addi r2,r14,-1                                 
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 8008454:	34 01 ff fd 	mvi r1,-3                                      
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
 8008458:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800845c:	54 41 ff f5 	bgu r2,r1,8008430 <rtems_string_to_unsigned_long+0x7c><== ALWAYS TAKEN
 8008460:	e3 ff ff f2 	bi 8008428 <rtems_string_to_unsigned_long+0x74><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
 8008464:	2b 82 00 18 	lw r2,(sp+24)                                  
 8008468:	e3 ff ff ea 	bi 8008410 <rtems_string_to_unsigned_long+0x5c>
                                                                      

0800a874 <rtems_string_to_unsigned_long_long>: const char *s, unsigned long long *n, char **endptr, int base ) {
 800a874:	37 9c ff e4 	addi sp,sp,-28                                 
 800a878:	5b 8b 00 18 	sw (sp+24),r11                                 
 800a87c:	5b 8c 00 14 	sw (sp+20),r12                                 
 800a880:	5b 8d 00 10 	sw (sp+16),r13                                 
 800a884:	5b 8e 00 0c 	sw (sp+12),r14                                 
 800a888:	5b 8f 00 08 	sw (sp+8),r15                                  
 800a88c:	5b 9d 00 04 	sw (sp+4),ra                                   
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800a890:	34 05 00 09 	mvi r5,9                                       
  const char *s,                                                      
  unsigned long long *n,                                              
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
 800a894:	b8 40 58 00 	mv r11,r2                                      
 800a898:	b8 20 68 00 	mv r13,r1                                      
 800a89c:	b8 60 70 00 	mv r14,r3                                      
 800a8a0:	b8 80 60 00 	mv r12,r4                                      
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
 800a8a4:	44 40 00 17 	be r2,r0,800a900 <rtems_string_to_unsigned_long_long+0x8c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
 800a8a8:	f8 00 0f 56 	calli 800e600 <__errno>                        
 800a8ac:	58 20 00 00 	sw (r1+0),r0                                   
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
 800a8b0:	b9 80 18 00 	mv r3,r12                                      
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
 800a8b4:	59 60 00 00 	sw (r11+0),r0                                  
 800a8b8:	59 60 00 04 	sw (r11+4),r0                                  
                                                                      
  result = strtoull( s, &end, base );                                 
 800a8bc:	b9 a0 08 00 	mv r1,r13                                      
 800a8c0:	37 82 00 1c 	addi r2,sp,28                                  
 800a8c4:	f8 00 1c ab 	calli 8011b70 <strtoull>                       
 800a8c8:	b8 20 78 00 	mv r15,r1                                      
 800a8cc:	b8 40 60 00 	mv r12,r2                                      
                                                                      
  if ( endptr )                                                       
 800a8d0:	45 c0 00 1d 	be r14,r0,800a944 <rtems_string_to_unsigned_long_long+0xd0>
    *endptr = end;                                                    
 800a8d4:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800a8d8:	59 c4 00 00 	sw (r14+0),r4                                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
 800a8dc:	34 05 00 0b 	mvi r5,11                                      
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
 800a8e0:	45 a4 00 08 	be r13,r4,800a900 <rtems_string_to_unsigned_long_long+0x8c>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a8e4:	f8 00 0f 47 	calli 800e600 <__errno>                        
 800a8e8:	28 22 00 00 	lw r2,(r1+0)                                   
 800a8ec:	34 01 00 22 	mvi r1,34                                      
 800a8f0:	44 41 00 0d 	be r2,r1,800a924 <rtems_string_to_unsigned_long_long+0xb0>
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
 800a8f4:	59 6f 00 00 	sw (r11+0),r15                                 
 800a8f8:	59 6c 00 04 	sw (r11+4),r12                                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800a8fc:	34 05 00 00 	mvi r5,0                                       
}                                                                     
 800a900:	b8 a0 08 00 	mv r1,r5                                       
 800a904:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800a908:	2b 8b 00 18 	lw r11,(sp+24)                                 
 800a90c:	2b 8c 00 14 	lw r12,(sp+20)                                 
 800a910:	2b 8d 00 10 	lw r13,(sp+16)                                 
 800a914:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 800a918:	2b 8f 00 08 	lw r15,(sp+8)                                  
 800a91c:	37 9c 00 1c 	addi sp,sp,28                                  
 800a920:	c3 a0 00 00 	ret                                            
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
 800a924:	35 81 ff ff 	addi r1,r12,-1                                 
 800a928:	f5 81 18 00 	cmpgu r3,r12,r1                                
 800a92c:	c8 0f 10 00 	sub r2,r0,r15                                  
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a930:	5c 62 ff f1 	bne r3,r2,800a8f4 <rtems_string_to_unsigned_long_long+0x80><== NEVER TAKEN
 800a934:	34 02 ff fd 	mvi r2,-3                                      
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
 800a938:	34 05 00 0a 	mvi r5,10                                      
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
 800a93c:	54 22 ff f1 	bgu r1,r2,800a900 <rtems_string_to_unsigned_long_long+0x8c><== ALWAYS TAKEN
 800a940:	e3 ff ff ed 	bi 800a8f4 <rtems_string_to_unsigned_long_long+0x80><== NOT EXECUTED
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
 800a944:	2b 84 00 1c 	lw r4,(sp+28)                                  
 800a948:	e3 ff ff e5 	bi 800a8dc <rtems_string_to_unsigned_long_long+0x68>
                                                                      

08000f20 <rtems_tarfs_load>: int rtems_tarfs_load( const char *mountpoint, uint8_t *tar_image, size_t tar_size ) {
 8000f20:	37 9c fe 00 	addi sp,sp,-512                                
 8000f24:	5b 8b 00 44 	sw (sp+68),r11                                 
 8000f28:	5b 8c 00 40 	sw (sp+64),r12                                 
 8000f2c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8000f30:	5b 8e 00 38 	sw (sp+56),r14                                 
 8000f34:	5b 8f 00 34 	sw (sp+52),r15                                 
 8000f38:	5b 90 00 30 	sw (sp+48),r16                                 
 8000f3c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8000f40:	5b 92 00 28 	sw (sp+40),r18                                 
 8000f44:	5b 93 00 24 	sw (sp+36),r19                                 
 8000f48:	5b 94 00 20 	sw (sp+32),r20                                 
 8000f4c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8000f50:	5b 96 00 18 	sw (sp+24),r22                                 
 8000f54:	5b 97 00 14 	sw (sp+20),r23                                 
 8000f58:	5b 98 00 10 	sw (sp+16),r24                                 
 8000f5c:	5b 99 00 0c 	sw (sp+12),r25                                 
 8000f60:	5b 9b 00 08 	sw (sp+8),fp                                   
 8000f64:	5b 9d 00 04 	sw (sp+4),ra                                   
 8000f68:	5b 81 00 48 	sw (sp+72),r1                                  
 8000f6c:	5b 83 00 4c 	sw (sp+76),r3                                  
 8000f70:	b8 40 b0 00 	mv r22,r2                                      
   IMFS_jnode_t                    *node;                             
   int rv = 0;                                                        
   int eval_flags = RTEMS_FS_FOLLOW_LINK;                             
   rtems_filesystem_eval_path_context_t ctx;                          
   rtems_filesystem_location_info_t rootloc;                          
   rtems_filesystem_location_info_t *currentloc =                     
 8000f74:	34 03 00 18 	mvi r3,24                                      
 8000f78:	b8 20 10 00 	mv r2,r1                                       
 8000f7c:	37 81 01 b4 	addi r1,sp,436                                 
 8000f80:	f8 00 09 30 	calli 8003440 <rtems_filesystem_eval_path_start>
static inline void rtems_filesystem_eval_path_extract_currentloc(     
  rtems_filesystem_eval_path_context_t *ctx,                          
  rtems_filesystem_location_info_t *get                               
)                                                                     
{                                                                     
  rtems_filesystem_location_copy_and_detach(                          
 8000f84:	37 82 01 cc 	addi r2,sp,460                                 
 8000f88:	b8 20 c0 00 	mv r24,r1                                      
 8000f8c:	37 81 01 ec 	addi r1,sp,492                                 
 8000f90:	f8 00 0a ad 	calli 8003a44 <rtems_filesystem_location_copy_and_detach>
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
     rootloc.mt_entry->ops != &IMFS_ops                               
 8000f94:	2b 81 02 00 	lw r1,(sp+512)                                 
   rtems_filesystem_eval_path_set_flags(                              
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
 8000f98:	78 04 08 02 	mvhi r4,0x802                                  
static inline void rtems_filesystem_eval_path_set_flags(              
  rtems_filesystem_eval_path_context_t *ctx,                          
  int flags                                                           
)                                                                     
{                                                                     
  ctx->flags = flags;                                                 
 8000f9c:	34 02 00 60 	mvi r2,96                                      
     rootloc.mt_entry->ops != &IMFS_ops                               
 8000fa0:	28 21 00 0c 	lw r1,(r1+12)                                  
   rtems_filesystem_eval_path_set_flags(                              
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
 8000fa4:	38 84 23 1c 	ori r4,r4,0x231c                               
 8000fa8:	5b 82 01 c4 	sw (sp+452),r2                                 
 8000fac:	44 24 00 05 	be r1,r4,8000fc0 <rtems_tarfs_load+0xa0>       
     rootloc.mt_entry->ops != &IMFS_ops                               
       && rootloc.mt_entry->ops != &fifoIMFS_ops                      
 8000fb0:	78 04 08 02 	mvhi r4,0x802                                  
 8000fb4:	38 84 2c 14 	ori r4,r4,0x2c14                               
   ) {                                                                
     rv = -1;                                                         
 8000fb8:	34 0b ff ff 	mvi r11,-1                                     
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
     rootloc.mt_entry->ops != &IMFS_ops                               
       && rootloc.mt_entry->ops != &fifoIMFS_ops                      
 8000fbc:	5c 24 00 31 	bne r1,r4,8001080 <rtems_tarfs_load+0x160>     <== ALWAYS TAKEN
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
 8000fc0:	2b 82 00 4c 	lw r2,(sp+76)                                  
 8000fc4:	34 01 01 ff 	mvi r1,511                                     
 8000fc8:	34 0b 00 00 	mvi r11,0                                      
 8000fcc:	50 22 00 2d 	bgeu r1,r2,8001080 <rtems_tarfs_load+0x160>    <== NEVER TAKEN
 8000fd0:	78 0c 08 02 	mvhi r12,0x802                                 
        filename,                                                     
        strlen( filename )                                            
      );                                                              
      rtems_filesystem_eval_path_continue( &ctx );                    
                                                                      
      if ( !rtems_filesystem_location_is_null( currentloc ) ) {       
 8000fd4:	78 0d 08 02 	mvhi r13,0x802                                 
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
 8000fd8:	34 11 02 00 	mvi r17,512                                    
 8000fdc:	34 12 02 00 	mvi r18,512                                    
 8000fe0:	39 8c 23 a0 	ori r12,r12,0x23a0                             
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
 8000fe4:	37 8e 01 50 	addi r14,sp,336                                
     * Generate an IMFS node depending on the file type.              
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
 8000fe8:	34 14 00 35 	mvi r20,53                                     
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
    }                                                                 
    /*                                                                
     * Create a LINEAR_FILE node                                      
     */                                                               
    else if (linkflag == REGTYPE) {                                   
 8000fec:	34 15 00 30 	mvi r21,48                                     
        filename,                                                     
        strlen( filename )                                            
      );                                                              
      rtems_filesystem_eval_path_continue( &ctx );                    
                                                                      
      if ( !rtems_filesystem_location_is_null( currentloc ) ) {       
 8000ff0:	39 ad 29 84 	ori r13,r13,0x2984                             
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
      strcpy(full_filename, mountpoint);                              
 8000ff4:	37 90 00 50 	addi r16,sp,80                                 
      if (full_filename[strlen(full_filename)-1] != '/')              
 8000ff8:	34 19 00 2f 	mvi r25,47                                     
      break;                                                          
                                                                      
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
 8000ffc:	b6 cb 58 00 	add r11,r22,r11                                
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
 8001000:	35 61 01 01 	addi r1,r11,257                                
 8001004:	b9 80 10 00 	mv r2,r12                                      
 8001008:	34 03 00 05 	mvi r3,5                                       
 800100c:	f8 00 45 6e 	calli 80125c4 <strncmp>                        
 8001010:	5c 20 00 1b 	bne r1,r0,800107c <rtems_tarfs_load+0x15c>     
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
 8001014:	34 03 00 63 	mvi r3,99                                      
 8001018:	b9 60 10 00 	mv r2,r11                                      
 800101c:	b9 c0 08 00 	mv r1,r14                                      
 8001020:	f8 00 45 b6 	calli 80126f8 <strncpy>                        
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 8001024:	34 02 00 08 	mvi r2,8                                       
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
 8001028:	33 80 01 b3 	sb (sp+435),r0                                 
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 800102c:	35 61 00 64 	addi r1,r11,100                                
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
 8001030:	41 6f 00 9c 	lbu r15,(r11+156)                              
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
 8001034:	f8 00 1c 87 	calli 8008250 <_rtems_octal2ulong>             
 8001038:	b8 20 d8 00 	mv fp,r1                                       
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
 800103c:	34 02 00 0c 	mvi r2,12                                      
 8001040:	35 61 00 7c 	addi r1,r11,124                                
 8001044:	f8 00 1c 83 	calli 8008250 <_rtems_octal2ulong>             
 8001048:	b8 20 b8 00 	mv r23,r1                                      
    hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);                
 800104c:	34 02 00 08 	mvi r2,8                                       
 8001050:	35 61 00 94 	addi r1,r11,148                                
 8001054:	f8 00 1c 7f 	calli 8008250 <_rtems_octal2ulong>             
 8001058:	b8 20 98 00 	mv r19,r1                                      
                                                                      
    if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)            
 800105c:	b9 60 08 00 	mv r1,r11                                      
 8001060:	f8 00 1d d0 	calli 80087a0 <_rtems_tar_header_checksum>     
 8001064:	5c 33 00 06 	bne r1,r19,800107c <rtems_tarfs_load+0x15c>    <== NEVER TAKEN
     * Generate an IMFS node depending on the file type.              
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
 8001068:	45 f4 00 21 	be r15,r20,80010ec <rtems_tarfs_load+0x1cc>    
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
    }                                                                 
    /*                                                                
     * Create a LINEAR_FILE node                                      
     */                                                               
    else if (linkflag == REGTYPE) {                                   
 800106c:	45 f5 00 33 	be r15,r21,8001138 <rtems_tarfs_load+0x218>    
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
 8001070:	2b 81 00 4c 	lw r1,(sp+76)                                  
 8001074:	36 51 02 00 	addi r17,r18,512                               
 8001078:	50 31 00 1a 	bgeu r1,r17,80010e0 <rtems_tarfs_load+0x1c0>   <== ALWAYS TAKEN
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
    hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);                
                                                                      
    if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)            
 800107c:	34 0b 00 00 	mvi r11,0                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
      offset += 512 * nblocks;                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_filesystem_location_free( &rootloc );                         
 8001080:	37 81 01 ec 	addi r1,sp,492                                 
 8001084:	f8 00 02 b9 	calli 8001b68 <rtems_filesystem_location_free> 
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 8001088:	37 81 01 b4 	addi r1,sp,436                                 
 800108c:	f8 00 09 44 	calli 800359c <rtems_filesystem_eval_path_cleanup>
                                                                      
  return rv;                                                          
}                                                                     
 8001090:	b9 60 08 00 	mv r1,r11                                      
 8001094:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8001098:	2b 8b 00 44 	lw r11,(sp+68)                                 
 800109c:	2b 8c 00 40 	lw r12,(sp+64)                                 
 80010a0:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 80010a4:	2b 8e 00 38 	lw r14,(sp+56)                                 
 80010a8:	2b 8f 00 34 	lw r15,(sp+52)                                 
 80010ac:	2b 90 00 30 	lw r16,(sp+48)                                 
 80010b0:	2b 91 00 2c 	lw r17,(sp+44)                                 
 80010b4:	2b 92 00 28 	lw r18,(sp+40)                                 
 80010b8:	2b 93 00 24 	lw r19,(sp+36)                                 
 80010bc:	2b 94 00 20 	lw r20,(sp+32)                                 
 80010c0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 80010c4:	2b 96 00 18 	lw r22,(sp+24)                                 
 80010c8:	2b 97 00 14 	lw r23,(sp+20)                                 
 80010cc:	2b 98 00 10 	lw r24,(sp+16)                                 
 80010d0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 80010d4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 80010d8:	37 9c 02 00 	addi sp,sp,512                                 
 80010dc:	c3 a0 00 00 	ret                                            
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
 80010e0:	ba 40 58 00 	mv r11,r18                                     
 80010e4:	ba 20 90 00 	mv r18,r17                                     
 80010e8:	e3 ff ff c5 	bi 8000ffc <rtems_tarfs_load+0xdc>             
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
      strcpy(full_filename, mountpoint);                              
 80010ec:	2b 82 00 48 	lw r2,(sp+72)                                  
 80010f0:	ba 00 08 00 	mv r1,r16                                      
 80010f4:	f8 00 43 bc 	calli 8011fe4 <strcpy>                         
      if (full_filename[strlen(full_filename)-1] != '/')              
 80010f8:	ba 00 08 00 	mv r1,r16                                      
 80010fc:	f8 00 45 03 	calli 8012508 <strlen>                         
 8001100:	37 83 00 4f 	addi r3,sp,79                                  
 8001104:	b4 61 10 00 	add r2,r3,r1                                   
 8001108:	40 42 00 00 	lbu r2,(r2+0)                                  
 800110c:	44 59 00 04 	be r2,r25,800111c <rtems_tarfs_load+0x1fc>     <== ALWAYS TAKEN
        strcat(full_filename, "/");                                   
 8001110:	b6 01 08 00 	add r1,r16,r1                                  <== NOT EXECUTED
 8001114:	30 39 00 00 	sb (r1+0),r25                                  <== NOT EXECUTED
 8001118:	30 20 00 01 	sb (r1+1),r0                                   <== NOT EXECUTED
      strcat(full_filename, filename);                                
 800111c:	b9 c0 10 00 	mv r2,r14                                      
 8001120:	ba 00 08 00 	mv r1,r16                                      
 8001124:	f8 00 43 59 	calli 8011e88 <strcat>                         
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
 8001128:	ba 00 08 00 	mv r1,r16                                      
 800112c:	34 02 01 ff 	mvi r2,511                                     
 8001130:	f8 00 04 7b 	calli 800231c <mkdir>                          
 8001134:	e3 ff ff cf 	bi 8001070 <rtems_tarfs_load+0x150>            
    }                                                                 
    /*                                                                
     * Create a LINEAR_FILE node                                      
     */                                                               
    else if (linkflag == REGTYPE) {                                   
      rtems_filesystem_location_free( currentloc );                   
 8001138:	bb 00 08 00 	mv r1,r24                                      
 800113c:	f8 00 02 8b 	calli 8001b68 <rtems_filesystem_location_free> 
      rtems_filesystem_location_clone( currentloc, &rootloc );        
 8001140:	37 82 01 ec 	addi r2,sp,492                                 
 8001144:	bb 00 08 00 	mv r1,r24                                      
 8001148:	f8 00 01 99 	calli 80017ac <rtems_filesystem_location_clone>
      rtems_filesystem_eval_path_set_path(                            
 800114c:	b9 c0 08 00 	mv r1,r14                                      
 8001150:	f8 00 44 ee 	calli 8012508 <strlen>                         
  const char *path,                                                   
  size_t pathlen                                                      
)                                                                     
{                                                                     
  ctx->path = path;                                                   
  ctx->pathlen = pathlen;                                             
 8001154:	5b 81 01 b8 	sw (sp+440),r1                                 
        &ctx,                                                         
        filename,                                                     
        strlen( filename )                                            
      );                                                              
      rtems_filesystem_eval_path_continue( &ctx );                    
 8001158:	37 81 01 b4 	addi r1,sp,436                                 
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char *path,                                                   
  size_t pathlen                                                      
)                                                                     
{                                                                     
  ctx->path = path;                                                   
 800115c:	5b 8e 01 b4 	sw (sp+436),r14                                
 8001160:	f8 00 08 23 	calli 80031ec <rtems_filesystem_eval_path_continue>
                                                                      
      if ( !rtems_filesystem_location_is_null( currentloc ) ) {       
 8001164:	2b 01 00 10 	lw r1,(r24+16)                                 
 8001168:	44 2d 00 0f 	be r1,r13,80011a4 <rtems_tarfs_load+0x284>     <== NEVER TAKEN
  mode_t mode,                                                        
  const IMFS_types_union *info                                        
)                                                                     
{                                                                     
  const IMFS_fs_info_t *fs_info =                                     
    (const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;            
 800116c:	2b 01 00 14 	lw r1,(r24+20)                                 
                                                                      
  return IMFS_create_node_with_control(                               
 8001170:	2b 84 01 c0 	lw r4,(sp+448)                                 
 8001174:	2b 83 01 bc 	lw r3,(sp+444)                                 
 8001178:	28 22 00 08 	lw r2,(r1+8)                                   
        node = IMFS_create_node(                                      
          currentloc,                                                 
          IMFS_LINEAR_FILE,                                           
          rtems_filesystem_eval_path_get_token( &ctx ),               
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
 800117c:	23 65 01 ff 	andi r5,fp,0x1ff                               
 8001180:	bb 00 08 00 	mv r1,r24                                      
 8001184:	28 42 00 1c 	lw r2,(r2+28)                                  
 8001188:	38 a5 80 00 	ori r5,r5,0x8000                               
 800118c:	34 06 00 00 	mvi r6,0                                       
 8001190:	f8 00 1e 6f 	calli 8008b4c <IMFS_create_node_with_control>  
 8001194:	b8 20 20 00 	mv r4,r1                                       
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
        node->info.linearfile.direct = &tar_image[offset];            
 8001198:	b6 d1 08 00 	add r1,r22,r17                                 
          rtems_filesystem_eval_path_get_token( &ctx ),               
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
 800119c:	58 97 00 50 	sw (r4+80),r23                                 
        node->info.linearfile.direct = &tar_image[offset];            
 80011a0:	58 81 00 54 	sw (r4+84),r1                                  
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
 80011a4:	34 03 fe 00 	mvi r3,-512                                    
 80011a8:	36 e1 01 ff 	addi r1,r23,511                                
 80011ac:	34 02 00 09 	mvi r2,9                                       
 80011b0:	a0 23 08 00 	and r1,r1,r3                                   
 80011b4:	f8 00 76 d1 	calli 801ecf8 <__lshrsi3>                      
      offset += 512 * nblocks;                                        
 80011b8:	34 02 00 09 	mvi r2,9                                       
 80011bc:	f8 00 76 81 	calli 801ebc0 <__ashlsi3>                      
 80011c0:	b4 31 90 00 	add r18,r1,r17                                 
 80011c4:	e3 ff ff ab 	bi 8001070 <rtems_tarfs_load+0x150>            
                                                                      

0800f4cc <rtems_task_mode>: rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) {
 800f4cc:	37 9c ff dc 	addi sp,sp,-36                                 
 800f4d0:	5b 8b 00 24 	sw (sp+36),r11                                 
 800f4d4:	5b 8c 00 20 	sw (sp+32),r12                                 
 800f4d8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800f4dc:	5b 8e 00 18 	sw (sp+24),r14                                 
 800f4e0:	5b 8f 00 14 	sw (sp+20),r15                                 
 800f4e4:	5b 90 00 10 	sw (sp+16),r16                                 
 800f4e8:	5b 91 00 0c 	sw (sp+12),r17                                 
 800f4ec:	5b 92 00 08 	sw (sp+8),r18                                  
 800f4f0:	5b 9d 00 04 	sw (sp+4),ra                                   
 800f4f4:	b8 40 70 00 	mv r14,r2                                      
 800f4f8:	b8 60 88 00 	mv r17,r3                                      
 800f4fc:	b8 20 80 00 	mv r16,r1                                      
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
 800f500:	34 02 00 09 	mvi r2,9                                       
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
 800f504:	44 60 00 46 	be r3,r0,800f61c <rtems_task_mode+0x150>       
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
 800f508:	78 0f 08 01 	mvhi r15,0x801                                 
 800f50c:	39 ef ae 00 	ori r15,r15,0xae00                             
 800f510:	29 eb 00 10 	lw r11,(r15+16)                                
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800f514:	41 6d 00 70 	lbu r13,(r11+112)                              
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800f518:	29 61 00 78 	lw r1,(r11+120)                                
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
 800f51c:	29 6c 01 18 	lw r12,(r11+280)                               
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
 800f520:	65 ad 00 00 	cmpei r13,r13,0                                
 800f524:	b5 ad 20 00 	add r4,r13,r13                                 
 800f528:	b4 84 20 00 	add r4,r4,r4                                   
 800f52c:	b4 84 20 00 	add r4,r4,r4                                   
 800f530:	b4 84 20 00 	add r4,r4,r4                                   
 800f534:	b4 84 20 00 	add r4,r4,r4                                   
 800f538:	b4 84 20 00 	add r4,r4,r4                                   
 800f53c:	b4 84 20 00 	add r4,r4,r4                                   
 800f540:	b4 84 68 00 	add r13,r4,r4                                  
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
 800f544:	5c 20 00 42 	bne r1,r0,800f64c <rtems_task_mode+0x180>      
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
 800f548:	41 92 00 08 	lbu r18,(r12+8)                                
  old_mode |= _ISR_Get_level();                                       
 800f54c:	fb ff e7 5d 	calli 80092c0 <_CPU_ISR_Get_level>             
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
 800f550:	66 52 00 00 	cmpei r18,r18,0                                
 800f554:	c8 12 90 00 	sub r18,r0,r18                                 
 800f558:	22 52 04 00 	andi r18,r18,0x400                             
 800f55c:	ba 41 08 00 	or r1,r18,r1                                   
  old_mode |= _ISR_Get_level();                                       
 800f560:	b8 2d 68 00 	or r13,r1,r13                                  
                                                                      
  *previous_mode_set = old_mode;                                      
 800f564:	5a 2d 00 00 	sw (r17+0),r13                                 
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
 800f568:	21 c1 01 00 	andi r1,r14,0x100                              
 800f56c:	44 20 00 04 	be r1,r0,800f57c <rtems_task_mode+0xb0>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (                         
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;           
 800f570:	22 01 01 00 	andi r1,r16,0x100                              
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
 800f574:	64 21 00 00 	cmpei r1,r1,0                                  
 800f578:	31 61 00 70 	sb (r11+112),r1                                
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
 800f57c:	21 c1 02 00 	andi r1,r14,0x200                              
 800f580:	44 20 00 09 	be r1,r0,800f5a4 <rtems_task_mode+0xd8>        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice (                       
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;        
 800f584:	22 01 02 00 	andi r1,r16,0x200                              
    if ( _Modes_Is_timeslice(mode_set) ) {                            
 800f588:	44 20 00 3e 	be r1,r0,800f680 <rtems_task_mode+0x1b4>       
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800f58c:	78 01 08 01 	mvhi r1,0x801                                  
 800f590:	38 21 a9 10 	ori r1,r1,0xa910                               
 800f594:	28 22 00 00 	lw r2,(r1+0)                                   
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
 800f598:	34 01 00 01 	mvi r1,1                                       
 800f59c:	59 61 00 78 	sw (r11+120),r1                                
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
 800f5a0:	59 62 00 74 	sw (r11+116),r2                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800f5a4:	21 c1 00 01 	andi r1,r14,0x1                                
 800f5a8:	44 20 00 04 	be r1,r0,800f5b8 <rtems_task_mode+0xec>        
 */                                                                   
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (           
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return ( mode_set & RTEMS_INTERRUPT_MASK );                         
 800f5ac:	22 01 00 01 	andi r1,r16,0x1                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
 800f5b0:	64 21 00 00 	cmpei r1,r1,0                                  
 800f5b4:	d0 01 00 00 	wcsr IE,r1                                     
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800f5b8:	21 ce 04 00 	andi r14,r14,0x400                             
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800f5bc:	34 04 00 00 	mvi r4,0                                       
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
 800f5c0:	45 c0 00 11 	be r14,r0,800f604 <rtems_task_mode+0x138>      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled (                    
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
   return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;                
 800f5c4:	22 10 04 00 	andi r16,r16,0x400                             
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
 800f5c8:	41 81 00 08 	lbu r1,(r12+8)                                 
#include <rtems/score/tod.h>                                          
#include <rtems/score/wkspace.h>                                      
#include <rtems/score/apiext.h>                                       
#include <rtems/score/sysstate.h>                                     
                                                                      
rtems_status_code rtems_task_mode(                                    
 800f5cc:	66 10 00 00 	cmpei r16,r16,0                                
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
 800f5d0:	44 30 00 0d 	be r1,r16,800f604 <rtems_task_mode+0x138>      
      asr->is_enabled = is_asr_enabled;                               
 800f5d4:	31 90 00 08 	sb (r12+8),r16                                 
)                                                                     
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
 800f5d8:	90 00 08 00 	rcsr r1,IE                                     
 800f5dc:	34 02 ff fe 	mvi r2,-2                                      
 800f5e0:	a0 22 10 00 	and r2,r1,r2                                   
 800f5e4:	d0 02 00 00 	wcsr IE,r2                                     
    _signals                     = information->signals_pending;      
 800f5e8:	29 83 00 18 	lw r3,(r12+24)                                 
    information->signals_pending = information->signals_posted;       
 800f5ec:	29 82 00 14 	lw r2,(r12+20)                                 
    information->signals_posted  = _signals;                          
 800f5f0:	59 83 00 14 	sw (r12+20),r3                                 
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    information->signals_pending = information->signals_posted;       
 800f5f4:	59 82 00 18 	sw (r12+24),r2                                 
    information->signals_posted  = _signals;                          
  _ISR_Enable( _level );                                              
 800f5f8:	d0 01 00 00 	wcsr IE,r1                                     
      _ASR_Swap_signals( asr );                                       
      if ( _ASR_Are_signals_pending( asr ) ) {                        
 800f5fc:	29 84 00 14 	lw r4,(r12+20)                                 
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
 800f600:	7c 84 00 00 	cmpnei r4,r4,0                                 
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800f604:	78 01 08 01 	mvhi r1,0x801                                  
 800f608:	38 21 ad f8 	ori r1,r1,0xadf8                               
 800f60c:	28 23 00 00 	lw r3,(r1+0)                                   
 800f610:	34 01 00 03 	mvi r1,3                                       
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800f614:	34 02 00 00 	mvi r2,0                                       
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
 800f618:	44 61 00 0f 	be r3,r1,800f654 <rtems_task_mode+0x188>       
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 800f61c:	b8 40 08 00 	mv r1,r2                                       
 800f620:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800f624:	2b 8b 00 24 	lw r11,(sp+36)                                 
 800f628:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800f62c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 800f630:	2b 8e 00 18 	lw r14,(sp+24)                                 
 800f634:	2b 8f 00 14 	lw r15,(sp+20)                                 
 800f638:	2b 90 00 10 	lw r16,(sp+16)                                 
 800f63c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 800f640:	2b 92 00 08 	lw r18,(sp+8)                                  
 800f644:	37 9c 00 24 	addi sp,sp,36                                  
 800f648:	c3 a0 00 00 	ret                                            
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
 800f64c:	39 ad 02 00 	ori r13,r13,0x200                              
 800f650:	e3 ff ff be 	bi 800f548 <rtems_task_mode+0x7c>              
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
 800f654:	29 e1 00 10 	lw r1,(r15+16)                                 
                                                                      
  if ( are_signals_pending ||                                         
 800f658:	5c 80 00 05 	bne r4,r0,800f66c <rtems_task_mode+0x1a0>      
 800f65c:	29 e3 00 14 	lw r3,(r15+20)                                 
 800f660:	44 23 ff ef 	be r1,r3,800f61c <rtems_task_mode+0x150>       
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
 800f664:	40 21 00 70 	lbu r1,(r1+112)                                
 800f668:	44 20 ff ed 	be r1,r0,800f61c <rtems_task_mode+0x150>       <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
 800f66c:	34 01 00 01 	mvi r1,1                                       
 800f670:	31 e1 00 0c 	sb (r15+12),r1                                 
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
 800f674:	f8 00 03 5d 	calli 80103e8 <_Thread_Dispatch>               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
 800f678:	34 02 00 00 	mvi r2,0                                       
 800f67c:	e3 ff ff e8 	bi 800f61c <rtems_task_mode+0x150>             
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    } else                                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 
 800f680:	59 60 00 78 	sw (r11+120),r0                                
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
 800f684:	21 c1 00 01 	andi r1,r14,0x1                                
 800f688:	44 20 ff cc 	be r1,r0,800f5b8 <rtems_task_mode+0xec>        
 800f68c:	e3 ff ff c8 	bi 800f5ac <rtems_task_mode+0xe0>              
                                                                      

08009798 <rtems_task_set_priority>: rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
 8009798:	37 9c ff f0 	addi sp,sp,-16                                 
 800979c:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80097a0:	5b 8c 00 08 	sw (sp+8),r12                                  
 80097a4:	5b 9d 00 04 	sw (sp+4),ra                                   
 80097a8:	b8 40 58 00 	mv r11,r2                                      
 80097ac:	b8 60 60 00 	mv r12,r3                                      
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
 80097b0:	44 40 00 06 	be r2,r0,80097c8 <rtems_task_set_priority+0x30>
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
            ( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );             
 80097b4:	78 02 08 01 	mvhi r2,0x801                                  
 80097b8:	38 42 b0 d8 	ori r2,r2,0xb0d8                               
 80097bc:	40 42 00 00 	lbu r2,(r2+0)                                  
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
 80097c0:	34 04 00 13 	mvi r4,19                                      
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (            
  rtems_task_priority the_priority                                    
)                                                                     
{                                                                     
  return (  ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&             
 80097c4:	55 62 00 08 	bgu r11,r2,80097e4 <rtems_task_set_priority+0x4c>
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
 80097c8:	34 04 00 09 	mvi r4,9                                       
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
 80097cc:	45 80 00 06 	be r12,r0,80097e4 <rtems_task_set_priority+0x4c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
 80097d0:	37 82 00 10 	addi r2,sp,16                                  
 80097d4:	f8 00 0b 79 	calli 800c5b8 <_Thread_Get>                    
  switch ( location ) {                                               
 80097d8:	2b 82 00 10 	lw r2,(sp+16)                                  
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80097dc:	34 04 00 04 	mvi r4,4                                       
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
 80097e0:	44 40 00 07 	be r2,r0,80097fc <rtems_task_set_priority+0x64>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80097e4:	b8 80 08 00 	mv r1,r4                                       
 80097e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80097ec:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80097f0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80097f4:	37 9c 00 10 	addi sp,sp,16                                  
 80097f8:	c3 a0 00 00 	ret                                            
  the_thread = _Thread_Get( id, &location );                          
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
 80097fc:	28 23 00 14 	lw r3,(r1+20)                                  
 8009800:	59 83 00 00 	sw (r12+0),r3                                  
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
 8009804:	45 62 00 09 	be r11,r2,8009828 <rtems_task_set_priority+0x90>
        the_thread->real_priority = new_priority;                     
        if ( the_thread->resource_count == 0 ||                       
 8009808:	28 22 00 1c 	lw r2,(r1+28)                                  
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
        the_thread->real_priority = new_priority;                     
 800980c:	58 2b 00 18 	sw (r1+24),r11                                 
        if ( the_thread->resource_count == 0 ||                       
 8009810:	44 40 00 03 	be r2,r0,800981c <rtems_task_set_priority+0x84>
 8009814:	28 22 00 14 	lw r2,(r1+20)                                  
 8009818:	51 62 00 04 	bgeu r11,r2,8009828 <rtems_task_set_priority+0x90><== ALWAYS TAKEN
             the_thread->current_priority > new_priority )            
          _Thread_Change_priority( the_thread, new_priority, false ); 
 800981c:	b9 60 10 00 	mv r2,r11                                      
 8009820:	34 03 00 00 	mvi r3,0                                       
 8009824:	f8 00 09 e8 	calli 800bfc4 <_Thread_Change_priority>        
      }                                                               
      _Thread_Enable_dispatch();                                      
 8009828:	f8 00 0b 58 	calli 800c588 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 800982c:	34 04 00 00 	mvi r4,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8009830:	b8 80 08 00 	mv r1,r4                                       
 8009834:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8009838:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 800983c:	2b 8c 00 08 	lw r12,(sp+8)                                  
 8009840:	37 9c 00 10 	addi sp,sp,16                                  
 8009844:	c3 a0 00 00 	ret                                            
                                                                      

08004fa4 <rtems_task_variable_add>: rtems_status_code rtems_task_variable_add( rtems_id tid, void **ptr, void (*dtor)(void *) ) {
 8004fa4:	37 9c ff ec 	addi sp,sp,-20                                 
 8004fa8:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004fac:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8004fb0:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004fb4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004fb8:	b8 40 58 00 	mv r11,r2                                      
 8004fbc:	b8 60 68 00 	mv r13,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8004fc0:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *new;                                   
                                                                      
  if ( !ptr )                                                         
 8004fc4:	45 60 00 07 	be r11,r0,8004fe0 <rtems_task_variable_add+0x3c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 8004fc8:	37 82 00 14 	addi r2,sp,20                                  
 8004fcc:	f8 00 09 c7 	calli 80076e8 <_Thread_Get>                    
 8004fd0:	b8 20 60 00 	mv r12,r1                                      
  switch (location) {                                                 
 8004fd4:	2b 81 00 14 	lw r1,(sp+20)                                  
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 8004fd8:	34 02 00 04 	mvi r2,4                                       
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
 8004fdc:	44 20 00 08 	be r1,r0,8004ffc <rtems_task_variable_add+0x58>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8004fe0:	b8 40 08 00 	mv r1,r2                                       
 8004fe4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004fe8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004fec:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004ff0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004ff4:	37 9c 00 14 	addi sp,sp,20                                  
 8004ff8:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
 8004ffc:	29 84 01 24 	lw r4,(r12+292)                                
      while (tvp) {                                                   
 8005000:	44 81 00 08 	be r4,r1,8005020 <rtems_task_variable_add+0x7c>
        if (tvp->ptr == ptr) {                                        
 8005004:	28 81 00 04 	lw r1,(r4+4)                                   
 8005008:	5c 2b 00 04 	bne r1,r11,8005018 <rtems_task_variable_add+0x74>
 800500c:	e0 00 00 18 	bi 800506c <rtems_task_variable_add+0xc8>      
 8005010:	28 82 00 04 	lw r2,(r4+4)                                   
 8005014:	44 4b 00 16 	be r2,r11,800506c <rtems_task_variable_add+0xc8><== NEVER TAKEN
          tvp->dtor = dtor;                                           
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 8005018:	28 84 00 00 	lw r4,(r4+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 800501c:	5c 80 ff fd 	bne r4,r0,8005010 <rtems_task_variable_add+0x6c>
                                                                      
      /*                                                              
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
 8005020:	34 01 00 14 	mvi r1,20                                      
 8005024:	f8 00 0e 87 	calli 8008a40 <_Workspace_Allocate>            
      if (new == NULL) {                                              
 8005028:	44 20 00 1b 	be r1,r0,8005094 <rtems_task_variable_add+0xf0>
      }                                                               
      new->gval = *ptr;                                               
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 800502c:	29 82 01 24 	lw r2,(r12+292)                                
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 8005030:	29 63 00 00 	lw r3,(r11+0)                                  
      new->ptr = ptr;                                                 
 8005034:	58 2b 00 04 	sw (r1+4),r11                                  
      new->dtor = dtor;                                               
 8005038:	58 2d 00 10 	sw (r1+16),r13                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
        return RTEMS_NO_MEMORY;                                       
      }                                                               
      new->gval = *ptr;                                               
 800503c:	58 23 00 08 	sw (r1+8),r3                                   
      new->ptr = ptr;                                                 
      new->dtor = dtor;                                               
                                                                      
      new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
 8005040:	58 22 00 00 	sw (r1+0),r2                                   
      the_thread->task_variables = new;                               
 8005044:	59 81 01 24 	sw (r12+292),r1                                
      _Thread_Enable_dispatch();                                      
 8005048:	f8 00 09 9c 	calli 80076b8 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 800504c:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8005050:	b8 40 08 00 	mv r1,r2                                       
 8005054:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005058:	2b 8b 00 10 	lw r11,(sp+16)                                 
 800505c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005060:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005064:	37 9c 00 14 	addi sp,sp,20                                  
 8005068:	c3 a0 00 00 	ret                                            
       *  Figure out if the variable is already in this task's list.  
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          tvp->dtor = dtor;                                           
 800506c:	58 8d 00 10 	sw (r4+16),r13                                 
          _Thread_Enable_dispatch();                                  
 8005070:	f8 00 09 92 	calli 80076b8 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 8005074:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8005078:	b8 40 08 00 	mv r1,r2                                       
 800507c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005080:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8005084:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005088:	2b 8d 00 08 	lw r13,(sp+8)                                  
 800508c:	37 9c 00 14 	addi sp,sp,20                                  
 8005090:	c3 a0 00 00 	ret                                            
       *  Now allocate memory for this task variable.                 
       */                                                             
      new = (rtems_task_variable_t *)                                 
         _Workspace_Allocate(sizeof(rtems_task_variable_t));          
      if (new == NULL) {                                              
        _Thread_Enable_dispatch();                                    
 8005094:	f8 00 09 89 	calli 80076b8 <_Thread_Enable_dispatch>        
        return RTEMS_NO_MEMORY;                                       
 8005098:	34 02 00 1a 	mvi r2,26                                      
 800509c:	e3 ff ff d1 	bi 8004fe0 <rtems_task_variable_add+0x3c>      
                                                                      

080050a0 <rtems_task_variable_delete>: rtems_status_code rtems_task_variable_delete( rtems_id tid, void **ptr ) {
 80050a0:	37 9c ff f4 	addi sp,sp,-12                                 
 80050a4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80050a8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80050ac:	b8 40 58 00 	mv r11,r2                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 80050b0:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp, *prev;                                  
                                                                      
  if ( !ptr )                                                         
 80050b4:	45 60 00 06 	be r11,r0,80050cc <rtems_task_variable_delete+0x2c>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  prev = NULL;                                                        
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 80050b8:	37 82 00 0c 	addi r2,sp,12                                  
 80050bc:	f8 00 09 8b 	calli 80076e8 <_Thread_Get>                    
  switch (location) {                                                 
 80050c0:	2b 82 00 0c 	lw r2,(sp+12)                                  
 80050c4:	44 40 00 07 	be r2,r0,80050e0 <rtems_task_variable_delete+0x40>
                                                                      
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80050c8:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 80050cc:	b8 40 08 00 	mv r1,r2                                       
 80050d0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80050d4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80050d8:	37 9c 00 0c 	addi sp,sp,12                                  
 80050dc:	c3 a0 00 00 	ret                                            
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
 80050e0:	28 24 01 24 	lw r4,(r1+292)                                 
      while (tvp) {                                                   
 80050e4:	44 82 00 09 	be r4,r2,8005108 <rtems_task_variable_delete+0x68>
        if (tvp->ptr == ptr) {                                        
 80050e8:	28 82 00 04 	lw r2,(r4+4)                                   
 80050ec:	5c 4b 00 05 	bne r2,r11,8005100 <rtems_task_variable_delete+0x60>
 80050f0:	e0 00 00 18 	bi 8005150 <rtems_task_variable_delete+0xb0>   
 80050f4:	28 62 00 04 	lw r2,(r3+4)                                   
 80050f8:	44 4b 00 0b 	be r2,r11,8005124 <rtems_task_variable_delete+0x84>
 80050fc:	b8 60 20 00 	mv r4,r3                                       
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
 8005100:	28 83 00 00 	lw r3,(r4+0)                                   
  the_thread = _Thread_Get (tid, &location);                          
  switch (location) {                                                 
                                                                      
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 8005104:	5c 60 ff fc 	bne r3,r0,80050f4 <rtems_task_variable_delete+0x54><== ALWAYS TAKEN
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        prev = tvp;                                                   
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 8005108:	f8 00 09 6c 	calli 80076b8 <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 800510c:	34 02 00 09 	mvi r2,9                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8005110:	b8 40 08 00 	mv r1,r2                                       
 8005114:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005118:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800511c:	37 9c 00 0c 	addi sp,sp,12                                  
 8005120:	c3 a0 00 00 	ret                                            
    case OBJECTS_LOCAL:                                               
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
 8005124:	28 62 00 00 	lw r2,(r3+0)                                   
 8005128:	58 82 00 00 	sw (r4+0),r2                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
                                                                      
          _RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );  
 800512c:	b8 60 10 00 	mv r2,r3                                       
 8005130:	f8 00 00 39 	calli 8005214 <_RTEMS_Tasks_Invoke_task_variable_dtor>
          _Thread_Enable_dispatch();                                  
 8005134:	f8 00 09 61 	calli 80076b8 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 8005138:	34 02 00 00 	mvi r2,0                                       
    case OBJECTS_ERROR:                                               
        break;                                                        
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 800513c:	b8 40 08 00 	mv r1,r2                                       
 8005140:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005144:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8005148:	37 9c 00 0c 	addi sp,sp,12                                  
 800514c:	c3 a0 00 00 	ret                                            
      while (tvp) {                                                   
        if (tvp->ptr == ptr) {                                        
          if (prev)                                                   
            prev->next = tvp->next;                                   
          else                                                        
            the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
 8005150:	28 82 00 00 	lw r2,(r4+0)                                   
 8005154:	b8 80 18 00 	mv r3,r4                                       
 8005158:	58 22 01 24 	sw (r1+292),r2                                 
 800515c:	e3 ff ff f4 	bi 800512c <rtems_task_variable_delete+0x8c>   
                                                                      

08005160 <rtems_task_variable_get>: rtems_status_code rtems_task_variable_get( rtems_id tid, void **ptr, void **result ) {
 8005160:	37 9c ff f0 	addi sp,sp,-16                                 
 8005164:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8005168:	5b 8c 00 08 	sw (sp+8),r12                                  
 800516c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005170:	b8 40 58 00 	mv r11,r2                                      
 8005174:	b8 60 60 00 	mv r12,r3                                      
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
    return RTEMS_INVALID_ADDRESS;                                     
 8005178:	34 02 00 09 	mvi r2,9                                       
{                                                                     
  Thread_Control        *the_thread;                                  
  Objects_Locations      location;                                    
  rtems_task_variable_t *tvp;                                         
                                                                      
  if ( !ptr )                                                         
 800517c:	45 60 00 07 	be r11,r0,8005198 <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !result )                                                      
 8005180:	44 60 00 06 	be r3,r0,8005198 <rtems_task_variable_get+0x38>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get (tid, &location);                          
 8005184:	37 82 00 10 	addi r2,sp,16                                  
 8005188:	f8 00 09 58 	calli 80076e8 <_Thread_Get>                    
  switch (location) {                                                 
 800518c:	2b 82 00 10 	lw r2,(sp+16)                                  
 8005190:	44 40 00 08 	be r2,r0,80051b0 <rtems_task_variable_get+0x50>
#endif                                                                
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
 8005194:	34 02 00 04 	mvi r2,4                                       
}                                                                     
 8005198:	b8 40 08 00 	mv r1,r2                                       
 800519c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80051a0:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80051a4:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80051a8:	37 9c 00 10 	addi sp,sp,16                                  
 80051ac:	c3 a0 00 00 	ret                                            
                                                                      
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
 80051b0:	28 21 01 24 	lw r1,(r1+292)                                 
      while (tvp) {                                                   
 80051b4:	5c 22 00 04 	bne r1,r2,80051c4 <rtems_task_variable_get+0x64>
 80051b8:	e0 00 00 0f 	bi 80051f4 <rtems_task_variable_get+0x94>      
	   */                                                                
          *result = tvp->tval;                                        
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
 80051bc:	28 21 00 00 	lw r1,(r1+0)                                   
    case OBJECTS_LOCAL:                                               
      /*                                                              
       *  Figure out if the variable is in this task's list.          
       */                                                             
      tvp = the_thread->task_variables;                               
      while (tvp) {                                                   
 80051c0:	44 20 00 0d 	be r1,r0,80051f4 <rtems_task_variable_get+0x94><== NEVER TAKEN
        if (tvp->ptr == ptr) {                                        
 80051c4:	28 22 00 04 	lw r2,(r1+4)                                   
 80051c8:	5c 4b ff fd 	bne r2,r11,80051bc <rtems_task_variable_get+0x5c>
	  /*                                                                 
	   * Should this return the current (i.e not the                     
	   * saved) value if `tid' is the current task?                      
	   */                                                                
          *result = tvp->tval;                                        
 80051cc:	28 21 00 0c 	lw r1,(r1+12)                                  
 80051d0:	59 81 00 00 	sw (r12+0),r1                                  
          _Thread_Enable_dispatch();                                  
 80051d4:	f8 00 09 39 	calli 80076b8 <_Thread_Enable_dispatch>        
          return RTEMS_SUCCESSFUL;                                    
 80051d8:	34 02 00 00 	mvi r2,0                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80051dc:	b8 40 08 00 	mv r1,r2                                       
 80051e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80051e4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80051e8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80051ec:	37 9c 00 10 	addi sp,sp,16                                  
 80051f0:	c3 a0 00 00 	ret                                            
          _Thread_Enable_dispatch();                                  
          return RTEMS_SUCCESSFUL;                                    
        }                                                             
        tvp = (rtems_task_variable_t *)tvp->next;                     
      }                                                               
      _Thread_Enable_dispatch();                                      
 80051f4:	f8 00 09 31 	calli 80076b8 <_Thread_Enable_dispatch>        
      return RTEMS_INVALID_ADDRESS;                                   
 80051f8:	34 02 00 09 	mvi r2,9                                       
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80051fc:	b8 40 08 00 	mv r1,r2                                       
 8005200:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005204:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 8005208:	2b 8c 00 08 	lw r12,(sp+8)                                  
 800520c:	37 9c 00 10 	addi sp,sp,16                                  
 8005210:	c3 a0 00 00 	ret                                            
                                                                      

0800569c <rtems_task_wake_when>: #include <rtems/score/sysstate.h> rtems_status_code rtems_task_wake_when( rtems_time_of_day *time_buffer ) {
 800569c:	37 9c ff ec 	addi sp,sp,-20                                 
 80056a0:	5b 8b 00 14 	sw (sp+20),r11                                 
 80056a4:	5b 8c 00 10 	sw (sp+16),r12                                 
 80056a8:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80056ac:	5b 8e 00 08 	sw (sp+8),r14                                  
 80056b0:	5b 9d 00 04 	sw (sp+4),ra                                   
  Watchdog_Interval   seconds;                                        
                                                                      
  if ( !_TOD.is_set )                                                 
 80056b4:	78 0b 08 02 	mvhi r11,0x802                                 
 80056b8:	39 6b 29 40 	ori r11,r11,0x2940                             
 80056bc:	41 62 00 14 	lbu r2,(r11+20)                                
#include <rtems/score/sysstate.h>                                     
                                                                      
rtems_status_code rtems_task_wake_when(                               
  rtems_time_of_day *time_buffer                                      
)                                                                     
{                                                                     
 80056c0:	b8 20 68 00 	mv r13,r1                                      
  Watchdog_Interval   seconds;                                        
                                                                      
  if ( !_TOD.is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
 80056c4:	34 0c 00 0b 	mvi r12,11                                     
  rtems_time_of_day *time_buffer                                      
)                                                                     
{                                                                     
  Watchdog_Interval   seconds;                                        
                                                                      
  if ( !_TOD.is_set )                                                 
 80056c8:	44 40 00 07 	be r2,r0,80056e4 <rtems_task_wake_when+0x48>   
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !time_buffer )                                                 
    return RTEMS_INVALID_ADDRESS;                                     
 80056cc:	34 0c 00 09 	mvi r12,9                                      
  Watchdog_Interval   seconds;                                        
                                                                      
  if ( !_TOD.is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !time_buffer )                                                 
 80056d0:	44 20 00 05 	be r1,r0,80056e4 <rtems_task_wake_when+0x48>   
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  time_buffer->ticks = 0;                                             
 80056d4:	58 20 00 18 	sw (r1+24),r0                                  
                                                                      
  if ( !_TOD_Validate( time_buffer ) )                                
 80056d8:	fb ff fd 5c 	calli 8004c48 <_TOD_Validate>                  
    return RTEMS_INVALID_CLOCK;                                       
 80056dc:	34 0c 00 14 	mvi r12,20                                     
  if ( !time_buffer )                                                 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  time_buffer->ticks = 0;                                             
                                                                      
  if ( !_TOD_Validate( time_buffer ) )                                
 80056e0:	5c 20 00 09 	bne r1,r0,8005704 <rtems_task_wake_when+0x68>  
      &_Thread_Executing->Timer,                                      
      seconds - _TOD_Seconds_since_epoch()                            
    );                                                                
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80056e4:	b9 80 08 00 	mv r1,r12                                      
 80056e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80056ec:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80056f0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80056f4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80056f8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 80056fc:	37 9c 00 14 	addi sp,sp,20                                  
 8005700:	c3 a0 00 00 	ret                                            
  time_buffer->ticks = 0;                                             
                                                                      
  if ( !_TOD_Validate( time_buffer ) )                                
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( time_buffer );                           
 8005704:	b9 a0 08 00 	mv r1,r13                                      
 8005708:	fb ff fc ef 	calli 8004ac4 <_TOD_To_seconds>                
                                                                      
static inline uint32_t _Timestamp64_implementation_Get_seconds(       
  const Timestamp64_Control *_time                                    
)                                                                     
{                                                                     
  return (uint32_t) (*_time / 1000000000L);                           
 800570c:	78 03 08 01 	mvhi r3,0x801                                  
 8005710:	38 63 f8 44 	ori r3,r3,0xf844                               
 8005714:	b8 20 70 00 	mv r14,r1                                      
 8005718:	28 64 00 00 	lw r4,(r3+0)                                   
 800571c:	29 62 00 04 	lw r2,(r11+4)                                  
 8005720:	29 61 00 00 	lw r1,(r11+0)                                  
 8005724:	34 03 00 00 	mvi r3,0                                       
 8005728:	f8 00 4c 84 	calli 8018938 <__divdi3>                       
                                                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 800572c:	50 4e ff ee 	bgeu r2,r14,80056e4 <rtems_task_wake_when+0x48><== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 8005730:	78 02 08 02 	mvhi r2,0x802                                  
 8005734:	38 42 29 c0 	ori r2,r2,0x29c0                               
 8005738:	28 41 00 00 	lw r1,(r2+0)                                   
                                                                      
    ++level;                                                          
 800573c:	34 21 00 01 	addi r1,r1,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8005740:	58 41 00 00 	sw (r2+0),r1                                   
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  _Thread_Disable_dispatch();                                         
    _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );  
 8005744:	78 0d 08 02 	mvhi r13,0x802                                 
 8005748:	39 ad 2e 60 	ori r13,r13,0x2e60                             
 800574c:	29 a1 00 10 	lw r1,(r13+16)                                 
 8005750:	34 02 00 10 	mvi r2,16                                      
    _Watchdog_Insert_seconds(                                         
      &_Thread_Executing->Timer,                                      
      seconds - _TOD_Seconds_since_epoch()                            
    );                                                                
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
 8005754:	34 0c 00 00 	mvi r12,0                                      
                                                                      
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  _Thread_Disable_dispatch();                                         
    _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );  
 8005758:	f8 00 0d 88 	calli 8008d78 <_Thread_Set_state>              
    _Watchdog_Initialize(                                             
      &_Thread_Executing->Timer,                                      
 800575c:	29 ad 00 10 	lw r13,(r13+16)                                
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8005760:	78 01 08 00 	mvhi r1,0x800                                  
 8005764:	38 21 80 5c 	ori r1,r1,0x805c                               
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  _Thread_Disable_dispatch();                                         
    _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );  
    _Watchdog_Initialize(                                             
 8005768:	29 a2 00 08 	lw r2,(r13+8)                                  
 800576c:	78 03 08 01 	mvhi r3,0x801                                  
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8005770:	59 a0 00 50 	sw (r13+80),r0                                 
  the_watchdog->routine   = routine;                                  
 8005774:	59 a1 00 64 	sw (r13+100),r1                                
  the_watchdog->id        = id;                                       
 8005778:	59 a2 00 68 	sw (r13+104),r2                                
  the_watchdog->user_data = user_data;                                
 800577c:	59 a0 00 6c 	sw (r13+108),r0                                
 8005780:	38 63 f8 44 	ori r3,r3,0xf844                               
 8005784:	28 64 00 00 	lw r4,(r3+0)                                   
 8005788:	29 61 00 00 	lw r1,(r11+0)                                  
 800578c:	29 62 00 04 	lw r2,(r11+4)                                  
 8005790:	34 03 00 00 	mvi r3,0                                       
 8005794:	f8 00 4c 69 	calli 8018938 <__divdi3>                       
      &_Thread_Executing->Timer,                                      
      _Thread_Delay_ended,                                            
      _Thread_Executing->Object.id,                                   
      NULL                                                            
    );                                                                
    _Watchdog_Insert_seconds(                                         
 8005798:	c9 c2 70 00 	sub r14,r14,r2                                 
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );         
 800579c:	78 01 08 02 	mvhi r1,0x802                                  
 80057a0:	38 21 2a 4c 	ori r1,r1,0x2a4c                               
 80057a4:	35 a2 00 48 	addi r2,r13,72                                 
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 80057a8:	59 ae 00 54 	sw (r13+84),r14                                
                                                                      
  _Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );         
 80057ac:	f8 00 0e c9 	calli 80092d0 <_Watchdog_Insert>               
      &_Thread_Executing->Timer,                                      
      seconds - _TOD_Seconds_since_epoch()                            
    );                                                                
  _Thread_Enable_dispatch();                                          
 80057b0:	f8 00 0a c9 	calli 80082d4 <_Thread_Enable_dispatch>        
  return RTEMS_SUCCESSFUL;                                            
 80057b4:	e3 ff ff cc 	bi 80056e4 <rtems_task_wake_when+0x48>         
                                                                      

08004be4 <rtems_termios_baud_to_index>: case B134: baud_index = 4; break; case B150: baud_index = 5; break; case B200: baud_index = 6; break; case B300: baud_index = 7; break; case B600: baud_index = 8; break; case B1200: baud_index = 9; break;
 8004be4:	34 02 00 09 	mvi r2,9                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004be8:	44 22 00 0e 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004bec:	54 22 00 0f 	bgu r1,r2,8004c28 <rtems_termios_baud_to_index+0x44>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
 8004bf0:	34 02 00 04 	mvi r2,4                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004bf4:	44 22 00 0b 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004bf8:	54 22 00 25 	bgu r1,r2,8004c8c <rtems_termios_baud_to_index+0xa8>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
 8004bfc:	34 02 00 01 	mvi r2,1                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c00:	44 22 00 08 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B0:        baud_index =  0;  break;                          
 8004c04:	34 02 00 00 	mvi r2,0                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c08:	44 20 00 06 	be r1,r0,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
 8004c0c:	34 02 00 02 	mvi r2,2                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c10:	44 22 00 04 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
 8004c14:	34 02 00 03 	mvi r2,3                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c18:	44 22 00 02 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004c1c:	34 02 ff ff 	mvi r2,-1                                      
  }                                                                   
                                                                      
  return baud_index;                                                  
}                                                                     
 8004c20:	b8 40 08 00 	mv r1,r2                                       
 8004c24:	c3 a0 00 00 	ret                                            
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
 8004c28:	34 02 00 0e 	mvi r2,14                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c2c:	44 22 ff fd 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004c30:	54 22 00 0c 	bgu r1,r2,8004c60 <rtems_termios_baud_to_index+0x7c>
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
 8004c34:	34 02 00 0b 	mvi r2,11                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c38:	44 22 ff fa 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004c3c:	34 03 00 0b 	mvi r3,11                                      
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
 8004c40:	34 02 00 0a 	mvi r2,10                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c44:	54 61 ff f7 	bgu r3,r1,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
 8004c48:	34 02 00 0c 	mvi r2,12                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c4c:	44 22 ff f5 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B600:      baud_index =  8;  break;                          
    case B1200:     baud_index =  9;  break;                          
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
 8004c50:	34 02 00 0d 	mvi r2,13                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c54:	44 22 ff f3 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004c58:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004c5c:	e3 ff ff f1 	bi 8004c20 <rtems_termios_baud_to_index+0x3c>  <== NOT EXECUTED
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c60:	34 03 10 02 	mvi r3,4098                                    
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
 8004c64:	34 02 00 11 	mvi r2,17                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c68:	44 23 ff ee 	be r1,r3,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004c6c:	54 23 00 13 	bgu r1,r3,8004cb8 <rtems_termios_baud_to_index+0xd4>
    case B1800:     baud_index = 10;  break;                          
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
 8004c70:	34 02 00 0f 	mvi r2,15                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c74:	44 22 ff eb 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004c78:	34 03 10 01 	mvi r3,4097                                    
    case B2400:     baud_index = 11;  break;                          
    case B4800:     baud_index = 12;  break;                          
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
 8004c7c:	34 02 00 10 	mvi r2,16                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c80:	44 23 ff e8 	be r1,r3,8004c20 <rtems_termios_baud_to_index+0x3c><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004c84:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004c88:	e3 ff ff e6 	bi 8004c20 <rtems_termios_baud_to_index+0x3c>  <== NOT EXECUTED
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
 8004c8c:	34 02 00 06 	mvi r2,6                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c90:	44 22 ff e4 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004c94:	34 03 00 06 	mvi r3,6                                       
    case B0:        baud_index =  0;  break;                          
    case B50:       baud_index =  1;  break;                          
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
 8004c98:	34 02 00 05 	mvi r2,5                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004c9c:	54 61 ff e1 	bgu r3,r1,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B75:       baud_index =  2;  break;                          
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
 8004ca0:	34 02 00 07 	mvi r2,7                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004ca4:	44 22 ff df 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c>
    case B110:      baud_index =  3;  break;                          
    case B134:      baud_index =  4;  break;                          
    case B150:      baud_index =  5;  break;                          
    case B200:      baud_index =  6;  break;                          
    case B300:      baud_index =  7;  break;                          
    case B600:      baud_index =  8;  break;                          
 8004ca8:	34 02 00 08 	mvi r2,8                                       
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004cac:	44 22 ff dd 	be r1,r2,8004c20 <rtems_termios_baud_to_index+0x3c><== ALWAYS TAKEN
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
    default:        baud_index = -1;  break;                          
 8004cb0:	34 02 ff ff 	mvi r2,-1                                      <== NOT EXECUTED
 8004cb4:	e3 ff ff db 	bi 8004c20 <rtems_termios_baud_to_index+0x3c>  <== NOT EXECUTED
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004cb8:	34 03 10 03 	mvi r3,4099                                    
    case B9600:     baud_index = 13;  break;                          
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
 8004cbc:	34 02 00 12 	mvi r2,18                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004cc0:	44 23 ff d8 	be r1,r3,8004c20 <rtems_termios_baud_to_index+0x3c>
 8004cc4:	34 03 10 04 	mvi r3,4100                                    
    case B19200:    baud_index = 14;  break;                          
    case B38400:    baud_index = 15;  break;                          
    case B57600:    baud_index = 16;  break;                          
    case B115200:   baud_index = 17;  break;                          
    case B230400:   baud_index = 18;  break;                          
    case B460800:   baud_index = 19;  break;                          
 8004cc8:	34 02 00 13 	mvi r2,19                                      
  rtems_termios_baud_t termios_baud                                   
)                                                                     
{                                                                     
  int baud_index;                                                     
                                                                      
  switch (termios_baud) {                                             
 8004ccc:	5c 23 ff d4 	bne r1,r3,8004c1c <rtems_termios_baud_to_index+0x38>
 8004cd0:	e3 ff ff d4 	bi 8004c20 <rtems_termios_baud_to_index+0x3c>  
                                                                      

080048d0 <rtems_termios_close>: rtems_interrupt_enable (level); } rtems_status_code rtems_termios_close (void *arg) {
 80048d0:	37 9c ff ec 	addi sp,sp,-20                                 
 80048d4:	5b 8b 00 14 	sw (sp+20),r11                                 
 80048d8:	5b 8c 00 10 	sw (sp+16),r12                                 
 80048dc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 80048e0:	5b 8e 00 08 	sw (sp+8),r14                                  
 80048e4:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 80048e8:	78 0c 08 02 	mvhi r12,0x802                                 
 80048ec:	39 8c 8e 30 	ori r12,r12,0x8e30                             
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
 80048f0:	28 24 00 00 	lw r4,(r1+0)                                   
  rtems_interrupt_enable (level);                                     
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
 80048f4:	b8 20 70 00 	mv r14,r1                                      
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 80048f8:	29 81 00 00 	lw r1,(r12+0)                                  
 80048fc:	34 02 00 00 	mvi r2,0                                       
 8004900:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004904:	28 8b 00 28 	lw r11,(r4+40)                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
 8004908:	f8 00 09 13 	calli 8006d54 <rtems_semaphore_obtain>         
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
 800490c:	5c 20 00 65 	bne r1,r0,8004aa0 <rtems_termios_close+0x1d0>  <== NEVER TAKEN
    rtems_fatal_error_occurred (sc);                                  
  if (--tty->refcount == 0) {                                         
 8004910:	29 64 00 08 	lw r4,(r11+8)                                  
 8004914:	34 84 ff ff 	addi r4,r4,-1                                  
 8004918:	59 64 00 08 	sw (r11+8),r4                                  
 800491c:	5c 81 00 31 	bne r4,r1,80049e0 <rtems_termios_close+0x110>  <== NEVER TAKEN
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
 8004920:	29 62 00 cc 	lw r2,(r11+204)                                
 8004924:	78 05 08 02 	mvhi r5,0x802                                  
 8004928:	38 a5 88 30 	ori r5,r5,0x8830                               
 800492c:	b4 42 10 00 	add r2,r2,r2                                   
 8004930:	b4 42 10 00 	add r2,r2,r2                                   
 8004934:	b4 42 10 00 	add r2,r2,r2                                   
 8004938:	b4 42 10 00 	add r2,r2,r2                                   
 800493c:	b4 42 10 00 	add r2,r2,r2                                   
 8004940:	b4 a2 10 00 	add r2,r5,r2                                   
 8004944:	28 4d 00 04 	lw r13,(r2+4)                                  
 8004948:	45 a4 00 41 	be r13,r4,8004a4c <rtems_termios_close+0x17c>  
      /*                                                              
       * call discipline-specific close                               
       */                                                             
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
 800494c:	b9 60 08 00 	mv r1,r11                                      
 8004950:	d9 a0 00 00 	call r13                                       
      }                                                               
      drainOutput (tty);                                              
      rtems_semaphore_release (tty->osem);                            
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 8004954:	29 62 00 b4 	lw r2,(r11+180)                                
 8004958:	34 01 00 02 	mvi r1,2                                       
 800495c:	44 41 00 48 	be r2,r1,8004a7c <rtems_termios_close+0x1ac>   <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
 8004960:	29 64 00 9c 	lw r4,(r11+156)                                
 8004964:	44 80 00 05 	be r4,r0,8004978 <rtems_termios_close+0xa8>    <== ALWAYS TAKEN
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
 8004968:	29 61 00 0c 	lw r1,(r11+12)                                 <== NOT EXECUTED
 800496c:	29 62 00 10 	lw r2,(r11+16)                                 <== NOT EXECUTED
 8004970:	b9 c0 18 00 	mv r3,r14                                      <== NOT EXECUTED
 8004974:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
    if (tty->forw == NULL) {                                          
 8004978:	29 61 00 00 	lw r1,(r11+0)                                  
 800497c:	44 20 00 2c 	be r1,r0,8004a2c <rtems_termios_close+0x15c>   <== ALWAYS TAKEN
      rtems_termios_ttyTail = tty->back;                              
      if ( rtems_termios_ttyTail != NULL ) {                          
        rtems_termios_ttyTail->forw = NULL;                           
      }                                                               
    } else {                                                          
      tty->forw->back = tty->back;                                    
 8004980:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
 8004984:	58 22 00 04 	sw (r1+4),r2                                   <== NOT EXECUTED
 8004988:	29 62 00 04 	lw r2,(r11+4)                                  <== NOT EXECUTED
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
 800498c:	44 40 00 22 	be r2,r0,8004a14 <rtems_termios_close+0x144>   <== NOT EXECUTED
      rtems_termios_ttyHead = tty->forw;                              
      if ( rtems_termios_ttyHead != NULL ) {                          
        rtems_termios_ttyHead->back = NULL;                           
      }                                                               
    } else {                                                          
      tty->back->forw = tty->forw;                                    
 8004990:	58 41 00 00 	sw (r2+0),r1                                   <== NOT EXECUTED
    }                                                                 
                                                                      
    rtems_semaphore_delete (tty->isem);                               
 8004994:	29 61 00 14 	lw r1,(r11+20)                                 
 8004998:	f8 00 08 b8 	calli 8006c78 <rtems_semaphore_delete>         
    rtems_semaphore_delete (tty->osem);                               
 800499c:	29 61 00 18 	lw r1,(r11+24)                                 
 80049a0:	f8 00 08 b6 	calli 8006c78 <rtems_semaphore_delete>         
    rtems_semaphore_delete (tty->rawOutBuf.Semaphore);                
 80049a4:	29 61 00 8c 	lw r1,(r11+140)                                
 80049a8:	f8 00 08 b4 	calli 8006c78 <rtems_semaphore_delete>         
    if ((tty->device.pollRead == NULL) ||                             
 80049ac:	29 61 00 a0 	lw r1,(r11+160)                                
 80049b0:	44 20 00 16 	be r1,r0,8004a08 <rtems_termios_close+0x138>   
 80049b4:	29 62 00 b4 	lw r2,(r11+180)                                
 80049b8:	34 01 00 02 	mvi r1,2                                       
 80049bc:	44 41 00 13 	be r2,r1,8004a08 <rtems_termios_close+0x138>   
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))    
      rtems_semaphore_delete (tty->rawInBuf.Semaphore);               
    free (tty->rawInBuf.theBuf);                                      
 80049c0:	29 61 00 58 	lw r1,(r11+88)                                 
 80049c4:	fb ff f5 6d 	calli 8001f78 <free>                           
    free (tty->rawOutBuf.theBuf);                                     
 80049c8:	29 61 00 7c 	lw r1,(r11+124)                                
 80049cc:	fb ff f5 6b 	calli 8001f78 <free>                           
    free (tty->cbuf);                                                 
 80049d0:	29 61 00 1c 	lw r1,(r11+28)                                 
 80049d4:	fb ff f5 69 	calli 8001f78 <free>                           
    free (tty);                                                       
 80049d8:	b9 60 08 00 	mv r1,r11                                      
 80049dc:	fb ff f5 67 	calli 8001f78 <free>                           
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
 80049e0:	29 81 00 00 	lw r1,(r12+0)                                  
 80049e4:	f8 00 09 38 	calli 8006ec4 <rtems_semaphore_release>        
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 80049e8:	34 01 00 00 	mvi r1,0                                       
 80049ec:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80049f0:	2b 8b 00 14 	lw r11,(sp+20)                                 
 80049f4:	2b 8c 00 10 	lw r12,(sp+16)                                 
 80049f8:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 80049fc:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004a00:	37 9c 00 14 	addi sp,sp,20                                  
 8004a04:	c3 a0 00 00 	ret                                            
    rtems_semaphore_delete (tty->isem);                               
    rtems_semaphore_delete (tty->osem);                               
    rtems_semaphore_delete (tty->rawOutBuf.Semaphore);                
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))    
      rtems_semaphore_delete (tty->rawInBuf.Semaphore);               
 8004a08:	29 61 00 68 	lw r1,(r11+104)                                
 8004a0c:	f8 00 08 9b 	calli 8006c78 <rtems_semaphore_delete>         
 8004a10:	e3 ff ff ec 	bi 80049c0 <rtems_termios_close+0xf0>          
    } else {                                                          
      tty->forw->back = tty->back;                                    
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
      rtems_termios_ttyHead = tty->forw;                              
 8004a14:	78 02 08 02 	mvhi r2,0x802                                  
 8004a18:	38 42 8e 38 	ori r2,r2,0x8e38                               
 8004a1c:	58 41 00 00 	sw (r2+0),r1                                   
      if ( rtems_termios_ttyHead != NULL ) {                          
 8004a20:	44 20 ff dd 	be r1,r0,8004994 <rtems_termios_close+0xc4>    <== ALWAYS TAKEN
        rtems_termios_ttyHead->back = NULL;                           
 8004a24:	58 20 00 04 	sw (r1+4),r0                                   <== NOT EXECUTED
 8004a28:	e3 ff ff db 	bi 8004994 <rtems_termios_close+0xc4>          <== NOT EXECUTED
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
    if (tty->forw == NULL) {                                          
      rtems_termios_ttyTail = tty->back;                              
 8004a2c:	29 62 00 04 	lw r2,(r11+4)                                  
 8004a30:	78 03 08 02 	mvhi r3,0x802                                  
 8004a34:	38 63 8e 34 	ori r3,r3,0x8e34                               
 8004a38:	58 62 00 00 	sw (r3+0),r2                                   
      if ( rtems_termios_ttyTail != NULL ) {                          
 8004a3c:	44 41 ff f6 	be r2,r1,8004a14 <rtems_termios_close+0x144>   <== ALWAYS TAKEN
        rtems_termios_ttyTail->forw = NULL;                           
 8004a40:	58 40 00 00 	sw (r2+0),r0                                   <== NOT EXECUTED
 8004a44:	29 61 00 00 	lw r1,(r11+0)                                  <== NOT EXECUTED
 8004a48:	e3 ff ff d2 	bi 8004990 <rtems_termios_close+0xc0>          <== NOT EXECUTED
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    } else {                                                          
      /*                                                              
       * default: just flush output buffer                            
       */                                                             
      sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004a4c:	29 61 00 18 	lw r1,(r11+24)                                 
 8004a50:	34 02 00 00 	mvi r2,0                                       
 8004a54:	34 03 00 00 	mvi r3,0                                       
 8004a58:	f8 00 08 bf 	calli 8006d54 <rtems_semaphore_obtain>         
      if (sc != RTEMS_SUCCESSFUL) {                                   
 8004a5c:	5d a1 00 11 	bne r13,r1,8004aa0 <rtems_termios_close+0x1d0> <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      }                                                               
      drainOutput (tty);                                              
 8004a60:	b9 60 08 00 	mv r1,r11                                      
 8004a64:	fb ff fe 2d 	calli 8004318 <drainOutput>                    
      rtems_semaphore_release (tty->osem);                            
 8004a68:	29 61 00 18 	lw r1,(r11+24)                                 
 8004a6c:	f8 00 09 16 	calli 8006ec4 <rtems_semaphore_release>        
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 8004a70:	29 62 00 b4 	lw r2,(r11+180)                                
 8004a74:	34 01 00 02 	mvi r1,2                                       
 8004a78:	5c 41 ff ba 	bne r2,r1,8004960 <rtems_termios_close+0x90>   
      /*                                                              
       * send "terminate" to I/O tasks                                
       */                                                             
      sc = rtems_event_send( tty->rxTaskId, TERMIOS_RX_TERMINATE_EVENT );
 8004a7c:	29 61 00 c4 	lw r1,(r11+196)                                
 8004a80:	34 02 00 01 	mvi r2,1                                       
 8004a84:	f8 00 07 52 	calli 80067cc <rtems_event_send>               
 8004a88:	b8 20 68 00 	mv r13,r1                                      
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004a8c:	5c 20 00 05 	bne r1,r0,8004aa0 <rtems_termios_close+0x1d0>  <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
 8004a90:	29 61 00 c8 	lw r1,(r11+200)                                
 8004a94:	34 02 00 01 	mvi r2,1                                       
 8004a98:	f8 00 07 4d 	calli 80067cc <rtems_event_send>               
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004a9c:	44 2d ff b1 	be r1,r13,8004960 <rtems_termios_close+0x90>   <== ALWAYS TAKEN
        rtems_fatal_error_occurred (sc);                              
 8004aa0:	f8 00 0b 43 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

080060a4 <rtems_termios_dequeue_characters>: * for each transmitted character. * It returns number of characters left to transmit */ int rtems_termios_dequeue_characters (void *ttyp, int len) {
 80060a4:	37 9c ff f8 	addi sp,sp,-8                                  
 80060a8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80060ac:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
 80060b0:	28 25 00 90 	lw r5,(r1+144)                                 
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
 80060b4:	28 24 00 b4 	lw r4,(r1+180)                                 
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
 80060b8:	b4 a2 10 00 	add r2,r5,r2                                   
 80060bc:	58 22 00 90 	sw (r1+144),r2                                 
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
 80060c0:	34 02 00 02 	mvi r2,2                                       
 80060c4:	44 82 00 16 	be r4,r2,800611c <rtems_termios_dequeue_characters+0x78>
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
 80060c8:	28 23 00 cc 	lw r3,(r1+204)                                 
 80060cc:	34 02 00 05 	mvi r2,5                                       
 80060d0:	44 62 00 08 	be r3,r2,80060f0 <rtems_termios_dequeue_characters+0x4c>
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
 80060d4:	fb ff f8 01 	calli 80040d8 <rtems_termios_refill_transmitter>
 80060d8:	b8 20 58 00 	mv r11,r1                                      
}                                                                     
 80060dc:	b9 60 08 00 	mv r1,r11                                      
 80060e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80060e4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80060e8:	37 9c 00 08 	addi sp,sp,8                                   
 80060ec:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 80060f0:	78 02 08 02 	mvhi r2,0x802                                  
 80060f4:	38 42 88 30 	ori r2,r2,0x8830                               
 80060f8:	28 42 00 b4 	lw r2,(r2+180)                                 
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
 80060fc:	34 0b 00 00 	mvi r11,0                                      
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 8006100:	44 40 ff f7 	be r2,r0,80060dc <rtems_termios_dequeue_characters+0x38><== NEVER TAKEN
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 8006104:	d8 40 00 00 	call r2                                        
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
}                                                                     
 8006108:	b9 60 08 00 	mv r1,r11                                      
 800610c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006110:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006114:	37 9c 00 08 	addi sp,sp,8                                   
 8006118:	c3 a0 00 00 	ret                                            
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
 800611c:	28 21 00 c8 	lw r1,(r1+200)                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
 8006120:	34 0b 00 00 	mvi r11,0                                      
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
 8006124:	f8 00 01 aa 	calli 80067cc <rtems_event_send>               
    if (sc != RTEMS_SUCCESSFUL)                                       
 8006128:	44 20 ff ed 	be r1,r0,80060dc <rtems_termios_dequeue_characters+0x38><== ALWAYS TAKEN
      rtems_fatal_error_occurred (sc);                                
 800612c:	f8 00 05 a0 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08005cb4 <rtems_termios_enqueue_raw_characters>: * device receive interrupt handler. * Returns the number of characters dropped because of overflow. */ int rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len) {
 8005cb4:	37 9c ff bc 	addi sp,sp,-68                                 
 8005cb8:	5b 8b 00 44 	sw (sp+68),r11                                 
 8005cbc:	5b 8c 00 40 	sw (sp+64),r12                                 
 8005cc0:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8005cc4:	5b 8e 00 38 	sw (sp+56),r14                                 
 8005cc8:	5b 8f 00 34 	sw (sp+52),r15                                 
 8005ccc:	5b 90 00 30 	sw (sp+48),r16                                 
 8005cd0:	5b 91 00 2c 	sw (sp+44),r17                                 
 8005cd4:	5b 92 00 28 	sw (sp+40),r18                                 
 8005cd8:	5b 93 00 24 	sw (sp+36),r19                                 
 8005cdc:	5b 94 00 20 	sw (sp+32),r20                                 
 8005ce0:	5b 95 00 1c 	sw (sp+28),r21                                 
 8005ce4:	5b 96 00 18 	sw (sp+24),r22                                 
 8005ce8:	5b 97 00 14 	sw (sp+20),r23                                 
 8005cec:	5b 98 00 10 	sw (sp+16),r24                                 
 8005cf0:	5b 99 00 0c 	sw (sp+12),r25                                 
 8005cf4:	5b 9b 00 08 	sw (sp+8),fp                                   
 8005cf8:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005cfc:	b8 20 58 00 	mv r11,r1                                      
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
 8005d00:	28 21 00 cc 	lw r1,(r1+204)                                 
 8005d04:	78 0e 08 02 	mvhi r14,0x802                                 
 8005d08:	39 ce 88 30 	ori r14,r14,0x8830                             
 8005d0c:	b4 21 08 00 	add r1,r1,r1                                   
 8005d10:	b4 21 08 00 	add r1,r1,r1                                   
 8005d14:	b4 21 08 00 	add r1,r1,r1                                   
 8005d18:	b4 21 08 00 	add r1,r1,r1                                   
 8005d1c:	b4 21 08 00 	add r1,r1,r1                                   
 8005d20:	b5 c1 08 00 	add r1,r14,r1                                  
 8005d24:	28 24 00 10 	lw r4,(r1+16)                                  
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{                                                                     
 8005d28:	b8 40 68 00 	mv r13,r2                                      
 8005d2c:	b8 60 78 00 	mv r15,r3                                      
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
 8005d30:	44 80 00 30 	be r4,r0,8005df0 <rtems_termios_enqueue_raw_characters+0x13c>
    while (len--) {                                                   
 8005d34:	44 60 00 11 	be r3,r0,8005d78 <rtems_termios_enqueue_raw_characters+0xc4><== NEVER TAKEN
 8005d38:	34 0c 00 00 	mvi r12,0                                      
 8005d3c:	e0 00 00 09 	bi 8005d60 <rtems_termios_enqueue_raw_characters+0xac>
 8005d40:	29 64 00 cc 	lw r4,(r11+204)                                
 8005d44:	b4 84 20 00 	add r4,r4,r4                                   
 8005d48:	b4 84 20 00 	add r4,r4,r4                                   
 8005d4c:	b4 84 20 00 	add r4,r4,r4                                   
 8005d50:	b4 84 20 00 	add r4,r4,r4                                   
 8005d54:	b4 84 20 00 	add r4,r4,r4                                   
 8005d58:	b5 c4 20 00 	add r4,r14,r4                                  
 8005d5c:	28 84 00 10 	lw r4,(r4+16)                                  
 * NOTE: This routine runs in the context of the                      
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
 8005d60:	b5 ac 08 00 	add r1,r13,r12                                 
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    while (len--) {                                                   
      c = *buf++;                                                     
      rtems_termios_linesw[tty->t_line].l_rint(c,tty);                
 8005d64:	40 21 00 00 	lbu r1,(r1+0)                                  
 8005d68:	35 8c 00 01 	addi r12,r12,1                                 
 8005d6c:	b9 60 10 00 	mv r2,r11                                      
 8005d70:	d8 80 00 00 	call r4                                        
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    while (len--) {                                                   
 8005d74:	5d 8f ff f3 	bne r12,r15,8005d40 <rtems_termios_enqueue_raw_characters+0x8c>
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
 8005d78:	29 61 00 e4 	lw r1,(r11+228)                                
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
 8005d7c:	34 10 00 00 	mvi r16,0                                      
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
 8005d80:	5c 20 00 08 	bne r1,r0,8005da0 <rtems_termios_enqueue_raw_characters+0xec><== NEVER TAKEN
 8005d84:	29 63 00 dc 	lw r3,(r11+220)                                
 8005d88:	44 70 00 06 	be r3,r16,8005da0 <rtems_termios_enqueue_raw_characters+0xec>
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
 8005d8c:	29 62 00 e0 	lw r2,(r11+224)                                
 8005d90:	35 61 00 30 	addi r1,r11,48                                 
 8005d94:	d8 60 00 00 	call r3                                        
      tty->tty_rcvwakeup = 1;                                         
 8005d98:	34 01 00 01 	mvi r1,1                                       
 8005d9c:	59 61 00 e4 	sw (r11+228),r1                                
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
  return dropped;                                                     
}                                                                     
 8005da0:	ba 00 08 00 	mv r1,r16                                      
 8005da4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005da8:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8005dac:	2b 8c 00 40 	lw r12,(sp+64)                                 
 8005db0:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8005db4:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8005db8:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8005dbc:	2b 90 00 30 	lw r16,(sp+48)                                 
 8005dc0:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8005dc4:	2b 92 00 28 	lw r18,(sp+40)                                 
 8005dc8:	2b 93 00 24 	lw r19,(sp+36)                                 
 8005dcc:	2b 94 00 20 	lw r20,(sp+32)                                 
 8005dd0:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8005dd4:	2b 96 00 18 	lw r22,(sp+24)                                 
 8005dd8:	2b 97 00 14 	lw r23,(sp+20)                                 
 8005ddc:	2b 98 00 10 	lw r24,(sp+16)                                 
 8005de0:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8005de4:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8005de8:	37 9c 00 44 	addi sp,sp,68                                  
 8005dec:	c3 a0 00 00 	ret                                            
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
 8005df0:	34 12 00 00 	mvi r18,0                                      
 8005df4:	34 10 00 00 	mvi r16,0                                      
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
 8005df8:	34 14 00 20 	mvi r20,32                                     
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
 8005dfc:	34 13 ff fe 	mvi r19,-2                                     
        tty->flow_ctrl &= ~FL_OSTOP;                                  
 8005e00:	34 15 ff df 	mvi r21,-33                                    
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
 8005e04:	35 77 00 30 	addi r23,r11,48                                
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
            % tty->rawInBuf.Size) > tty->highwater) &&                
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
 8005e08:	34 16 04 00 	mvi r22,1024                                   
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
 8005e0c:	34 19 01 00 	mvi r25,256                                    
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
              (tty->rawOutBufState == rob_idle)) {                    
            /* if tx is stopped due to XOFF or out of data */         
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
 8005e10:	35 7b 00 4a 	addi fp,r11,74                                 
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
        /* VSTART received */                                         
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
 8005e14:	34 18 ff ef 	mvi r24,-17                                    
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
 8005e18:	45 e0 00 39 	be r15,r0,8005efc <rtems_termios_enqueue_raw_characters+0x248><== NEVER TAKEN
    c = *buf++;                                                       
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
 8005e1c:	29 63 00 b8 	lw r3,(r11+184)                                
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    c = *buf++;                                                       
 8005e20:	41 ae 00 00 	lbu r14,(r13+0)                                
 8005e24:	35 ad 00 01 	addi r13,r13,1                                 
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
 8005e28:	20 63 02 00 	andi r3,r3,0x200                               
 8005e2c:	44 60 00 05 	be r3,r0,8005e40 <rtems_termios_enqueue_raw_characters+0x18c>
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
 8005e30:	41 63 00 4a 	lbu r3,(r11+74)                                
 8005e34:	44 6e 00 53 	be r3,r14,8005f80 <rtems_termios_enqueue_raw_characters+0x2cc>
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
        }                                                             
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
 8005e38:	41 63 00 49 	lbu r3,(r11+73)                                
 8005e3c:	44 6e 00 36 	be r3,r14,8005f14 <rtems_termios_enqueue_raw_characters+0x260><== NEVER TAKEN
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
 8005e40:	5e 40 00 39 	bne r18,r0,8005f24 <rtems_termios_enqueue_raw_characters+0x270><== NEVER TAKEN
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
 8005e44:	29 63 00 60 	lw r3,(r11+96)                                 
 8005e48:	29 62 00 64 	lw r2,(r11+100)                                
 8005e4c:	34 61 00 01 	addi r1,r3,1                                   
 8005e50:	f8 00 79 9b 	calli 80244bc <__umodsi3>                      
 8005e54:	b8 20 60 00 	mv r12,r1                                      
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
 8005e58:	90 00 88 00 	rcsr r17,IE                                    
 8005e5c:	a2 33 18 00 	and r3,r17,r19                                 
 8005e60:	d0 03 00 00 	wcsr IE,r3                                     
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
 8005e64:	29 63 00 5c 	lw r3,(r11+92)                                 
 8005e68:	29 64 00 64 	lw r4,(r11+100)                                
            % tty->rawInBuf.Size) > tty->highwater) &&                
 8005e6c:	29 62 00 64 	lw r2,(r11+100)                                
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
 8005e70:	c8 83 18 00 	sub r3,r4,r3                                   
            % tty->rawInBuf.Size) > tty->highwater) &&                
 8005e74:	b4 61 08 00 	add r1,r3,r1                                   
 8005e78:	f8 00 79 91 	calli 80244bc <__umodsi3>                      
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
 8005e7c:	29 63 00 c0 	lw r3,(r11+192)                                
 8005e80:	50 61 00 0d 	bgeu r3,r1,8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== ALWAYS TAKEN
            % tty->rawInBuf.Size) > tty->highwater) &&                
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
 8005e84:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8005e88:	20 63 00 01 	andi r3,r3,0x1                                 <== NOT EXECUTED
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
            % tty->rawInBuf.Size) > tty->highwater) &&                
 8005e8c:	5c 60 00 0a 	bne r3,r0,8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
 8005e90:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8005e94:	38 63 00 01 	ori r3,r3,0x1                                  <== NOT EXECUTED
 8005e98:	59 63 00 b8 	sw (r11+184),r3                                <== NOT EXECUTED
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
 8005e9c:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8005ea0:	20 63 04 02 	andi r3,r3,0x402                               <== NOT EXECUTED
 8005ea4:	44 76 00 44 	be r3,r22,8005fb4 <rtems_termios_enqueue_raw_characters+0x300><== NOT EXECUTED
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
 8005ea8:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005eac:	20 21 01 04 	andi r1,r1,0x104                               <== NOT EXECUTED
 8005eb0:	44 39 00 4f 	be r1,r25,8005fec <rtems_termios_enqueue_raw_characters+0x338><== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 8005eb4:	d0 11 00 00 	wcsr IE,r17                                    
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
 8005eb8:	29 63 00 5c 	lw r3,(r11+92)                                 
 8005ebc:	44 6c 00 37 	be r3,r12,8005f98 <rtems_termios_enqueue_raw_characters+0x2e4><== NEVER TAKEN
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
 8005ec0:	29 63 00 58 	lw r3,(r11+88)                                 
 8005ec4:	b4 6c 18 00 	add r3,r3,r12                                  
 8005ec8:	30 6e 00 00 	sb (r3+0),r14                                  
        tty->rawInBuf.Tail = newTail;                                 
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
 8005ecc:	29 63 00 e4 	lw r3,(r11+228)                                
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
        tty->rawInBuf.Tail = newTail;                                 
 8005ed0:	59 6c 00 60 	sw (r11+96),r12                                
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
 8005ed4:	5c 60 00 08 	bne r3,r0,8005ef4 <rtems_termios_enqueue_raw_characters+0x240><== NEVER TAKEN
 8005ed8:	29 64 00 dc 	lw r4,(r11+220)                                
 8005edc:	44 83 00 06 	be r4,r3,8005ef4 <rtems_termios_enqueue_raw_characters+0x240><== ALWAYS TAKEN
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
 8005ee0:	29 62 00 e0 	lw r2,(r11+224)                                <== NOT EXECUTED
 8005ee4:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 8005ee8:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
          tty->tty_rcvwakeup = 1;                                     
 8005eec:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005ef0:	59 63 00 e4 	sw (r11+228),r3                                <== NOT EXECUTED
 8005ef4:	35 ef ff ff 	addi r15,r15,-1                                
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
 8005ef8:	5d e0 ff c9 	bne r15,r0,8005e1c <rtems_termios_enqueue_raw_characters+0x168><== NEVER TAKEN
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
 8005efc:	29 62 00 78 	lw r2,(r11+120)                                
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
 8005f00:	29 61 00 68 	lw r1,(r11+104)                                
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
 8005f04:	b4 50 10 00 	add r2,r2,r16                                  
 8005f08:	59 62 00 78 	sw (r11+120),r2                                
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
 8005f0c:	f8 00 03 ee 	calli 8006ec4 <rtems_semaphore_release>        
  return dropped;                                                     
 8005f10:	e3 ff ff a4 	bi 8005da0 <rtems_termios_enqueue_raw_characters+0xec>
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
        /* VSTART received */                                         
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
 8005f14:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005f18:	a0 38 08 00 	and r1,r1,r24                                  <== NOT EXECUTED
 8005f1c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    while (len--) {                                                   
 8005f20:	34 12 00 01 	mvi r18,1                                      
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
 8005f24:	29 63 00 b8 	lw r3,(r11+184)                                
 8005f28:	20 63 00 30 	andi r3,r3,0x30                                
 8005f2c:	5c 74 ff f2 	bne r3,r20,8005ef4 <rtems_termios_enqueue_raw_characters+0x240><== ALWAYS TAKEN
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
 8005f30:	90 00 60 00 	rcsr r12,IE                                    <== NOT EXECUTED
 8005f34:	a1 93 18 00 	and r3,r12,r19                                 <== NOT EXECUTED
 8005f38:	d0 03 00 00 	wcsr IE,r3                                     <== NOT EXECUTED
        tty->flow_ctrl &= ~FL_OSTOP;                                  
 8005f3c:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
 8005f40:	29 61 00 94 	lw r1,(r11+148)                                <== NOT EXECUTED
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
 8005f44:	a0 75 18 00 	and r3,r3,r21                                  <== NOT EXECUTED
 8005f48:	59 63 00 b8 	sw (r11+184),r3                                <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
 8005f4c:	5c 20 00 04 	bne r1,r0,8005f5c <rtems_termios_enqueue_raw_characters+0x2a8><== NOT EXECUTED
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
 8005f50:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
          tty->tty_rcvwakeup = 1;                                     
 8005f54:	35 ef ff ff 	addi r15,r15,-1                                <== NOT EXECUTED
 8005f58:	e3 ff ff e8 	bi 8005ef8 <rtems_termios_enqueue_raw_characters+0x244><== NOT EXECUTED
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
 8005f5c:	29 63 00 7c 	lw r3,(r11+124)                                <== NOT EXECUTED
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
 8005f60:	29 62 00 84 	lw r2,(r11+132)                                <== NOT EXECUTED
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
 8005f64:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8005f68:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8005f6c:	b4 62 10 00 	add r2,r3,r2                                   <== NOT EXECUTED
 8005f70:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005f74:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
 8005f78:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 8005f7c:	e3 ff ff f6 	bi 8005f54 <rtems_termios_enqueue_raw_characters+0x2a0><== NOT EXECUTED
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
        if (c == tty->termios.c_cc[VSTART]) {                         
 8005f80:	41 64 00 49 	lbu r4,(r11+73)                                
 8005f84:	44 83 00 08 	be r4,r3,8005fa4 <rtems_termios_enqueue_raw_characters+0x2f0><== NEVER TAKEN
          tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;               
        }                                                             
        else {                                                        
          /* VSTOP received (other code than VSTART) */               
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
 8005f88:	29 61 00 b8 	lw r1,(r11+184)                                
 8005f8c:	38 21 00 10 	ori r1,r1,0x10                                 
 8005f90:	59 61 00 b8 	sw (r11+184),r1                                
 8005f94:	e3 ff ff e3 	bi 8005f20 <rtems_termios_enqueue_raw_characters+0x26c>
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
        dropped++;                                                    
 8005f98:	36 10 00 01 	addi r16,r16,1                                 <== NOT EXECUTED
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
          tty->tty_rcvwakeup = 1;                                     
 8005f9c:	35 ef ff ff 	addi r15,r15,-1                                <== NOT EXECUTED
 8005fa0:	e3 ff ff d6 	bi 8005ef8 <rtems_termios_enqueue_raw_characters+0x244><== NOT EXECUTED
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
        if (c == tty->termios.c_cc[VSTART]) {                         
          /* received VSTOP and VSTART==VSTOP? */                     
          /* then toggle "stop output" status  */                     
          tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;               
 8005fa4:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005fa8:	18 21 00 10 	xori r1,r1,0x10                                <== NOT EXECUTED
 8005fac:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
 8005fb0:	e3 ff ff dc 	bi 8005f20 <rtems_termios_enqueue_raw_characters+0x26c><== NOT EXECUTED
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
            ==                (FL_MDXOF             ) ) {             
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
 8005fb4:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005fb8:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 8005fbc:	5c 20 00 03 	bne r1,r0,8005fc8 <rtems_termios_enqueue_raw_characters+0x314><== NOT EXECUTED
 8005fc0:	29 62 00 94 	lw r2,(r11+148)                                <== NOT EXECUTED
 8005fc4:	5c 41 ff bc 	bne r2,r1,8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
              (tty->rawOutBufState == rob_idle)) {                    
            /* if tx is stopped due to XOFF or out of data */         
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
 8005fc8:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
            (*tty->device.write)(tty->minor,                          
 8005fcc:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8005fd0:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
            ==                (FL_MDXOF             ) ) {             
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
              (tty->rawOutBufState == rob_idle)) {                    
            /* if tx is stopped due to XOFF or out of data */         
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
 8005fd4:	38 42 00 02 	ori r2,r2,0x2                                  <== NOT EXECUTED
 8005fd8:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
            (*tty->device.write)(tty->minor,                          
 8005fdc:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005fe0:	bb 60 10 00 	mv r2,fp                                       <== NOT EXECUTED
 8005fe4:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
 8005fe8:	e3 ff ff b3 	bi 8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
          tty->flow_ctrl |= FL_IRTSOFF;                               
 8005fec:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
 8005ff0:	29 62 00 ac 	lw r2,(r11+172)                                <== NOT EXECUTED
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
          tty->flow_ctrl |= FL_IRTSOFF;                               
 8005ff4:	38 21 00 04 	ori r1,r1,0x4                                  <== NOT EXECUTED
 8005ff8:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
 8005ffc:	44 40 ff ae 	be r2,r0,8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
            tty->device.stopRemoteTx(tty->minor);                     
 8006000:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8006004:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
 8006008:	e3 ff ff ab 	bi 8005eb4 <rtems_termios_enqueue_raw_characters+0x200><== NOT EXECUTED
                                                                      

08004088 <rtems_termios_initialize>: struct rtems_termios_tty *rtems_termios_ttyTail; rtems_id rtems_termios_ttyMutex; void rtems_termios_initialize (void) {
 8004088:	37 9c ff f8 	addi sp,sp,-8                                  
 800408c:	5b 8b 00 08 	sw (sp+8),r11                                  
 8004090:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * Create the mutex semaphore for the tty list                      
   */                                                                 
  if (!rtems_termios_ttyMutex) {                                      
 8004094:	78 05 08 02 	mvhi r5,0x802                                  
 8004098:	38 a5 8e 30 	ori r5,r5,0x8e30                               
 800409c:	28 ab 00 00 	lw r11,(r5+0)                                  
 80040a0:	45 60 00 05 	be r11,r0,80040b4 <rtems_termios_initialize+0x2c><== ALWAYS TAKEN
      RTEMS_NO_PRIORITY,                                              
      &rtems_termios_ttyMutex);                                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
  }                                                                   
}                                                                     
 80040a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80040a8:	2b 8b 00 08 	lw r11,(sp+8)                                  
 80040ac:	37 9c 00 08 	addi sp,sp,8                                   
 80040b0:	c3 a0 00 00 	ret                                            
                                                                      
  /*                                                                  
   * Create the mutex semaphore for the tty list                      
   */                                                                 
  if (!rtems_termios_ttyMutex) {                                      
    sc = rtems_semaphore_create (                                     
 80040b4:	78 02 08 02 	mvhi r2,0x802                                  
 80040b8:	38 42 61 48 	ori r2,r2,0x6148                               
 80040bc:	28 41 00 00 	lw r1,(r2+0)                                   
 80040c0:	34 03 00 54 	mvi r3,84                                      
 80040c4:	34 02 00 01 	mvi r2,1                                       
 80040c8:	34 04 00 00 	mvi r4,0                                       
 80040cc:	f8 00 0a 67 	calli 8006a68 <rtems_semaphore_create>         
      rtems_build_name ('T', 'R', 'm', 'i'),                          
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &rtems_termios_ttyMutex);                                       
    if (sc != RTEMS_SUCCESSFUL)                                       
 80040d0:	44 2b ff f5 	be r1,r11,80040a4 <rtems_termios_initialize+0x1c><== ALWAYS TAKEN
      rtems_fatal_error_occurred (sc);                                
 80040d4:	f8 00 0d b6 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004ad0 <rtems_termios_ioctl>: } } rtems_status_code rtems_termios_ioctl (void *arg) {
 8004ad0:	37 9c ff ec 	addi sp,sp,-20                                 
 8004ad4:	5b 8b 00 14 	sw (sp+20),r11                                 
 8004ad8:	5b 8c 00 10 	sw (sp+16),r12                                 
 8004adc:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8004ae0:	5b 8e 00 08 	sw (sp+8),r14                                  
 8004ae4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004ae8:	b8 20 60 00 	mv r12,r1                                      
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004aec:	28 21 00 00 	lw r1,(r1+0)                                   
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004af0:	34 02 00 00 	mvi r2,0                                       
 8004af4:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8004af8:	28 2b 00 28 	lw r11,(r1+40)                                 
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
 8004afc:	59 80 00 0c 	sw (r12+12),r0                                 
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
 8004b00:	29 8e 00 08 	lw r14,(r12+8)                                 
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8004b04:	29 61 00 18 	lw r1,(r11+24)                                 
 8004b08:	f8 00 08 93 	calli 8006d54 <rtems_semaphore_obtain>         
 8004b0c:	b8 20 68 00 	mv r13,r1                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
 8004b10:	5c 20 00 21 	bne r1,r0,8004b94 <rtems_termios_ioctl+0xc4>   <== NEVER TAKEN
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8004b14:	29 81 00 04 	lw r1,(r12+4)                                  
 8004b18:	34 02 00 05 	mvi r2,5                                       
 8004b1c:	44 22 00 18 	be r1,r2,8004b7c <rtems_termios_ioctl+0xac>    
 8004b20:	54 22 00 25 	bgu r1,r2,8004bb4 <rtems_termios_ioctl+0xe4>   
 8004b24:	34 02 00 02 	mvi r2,2                                       
 8004b28:	44 22 00 32 	be r1,r2,8004bf0 <rtems_termios_ioctl+0x120>   
 8004b2c:	54 22 00 cc 	bgu r1,r2,8004e5c <rtems_termios_ioctl+0x38c>  
 8004b30:	34 02 00 01 	mvi r2,1                                       
 8004b34:	44 22 00 da 	be r1,r2,8004e9c <rtems_termios_ioctl+0x3cc>   <== ALWAYS TAKEN
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
 8004b38:	29 61 00 cc 	lw r1,(r11+204)                                
 8004b3c:	78 02 08 02 	mvhi r2,0x802                                  
 8004b40:	38 42 88 30 	ori r2,r2,0x8830                               
 8004b44:	b4 21 08 00 	add r1,r1,r1                                   
 8004b48:	b4 21 08 00 	add r1,r1,r1                                   
 8004b4c:	b4 21 08 00 	add r1,r1,r1                                   
 8004b50:	b4 21 08 00 	add r1,r1,r1                                   
 8004b54:	b4 21 08 00 	add r1,r1,r1                                   
 8004b58:	b4 41 08 00 	add r1,r2,r1                                   
 8004b5c:	28 23 00 18 	lw r3,(r1+24)                                  
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
    }                                                                 
    else {                                                            
      sc = RTEMS_INVALID_NUMBER;                                      
 8004b60:	34 0d 00 0a 	mvi r13,10                                     
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
 8004b64:	44 60 00 0a 	be r3,r0,8004b8c <rtems_termios_ioctl+0xbc>    <== NEVER TAKEN
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
 8004b68:	b9 60 08 00 	mv r1,r11                                      
 8004b6c:	b9 80 10 00 	mv r2,r12                                      
 8004b70:	d8 60 00 00 	call r3                                        
 8004b74:	b8 20 68 00 	mv r13,r1                                      
 8004b78:	e0 00 00 05 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
        break;                                                        
    }                                                                 
    break;                                                            
                                                                      
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
 8004b7c:	29 c1 00 00 	lw r1,(r14+0)                                  
 8004b80:	59 61 00 d4 	sw (r11+212),r1                                
 8004b84:	29 c1 00 04 	lw r1,(r14+4)                                  
 8004b88:	59 61 00 d8 	sw (r11+216),r1                                
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
    }                                                                 
    break;                                                            
  }                                                                   
                                                                      
  rtems_semaphore_release (tty->osem);                                
 8004b8c:	29 61 00 18 	lw r1,(r11+24)                                 
 8004b90:	f8 00 08 cd 	calli 8006ec4 <rtems_semaphore_release>        
  return sc;                                                          
}                                                                     
 8004b94:	b9 a0 08 00 	mv r1,r13                                      
 8004b98:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004b9c:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8004ba0:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8004ba4:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8004ba8:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8004bac:	37 9c 00 14 	addi sp,sp,20                                  
 8004bb0:	c3 a0 00 00 	ret                                            
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8004bb4:	78 03 08 02 	mvhi r3,0x802                                  
 8004bb8:	38 63 61 64 	ori r3,r3,0x6164                               
 8004bbc:	28 62 00 00 	lw r2,(r3+0)                                   
 8004bc0:	44 22 00 74 	be r1,r2,8004d90 <rtems_termios_ioctl+0x2c0>   <== NEVER TAKEN
 8004bc4:	54 22 00 80 	bgu r1,r2,8004dc4 <rtems_termios_ioctl+0x2f4>  
 8004bc8:	34 02 00 06 	mvi r2,6                                       
 8004bcc:	5c 22 ff db 	bne r1,r2,8004b38 <rtems_termios_ioctl+0x68>   <== ALWAYS TAKEN
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
    break;                                                            
                                                                      
  case RTEMS_IO_TCFLUSH:                                              
    switch ((intptr_t) args->buffer) {                                
 8004bd0:	29 81 00 08 	lw r1,(r12+8)                                  <== NOT EXECUTED
 8004bd4:	34 02 00 01 	mvi r2,1                                       <== NOT EXECUTED
 8004bd8:	44 22 00 c7 	be r1,r2,8004ef4 <rtems_termios_ioctl+0x424>   <== NOT EXECUTED
 8004bdc:	34 02 00 02 	mvi r2,2                                       <== NOT EXECUTED
 8004be0:	44 22 00 d7 	be r1,r2,8004f3c <rtems_termios_ioctl+0x46c>   <== NOT EXECUTED
 8004be4:	44 20 00 de 	be r1,r0,8004f5c <rtems_termios_ioctl+0x48c>   <== NOT EXECUTED
      case TCIOFLUSH:                                                 
        flushOutput (tty);                                            
        flushInput (tty);                                             
        break;                                                        
      default:                                                        
        sc = RTEMS_INVALID_NAME;                                      
 8004be8:	34 0d 00 03 	mvi r13,3                                      <== NOT EXECUTED
 8004bec:	e3 ff ff e8 	bi 8004b8c <rtems_termios_ioctl+0xbc>          <== NOT EXECUTED
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8004bf0:	29 81 00 08 	lw r1,(r12+8)                                  
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8004bf4:	29 63 00 b8 	lw r3,(r11+184)                                
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8004bf8:	28 22 00 00 	lw r2,(r1+0)                                   
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8004bfc:	20 63 02 00 	andi r3,r3,0x200                               
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
 8004c00:	59 62 00 30 	sw (r11+48),r2                                 
 8004c04:	28 24 00 04 	lw r4,(r1+4)                                   
 8004c08:	59 64 00 34 	sw (r11+52),r4                                 
 8004c0c:	28 24 00 08 	lw r4,(r1+8)                                   
 8004c10:	59 64 00 38 	sw (r11+56),r4                                 
 8004c14:	28 24 00 0c 	lw r4,(r1+12)                                  
 8004c18:	59 64 00 3c 	sw (r11+60),r4                                 
 8004c1c:	28 24 00 10 	lw r4,(r1+16)                                  
 8004c20:	59 64 00 40 	sw (r11+64),r4                                 
 8004c24:	28 24 00 14 	lw r4,(r1+20)                                  
 8004c28:	59 64 00 44 	sw (r11+68),r4                                 
 8004c2c:	28 24 00 18 	lw r4,(r1+24)                                  
 8004c30:	59 64 00 48 	sw (r11+72),r4                                 
 8004c34:	28 24 00 1c 	lw r4,(r1+28)                                  
 8004c38:	59 64 00 4c 	sw (r11+76),r4                                 
 8004c3c:	28 21 00 20 	lw r1,(r1+32)                                  
 8004c40:	59 61 00 50 	sw (r11+80),r1                                 
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8004c44:	44 60 00 15 	be r3,r0,8004c98 <rtems_termios_ioctl+0x1c8>   
      !(tty->termios.c_iflag & IXON)) {                               
 8004c48:	20 42 04 00 	andi r2,r2,0x400                               
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
 8004c4c:	5c 40 00 13 	bne r2,r0,8004c98 <rtems_termios_ioctl+0x1c8>  
      !(tty->termios.c_iflag & IXON)) {                               
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);                       
 8004c50:	29 62 00 b8 	lw r2,(r11+184)                                
 8004c54:	34 01 fd ef 	mvi r1,-529                                    
 8004c58:	a0 41 08 00 	and r1,r2,r1                                   
 8004c5c:	59 61 00 b8 	sw (r11+184),r1                                
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
 8004c60:	29 61 00 b8 	lw r1,(r11+184)                                
 8004c64:	20 21 00 20 	andi r1,r1,0x20                                
 8004c68:	44 20 00 0c 	be r1,r0,8004c98 <rtems_termios_ioctl+0x1c8>   <== ALWAYS TAKEN
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
 8004c6c:	90 00 60 00 	rcsr r12,IE                                    <== NOT EXECUTED
 8004c70:	34 01 ff fe 	mvi r1,-2                                      <== NOT EXECUTED
 8004c74:	a1 81 08 00 	and r1,r12,r1                                  <== NOT EXECUTED
 8004c78:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      tty->flow_ctrl &= ~FL_OSTOP;                                    
 8004c7c:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
 8004c80:	34 01 ff df 	mvi r1,-33                                     <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
 8004c84:	29 63 00 94 	lw r3,(r11+148)                                <== NOT EXECUTED
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
 8004c88:	a0 41 08 00 	and r1,r2,r1                                   <== NOT EXECUTED
 8004c8c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
 8004c90:	5c 60 00 a2 	bne r3,r0,8004f18 <rtems_termios_ioctl+0x448>  <== NOT EXECUTED
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      }                                                               
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 8004c94:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
    }                                                                 
  }                                                                   
  /* check for incoming XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
 8004c98:	29 61 00 b8 	lw r1,(r11+184)                                
 8004c9c:	20 21 04 00 	andi r1,r1,0x400                               
 8004ca0:	44 20 00 0c 	be r1,r0,8004cd0 <rtems_termios_ioctl+0x200>   
 8004ca4:	29 61 00 30 	lw r1,(r11+48)                                 
 8004ca8:	20 21 10 00 	andi r1,r1,0x1000                              
 8004cac:	5c 20 00 09 	bne r1,r0,8004cd0 <rtems_termios_ioctl+0x200>  <== NEVER TAKEN
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXOF);                                    
 8004cb0:	29 62 00 b8 	lw r2,(r11+184)                                
 8004cb4:	34 01 fb ff 	mvi r1,-1025                                   
 8004cb8:	a0 41 08 00 	and r1,r2,r1                                   
 8004cbc:	59 61 00 b8 	sw (r11+184),r1                                
    /* FIXME: what happens, if we had sent XOFF but not yet XON? */   
    tty->flow_ctrl &= ~(FL_ISNTXOF);                                  
 8004cc0:	29 62 00 b8 	lw r2,(r11+184)                                
 8004cc4:	34 01 ff fd 	mvi r1,-3                                      
 8004cc8:	a0 41 08 00 	and r1,r2,r1                                   
 8004ccc:	59 61 00 b8 	sw (r11+184),r1                                
  }                                                                   
                                                                      
  /* check for incoming RTS/CTS flow control switched off */          
  if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
 8004cd0:	29 61 00 b8 	lw r1,(r11+184)                                
 8004cd4:	20 21 01 00 	andi r1,r1,0x100                               
 8004cd8:	44 20 00 85 	be r1,r0,8004eec <rtems_termios_ioctl+0x41c>   
 8004cdc:	29 62 00 38 	lw r2,(r11+56)                                 
 8004ce0:	48 02 00 12 	bg r0,r2,8004d28 <rtems_termios_ioctl+0x258>   <== ALWAYS TAKEN
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDRTS);                                    
 8004ce4:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8004ce8:	34 01 fe ff 	mvi r1,-257                                    <== NOT EXECUTED
 8004cec:	a0 61 08 00 	and r1,r3,r1                                   <== NOT EXECUTED
 8004cf0:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
                                                                      
    /* restart remote Tx, if it was stopped */                        
    if ((tty->flow_ctrl & FL_IRTSOFF) && (tty->device.startRemoteTx != NULL)) {
 8004cf4:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8004cf8:	20 21 00 04 	andi r1,r1,0x4                                 <== NOT EXECUTED
 8004cfc:	44 20 00 06 	be r1,r0,8004d14 <rtems_termios_ioctl+0x244>   <== NOT EXECUTED
 8004d00:	29 63 00 b0 	lw r3,(r11+176)                                <== NOT EXECUTED
 8004d04:	44 60 00 04 	be r3,r0,8004d14 <rtems_termios_ioctl+0x244>   <== NOT EXECUTED
      tty->device.startRemoteTx(tty->minor);                          
 8004d08:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8004d0c:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 8004d10:	29 62 00 38 	lw r2,(r11+56)                                 <== NOT EXECUTED
    }                                                                 
    tty->flow_ctrl &= ~(FL_IRTSOFF);                                  
 8004d14:	29 63 00 b8 	lw r3,(r11+184)                                <== NOT EXECUTED
 8004d18:	34 01 ff fb 	mvi r1,-5                                      <== NOT EXECUTED
 8004d1c:	a0 61 08 00 	and r1,r3,r1                                   <== NOT EXECUTED
 8004d20:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
                                                                      
  /*                                                                  
   * check for flow control options to be switched on                 
   */                                                                 
  /* check for incoming RTS/CTS flow control switched on */           
  if (tty->termios.c_cflag & CRTSCTS) {                               
 8004d24:	4c 40 00 04 	bge r2,r0,8004d34 <rtems_termios_ioctl+0x264>  
    tty->flow_ctrl |= FL_MDRTS;                                       
 8004d28:	29 61 00 b8 	lw r1,(r11+184)                                
 8004d2c:	38 21 01 00 	ori r1,r1,0x100                                
 8004d30:	59 61 00 b8 	sw (r11+184),r1                                
  }                                                                   
  /* check for incoming XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXOFF) {                                 
 8004d34:	29 61 00 30 	lw r1,(r11+48)                                 
 8004d38:	20 22 10 00 	andi r2,r1,0x1000                              
 8004d3c:	44 40 00 04 	be r2,r0,8004d4c <rtems_termios_ioctl+0x27c>   
    tty->flow_ctrl |= FL_MDXOF;                                       
 8004d40:	29 62 00 b8 	lw r2,(r11+184)                                
 8004d44:	38 42 04 00 	ori r2,r2,0x400                                
 8004d48:	59 62 00 b8 	sw (r11+184),r2                                
  }                                                                   
  /* check for outgoing XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXON) {                                  
 8004d4c:	20 21 04 00 	andi r1,r1,0x400                               
 8004d50:	44 20 00 04 	be r1,r0,8004d60 <rtems_termios_ioctl+0x290>   
    tty->flow_ctrl |= FL_MDXON;                                       
 8004d54:	29 61 00 b8 	lw r1,(r11+184)                                
 8004d58:	38 21 02 00 	ori r1,r1,0x200                                
 8004d5c:	59 61 00 b8 	sw (r11+184),r1                                
    tty->termios = *(struct termios *)args->buffer;                   
                                                                      
    /* check for and process change in flow control options */        
    termios_set_flowctrl(tty);                                        
                                                                      
    if (tty->termios.c_lflag & ICANON) {                              
 8004d60:	29 6c 00 3c 	lw r12,(r11+60)                                
 8004d64:	21 8c 00 02 	andi r12,r12,0x2                               
 8004d68:	45 80 00 85 	be r12,r0,8004f7c <rtems_termios_ioctl+0x4ac>  
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
 8004d6c:	59 60 00 6c 	sw (r11+108),r0                                
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
 8004d70:	59 60 00 70 	sw (r11+112),r0                                
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
 8004d74:	59 60 00 74 	sw (r11+116),r0                                
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
        }                                                             
      }                                                               
    }                                                                 
    if (tty->device.setAttributes)                                    
 8004d78:	29 63 00 a8 	lw r3,(r11+168)                                
 8004d7c:	44 60 ff 84 	be r3,r0,8004b8c <rtems_termios_ioctl+0xbc>    <== NEVER TAKEN
      (*tty->device.setAttributes)(tty->minor, &tty->termios);        
 8004d80:	29 61 00 10 	lw r1,(r11+16)                                 
 8004d84:	35 62 00 30 	addi r2,r11,48                                 
 8004d88:	d8 60 00 00 	call r3                                        
 8004d8c:	e3 ff ff 80 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
    break;                                                            
#endif                                                                
   case FIONREAD: {                                                   
      int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;            
 8004d90:	29 62 00 60 	lw r2,(r11+96)                                 <== NOT EXECUTED
 8004d94:	29 61 00 5c 	lw r1,(r11+92)                                 <== NOT EXECUTED
 8004d98:	c8 41 08 00 	sub r1,r2,r1                                   <== NOT EXECUTED
      if ( rawnc < 0 )                                                
 8004d9c:	4c 20 00 03 	bge r1,r0,8004da8 <rtems_termios_ioctl+0x2d8>  <== NOT EXECUTED
        rawnc += tty->rawInBuf.Size;                                  
 8004da0:	29 62 00 64 	lw r2,(r11+100)                                <== NOT EXECUTED
 8004da4:	b4 22 08 00 	add r1,r1,r2                                   <== NOT EXECUTED
      /* Half guess that this is the right operation */               
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
 8004da8:	29 64 00 20 	lw r4,(r11+32)                                 <== NOT EXECUTED
 8004dac:	29 63 00 24 	lw r3,(r11+36)                                 <== NOT EXECUTED
 8004db0:	29 82 00 08 	lw r2,(r12+8)                                  <== NOT EXECUTED
 8004db4:	c8 83 18 00 	sub r3,r4,r3                                   <== NOT EXECUTED
 8004db8:	b4 61 08 00 	add r1,r3,r1                                   <== NOT EXECUTED
 8004dbc:	58 41 00 00 	sw (r2+0),r1                                   <== NOT EXECUTED
    }                                                                 
    break;                                                            
 8004dc0:	e3 ff ff 73 	bi 8004b8c <rtems_termios_ioctl+0xbc>          <== NOT EXECUTED
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8004dc4:	78 03 08 02 	mvhi r3,0x802                                  
 8004dc8:	38 63 61 68 	ori r3,r3,0x6168                               
 8004dcc:	28 62 00 00 	lw r2,(r3+0)                                   
 8004dd0:	44 22 00 2f 	be r1,r2,8004e8c <rtems_termios_ioctl+0x3bc>   
 8004dd4:	78 03 08 02 	mvhi r3,0x802                                  
 8004dd8:	38 63 61 6c 	ori r3,r3,0x616c                               
 8004ddc:	28 62 00 00 	lw r2,(r3+0)                                   
 8004de0:	5c 22 ff 56 	bne r1,r2,8004b38 <rtems_termios_ioctl+0x68>   <== NEVER TAKEN
#if 1 /* FIXME */                                                     
  case TIOCSETD:                                                      
    /*                                                                
     * close old line discipline                                      
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
 8004de4:	29 62 00 cc 	lw r2,(r11+204)                                
 8004de8:	78 0e 08 02 	mvhi r14,0x802                                 
 8004dec:	39 ce 88 30 	ori r14,r14,0x8830                             
 8004df0:	b4 42 10 00 	add r2,r2,r2                                   
 8004df4:	b4 42 10 00 	add r2,r2,r2                                   
 8004df8:	b4 42 10 00 	add r2,r2,r2                                   
 8004dfc:	b4 42 10 00 	add r2,r2,r2                                   
 8004e00:	b4 42 10 00 	add r2,r2,r2                                   
 8004e04:	b5 c2 10 00 	add r2,r14,r2                                  
 8004e08:	28 42 00 04 	lw r2,(r2+4)                                   
 8004e0c:	44 40 00 04 	be r2,r0,8004e1c <rtems_termios_ioctl+0x34c>   
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
 8004e10:	b9 60 08 00 	mv r1,r11                                      
 8004e14:	d8 40 00 00 	call r2                                        
 8004e18:	b8 20 68 00 	mv r13,r1                                      
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
 8004e1c:	29 81 00 08 	lw r1,(r12+8)                                  
 8004e20:	28 22 00 00 	lw r2,(r1+0)                                   
    tty->t_sc = NULL; /* ensure that no more valid data */            
 8004e24:	59 60 00 d0 	sw (r11+208),r0                                
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
 8004e28:	b4 42 08 00 	add r1,r2,r2                                   
 8004e2c:	b4 21 08 00 	add r1,r1,r1                                   
 8004e30:	b4 21 08 00 	add r1,r1,r1                                   
 8004e34:	b4 21 08 00 	add r1,r1,r1                                   
 8004e38:	b4 21 08 00 	add r1,r1,r1                                   
 8004e3c:	b5 c1 08 00 	add r1,r14,r1                                  
 8004e40:	28 23 00 00 	lw r3,(r1+0)                                   
     * close old line discipline                                      
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
 8004e44:	59 62 00 cc 	sw (r11+204),r2                                
    tty->t_sc = NULL; /* ensure that no more valid data */            
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
 8004e48:	44 60 ff 51 	be r3,r0,8004b8c <rtems_termios_ioctl+0xbc>    
      sc = rtems_termios_linesw[tty->t_line].l_open(tty);             
 8004e4c:	b9 60 08 00 	mv r1,r11                                      
 8004e50:	d8 60 00 00 	call r3                                        
 8004e54:	b8 20 68 00 	mv r13,r1                                      
 8004e58:	e3 ff ff 4d 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
 8004e5c:	34 02 00 03 	mvi r2,3                                       
 8004e60:	44 22 00 08 	be r1,r2,8004e80 <rtems_termios_ioctl+0x3b0>   
 8004e64:	34 02 00 04 	mvi r2,4                                       
 8004e68:	5c 22 ff 34 	bne r1,r2,8004b38 <rtems_termios_ioctl+0x68>   <== NEVER TAKEN
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
    break;                                                            
                                                                      
  case RTEMS_IO_RCVWAKEUP:                                            
    tty->tty_rcv = *wakeup;                                           
 8004e6c:	29 c1 00 00 	lw r1,(r14+0)                                  
 8004e70:	59 61 00 dc 	sw (r11+220),r1                                
 8004e74:	29 c1 00 04 	lw r1,(r14+4)                                  
 8004e78:	59 61 00 e0 	sw (r11+224),r1                                
    break;                                                            
 8004e7c:	e3 ff ff 44 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
    if (tty->device.setAttributes)                                    
      (*tty->device.setAttributes)(tty->minor, &tty->termios);        
    break;                                                            
                                                                      
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
 8004e80:	b9 60 08 00 	mv r1,r11                                      
 8004e84:	fb ff fd 25 	calli 8004318 <drainOutput>                    
    break;                                                            
 8004e88:	e3 ff ff 41 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
      sc = rtems_termios_linesw[tty->t_line].l_open(tty);             
    }                                                                 
    break;                                                            
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
 8004e8c:	29 81 00 08 	lw r1,(r12+8)                                  
 8004e90:	29 62 00 cc 	lw r2,(r11+204)                                
 8004e94:	58 22 00 00 	sw (r1+0),r2                                   
    break;                                                            
 8004e98:	e3 ff ff 3d 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
      sc = RTEMS_INVALID_NUMBER;                                      
    }                                                                 
    break;                                                            
                                                                      
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
 8004e9c:	29 62 00 30 	lw r2,(r11+48)                                 
 8004ea0:	29 81 00 08 	lw r1,(r12+8)                                  
 8004ea4:	58 22 00 00 	sw (r1+0),r2                                   
 8004ea8:	29 62 00 34 	lw r2,(r11+52)                                 
 8004eac:	58 22 00 04 	sw (r1+4),r2                                   
 8004eb0:	29 62 00 38 	lw r2,(r11+56)                                 
 8004eb4:	58 22 00 08 	sw (r1+8),r2                                   
 8004eb8:	29 62 00 3c 	lw r2,(r11+60)                                 
 8004ebc:	58 22 00 0c 	sw (r1+12),r2                                  
 8004ec0:	29 62 00 40 	lw r2,(r11+64)                                 
 8004ec4:	58 22 00 10 	sw (r1+16),r2                                  
 8004ec8:	29 62 00 44 	lw r2,(r11+68)                                 
 8004ecc:	58 22 00 14 	sw (r1+20),r2                                  
 8004ed0:	29 62 00 48 	lw r2,(r11+72)                                 
 8004ed4:	58 22 00 18 	sw (r1+24),r2                                  
 8004ed8:	29 62 00 4c 	lw r2,(r11+76)                                 
 8004edc:	58 22 00 1c 	sw (r1+28),r2                                  
 8004ee0:	29 62 00 50 	lw r2,(r11+80)                                 
 8004ee4:	58 22 00 20 	sw (r1+32),r2                                  
    break;                                                            
 8004ee8:	e3 ff ff 29 	bi 8004b8c <rtems_termios_ioctl+0xbc>          
    /* FIXME: what happens, if we had sent XOFF but not yet XON? */   
    tty->flow_ctrl &= ~(FL_ISNTXOF);                                  
  }                                                                   
                                                                      
  /* check for incoming RTS/CTS flow control switched off */          
  if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
 8004eec:	29 62 00 38 	lw r2,(r11+56)                                 
 8004ef0:	e3 ff ff 8d 	bi 8004d24 <rtems_termios_ioctl+0x254>         
static void                                                           
flushOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
 8004ef4:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8004ef8:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8004efc:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 8004f00:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
  tty->rawOutBuf.Tail = 0;                                            
 8004f04:	59 60 00 84 	sw (r11+132),r0                                <== NOT EXECUTED
  tty->rawOutBuf.Head = 0;                                            
 8004f08:	59 60 00 80 	sw (r11+128),r0                                <== NOT EXECUTED
  tty->rawOutBufState = rob_idle;                                     
 8004f0c:	59 60 00 94 	sw (r11+148),r0                                <== NOT EXECUTED
  rtems_interrupt_enable (level);                                     
 8004f10:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      case TCIFLUSH:                                                  
        flushInput (tty);                                             
        break;                                                        
      case TCOFLUSH:                                                  
        flushOutput (tty);                                            
        break;                                                        
 8004f14:	e3 ff ff 1e 	bi 8004b8c <rtems_termios_ioctl+0xbc>          <== NOT EXECUTED
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
 8004f18:	29 63 00 7c 	lw r3,(r11+124)                                <== NOT EXECUTED
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
 8004f1c:	29 62 00 84 	lw r2,(r11+132)                                <== NOT EXECUTED
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
 8004f20:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8004f24:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8004f28:	b4 62 10 00 	add r2,r3,r2                                   <== NOT EXECUTED
 8004f2c:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8004f30:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      }                                                               
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
 8004f34:	d0 0c 00 00 	wcsr IE,r12                                    <== NOT EXECUTED
 8004f38:	e3 ff ff 58 	bi 8004c98 <rtems_termios_ioctl+0x1c8>         <== NOT EXECUTED
static void                                                           
flushOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
 8004f3c:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8004f40:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8004f44:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 8004f48:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
  tty->rawOutBuf.Tail = 0;                                            
 8004f4c:	59 60 00 84 	sw (r11+132),r0                                <== NOT EXECUTED
  tty->rawOutBuf.Head = 0;                                            
 8004f50:	59 60 00 80 	sw (r11+128),r0                                <== NOT EXECUTED
  tty->rawOutBufState = rob_idle;                                     
 8004f54:	59 60 00 94 	sw (r11+148),r0                                <== NOT EXECUTED
  rtems_interrupt_enable (level);                                     
 8004f58:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
static void                                                           
flushInput (struct rtems_termios_tty *tty)                            
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
 8004f5c:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8004f60:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8004f64:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 8004f68:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
  tty->rawInBuf.Tail = 0;                                             
 8004f6c:	59 60 00 60 	sw (r11+96),r0                                 <== NOT EXECUTED
  tty->rawInBuf.Head = 0;                                             
 8004f70:	59 60 00 5c 	sw (r11+92),r0                                 <== NOT EXECUTED
  rtems_interrupt_enable (level);                                     
 8004f74:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
        flushOutput (tty);                                            
        break;                                                        
      case TCIOFLUSH:                                                 
        flushOutput (tty);                                            
        flushInput (tty);                                             
        break;                                                        
 8004f78:	e3 ff ff 05 	bi 8004b8c <rtems_termios_ioctl+0xbc>          <== NOT EXECUTED
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
 8004f7c:	41 6e 00 46 	lbu r14,(r11+70)                               
                    rtems_clock_get_ticks_per_second() / 10;          
 8004f80:	f8 00 05 74 	calli 8006550 <rtems_clock_get_ticks_per_second>
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
 8004f84:	b9 c0 10 00 	mv r2,r14                                      
 8004f88:	f8 00 7c d8 	calli 80242e8 <__mulsi3>                       
                    rtems_clock_get_ticks_per_second() / 10;          
 8004f8c:	34 02 00 0a 	mvi r2,10                                      
 8004f90:	f8 00 7d 3b 	calli 802447c <__udivsi3>                      
      if (tty->termios.c_cc[VTIME]) {                                 
 8004f94:	41 62 00 46 	lbu r2,(r11+70)                                
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
 8004f98:	59 61 00 54 	sw (r11+84),r1                                 
                    rtems_clock_get_ticks_per_second() / 10;          
      if (tty->termios.c_cc[VTIME]) {                                 
 8004f9c:	44 4c 00 07 	be r2,r12,8004fb8 <rtems_termios_ioctl+0x4e8>  
        tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                   
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
        if (tty->termios.c_cc[VMIN])                                  
 8004fa0:	41 62 00 47 	lbu r2,(r11+71)                                
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
                    rtems_clock_get_ticks_per_second() / 10;          
      if (tty->termios.c_cc[VTIME]) {                                 
        tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                   
 8004fa4:	59 60 00 6c 	sw (r11+108),r0                                
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
 8004fa8:	59 61 00 70 	sw (r11+112),r1                                
        if (tty->termios.c_cc[VMIN])                                  
 8004fac:	5c 40 ff 72 	bne r2,r0,8004d74 <rtems_termios_ioctl+0x2a4>  <== NEVER TAKEN
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
 8004fb0:	59 61 00 74 	sw (r11+116),r1                                
 8004fb4:	e3 ff ff 71 	bi 8004d78 <rtems_termios_ioctl+0x2a8>         
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
 8004fb8:	41 61 00 47 	lbu r1,(r11+71)                                
 8004fbc:	5c 22 ff 6c 	bne r1,r2,8004d6c <rtems_termios_ioctl+0x29c>  <== NEVER TAKEN
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
 8004fc0:	34 01 00 01 	mvi r1,1                                       
 8004fc4:	59 61 00 6c 	sw (r11+108),r1                                
 8004fc8:	e3 ff ff 6c 	bi 8004d78 <rtems_termios_ioctl+0x2a8>         
                                                                      

08004434 <rtems_termios_open>: rtems_device_major_number major, rtems_device_minor_number minor, void *arg, const rtems_termios_callbacks *callbacks ) {
 8004434:	37 9c ff cc 	addi sp,sp,-52                                 
 8004438:	5b 8b 00 34 	sw (sp+52),r11                                 
 800443c:	5b 8c 00 30 	sw (sp+48),r12                                 
 8004440:	5b 8d 00 2c 	sw (sp+44),r13                                 
 8004444:	5b 8e 00 28 	sw (sp+40),r14                                 
 8004448:	5b 8f 00 24 	sw (sp+36),r15                                 
 800444c:	5b 90 00 20 	sw (sp+32),r16                                 
 8004450:	5b 91 00 1c 	sw (sp+28),r17                                 
 8004454:	5b 92 00 18 	sw (sp+24),r18                                 
 8004458:	5b 93 00 14 	sw (sp+20),r19                                 
 800445c:	5b 94 00 10 	sw (sp+16),r20                                 
 8004460:	5b 95 00 0c 	sw (sp+12),r21                                 
 8004464:	5b 96 00 08 	sw (sp+8),r22                                  
 8004468:	5b 9d 00 04 	sw (sp+4),ra                                   
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 800446c:	78 0d 08 02 	mvhi r13,0x802                                 
 8004470:	39 ad 8e 30 	ori r13,r13,0x8e30                             
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 8004474:	b8 20 60 00 	mv r12,r1                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8004478:	29 a1 00 00 	lw r1,(r13+0)                                  
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 800447c:	b8 40 78 00 	mv r15,r2                                      
 8004480:	b8 60 98 00 	mv r19,r3                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8004484:	34 02 00 00 	mvi r2,0                                       
 8004488:	34 03 00 00 	mvi r3,0                                       
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
 800448c:	b8 80 a0 00 	mv r20,r4                                      
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
 8004490:	f8 00 0a 31 	calli 8006d54 <rtems_semaphore_obtain>         
 8004494:	b8 20 70 00 	mv r14,r1                                      
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
 8004498:	5c 20 00 1e 	bne r1,r0,8004510 <rtems_termios_open+0xdc>    <== NEVER TAKEN
    return sc;                                                        
                                                                      
  for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) { 
 800449c:	78 10 08 02 	mvhi r16,0x802                                 
 80044a0:	3a 10 8e 38 	ori r16,r16,0x8e38                             
 80044a4:	2a 12 00 00 	lw r18,(r16+0)                                 
 80044a8:	46 41 00 38 	be r18,r1,8004588 <rtems_termios_open+0x154>   <== ALWAYS TAKEN
 80044ac:	ba 40 58 00 	mv r11,r18                                     <== NOT EXECUTED
 80044b0:	e0 00 00 03 	bi 80044bc <rtems_termios_open+0x88>           <== NOT EXECUTED
 80044b4:	29 6b 00 00 	lw r11,(r11+0)                                 <== NOT EXECUTED
 80044b8:	45 60 00 34 	be r11,r0,8004588 <rtems_termios_open+0x154>   <== NOT EXECUTED
    if ((tty->major == major) && (tty->minor == minor))               
 80044bc:	29 65 00 0c 	lw r5,(r11+12)                                 <== NOT EXECUTED
 80044c0:	5c ac ff fd 	bne r5,r12,80044b4 <rtems_termios_open+0x80>   <== NOT EXECUTED
 80044c4:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80044c8:	5c 2f ff fb 	bne r1,r15,80044b4 <rtems_termios_open+0x80>   <== NOT EXECUTED
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
 80044cc:	2a 61 00 00 	lw r1,(r19+0)                                  
  if (!tty->refcount++) {                                             
 80044d0:	29 62 00 08 	lw r2,(r11+8)                                  
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
 80044d4:	58 2b 00 28 	sw (r1+40),r11                                 
  if (!tty->refcount++) {                                             
 80044d8:	34 41 00 01 	addi r1,r2,1                                   
 80044dc:	59 61 00 08 	sw (r11+8),r1                                  
 80044e0:	5c 40 00 0a 	bne r2,r0,8004508 <rtems_termios_open+0xd4>    <== NEVER TAKEN
    if (tty->device.firstOpen)                                        
 80044e4:	29 64 00 98 	lw r4,(r11+152)                                
 80044e8:	44 82 00 05 	be r4,r2,80044fc <rtems_termios_open+0xc8>     <== ALWAYS TAKEN
      (*tty->device.firstOpen)(major, minor, arg);                    
 80044ec:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 80044f0:	b9 e0 10 00 	mv r2,r15                                      <== NOT EXECUTED
 80044f4:	ba 60 18 00 	mv r3,r19                                      <== NOT EXECUTED
 80044f8:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 80044fc:	29 62 00 b4 	lw r2,(r11+180)                                
 8004500:	34 01 00 02 	mvi r1,2                                       
 8004504:	44 41 00 13 	be r2,r1,8004550 <rtems_termios_open+0x11c>    
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
 8004508:	29 a1 00 00 	lw r1,(r13+0)                                  
 800450c:	f8 00 0a 6e 	calli 8006ec4 <rtems_semaphore_release>        
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
 8004510:	b9 c0 08 00 	mv r1,r14                                      
 8004514:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004518:	2b 8b 00 34 	lw r11,(sp+52)                                 
 800451c:	2b 8c 00 30 	lw r12,(sp+48)                                 
 8004520:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 8004524:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8004528:	2b 8f 00 24 	lw r15,(sp+36)                                 
 800452c:	2b 90 00 20 	lw r16,(sp+32)                                 
 8004530:	2b 91 00 1c 	lw r17,(sp+28)                                 
 8004534:	2b 92 00 18 	lw r18,(sp+24)                                 
 8004538:	2b 93 00 14 	lw r19,(sp+20)                                 
 800453c:	2b 94 00 10 	lw r20,(sp+16)                                 
 8004540:	2b 95 00 0c 	lw r21,(sp+12)                                 
 8004544:	2b 96 00 08 	lw r22,(sp+8)                                  
 8004548:	37 9c 00 34 	addi sp,sp,52                                  
 800454c:	c3 a0 00 00 	ret                                            
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_start(                                          
 8004550:	29 61 00 c4 	lw r1,(r11+196)                                
 8004554:	78 02 08 00 	mvhi r2,0x800                                  
 8004558:	38 42 60 0c 	ori r2,r2,0x600c                               
 800455c:	b9 60 18 00 	mv r3,r11                                      
 8004560:	f8 00 0b 56 	calli 80072b8 <rtems_task_start>               
 8004564:	b8 20 60 00 	mv r12,r1                                      
        tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004568:	5c 20 00 bd 	bne r1,r0,800485c <rtems_termios_open+0x428>   <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
                                                                      
      sc = rtems_task_start(                                          
 800456c:	29 61 00 c8 	lw r1,(r11+200)                                
 8004570:	78 02 08 00 	mvhi r2,0x800                                  
 8004574:	38 42 43 b0 	ori r2,r2,0x43b0                               
 8004578:	b9 60 18 00 	mv r3,r11                                      
 800457c:	f8 00 0b 4f 	calli 80072b8 <rtems_task_start>               
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004580:	44 2c ff e2 	be r1,r12,8004508 <rtems_termios_open+0xd4>    <== ALWAYS TAKEN
 8004584:	e0 00 00 b6 	bi 800485c <rtems_termios_open+0x428>          <== NOT EXECUTED
    static char c = 'a';                                              
                                                                      
    /*                                                                
     * Create a new device                                            
     */                                                               
    tty = calloc (1, sizeof (struct rtems_termios_tty));              
 8004588:	34 01 00 01 	mvi r1,1                                       
 800458c:	34 02 00 e8 	mvi r2,232                                     
 8004590:	fb ff f5 80 	calli 8001b90 <calloc>                         
 8004594:	b8 20 88 00 	mv r17,r1                                      
 8004598:	b8 20 58 00 	mv r11,r1                                      
    if (tty == NULL) {                                                
 800459c:	44 20 00 a1 	be r1,r0,8004820 <rtems_termios_open+0x3ec>    
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw input buffer                                      
     */                                                               
    tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;                       
 80045a0:	78 01 08 02 	mvhi r1,0x802                                  
 80045a4:	38 21 81 44 	ori r1,r1,0x8144                               
 80045a8:	28 21 00 00 	lw r1,(r1+0)                                   
 80045ac:	5a 21 00 64 	sw (r17+100),r1                                
    tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);               
 80045b0:	2a 21 00 64 	lw r1,(r17+100)                                
 80045b4:	fb ff f7 df 	calli 8002530 <malloc>                         
 80045b8:	5a 21 00 58 	sw (r17+88),r1                                 
 80045bc:	b8 20 a8 00 	mv r21,r1                                      
    if (tty->rawInBuf.theBuf == NULL) {                               
 80045c0:	44 20 00 96 	be r1,r0,8004818 <rtems_termios_open+0x3e4>    
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw output buffer                                     
     */                                                               
    tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;                     
 80045c4:	78 01 08 02 	mvhi r1,0x802                                  
 80045c8:	38 21 81 48 	ori r1,r1,0x8148                               
 80045cc:	28 21 00 00 	lw r1,(r1+0)                                   
 80045d0:	5a 21 00 88 	sw (r17+136),r1                                
    tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);             
 80045d4:	2a 21 00 88 	lw r1,(r17+136)                                
 80045d8:	fb ff f7 d6 	calli 8002530 <malloc>                         
 80045dc:	5a 21 00 7c 	sw (r17+124),r1                                
 80045e0:	b8 20 b0 00 	mv r22,r1                                      
    if (tty->rawOutBuf.theBuf == NULL) {                              
 80045e4:	44 20 00 8b 	be r1,r0,8004810 <rtems_termios_open+0x3dc>    
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
 80045e8:	78 01 08 02 	mvhi r1,0x802                                  
 80045ec:	38 21 81 40 	ori r1,r1,0x8140                               
 80045f0:	28 21 00 00 	lw r1,(r1+0)                                   
 80045f4:	fb ff f7 cf 	calli 8002530 <malloc>                         
 80045f8:	5a 21 00 1c 	sw (r17+28),r1                                 
    if (tty->cbuf == NULL) {                                          
 80045fc:	44 20 00 83 	be r1,r0,8004808 <rtems_termios_open+0x3d4>    
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * Initialize wakeup callbacks                                    
     */                                                               
    tty->tty_snd.sw_pfn = NULL;                                       
 8004600:	5a 20 00 d4 	sw (r17+212),r0                                
    tty->tty_snd.sw_arg = NULL;                                       
 8004604:	5a 20 00 d8 	sw (r17+216),r0                                
    tty->tty_rcv.sw_pfn = NULL;                                       
 8004608:	5a 20 00 dc 	sw (r17+220),r0                                
    tty->tty_rcv.sw_arg = NULL;                                       
 800460c:	5a 20 00 e0 	sw (r17+224),r0                                
    tty->tty_rcvwakeup  = 0;                                          
 8004610:	5a 20 00 e4 	sw (r17+228),r0                                
                                                                      
    /*                                                                
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
 8004614:	5a 32 00 00 	sw (r17+0),r18                                 
    tty->back = NULL;                                                 
 8004618:	5a 20 00 04 	sw (r17+4),r0                                  
    if (rtems_termios_ttyHead != NULL)                                
 800461c:	46 40 00 02 	be r18,r0,8004624 <rtems_termios_open+0x1f0>   <== ALWAYS TAKEN
      rtems_termios_ttyHead->back = tty;                              
 8004620:	5a 51 00 04 	sw (r18+4),r17                                 <== NOT EXECUTED
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
 8004624:	78 01 08 02 	mvhi r1,0x802                                  
 8004628:	38 21 8e 34 	ori r1,r1,0x8e34                               
 800462c:	28 22 00 00 	lw r2,(r1+0)                                   
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
 8004630:	5a 11 00 00 	sw (r16+0),r17                                 
    if (rtems_termios_ttyTail == NULL)                                
 8004634:	44 40 00 a5 	be r2,r0,80048c8 <rtems_termios_open+0x494>    <== ALWAYS TAKEN
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'i', c),                            
 8004638:	78 10 08 02 	mvhi r16,0x802                                 
    tty->major = major;                                               
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 800463c:	78 05 08 02 	mvhi r5,0x802                                  
 8004640:	38 a5 61 4c 	ori r5,r5,0x614c                               
      rtems_build_name ('T', 'R', 'i', c),                            
 8004644:	3a 10 81 4c 	ori r16,r16,0x814c                             
 8004648:	42 04 00 00 	lbu r4,(r16+0)                                 
    tty->major = major;                                               
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 800464c:	28 a1 00 00 	lw r1,(r5+0)                                   
 8004650:	34 02 00 01 	mvi r2,1                                       
 8004654:	34 03 00 54 	mvi r3,84                                      
 8004658:	b8 81 08 00 	or r1,r4,r1                                    
 800465c:	36 25 00 14 	addi r5,r17,20                                 
 8004660:	34 04 00 00 	mvi r4,0                                       
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
      rtems_termios_ttyTail = tty;                                    
                                                                      
    tty->minor = minor;                                               
 8004664:	5a 2f 00 10 	sw (r17+16),r15                                
    tty->major = major;                                               
 8004668:	5a 2c 00 0c 	sw (r17+12),r12                                
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
 800466c:	f8 00 08 ff 	calli 8006a68 <rtems_semaphore_create>         
 8004670:	b8 20 a8 00 	mv r21,r1                                      
      rtems_build_name ('T', 'R', 'i', c),                            
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->isem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
 8004674:	5c 20 00 7a 	bne r1,r0,800485c <rtems_termios_open+0x428>   <== NEVER TAKEN
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 8004678:	78 05 08 02 	mvhi r5,0x802                                  
 800467c:	38 a5 61 50 	ori r5,r5,0x6150                               
      rtems_build_name ('T', 'R', 'o', c),                            
 8004680:	42 04 00 00 	lbu r4,(r16+0)                                 
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->isem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 8004684:	28 a1 00 00 	lw r1,(r5+0)                                   
 8004688:	34 02 00 01 	mvi r2,1                                       
 800468c:	34 03 00 54 	mvi r3,84                                      
 8004690:	b8 81 08 00 	or r1,r4,r1                                    
 8004694:	36 25 00 18 	addi r5,r17,24                                 
 8004698:	34 04 00 00 	mvi r4,0                                       
 800469c:	f8 00 08 f3 	calli 8006a68 <rtems_semaphore_create>         
 80046a0:	b8 20 90 00 	mv r18,r1                                      
      rtems_build_name ('T', 'R', 'o', c),                            
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->osem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
 80046a4:	5c 35 00 6e 	bne r1,r21,800485c <rtems_termios_open+0x428>  <== NEVER TAKEN
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 80046a8:	78 05 08 02 	mvhi r5,0x802                                  
 80046ac:	38 a5 61 54 	ori r5,r5,0x6154                               
      rtems_build_name ('T', 'R', 'x', c),                            
 80046b0:	42 04 00 00 	lbu r4,(r16+0)                                 
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->osem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
 80046b4:	28 a1 00 00 	lw r1,(r5+0)                                   
 80046b8:	34 02 00 00 	mvi r2,0                                       
 80046bc:	34 03 00 20 	mvi r3,32                                      
 80046c0:	b8 81 08 00 	or r1,r4,r1                                    
 80046c4:	36 25 00 8c 	addi r5,r17,140                                
 80046c8:	34 04 00 00 	mvi r4,0                                       
 80046cc:	f8 00 08 e7 	calli 8006a68 <rtems_semaphore_create>         
 80046d0:	b8 20 a8 00 	mv r21,r1                                      
      rtems_build_name ('T', 'R', 'x', c),                            
      0,                                                              
      RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,                     
      RTEMS_NO_PRIORITY,                                              
      &tty->rawOutBuf.Semaphore);                                     
    if (sc != RTEMS_SUCCESSFUL)                                       
 80046d4:	5c 32 00 62 	bne r1,r18,800485c <rtems_termios_open+0x428>  <== NEVER TAKEN
    tty->rawOutBufState = rob_idle;                                   
                                                                      
    /*                                                                
     * Set callbacks                                                  
     */                                                               
    tty->device = *callbacks;                                         
 80046d8:	2a 82 00 18 	lw r2,(r20+24)                                 
 80046dc:	2a 88 00 00 	lw r8,(r20+0)                                  
 80046e0:	2a 87 00 04 	lw r7,(r20+4)                                  
 80046e4:	2a 86 00 08 	lw r6,(r20+8)                                  
 80046e8:	2a 85 00 0c 	lw r5,(r20+12)                                 
 80046ec:	2a 84 00 10 	lw r4,(r20+16)                                 
 80046f0:	2a 83 00 14 	lw r3,(r20+20)                                 
 80046f4:	2a 81 00 1c 	lw r1,(r20+28)                                 
 80046f8:	5a 22 00 b0 	sw (r17+176),r2                                
      RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,                     
      RTEMS_NO_PRIORITY,                                              
      &tty->rawOutBuf.Semaphore);                                     
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    tty->rawOutBufState = rob_idle;                                   
 80046fc:	5a 20 00 94 	sw (r17+148),r0                                
                                                                      
    /*                                                                
     * Set callbacks                                                  
     */                                                               
    tty->device = *callbacks;                                         
 8004700:	5a 28 00 98 	sw (r17+152),r8                                
 8004704:	5a 27 00 9c 	sw (r17+156),r7                                
 8004708:	5a 26 00 a0 	sw (r17+160),r6                                
 800470c:	5a 25 00 a4 	sw (r17+164),r5                                
 8004710:	5a 24 00 a8 	sw (r17+168),r4                                
 8004714:	5a 23 00 ac 	sw (r17+172),r3                                
 8004718:	5a 21 00 b4 	sw (r17+180),r1                                
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
 800471c:	34 02 00 02 	mvi r2,2                                       
 8004720:	44 22 00 50 	be r1,r2,8004860 <rtems_termios_open+0x42c>    
           &tty->rxTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
 8004724:	2a 21 00 a0 	lw r1,(r17+160)                                
 8004728:	44 20 00 42 	be r1,r0,8004830 <rtems_termios_open+0x3fc>    
 800472c:	2a 22 00 b4 	lw r2,(r17+180)                                
 8004730:	34 01 00 02 	mvi r1,2                                       
 8004734:	44 41 00 3f 	be r2,r1,8004830 <rtems_termios_open+0x3fc>    
    }                                                                 
                                                                      
    /*                                                                
     * Set default parameters                                         
     */                                                               
    tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;           
 8004738:	34 05 25 02 	mvi r5,9474                                    
 800473c:	5a 25 00 30 	sw (r17+48),r5                                 
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
 8004740:	34 05 18 05 	mvi r5,6149                                    
 8004744:	5a 25 00 34 	sw (r17+52),r5                                 
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
 8004748:	34 05 08 bd 	mvi r5,2237                                    
 800474c:	5a 25 00 38 	sw (r17+56),r5                                 
    tty->termios.c_lflag =                                            
 8004750:	34 a5 79 7e 	addi r5,r5,31102                               
 8004754:	5a 25 00 3c 	sw (r17+60),r5                                 
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
 8004758:	34 05 00 03 	mvi r5,3                                       
 800475c:	32 25 00 41 	sb (r17+65),r5                                 
    tty->termios.c_cc[VQUIT] = '\034';                                
 8004760:	34 05 00 1c 	mvi r5,28                                      
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    tty->termios.c_cc[VLNEXT] = '\026';                               
                                                                      
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
 8004764:	5a 20 00 b8 	sw (r17+184),r0                                
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
 8004768:	32 25 00 42 	sb (r17+66),r5                                 
    tty->termios.c_cc[VERASE] = '\177';                               
 800476c:	34 05 00 7f 	mvi r5,127                                     
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
 8004770:	2a 24 00 64 	lw r4,(r17+100)                                
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
 8004774:	32 25 00 43 	sb (r17+67),r5                                 
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 8004778:	2a 21 00 64 	lw r1,(r17+100)                                
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
 800477c:	34 05 00 15 	mvi r5,21                                      
 8004780:	32 25 00 44 	sb (r17+68),r5                                 
    tty->termios.c_cc[VEOF] = '\004';                                 
 8004784:	34 05 00 04 	mvi r5,4                                       
 8004788:	32 25 00 45 	sb (r17+69),r5                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
 800478c:	34 05 00 11 	mvi r5,17                                      
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 8004790:	b4 21 18 00 	add r3,r1,r1                                   
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
 8004794:	32 25 00 49 	sb (r17+73),r5                                 
    tty->termios.c_cc[VSTOP] = '\023';                                
 8004798:	34 05 00 13 	mvi r5,19                                      
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 800479c:	b4 61 08 00 	add r1,r3,r1                                   
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
 80047a0:	32 25 00 4a 	sb (r17+74),r5                                 
    tty->termios.c_cc[VSUSP] = '\032';                                
 80047a4:	34 05 00 1a 	mvi r5,26                                      
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 80047a8:	42 02 00 00 	lbu r2,(r16+0)                                 
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 80047ac:	00 21 00 01 	srui r1,r1,1                                   
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
 80047b0:	32 25 00 4b 	sb (r17+75),r5                                 
    tty->termios.c_cc[VREPRINT] = '\022';                             
 80047b4:	34 05 00 12 	mvi r5,18                                      
 80047b8:	32 25 00 4d 	sb (r17+77),r5                                 
    tty->termios.c_cc[VDISCARD] = '\017';                             
 80047bc:	34 05 00 0f 	mvi r5,15                                      
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 80047c0:	00 21 00 01 	srui r1,r1,1                                   
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
 80047c4:	00 84 00 01 	srui r4,r4,1                                   
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
 80047c8:	32 25 00 4e 	sb (r17+78),r5                                 
    tty->termios.c_cc[VWERASE] = '\027';                              
 80047cc:	34 05 00 17 	mvi r5,23                                      
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 80047d0:	34 43 00 01 	addi r3,r2,1                                   
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
 80047d4:	32 25 00 4f 	sb (r17+79),r5                                 
    tty->termios.c_cc[VLNEXT] = '\026';                               
 80047d8:	34 05 00 16 	mvi r5,22                                      
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
 80047dc:	5a 21 00 c0 	sw (r17+192),r1                                
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
 80047e0:	32 20 00 4c 	sb (r17+76),r0                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
 80047e4:	32 20 00 51 	sb (r17+81),r0                                 
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    tty->termios.c_cc[VLNEXT] = '\026';                               
 80047e8:	32 25 00 50 	sb (r17+80),r5                                 
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
 80047ec:	5a 24 00 bc 	sw (r17+188),r4                                
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
 80047f0:	32 03 00 00 	sb (r16+0),r3                                  
 80047f4:	34 01 00 7a 	mvi r1,122                                     
 80047f8:	5c 41 ff 35 	bne r2,r1,80044cc <rtems_termios_open+0x98>    
      c = 'a';                                                        
 80047fc:	34 01 00 61 	mvi r1,97                                      
 8004800:	32 01 00 00 	sb (r16+0),r1                                  
 8004804:	e3 ff ff 32 	bi 80044cc <rtems_termios_open+0x98>           
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
    if (tty->cbuf == NULL) {                                          
            free((void *)(tty->rawOutBuf.theBuf));                    
 8004808:	ba c0 08 00 	mv r1,r22                                      
 800480c:	fb ff f5 db 	calli 8001f78 <free>                           
            free((void *)(tty->rawInBuf.theBuf));                     
 8004810:	ba a0 08 00 	mv r1,r21                                      
 8004814:	fb ff f5 d9 	calli 8001f78 <free>                           
            free(tty);                                                
 8004818:	ba 20 08 00 	mv r1,r17                                      
 800481c:	fb ff f5 d7 	calli 8001f78 <free>                           
      rtems_semaphore_release (rtems_termios_ttyMutex);               
 8004820:	29 a1 00 00 	lw r1,(r13+0)                                  
      return RTEMS_NO_MEMORY;                                         
 8004824:	34 0e 00 1a 	mvi r14,26                                     
    tty->cbuf  = malloc (CBUFSIZE);                                   
    if (tty->cbuf == NULL) {                                          
            free((void *)(tty->rawOutBuf.theBuf));                    
            free((void *)(tty->rawInBuf.theBuf));                     
            free(tty);                                                
      rtems_semaphore_release (rtems_termios_ttyMutex);               
 8004828:	f8 00 09 a7 	calli 8006ec4 <rtems_semaphore_release>        
      return RTEMS_NO_MEMORY;                                         
 800482c:	e3 ff ff 39 	bi 8004510 <rtems_termios_open+0xdc>           
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
 8004830:	78 05 08 02 	mvhi r5,0x802                                  
 8004834:	38 a5 61 60 	ori r5,r5,0x6160                               
        rtems_build_name ('T', 'R', 'r', c),                          
 8004838:	42 04 00 00 	lbu r4,(r16+0)                                 
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
 800483c:	28 a1 00 00 	lw r1,(r5+0)                                   
 8004840:	34 02 00 00 	mvi r2,0                                       
 8004844:	34 03 00 24 	mvi r3,36                                      
 8004848:	b8 81 08 00 	or r1,r4,r1                                    
 800484c:	36 25 00 68 	addi r5,r17,104                                
 8004850:	34 04 00 00 	mvi r4,0                                       
 8004854:	f8 00 08 85 	calli 8006a68 <rtems_semaphore_create>         
        rtems_build_name ('T', 'R', 'r', c),                          
        0,                                                            
        RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,               
        RTEMS_NO_PRIORITY,                                            
        &tty->rawInBuf.Semaphore);                                    
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004858:	44 20 ff b8 	be r1,r0,8004738 <rtems_termios_open+0x304>    <== ALWAYS TAKEN
        rtems_fatal_error_occurred (sc);                              
                                                                      
      sc = rtems_task_start(                                          
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
 800485c:	f8 00 0b d4 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
 8004860:	78 05 08 02 	mvhi r5,0x802                                  
 8004864:	38 a5 61 58 	ori r5,r5,0x6158                               
                                   rtems_build_name ('T', 'x', 'T', c),
 8004868:	42 04 00 00 	lbu r4,(r16+0)                                 
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
 800486c:	28 a1 00 00 	lw r1,(r5+0)                                   
 8004870:	34 02 00 0a 	mvi r2,10                                      
 8004874:	34 03 04 00 	mvi r3,1024                                    
 8004878:	b8 81 08 00 	or r1,r4,r1                                    
 800487c:	34 05 00 00 	mvi r5,0                                       
 8004880:	34 04 05 00 	mvi r4,1280                                    
 8004884:	36 26 00 c8 	addi r6,r17,200                                
 8004888:	f8 00 09 e2 	calli 8007010 <rtems_task_create>              
 800488c:	b8 20 90 00 	mv r18,r1                                      
           TERMIOS_TXTASK_STACKSIZE,                                  
           RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |                    
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
 8004890:	5c 35 ff f3 	bne r1,r21,800485c <rtems_termios_open+0x428>  <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
 8004894:	78 05 08 02 	mvhi r5,0x802                                  
 8004898:	38 a5 61 5c 	ori r5,r5,0x615c                               
                                   rtems_build_name ('R', 'x', 'T', c),
 800489c:	42 04 00 00 	lbu r4,(r16+0)                                 
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
 80048a0:	28 a1 00 00 	lw r1,(r5+0)                                   
 80048a4:	34 02 00 09 	mvi r2,9                                       
 80048a8:	34 03 04 00 	mvi r3,1024                                    
 80048ac:	b8 81 08 00 	or r1,r4,r1                                    
 80048b0:	34 05 00 00 	mvi r5,0                                       
 80048b4:	34 04 05 00 	mvi r4,1280                                    
 80048b8:	36 26 00 c4 	addi r6,r17,196                                
 80048bc:	f8 00 09 d5 	calli 8007010 <rtems_task_create>              
           TERMIOS_RXTASK_STACKSIZE,                                  
           RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |                    
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->rxTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
 80048c0:	44 32 ff 99 	be r1,r18,8004724 <rtems_termios_open+0x2f0>   <== ALWAYS TAKEN
 80048c4:	e3 ff ff e6 	bi 800485c <rtems_termios_open+0x428>          <== NOT EXECUTED
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
      rtems_termios_ttyTail = tty;                                    
 80048c8:	58 31 00 00 	sw (r1+0),r17                                  
 80048cc:	e3 ff ff 5b 	bi 8004638 <rtems_termios_open+0x204>          
                                                                      

08004fcc <rtems_termios_puts>: * Send characters to device-specific code */ void rtems_termios_puts ( const void *_buf, size_t len, struct rtems_termios_tty *tty) {
 8004fcc:	37 9c ff d8 	addi sp,sp,-40                                 
 8004fd0:	5b 8b 00 24 	sw (sp+36),r11                                 
 8004fd4:	5b 8c 00 20 	sw (sp+32),r12                                 
 8004fd8:	5b 8d 00 1c 	sw (sp+28),r13                                 
 8004fdc:	5b 8e 00 18 	sw (sp+24),r14                                 
 8004fe0:	5b 8f 00 14 	sw (sp+20),r15                                 
 8004fe4:	5b 90 00 10 	sw (sp+16),r16                                 
 8004fe8:	5b 91 00 0c 	sw (sp+12),r17                                 
 8004fec:	5b 92 00 08 	sw (sp+8),r18                                  
 8004ff0:	5b 9d 00 04 	sw (sp+4),ra                                   
  const unsigned char *buf = _buf;                                    
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
 8004ff4:	28 64 00 b4 	lw r4,(r3+180)                                 
 * Send characters to device-specific code                            
 */                                                                   
void                                                                  
rtems_termios_puts (                                                  
  const void *_buf, size_t len, struct rtems_termios_tty *tty)        
{                                                                     
 8004ff8:	b8 60 58 00 	mv r11,r3                                      
 8004ffc:	b8 40 88 00 	mv r17,r2                                      
 8005000:	b8 20 18 00 	mv r3,r1                                       
  const unsigned char *buf = _buf;                                    
 8005004:	b8 20 80 00 	mv r16,r1                                      
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
 8005008:	44 80 00 39 	be r4,r0,80050ec <rtems_termios_puts+0x120>    
    (*tty->device.write)(tty->minor, buf, len);                       
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
 800500c:	29 6f 00 80 	lw r15,(r11+128)                               
  while (len) {                                                       
 8005010:	44 40 00 3c 	be r2,r0,8005100 <rtems_termios_puts+0x134>    <== NEVER TAKEN
     *                                                                
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    rtems_interrupt_disable (level);                                  
 8005014:	34 0d ff fe 	mvi r13,-2                                     
    while (newHead == tty->rawOutBuf.Tail) {                          
      tty->rawOutBufState = rob_wait;                                 
 8005018:	34 0e 00 02 	mvi r14,2                                      
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      } else {                                                        
        /* remember that output has been stopped due to flow ctrl*/   
        tty->flow_ctrl |= FL_OSTOP;                                   
      }                                                               
      tty->rawOutBufState = rob_busy;                                 
 800501c:	34 12 00 01 	mvi r18,1                                      
     *  len -= ncopy                                                  
     *                                                                
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
 8005020:	29 62 00 88 	lw r2,(r11+136)                                
 8005024:	35 e1 00 01 	addi r1,r15,1                                  
 8005028:	f8 00 7d 25 	calli 80244bc <__umodsi3>                      
 800502c:	b8 20 78 00 	mv r15,r1                                      
    rtems_interrupt_disable (level);                                  
 8005030:	90 00 20 00 	rcsr r4,IE                                     
 8005034:	a0 8d 08 00 	and r1,r4,r13                                  
 8005038:	d0 01 00 00 	wcsr IE,r1                                     
    while (newHead == tty->rawOutBuf.Tail) {                          
 800503c:	29 6c 00 84 	lw r12,(r11+132)                               
 8005040:	5d 8f 00 0d 	bne r12,r15,8005074 <rtems_termios_puts+0xa8>  
      tty->rawOutBufState = rob_wait;                                 
 8005044:	59 6e 00 94 	sw (r11+148),r14                               
      rtems_interrupt_enable (level);                                 
 8005048:	d0 04 00 00 	wcsr IE,r4                                     
      sc = rtems_semaphore_obtain(                                    
 800504c:	29 61 00 8c 	lw r1,(r11+140)                                
 8005050:	34 02 00 00 	mvi r2,0                                       
 8005054:	34 03 00 00 	mvi r3,0                                       
 8005058:	f8 00 07 3f 	calli 8006d54 <rtems_semaphore_obtain>         
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
 800505c:	5c 20 00 34 	bne r1,r0,800512c <rtems_termios_puts+0x160>   <== NEVER TAKEN
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
 8005060:	90 00 20 00 	rcsr r4,IE                                     
 8005064:	a0 8d 28 00 	and r5,r4,r13                                  
 8005068:	d0 05 00 00 	wcsr IE,r5                                     
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    rtems_interrupt_disable (level);                                  
    while (newHead == tty->rawOutBuf.Tail) {                          
 800506c:	29 65 00 84 	lw r5,(r11+132)                                
 8005070:	44 ac ff f5 	be r5,r12,8005044 <rtems_termios_puts+0x78>    <== NEVER TAKEN
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
 8005074:	29 61 00 80 	lw r1,(r11+128)                                
 8005078:	29 63 00 7c 	lw r3,(r11+124)                                
 800507c:	42 02 00 00 	lbu r2,(r16+0)                                 
 8005080:	b4 61 08 00 	add r1,r3,r1                                   
 8005084:	30 22 00 00 	sb (r1+0),r2                                   
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
 8005088:	29 61 00 94 	lw r1,(r11+148)                                
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    tty->rawOutBuf.Head = newHead;                                    
 800508c:	59 6f 00 80 	sw (r11+128),r15                               
    if (tty->rawOutBufState == rob_idle) {                            
 8005090:	5c 20 00 08 	bne r1,r0,80050b0 <rtems_termios_puts+0xe4>    
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
 8005094:	29 62 00 b8 	lw r2,(r11+184)                                
 8005098:	20 42 00 10 	andi r2,r2,0x10                                
 800509c:	44 41 00 0a 	be r2,r1,80050c4 <rtems_termios_puts+0xf8>     <== ALWAYS TAKEN
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      } else {                                                        
        /* remember that output has been stopped due to flow ctrl*/   
        tty->flow_ctrl |= FL_OSTOP;                                   
 80050a0:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 80050a4:	38 21 00 20 	ori r1,r1,0x20                                 <== NOT EXECUTED
 80050a8:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy;                                 
 80050ac:	59 72 00 94 	sw (r11+148),r18                               
    }                                                                 
    rtems_interrupt_enable (level);                                   
 80050b0:	d0 04 00 00 	wcsr IE,r4                                     
    len--;                                                            
 80050b4:	36 31 ff ff 	addi r17,r17,-1                                
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, buf, len);                       
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
  while (len) {                                                       
 80050b8:	46 20 00 12 	be r17,r0,8005100 <rtems_termios_puts+0x134>   
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
 80050bc:	36 10 00 01 	addi r16,r16,1                                 
 80050c0:	e3 ff ff d8 	bi 8005020 <rtems_termios_puts+0x54>           
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
        (*tty->device.write)(                                         
 80050c4:	29 63 00 7c 	lw r3,(r11+124)                                
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
 80050c8:	29 62 00 84 	lw r2,(r11+132)                                
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
        (*tty->device.write)(                                         
 80050cc:	29 65 00 a4 	lw r5,(r11+164)                                
 80050d0:	29 61 00 10 	lw r1,(r11+16)                                 
 80050d4:	b4 62 10 00 	add r2,r3,r2                                   
 80050d8:	5b 84 00 28 	sw (sp+40),r4                                  
 80050dc:	34 03 00 01 	mvi r3,1                                       
 80050e0:	d8 a0 00 00 	call r5                                        
 80050e4:	2b 84 00 28 	lw r4,(sp+40)                                  
 80050e8:	e3 ff ff f1 	bi 80050ac <rtems_termios_puts+0xe0>           
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, buf, len);                       
 80050ec:	29 64 00 a4 	lw r4,(r11+164)                                
 80050f0:	29 61 00 10 	lw r1,(r11+16)                                 
 80050f4:	b8 60 10 00 	mv r2,r3                                       
 80050f8:	ba 20 18 00 	mv r3,r17                                      
 80050fc:	d8 80 00 00 	call r4                                        
      tty->rawOutBufState = rob_busy;                                 
    }                                                                 
    rtems_interrupt_enable (level);                                   
    len--;                                                            
  }                                                                   
}                                                                     
 8005100:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8005104:	2b 8b 00 24 	lw r11,(sp+36)                                 
 8005108:	2b 8c 00 20 	lw r12,(sp+32)                                 
 800510c:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 8005110:	2b 8e 00 18 	lw r14,(sp+24)                                 
 8005114:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8005118:	2b 90 00 10 	lw r16,(sp+16)                                 
 800511c:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8005120:	2b 92 00 08 	lw r18,(sp+8)                                  
 8005124:	37 9c 00 28 	addi sp,sp,40                                  
 8005128:	c3 a0 00 00 	ret                                            
      tty->rawOutBufState = rob_wait;                                 
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
 800512c:	f8 00 09 a0 	calli 80077ac <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

080058ec <rtems_termios_read>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_termios_read (void *arg) {
 80058ec:	37 9c ff cc 	addi sp,sp,-52                                 
 80058f0:	5b 8b 00 34 	sw (sp+52),r11                                 
 80058f4:	5b 8c 00 30 	sw (sp+48),r12                                 
 80058f8:	5b 8d 00 2c 	sw (sp+44),r13                                 
 80058fc:	5b 8e 00 28 	sw (sp+40),r14                                 
 8005900:	5b 8f 00 24 	sw (sp+36),r15                                 
 8005904:	5b 90 00 20 	sw (sp+32),r16                                 
 8005908:	5b 91 00 1c 	sw (sp+28),r17                                 
 800590c:	5b 92 00 18 	sw (sp+24),r18                                 
 8005910:	5b 93 00 14 	sw (sp+20),r19                                 
 8005914:	5b 94 00 10 	sw (sp+16),r20                                 
 8005918:	5b 95 00 0c 	sw (sp+12),r21                                 
 800591c:	5b 96 00 08 	sw (sp+8),r22                                  
 8005920:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005924:	b8 20 88 00 	mv r17,r1                                      
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8005928:	28 21 00 00 	lw r1,(r1+0)                                   
  uint32_t   count = args->count;                                     
  char      *buffer = args->buffer;                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 800592c:	34 02 00 00 	mvi r2,0                                       
 8005930:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_read (void *arg)                                        
{                                                                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8005934:	28 2b 00 28 	lw r11,(r1+40)                                 
  uint32_t   count = args->count;                                     
 8005938:	2a 2f 00 0c 	lw r15,(r17+12)                                
  char      *buffer = args->buffer;                                   
 800593c:	2a 30 00 08 	lw r16,(r17+8)                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8005940:	29 61 00 14 	lw r1,(r11+20)                                 
 8005944:	f8 00 05 04 	calli 8006d54 <rtems_semaphore_obtain>         
 8005948:	b8 20 90 00 	mv r18,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 800594c:	5c 20 00 13 	bne r1,r0,8005998 <rtems_termios_read+0xac>    <== NEVER TAKEN
    return sc;                                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_read != NULL) {             
 8005950:	29 63 00 cc 	lw r3,(r11+204)                                
 8005954:	78 01 08 02 	mvhi r1,0x802                                  
 8005958:	38 21 88 30 	ori r1,r1,0x8830                               
 800595c:	b4 63 18 00 	add r3,r3,r3                                   
 8005960:	b4 63 18 00 	add r3,r3,r3                                   
 8005964:	b4 63 18 00 	add r3,r3,r3                                   
 8005968:	b4 63 18 00 	add r3,r3,r3                                   
 800596c:	b4 63 18 00 	add r3,r3,r3                                   
 8005970:	b4 23 18 00 	add r3,r1,r3                                   
 8005974:	28 63 00 08 	lw r3,(r3+8)                                   
 8005978:	44 72 00 18 	be r3,r18,80059d8 <rtems_termios_read+0xec>    
    sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);          
 800597c:	b9 60 08 00 	mv r1,r11                                      
 8005980:	ba 20 10 00 	mv r2,r17                                      
 8005984:	d8 60 00 00 	call r3                                        
 8005988:	b8 20 90 00 	mv r18,r1                                      
    tty->tty_rcvwakeup = 0;                                           
    rtems_semaphore_release (tty->isem);                              
 800598c:	29 61 00 14 	lw r1,(r11+20)                                 
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_read != NULL) {             
    sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);          
    tty->tty_rcvwakeup = 0;                                           
 8005990:	59 60 00 e4 	sw (r11+228),r0                                
    rtems_semaphore_release (tty->isem);                              
 8005994:	f8 00 05 4c 	calli 8006ec4 <rtems_semaphore_release>        
  }                                                                   
  args->bytes_moved = args->count - count;                            
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
  return sc;                                                          
}                                                                     
 8005998:	ba 40 08 00 	mv r1,r18                                      
 800599c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80059a0:	2b 8b 00 34 	lw r11,(sp+52)                                 
 80059a4:	2b 8c 00 30 	lw r12,(sp+48)                                 
 80059a8:	2b 8d 00 2c 	lw r13,(sp+44)                                 
 80059ac:	2b 8e 00 28 	lw r14,(sp+40)                                 
 80059b0:	2b 8f 00 24 	lw r15,(sp+36)                                 
 80059b4:	2b 90 00 20 	lw r16,(sp+32)                                 
 80059b8:	2b 91 00 1c 	lw r17,(sp+28)                                 
 80059bc:	2b 92 00 18 	lw r18,(sp+24)                                 
 80059c0:	2b 93 00 14 	lw r19,(sp+20)                                 
 80059c4:	2b 94 00 10 	lw r20,(sp+16)                                 
 80059c8:	2b 95 00 0c 	lw r21,(sp+12)                                 
 80059cc:	2b 96 00 08 	lw r22,(sp+8)                                  
 80059d0:	37 9c 00 34 	addi sp,sp,52                                  
 80059d4:	c3 a0 00 00 	ret                                            
    tty->tty_rcvwakeup = 0;                                           
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
 80059d8:	29 62 00 24 	lw r2,(r11+36)                                 
 80059dc:	29 61 00 20 	lw r1,(r11+32)                                 
 80059e0:	44 41 00 15 	be r2,r1,8005a34 <rtems_termios_read+0x148>    <== ALWAYS TAKEN
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
 80059e4:	45 e0 00 0d 	be r15,r0,8005a18 <rtems_termios_read+0x12c>   <== NEVER TAKEN
 80059e8:	29 63 00 24 	lw r3,(r11+36)                                 
 80059ec:	29 61 00 20 	lw r1,(r11+32)                                 
 80059f0:	4c 61 00 0a 	bge r3,r1,8005a18 <rtems_termios_read+0x12c>   
    *buffer++ = tty->cbuf[tty->cindex++];                             
 80059f4:	29 62 00 1c 	lw r2,(r11+28)                                 
    count--;                                                          
 80059f8:	35 ef ff ff 	addi r15,r15,-1                                
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
 80059fc:	b4 43 10 00 	add r2,r2,r3                                   
 8005a00:	40 41 00 00 	lbu r1,(r2+0)                                  
 8005a04:	34 63 00 01 	addi r3,r3,1                                   
 8005a08:	32 01 00 00 	sb (r16+0),r1                                  
 8005a0c:	59 63 00 24 	sw (r11+36),r3                                 
 8005a10:	36 10 00 01 	addi r16,r16,1                                 
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
 8005a14:	5d e0 ff f6 	bne r15,r0,80059ec <rtems_termios_read+0x100>  
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
 8005a18:	2a 22 00 0c 	lw r2,(r17+12)                                 
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
 8005a1c:	29 61 00 14 	lw r1,(r11+20)                                 
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
 8005a20:	c8 4f 78 00 	sub r15,r2,r15                                 
 8005a24:	5a 2f 00 14 	sw (r17+20),r15                                
  tty->tty_rcvwakeup = 0;                                             
 8005a28:	59 60 00 e4 	sw (r11+228),r0                                
  rtems_semaphore_release (tty->isem);                                
 8005a2c:	f8 00 05 26 	calli 8006ec4 <rtems_semaphore_release>        
  return sc;                                                          
 8005a30:	e3 ff ff da 	bi 8005998 <rtems_termios_read+0xac>           
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
    tty->read_start_column = tty->column;                             
 8005a34:	29 61 00 28 	lw r1,(r11+40)                                 
    if (tty->device.pollRead != NULL &&                               
 8005a38:	29 62 00 a0 	lw r2,(r11+160)                                
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
 8005a3c:	59 60 00 20 	sw (r11+32),r0                                 
 8005a40:	59 60 00 24 	sw (r11+36),r0                                 
    tty->read_start_column = tty->column;                             
 8005a44:	59 61 00 2c 	sw (r11+44),r1                                 
    if (tty->device.pollRead != NULL &&                               
 8005a48:	44 40 00 03 	be r2,r0,8005a54 <rtems_termios_read+0x168>    
 8005a4c:	29 61 00 b4 	lw r1,(r11+180)                                
 8005a50:	44 20 00 5d 	be r1,r0,8005bc4 <rtems_termios_read+0x2d8>    
 * Fill the input buffer from the raw input queue                     
 */                                                                   
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
 8005a54:	29 6e 00 74 	lw r14,(r11+116)                               
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005a58:	78 0c 08 02 	mvhi r12,0x802                                 
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
  rtems_status_code sc;                                               
  int               wait = 1;                                         
 8005a5c:	34 0d 00 01 	mvi r13,1                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005a60:	39 8c 81 40 	ori r12,r12,0x8140                             
      c = tty->rawInBuf.theBuf[newHead];                              
      tty->rawInBuf.Head = newHead;                                   
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
 8005a64:	34 14 ff fe 	mvi r20,-2                                     
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
 8005a68:	34 13 02 02 	mvi r19,514                                    
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
 8005a6c:	34 15 ff fb 	mvi r21,-5                                     
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
             ==                (FL_MDXON | FL_ISNTXOF))               
            && ((tty->rawOutBufState == rob_idle)                     
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
 8005a70:	35 76 00 49 	addi r22,r11,73                                
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005a74:	29 63 00 5c 	lw r3,(r11+92)                                 
 8005a78:	29 61 00 60 	lw r1,(r11+96)                                 
 8005a7c:	44 61 00 05 	be r3,r1,8005a90 <rtems_termios_read+0x1a4>    
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005a80:	29 81 00 00 	lw r1,(r12+0)                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005a84:	29 62 00 20 	lw r2,(r11+32)                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005a88:	34 21 ff ff 	addi r1,r1,-1                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005a8c:	54 22 00 08 	bgu r1,r2,8005aac <rtems_termios_read+0x1c0>   <== ALWAYS TAKEN
    }                                                                 
                                                                      
    /*                                                                
     * Wait for characters                                            
     */                                                               
    if ( wait ) {                                                     
 8005a90:	45 a0 ff d5 	be r13,r0,80059e4 <rtems_termios_read+0xf8>    
      sc = rtems_semaphore_obtain(                                    
 8005a94:	29 61 00 68 	lw r1,(r11+104)                                
 8005a98:	29 62 00 6c 	lw r2,(r11+108)                                
 8005a9c:	b9 c0 18 00 	mv r3,r14                                      
 8005aa0:	f8 00 04 ad 	calli 8006d54 <rtems_semaphore_obtain>         
        tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
      if (sc != RTEMS_SUCCESSFUL)                                     
 8005aa4:	44 20 ff f4 	be r1,r0,8005a74 <rtems_termios_read+0x188>    <== ALWAYS TAKEN
 8005aa8:	e3 ff ff cf 	bi 80059e4 <rtems_termios_read+0xf8>           <== NOT EXECUTED
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
      unsigned char c;                                                
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
 8005aac:	29 63 00 5c 	lw r3,(r11+92)                                 
 8005ab0:	29 62 00 64 	lw r2,(r11+100)                                
 8005ab4:	34 61 00 01 	addi r1,r3,1                                   
 8005ab8:	f8 00 7a 81 	calli 80244bc <__umodsi3>                      
      c = tty->rawInBuf.theBuf[newHead];                              
 8005abc:	29 64 00 58 	lw r4,(r11+88)                                 
 8005ac0:	b4 81 20 00 	add r4,r4,r1                                   
 8005ac4:	40 8e 00 00 	lbu r14,(r4+0)                                 
      tty->rawInBuf.Head = newHead;                                   
 8005ac8:	59 61 00 5c 	sw (r11+92),r1                                 
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
 8005acc:	29 64 00 60 	lw r4,(r11+96)                                 
 8005ad0:	29 65 00 64 	lw r5,(r11+100)                                
          % tty->rawInBuf.Size)                                       
 8005ad4:	29 62 00 64 	lw r2,(r11+100)                                
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
      c = tty->rawInBuf.theBuf[newHead];                              
      tty->rawInBuf.Head = newHead;                                   
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
 8005ad8:	b4 a4 20 00 	add r4,r5,r4                                   
          % tty->rawInBuf.Size)                                       
 8005adc:	c8 81 08 00 	sub r1,r4,r1                                   
 8005ae0:	f8 00 7a 77 	calli 80244bc <__umodsi3>                      
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
      c = tty->rawInBuf.theBuf[newHead];                              
      tty->rawInBuf.Head = newHead;                                   
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
 8005ae4:	29 63 00 bc 	lw r3,(r11+188)                                
 8005ae8:	50 23 00 11 	bgeu r1,r3,8005b2c <rtems_termios_read+0x240>  <== NEVER TAKEN
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
 8005aec:	29 63 00 b8 	lw r3,(r11+184)                                
 8005af0:	a0 74 18 00 	and r3,r3,r20                                  
 8005af4:	59 63 00 b8 	sw (r11+184),r3                                
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
 8005af8:	29 63 00 b8 	lw r3,(r11+184)                                
 8005afc:	20 63 02 02 	andi r3,r3,0x202                               
 8005b00:	44 73 00 26 	be r3,r19,8005b98 <rtems_termios_read+0x2ac>   <== NEVER TAKEN
            && ((tty->rawOutBufState == rob_idle)                     
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
 8005b04:	29 63 00 b8 	lw r3,(r11+184)                                
 8005b08:	20 63 01 00 	andi r3,r3,0x100                               
 8005b0c:	44 60 00 08 	be r3,r0,8005b2c <rtems_termios_read+0x240>    <== ALWAYS TAKEN
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
 8005b10:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
 8005b14:	29 63 00 b0 	lw r3,(r11+176)                                <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
 8005b18:	a0 35 08 00 	and r1,r1,r21                                  <== NOT EXECUTED
 8005b1c:	59 61 00 b8 	sw (r11+184),r1                                <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
 8005b20:	44 60 00 03 	be r3,r0,8005b2c <rtems_termios_read+0x240>    <== NOT EXECUTED
            tty->device.startRemoteTx(tty->minor);                    
 8005b24:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8005b28:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
 8005b2c:	29 63 00 3c 	lw r3,(r11+60)                                 
 8005b30:	20 63 00 02 	andi r3,r3,0x2                                 
 8005b34:	44 60 00 10 	be r3,r0,8005b74 <rtems_termios_read+0x288>    <== NEVER TAKEN
        if (siproc (c, tty))                                          
 8005b38:	b9 c0 08 00 	mv r1,r14                                      
 8005b3c:	b9 60 10 00 	mv r2,r11                                      
 8005b40:	fb ff ff 05 	calli 8005754 <siproc>                         
          wait = 0;                                                   
 8005b44:	64 23 00 00 	cmpei r3,r1,0                                  
 8005b48:	c8 03 18 00 	sub r3,r0,r3                                   
 8005b4c:	a1 a3 68 00 	and r13,r13,r3                                 
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005b50:	29 65 00 5c 	lw r5,(r11+92)                                 
 8005b54:	29 64 00 60 	lw r4,(r11+96)                                 
      } else {                                                        
        siproc (c, tty);                                              
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
          wait = 0;                                                   
      }                                                               
      timeout = tty->rawInBufSemaphoreTimeout;                        
 8005b58:	29 6e 00 70 	lw r14,(r11+112)                               
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005b5c:	44 a4 ff cd 	be r5,r4,8005a90 <rtems_termios_read+0x1a4>    
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005b60:	29 84 00 00 	lw r4,(r12+0)                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005b64:	29 63 00 20 	lw r3,(r11+32)                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
 8005b68:	34 84 ff ff 	addi r4,r4,-1                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
 8005b6c:	54 83 ff d0 	bgu r4,r3,8005aac <rtems_termios_read+0x1c0>   <== ALWAYS TAKEN
 8005b70:	e3 ff ff c8 	bi 8005a90 <rtems_termios_read+0x1a4>          <== NOT EXECUTED
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
        if (siproc (c, tty))                                          
          wait = 0;                                                   
      } else {                                                        
        siproc (c, tty);                                              
 8005b74:	b9 c0 08 00 	mv r1,r14                                      <== NOT EXECUTED
 8005b78:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8005b7c:	fb ff fe f6 	calli 8005754 <siproc>                         <== NOT EXECUTED
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
 8005b80:	41 63 00 47 	lbu r3,(r11+71)                                <== NOT EXECUTED
 8005b84:	29 61 00 20 	lw r1,(r11+32)                                 <== NOT EXECUTED
          wait = 0;                                                   
 8005b88:	e8 61 18 00 	cmpg r3,r3,r1                                  <== NOT EXECUTED
 8005b8c:	c8 03 18 00 	sub r3,r0,r3                                   <== NOT EXECUTED
 8005b90:	a1 a3 68 00 	and r13,r13,r3                                 <== NOT EXECUTED
 8005b94:	e3 ff ff ef 	bi 8005b50 <rtems_termios_read+0x264>          <== NOT EXECUTED
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
             ==                (FL_MDXON | FL_ISNTXOF))               
            && ((tty->rawOutBufState == rob_idle)                     
 8005b98:	29 61 00 94 	lw r1,(r11+148)                                <== NOT EXECUTED
 8005b9c:	44 20 00 04 	be r1,r0,8005bac <rtems_termios_read+0x2c0>    <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
 8005ba0:	29 61 00 b8 	lw r1,(r11+184)                                <== NOT EXECUTED
 8005ba4:	20 21 00 20 	andi r1,r1,0x20                                <== NOT EXECUTED
 8005ba8:	44 20 ff d7 	be r1,r0,8005b04 <rtems_termios_read+0x218>    <== NOT EXECUTED
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
 8005bac:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8005bb0:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8005bb4:	ba c0 10 00 	mv r2,r22                                      <== NOT EXECUTED
 8005bb8:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 8005bbc:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
 8005bc0:	e3 ff ff db 	bi 8005b2c <rtems_termios_read+0x240>          <== NOT EXECUTED
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8005bc4:	29 61 00 3c 	lw r1,(r11+60)                                 
 8005bc8:	20 21 00 02 	andi r1,r1,0x2                                 
 8005bcc:	44 20 00 14 	be r1,r0,8005c1c <rtems_termios_read+0x330>    
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8005bd0:	29 61 00 10 	lw r1,(r11+16)                                 
 8005bd4:	d8 40 00 00 	call r2                                        
 8005bd8:	b8 20 18 00 	mv r3,r1                                       
      if (n < 0) {                                                    
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
 8005bdc:	b9 60 10 00 	mv r2,r11                                      
 8005be0:	20 21 00 ff 	andi r1,r1,0xff                                
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
 8005be4:	4c 60 00 21 	bge r3,r0,8005c68 <rtems_termios_read+0x37c>   
        rtems_task_wake_after (1);                                    
 8005be8:	34 01 00 01 	mvi r1,1                                       
 8005bec:	f8 00 05 e0 	calli 800736c <rtems_task_wake_after>          
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8005bf0:	29 62 00 a0 	lw r2,(r11+160)                                
 8005bf4:	e3 ff ff f7 	bi 8005bd0 <rtems_termios_read+0x2e4>          
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
      } else {                                                        
        siproc (n, tty);                                              
 8005bf8:	b9 60 10 00 	mv r2,r11                                      
 8005bfc:	20 21 00 ff 	andi r1,r1,0xff                                
 8005c00:	fb ff fe d5 	calli 8005754 <siproc>                         
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
 8005c04:	41 62 00 47 	lbu r2,(r11+71)                                
 8005c08:	29 61 00 20 	lw r1,(r11+32)                                 
 8005c0c:	4c 22 ff 76 	bge r1,r2,80059e4 <rtems_termios_read+0xf8>    
          break;                                                      
        if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])      
 8005c10:	44 40 00 05 	be r2,r0,8005c24 <rtems_termios_read+0x338>    <== NEVER TAKEN
 8005c14:	41 61 00 46 	lbu r1,(r11+70)                                
 8005c18:	44 20 00 03 	be r1,r0,8005c24 <rtems_termios_read+0x338>    <== NEVER TAKEN
      }                                                               
    }                                                                 
  } else {                                                            
    rtems_interval then, now;                                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
 8005c1c:	f8 00 02 59 	calli 8006580 <rtems_clock_get_ticks_since_boot>
 8005c20:	b8 20 60 00 	mv r12,r1                                      
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8005c24:	29 62 00 a0 	lw r2,(r11+160)                                
 8005c28:	29 61 00 10 	lw r1,(r11+16)                                 
 8005c2c:	d8 40 00 00 	call r2                                        
      if (n < 0) {                                                    
 8005c30:	4c 20 ff f2 	bge r1,r0,8005bf8 <rtems_termios_read+0x30c>   
        if (tty->termios.c_cc[VMIN]) {                                
 8005c34:	41 62 00 47 	lbu r2,(r11+71)                                
 8005c38:	44 40 00 10 	be r2,r0,8005c78 <rtems_termios_read+0x38c>    <== NEVER TAKEN
          if (tty->termios.c_cc[VTIME] && tty->ccount) {              
 8005c3c:	41 61 00 46 	lbu r1,(r11+70)                                
 8005c40:	44 20 00 03 	be r1,r0,8005c4c <rtems_termios_read+0x360>    <== NEVER TAKEN
 8005c44:	29 61 00 20 	lw r1,(r11+32)                                 
 8005c48:	5c 20 00 0e 	bne r1,r0,8005c80 <rtems_termios_read+0x394>   
          now = rtems_clock_get_ticks_since_boot();                   
          if ((now - then) > tty->vtimeTicks) {                       
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
 8005c4c:	34 01 00 01 	mvi r1,1                                       
 8005c50:	f8 00 05 c7 	calli 800736c <rtems_task_wake_after>          
  } else {                                                            
    rtems_interval then, now;                                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
 8005c54:	29 62 00 a0 	lw r2,(r11+160)                                
 8005c58:	29 61 00 10 	lw r1,(r11+16)                                 
 8005c5c:	d8 40 00 00 	call r2                                        
      if (n < 0) {                                                    
 8005c60:	4c 20 ff e6 	bge r1,r0,8005bf8 <rtems_termios_read+0x30c>   
 8005c64:	e3 ff ff f4 	bi 8005c34 <rtems_termios_read+0x348>          
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
 8005c68:	fb ff fe bb 	calli 8005754 <siproc>                         
 8005c6c:	5c 20 ff 5e 	bne r1,r0,80059e4 <rtems_termios_read+0xf8>    
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
 8005c70:	29 62 00 a0 	lw r2,(r11+160)                                
 8005c74:	e3 ff ff d7 	bi 8005bd0 <rtems_termios_read+0x2e4>          
            if ((now - then) > tty->vtimeTicks) {                     
              break;                                                  
            }                                                         
          }                                                           
        } else {                                                      
          if (!tty->termios.c_cc[VTIME])                              
 8005c78:	41 61 00 46 	lbu r1,(r11+70)                                <== NOT EXECUTED
 8005c7c:	44 22 ff 5a 	be r1,r2,80059e4 <rtems_termios_read+0xf8>     <== NOT EXECUTED
            break;                                                    
          now = rtems_clock_get_ticks_since_boot();                   
 8005c80:	f8 00 02 40 	calli 8006580 <rtems_clock_get_ticks_since_boot>
          if ((now - then) > tty->vtimeTicks) {                       
 8005c84:	29 62 00 54 	lw r2,(r11+84)                                 
 8005c88:	c8 2c 08 00 	sub r1,r1,r12                                  
 8005c8c:	54 22 ff 56 	bgu r1,r2,80059e4 <rtems_termios_read+0xf8>    
 8005c90:	e3 ff ff ef 	bi 8005c4c <rtems_termios_read+0x360>          
                                                                      

080040d8 <rtems_termios_refill_transmitter>: * in task-driven mode, this function is called in Tx task context * in interrupt-driven mode, this function is called in TxIRQ context */ static int rtems_termios_refill_transmitter (struct rtems_termios_tty *tty) {
 80040d8:	37 9c ff f0 	addi sp,sp,-16                                 
 80040dc:	5b 8b 00 10 	sw (sp+16),r11                                 
 80040e0:	5b 8c 00 0c 	sw (sp+12),r12                                 
 80040e4:	5b 8d 00 08 	sw (sp+8),r13                                  
 80040e8:	5b 9d 00 04 	sw (sp+4),ra                                   
  int nToSend;                                                        
  rtems_interrupt_level level;                                        
  int len;                                                            
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
 80040ec:	28 22 00 b8 	lw r2,(r1+184)                                 
 * in task-driven mode, this function is called in Tx task context    
 * in interrupt-driven mode, this function is called in TxIRQ context 
 */                                                                   
static int                                                            
rtems_termios_refill_transmitter (struct rtems_termios_tty *tty)      
{                                                                     
 80040f0:	b8 20 58 00 	mv r11,r1                                      
  int nToSend;                                                        
  rtems_interrupt_level level;                                        
  int len;                                                            
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
 80040f4:	34 01 04 01 	mvi r1,1025                                    
 80040f8:	20 42 04 03 	andi r2,r2,0x403                               
 80040fc:	44 41 00 50 	be r2,r1,800423c <rtems_termios_refill_transmitter+0x164><== NEVER TAKEN
    tty->flow_ctrl |= FL_ISNTXOF;                                     
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
                                                                      
  } else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
 8004100:	29 62 00 b8 	lw r2,(r11+184)                                
 8004104:	34 01 00 02 	mvi r1,2                                       
 8004108:	20 42 00 03 	andi r2,r2,0x3                                 
 800410c:	44 41 00 64 	be r2,r1,800429c <rtems_termios_refill_transmitter+0x1c4><== NEVER TAKEN
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
 8004110:	29 63 00 80 	lw r3,(r11+128)                                
 8004114:	29 62 00 84 	lw r2,(r11+132)                                
 8004118:	44 62 00 1c 	be r3,r2,8004188 <rtems_termios_refill_transmitter+0xb0>
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
      }                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    rtems_interrupt_disable(level);                                   
 800411c:	90 00 10 00 	rcsr r2,IE                                     
 8004120:	34 01 ff fe 	mvi r1,-2                                      
 8004124:	a0 41 08 00 	and r1,r2,r1                                   
 8004128:	d0 01 00 00 	wcsr IE,r1                                     
    len = tty->t_dqlen;                                               
 800412c:	29 63 00 90 	lw r3,(r11+144)                                
    tty->t_dqlen = 0;                                                 
 8004130:	59 60 00 90 	sw (r11+144),r0                                
    rtems_interrupt_enable(level);                                    
 8004134:	d0 02 00 00 	wcsr IE,r2                                     
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
 8004138:	29 61 00 84 	lw r1,(r11+132)                                
 800413c:	29 62 00 88 	lw r2,(r11+136)                                
 8004140:	b4 61 08 00 	add r1,r3,r1                                   
 8004144:	f8 00 80 de 	calli 80244bc <__umodsi3>                      
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
 8004148:	29 62 00 94 	lw r2,(r11+148)                                
    rtems_interrupt_disable(level);                                   
    len = tty->t_dqlen;                                               
    tty->t_dqlen = 0;                                                 
    rtems_interrupt_enable(level);                                    
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
 800414c:	b8 20 60 00 	mv r12,r1                                      
    tty->rawOutBuf.Tail = newTail;                                    
 8004150:	59 61 00 84 	sw (r11+132),r1                                
    if (tty->rawOutBufState == rob_wait) {                            
 8004154:	34 01 00 02 	mvi r1,2                                       
 8004158:	44 41 00 36 	be r2,r1,8004230 <rtems_termios_refill_transmitter+0x158>
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
    }                                                                 
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
 800415c:	29 61 00 80 	lw r1,(r11+128)                                
 8004160:	44 2c 00 14 	be r1,r12,80041b0 <rtems_termios_refill_transmitter+0xd8>
      if ( tty->tty_snd.sw_pfn != NULL) {                             
        (*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);   
      }                                                               
    }                                                                 
    /* check, whether output should stop due to received XOFF */      
    else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))               
 8004164:	29 62 00 b8 	lw r2,(r11+184)                                
 8004168:	34 01 02 10 	mvi r1,528                                     
 800416c:	20 42 02 10 	andi r2,r2,0x210                               
 8004170:	44 41 00 5a 	be r2,r1,80042d8 <rtems_termios_refill_transmitter+0x200><== NEVER TAKEN
      nToSend = 0;                                                    
    } else {                                                          
      /*                                                              
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
 8004174:	29 61 00 80 	lw r1,(r11+128)                                
 8004178:	50 2c 00 1d 	bgeu r1,r12,80041ec <rtems_termios_refill_transmitter+0x114>
        nToSend = tty->rawOutBuf.Size - newTail;                      
 800417c:	29 6d 00 88 	lw r13,(r11+136)                               
 8004180:	c9 ac 68 00 	sub r13,r13,r12                                
 8004184:	e0 00 00 1c 	bi 80041f4 <rtems_termios_refill_transmitter+0x11c>
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
 8004188:	29 62 00 94 	lw r2,(r11+148)                                
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
      }                                                               
      return 0;                                                       
 800418c:	34 0d 00 00 	mvi r13,0                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
 8004190:	44 41 00 5f 	be r2,r1,800430c <rtems_termios_refill_transmitter+0x234><== NEVER TAKEN
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
 8004194:	b9 a0 08 00 	mv r1,r13                                      
 8004198:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800419c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80041a0:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80041a4:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80041a8:	37 9c 00 10 	addi sp,sp,16                                  
 80041ac:	c3 a0 00 00 	ret                                            
      nToSend = 0;                                                    
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
 80041b0:	29 63 00 d4 	lw r3,(r11+212)                                
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
      /*                                                              
       * Buffer has become empty                                      
       */                                                             
      tty->rawOutBufState = rob_idle;                                 
 80041b4:	59 60 00 94 	sw (r11+148),r0                                
      nToSend = 0;                                                    
 80041b8:	34 0d 00 00 	mvi r13,0                                      
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
 80041bc:	44 60 00 04 	be r3,r0,80041cc <rtems_termios_refill_transmitter+0xf4><== ALWAYS TAKEN
        (*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);   
 80041c0:	29 62 00 d8 	lw r2,(r11+216)                                <== NOT EXECUTED
 80041c4:	35 61 00 30 	addi r1,r11,48                                 <== NOT EXECUTED
 80041c8:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 80041cc:	59 6c 00 84 	sw (r11+132),r12                               
  }                                                                   
  return nToSend;                                                     
}                                                                     
 80041d0:	b9 a0 08 00 	mv r1,r13                                      
 80041d4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80041d8:	2b 8b 00 10 	lw r11,(sp+16)                                 
 80041dc:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 80041e0:	2b 8d 00 08 	lw r13,(sp+8)                                  
 80041e4:	37 9c 00 10 	addi sp,sp,16                                  
 80041e8:	c3 a0 00 00 	ret                                            
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
        nToSend = tty->rawOutBuf.Size - newTail;                      
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
 80041ec:	29 6d 00 80 	lw r13,(r11+128)                               
 80041f0:	c9 ac 68 00 	sub r13,r13,r12                                
      /* when flow control XON or XOF, don't send blocks of data     */
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
 80041f4:	29 61 00 b8 	lw r1,(r11+184)                                
 80041f8:	b9 a0 18 00 	mv r3,r13                                      
 80041fc:	20 21 06 00 	andi r1,r1,0x600                               
 8004200:	44 20 00 03 	be r1,r0,800420c <rtems_termios_refill_transmitter+0x134>
 8004204:	34 03 00 01 	mvi r3,1                                       
        nToSend = 1;                                                  
 8004208:	34 0d 00 01 	mvi r13,1                                      
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
 800420c:	29 62 00 7c 	lw r2,(r11+124)                                
 8004210:	29 65 00 a4 	lw r5,(r11+164)                                
 8004214:	29 61 00 10 	lw r1,(r11+16)                                 
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
        nToSend = 1;                                                  
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
 8004218:	34 04 00 01 	mvi r4,1                                       
 800421c:	59 64 00 94 	sw (r11+148),r4                                
      (*tty->device.write)(                                           
 8004220:	b4 4c 10 00 	add r2,r2,r12                                  
 8004224:	d8 a0 00 00 	call r5                                        
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 8004228:	59 6c 00 84 	sw (r11+132),r12                               
 800422c:	e3 ff ff e9 	bi 80041d0 <rtems_termios_refill_transmitter+0xf8>
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
      /*                                                              
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
 8004230:	29 61 00 8c 	lw r1,(r11+140)                                
 8004234:	f8 00 0b 24 	calli 8006ec4 <rtems_semaphore_release>        
 8004238:	e3 ff ff c9 	bi 800415c <rtems_termios_refill_transmitter+0x84>
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
      == (FL_MDXOF | FL_IREQXOF)) {                                   
    /* XOFF should be sent now... */                                  
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
 800423c:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 8004240:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8004244:	35 62 00 4a 	addi r2,r11,74                                 <== NOT EXECUTED
 8004248:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 800424c:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
 8004250:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 8004254:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 8004258:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 800425c:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
    tty->t_dqlen--;                                                   
 8004260:	29 63 00 90 	lw r3,(r11+144)                                <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
 8004264:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
      == (FL_MDXOF | FL_IREQXOF)) {                                   
    /* XOFF should be sent now... */                                  
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
 8004268:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
 800426c:	38 42 00 02 	ori r2,r2,0x2                                  <== NOT EXECUTED
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
 8004270:	59 63 00 90 	sw (r11+144),r3                                <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 8004274:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
 8004278:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
                                                                      
    nToSend = 1;                                                      
 800427c:	34 0d 00 01 	mvi r13,1                                      <== NOT EXECUTED
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
 8004280:	b9 a0 08 00 	mv r1,r13                                      <== NOT EXECUTED
 8004284:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8004288:	2b 8b 00 10 	lw r11,(sp+16)                                 <== NOT EXECUTED
 800428c:	2b 8c 00 0c 	lw r12,(sp+12)                                 <== NOT EXECUTED
 8004290:	2b 8d 00 08 	lw r13,(sp+8)                                  <== NOT EXECUTED
 8004294:	37 9c 00 10 	addi sp,sp,16                                  <== NOT EXECUTED
 8004298:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
     * FIXME: this .write call will generate another                  
     * dequeue callback. This will advance the "Tail" in the data     
     * buffer, although the corresponding data is not yet out!        
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
 800429c:	29 64 00 a4 	lw r4,(r11+164)                                <== NOT EXECUTED
 80042a0:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 80042a4:	35 62 00 49 	addi r2,r11,73                                 <== NOT EXECUTED
 80042a8:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80042ac:	d8 80 00 00 	call r4                                        <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
 80042b0:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 80042b4:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 80042b8:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 80042bc:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
    tty->t_dqlen--;                                                   
 80042c0:	29 63 00 90 	lw r3,(r11+144)                                <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 80042c4:	29 64 00 b8 	lw r4,(r11+184)                                <== NOT EXECUTED
 80042c8:	34 02 ff fd 	mvi r2,-3                                      <== NOT EXECUTED
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
 80042cc:	34 63 ff ff 	addi r3,r3,-1                                  <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
 80042d0:	a0 82 10 00 	and r2,r4,r2                                   <== NOT EXECUTED
 80042d4:	e3 ff ff e7 	bi 8004270 <rtems_termios_refill_transmitter+0x198><== NOT EXECUTED
    /* check, whether output should stop due to received XOFF */      
    else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))               
       ==                (FL_MDXON | FL_ORCVXOF)) {                   
      /* Buffer not empty, but output stops due to XOFF */            
      /* set flag, that output has been stopped */                    
      rtems_interrupt_disable(level);                                 
 80042d8:	90 00 08 00 	rcsr r1,IE                                     <== NOT EXECUTED
 80042dc:	34 02 ff fe 	mvi r2,-2                                      <== NOT EXECUTED
 80042e0:	a0 22 10 00 	and r2,r1,r2                                   <== NOT EXECUTED
 80042e4:	d0 02 00 00 	wcsr IE,r2                                     <== NOT EXECUTED
      tty->flow_ctrl |= FL_OSTOP;                                     
 80042e8:	29 62 00 b8 	lw r2,(r11+184)                                <== NOT EXECUTED
      tty->rawOutBufState = rob_busy; /*apm*/                         
 80042ec:	34 03 00 01 	mvi r3,1                                       <== NOT EXECUTED
 80042f0:	59 63 00 94 	sw (r11+148),r3                                <== NOT EXECUTED
    else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))               
       ==                (FL_MDXON | FL_ORCVXOF)) {                   
      /* Buffer not empty, but output stops due to XOFF */            
      /* set flag, that output has been stopped */                    
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl |= FL_OSTOP;                                     
 80042f4:	38 42 00 20 	ori r2,r2,0x20                                 <== NOT EXECUTED
 80042f8:	59 62 00 b8 	sw (r11+184),r2                                <== NOT EXECUTED
      tty->rawOutBufState = rob_busy; /*apm*/                         
      rtems_interrupt_enable(level);                                  
 80042fc:	d0 01 00 00 	wcsr IE,r1                                     <== NOT EXECUTED
      nToSend = 0;                                                    
 8004300:	34 0d 00 00 	mvi r13,0                                      <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
 8004304:	59 6c 00 84 	sw (r11+132),r12                               <== NOT EXECUTED
 8004308:	e3 ff ff b2 	bi 80041d0 <rtems_termios_refill_transmitter+0xf8><== NOT EXECUTED
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
 800430c:	29 61 00 8c 	lw r1,(r11+140)                                <== NOT EXECUTED
 8004310:	f8 00 0a ed 	calli 8006ec4 <rtems_semaphore_release>        <== NOT EXECUTED
 8004314:	e3 ff ff a0 	bi 8004194 <rtems_termios_refill_transmitter+0xbc><== NOT EXECUTED
                                                                      

0800600c <rtems_termios_rxdaemon>: /* * this task actually processes any receive events */ static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument) {
 800600c:	37 9c ff e4 	addi sp,sp,-28                                 
 8006010:	5b 8b 00 14 	sw (sp+20),r11                                 
 8006014:	5b 8c 00 10 	sw (sp+16),r12                                 
 8006018:	5b 8d 00 0c 	sw (sp+12),r13                                 
 800601c:	5b 8e 00 08 	sw (sp+8),r14                                  
 8006020:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    if (c != EOF) {                                                   
 8006024:	34 0c ff ff 	mvi r12,-1                                     
                                                                      
/*                                                                    
 * this task actually processes any receive events                    
 */                                                                   
static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument)
{                                                                     
 8006028:	b8 20 58 00 	mv r11,r1                                      
 800602c:	37 8d 00 18 	addi r13,sp,24                                 
 8006030:	37 8e 00 1f 	addi r14,sp,31                                 
 8006034:	e0 00 00 06 	bi 800604c <rtems_termios_rxdaemon+0x40>       
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
 8006038:	29 63 00 a0 	lw r3,(r11+160)                                
 800603c:	29 61 00 10 	lw r1,(r11+16)                                 
 8006040:	d8 60 00 00 	call r3                                        
 8006044:	b8 20 28 00 	mv r5,r1                                       
    if (c != EOF) {                                                   
 8006048:	5c 2c 00 11 	bne r1,r12,800608c <rtems_termios_rxdaemon+0x80>
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
 800604c:	b9 a0 20 00 	mv r4,r13                                      
 8006050:	34 02 00 02 	mvi r2,2                                       
 8006054:	34 03 00 00 	mvi r3,0                                       
 8006058:	34 01 00 03 	mvi r1,3                                       
 800605c:	f8 00 01 65 	calli 80065f0 <rtems_event_receive>            
      (TERMIOS_RX_PROC_EVENT | TERMIOS_RX_TERMINATE_EVENT),           
      RTEMS_EVENT_ANY | RTEMS_WAIT,                                   
      RTEMS_NO_TIMEOUT,                                               
      &the_event                                                      
    );                                                                
    if ((the_event & TERMIOS_RX_TERMINATE_EVENT) != 0) {              
 8006060:	2b 81 00 18 	lw r1,(sp+24)                                  
 8006064:	20 21 00 01 	andi r1,r1,0x1                                 
 8006068:	44 20 ff f4 	be r1,r0,8006038 <rtems_termios_rxdaemon+0x2c> <== ALWAYS TAKEN
      tty->rxTaskId = 0;                                              
 800606c:	59 60 00 c4 	sw (r11+196),r0                                <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
 8006070:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 8006074:	f8 00 04 3c 	calli 8007164 <rtems_task_delete>              <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
 8006078:	29 63 00 a0 	lw r3,(r11+160)                                <== NOT EXECUTED
 800607c:	29 61 00 10 	lw r1,(r11+16)                                 <== NOT EXECUTED
 8006080:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 8006084:	b8 20 28 00 	mv r5,r1                                       <== NOT EXECUTED
    if (c != EOF) {                                                   
 8006088:	44 2c ff f1 	be r1,r12,800604c <rtems_termios_rxdaemon+0x40><== NOT EXECUTED
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
 800608c:	b9 60 08 00 	mv r1,r11                                      
 8006090:	b9 c0 10 00 	mv r2,r14                                      
 8006094:	34 03 00 01 	mvi r3,1                                       
    c = tty->device.pollRead(tty->minor);                             
    if (c != EOF) {                                                   
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
 8006098:	33 85 00 1f 	sb (sp+31),r5                                  
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
 800609c:	fb ff ff 06 	calli 8005cb4 <rtems_termios_enqueue_raw_characters>
 80060a0:	e3 ff ff eb 	bi 800604c <rtems_termios_rxdaemon+0x40>       
                                                                      

080043b0 <rtems_termios_txdaemon>: /* * this task actually processes any transmit events */ static rtems_task rtems_termios_txdaemon(rtems_task_argument argument) {
 80043b0:	37 9c ff f0 	addi sp,sp,-16                                 
 80043b4:	5b 8b 00 0c 	sw (sp+12),r11                                 
 80043b8:	5b 8c 00 08 	sw (sp+8),r12                                  
 80043bc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80043c0:	78 0c 08 02 	mvhi r12,0x802                                 
 80043c4:	b8 20 58 00 	mv r11,r1                                      
 80043c8:	39 8c 88 30 	ori r12,r12,0x8830                             
 80043cc:	e0 00 00 0e 	bi 8004404 <rtems_termios_txdaemon+0x54>       
    }                                                                 
                                                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 80043d0:	29 62 00 cc 	lw r2,(r11+204)                                
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 80043d4:	b9 60 08 00 	mv r1,r11                                      
    }                                                                 
                                                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
 80043d8:	b4 42 10 00 	add r2,r2,r2                                   
 80043dc:	b4 42 10 00 	add r2,r2,r2                                   
 80043e0:	b4 42 10 00 	add r2,r2,r2                                   
 80043e4:	b4 42 10 00 	add r2,r2,r2                                   
 80043e8:	b4 42 10 00 	add r2,r2,r2                                   
 80043ec:	b5 82 10 00 	add r2,r12,r2                                  
 80043f0:	28 42 00 14 	lw r2,(r2+20)                                  
 80043f4:	44 40 00 02 	be r2,r0,80043fc <rtems_termios_txdaemon+0x4c> <== ALWAYS TAKEN
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
 80043f8:	d8 40 00 00 	call r2                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * try to push further characters to device                       
     */                                                               
    rtems_termios_refill_transmitter(tty);                            
 80043fc:	b9 60 08 00 	mv r1,r11                                      
 8004400:	fb ff ff 36 	calli 80040d8 <rtems_termios_refill_transmitter>
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
 8004404:	34 02 00 02 	mvi r2,2                                       
 8004408:	34 03 00 00 	mvi r3,0                                       
 800440c:	37 84 00 10 	addi r4,sp,16                                  
 8004410:	34 01 00 03 	mvi r1,3                                       
 8004414:	f8 00 08 77 	calli 80065f0 <rtems_event_receive>            
       (TERMIOS_TX_START_EVENT | TERMIOS_TX_TERMINATE_EVENT),         
       RTEMS_EVENT_ANY | RTEMS_WAIT,                                  
       RTEMS_NO_TIMEOUT,                                              
       &the_event                                                     
    );                                                                
    if ((the_event & TERMIOS_TX_TERMINATE_EVENT) != 0) {              
 8004418:	2b 81 00 10 	lw r1,(sp+16)                                  
 800441c:	20 21 00 01 	andi r1,r1,0x1                                 
 8004420:	44 20 ff ec 	be r1,r0,80043d0 <rtems_termios_txdaemon+0x20> <== ALWAYS TAKEN
      tty->txTaskId = 0;                                              
 8004424:	59 60 00 c8 	sw (r11+200),r0                                <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
 8004428:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 800442c:	f8 00 0b 4e 	calli 8007164 <rtems_task_delete>              <== NOT EXECUTED
 8004430:	e3 ff ff e8 	bi 80043d0 <rtems_termios_txdaemon+0x20>       <== NOT EXECUTED
                                                                      

080057dc <rtems_termios_write>: rtems_termios_puts (&c, 1, tty); } rtems_status_code rtems_termios_write (void *arg) {
 80057dc:	37 9c ff e4 	addi sp,sp,-28                                 
 80057e0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80057e4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80057e8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80057ec:	5b 8e 00 10 	sw (sp+16),r14                                 
 80057f0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80057f4:	5b 90 00 08 	sw (sp+8),r16                                  
 80057f8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80057fc:	b8 20 68 00 	mv r13,r1                                      
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 8005800:	28 21 00 00 	lw r1,(r1+0)                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8005804:	34 02 00 00 	mvi r2,0                                       
 8005808:	34 03 00 00 	mvi r3,0                                       
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
{                                                                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
 800580c:	28 2b 00 28 	lw r11,(r1+40)                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
 8005810:	29 61 00 18 	lw r1,(r11+24)                                 
 8005814:	f8 00 05 50 	calli 8006d54 <rtems_semaphore_obtain>         
 8005818:	b8 20 70 00 	mv r14,r1                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
 800581c:	5c 20 00 12 	bne r1,r0,8005864 <rtems_termios_write+0x88>   <== NEVER TAKEN
    return sc;                                                        
  if (rtems_termios_linesw[tty->t_line].l_write != NULL) {            
 8005820:	29 64 00 cc 	lw r4,(r11+204)                                
 8005824:	78 01 08 02 	mvhi r1,0x802                                  
 8005828:	38 21 88 30 	ori r1,r1,0x8830                               
 800582c:	b4 84 20 00 	add r4,r4,r4                                   
 8005830:	b4 84 20 00 	add r4,r4,r4                                   
 8005834:	b4 84 20 00 	add r4,r4,r4                                   
 8005838:	b4 84 20 00 	add r4,r4,r4                                   
 800583c:	b4 84 20 00 	add r4,r4,r4                                   
 8005840:	b4 24 20 00 	add r4,r1,r4                                   
 8005844:	28 83 00 0c 	lw r3,(r4+12)                                  
 8005848:	44 6e 00 11 	be r3,r14,800588c <rtems_termios_write+0xb0>   
    sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);         
 800584c:	b9 60 08 00 	mv r1,r11                                      
 8005850:	b9 a0 10 00 	mv r2,r13                                      
 8005854:	d8 60 00 00 	call r3                                        
 8005858:	b8 20 70 00 	mv r14,r1                                      
    rtems_semaphore_release (tty->osem);                              
 800585c:	29 61 00 18 	lw r1,(r11+24)                                 
 8005860:	f8 00 05 99 	calli 8006ec4 <rtems_semaphore_release>        
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
  return sc;                                                          
}                                                                     
 8005864:	b9 c0 08 00 	mv r1,r14                                      
 8005868:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800586c:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 8005870:	2b 8c 00 18 	lw r12,(sp+24)                                 
 8005874:	2b 8d 00 14 	lw r13,(sp+20)                                 
 8005878:	2b 8e 00 10 	lw r14,(sp+16)                                 
 800587c:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8005880:	2b 90 00 08 	lw r16,(sp+8)                                  
 8005884:	37 9c 00 1c 	addi sp,sp,28                                  
 8005888:	c3 a0 00 00 	ret                                            
  if (rtems_termios_linesw[tty->t_line].l_write != NULL) {            
    sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);         
    rtems_semaphore_release (tty->osem);                              
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
 800588c:	29 61 00 34 	lw r1,(r11+52)                                 
 8005890:	20 21 00 01 	andi r1,r1,0x1                                 
 8005894:	44 20 00 11 	be r1,r0,80058d8 <rtems_termios_write+0xfc>    <== NEVER TAKEN
    uint32_t   count = args->count;                                   
 8005898:	29 af 00 0c 	lw r15,(r13+12)                                
    char      *buffer = args->buffer;                                 
 800589c:	29 b0 00 08 	lw r16,(r13+8)                                 
    while (count--)                                                   
 80058a0:	34 01 00 00 	mvi r1,0                                       
 80058a4:	45 e0 00 09 	be r15,r0,80058c8 <rtems_termios_write+0xec>   <== NEVER TAKEN
 80058a8:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
  rtems_termios_puts (&c, 1, tty);                                    
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
 80058ac:	b6 0c 08 00 	add r1,r16,r12                                 
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
      oproc (*buffer++, tty);                                         
 80058b0:	40 21 00 00 	lbu r1,(r1+0)                                  
 80058b4:	35 8c 00 01 	addi r12,r12,1                                 
 80058b8:	b9 60 10 00 	mv r2,r11                                      
 80058bc:	fb ff fe 1d 	calli 8005130 <oproc>                          
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
 80058c0:	5d 8f ff fb 	bne r12,r15,80058ac <rtems_termios_write+0xd0> 
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
 80058c4:	29 a1 00 0c 	lw r1,(r13+12)                                 
 80058c8:	59 a1 00 14 	sw (r13+20),r1                                 
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
 80058cc:	29 61 00 18 	lw r1,(r11+24)                                 
 80058d0:	f8 00 05 7d 	calli 8006ec4 <rtems_semaphore_release>        
  return sc;                                                          
 80058d4:	e3 ff ff e4 	bi 8005864 <rtems_termios_write+0x88>          
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
 80058d8:	29 a1 00 08 	lw r1,(r13+8)                                  <== NOT EXECUTED
 80058dc:	29 a2 00 0c 	lw r2,(r13+12)                                 <== NOT EXECUTED
 80058e0:	b9 60 18 00 	mv r3,r11                                      <== NOT EXECUTED
 80058e4:	fb ff fd ba 	calli 8004fcc <rtems_termios_puts>             <== NOT EXECUTED
 80058e8:	e3 ff ff f7 	bi 80058c4 <rtems_termios_write+0xe8>          <== NOT EXECUTED
                                                                      

080150c8 <rtems_timer_cancel>: */ rtems_status_code rtems_timer_cancel( rtems_id id ) {
 80150c8:	37 9c ff f8 	addi sp,sp,-8                                  
 80150cc:	5b 9d 00 04 	sw (sp+4),ra                                   
 80150d0:	b8 20 10 00 	mv r2,r1                                       
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Timer_Control *)                                            
    _Objects_Get( &_Timer_Information, id, location );                
 80150d4:	78 01 08 04 	mvhi r1,0x804                                  
 80150d8:	38 21 06 50 	ori r1,r1,0x650                                
 80150dc:	37 83 00 08 	addi r3,sp,8                                   
 80150e0:	f8 00 0f 02 	calli 8018ce8 <_Objects_Get>                   
  Timer_Control   *the_timer;                                         
  Objects_Locations       location;                                   
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 80150e4:	2b 82 00 08 	lw r2,(sp+8)                                   
 80150e8:	44 40 00 05 	be r2,r0,80150fc <rtems_timer_cancel+0x34>     
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 80150ec:	34 01 00 04 	mvi r1,4                                       
}                                                                     
 80150f0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80150f4:	37 9c 00 08 	addi sp,sp,8                                   
 80150f8:	c3 a0 00 00 	ret                                            
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
 80150fc:	28 23 00 38 	lw r3,(r1+56)                                  
 8015100:	34 02 00 04 	mvi r2,4                                       
 8015104:	44 62 00 03 	be r3,r2,8015110 <rtems_timer_cancel+0x48>     <== NEVER TAKEN
        (void) _Watchdog_Remove( &the_timer->Ticker );                
 8015108:	34 21 00 10 	addi r1,r1,16                                  
 801510c:	f8 00 18 2b 	calli 801b1b8 <_Watchdog_Remove>               
      _Thread_Enable_dispatch();                                      
 8015110:	f8 00 13 6e 	calli 8019ec8 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 8015114:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 8015118:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801511c:	37 9c 00 08 	addi sp,sp,8                                   
 8015120:	c3 a0 00 00 	ret                                            
                                                                      

0801576c <rtems_timer_server_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
 801576c:	37 9c ff d8 	addi sp,sp,-40                                 
 8015770:	5b 8b 00 24 	sw (sp+36),r11                                 
 8015774:	5b 8c 00 20 	sw (sp+32),r12                                 
 8015778:	5b 8d 00 1c 	sw (sp+28),r13                                 
 801577c:	5b 8e 00 18 	sw (sp+24),r14                                 
 8015780:	5b 8f 00 14 	sw (sp+20),r15                                 
 8015784:	5b 90 00 10 	sw (sp+16),r16                                 
 8015788:	5b 91 00 0c 	sw (sp+12),r17                                 
 801578c:	5b 92 00 08 	sw (sp+8),r18                                  
 8015790:	5b 9d 00 04 	sw (sp+4),ra                                   
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
 8015794:	78 05 08 04 	mvhi r5,0x804                                  
 8015798:	38 a5 06 90 	ori r5,r5,0x690                                
 801579c:	28 ad 00 00 	lw r13,(r5+0)                                  
  rtems_id                           id,                              
  rtems_time_of_day                  *wall_time,                      
  rtems_timer_service_routine_entry  routine,                         
  void                              *user_data                        
)                                                                     
{                                                                     
 80157a0:	b8 20 80 00 	mv r16,r1                                      
 80157a4:	b8 40 70 00 	mv r14,r2                                      
 80157a8:	b8 60 78 00 	mv r15,r3                                      
 80157ac:	b8 80 88 00 	mv r17,r4                                      
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
 80157b0:	34 0c 00 0e 	mvi r12,14                                     
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
 80157b4:	45 a0 00 0c 	be r13,r0,80157e4 <rtems_timer_server_fire_when+0x78>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
 80157b8:	78 0b 08 03 	mvhi r11,0x803                                 
 80157bc:	39 6b fc d0 	ori r11,r11,0xfcd0                             
 80157c0:	41 65 00 14 	lbu r5,(r11+20)                                
    return RTEMS_NOT_DEFINED;                                         
 80157c4:	34 0c 00 0b 	mvi r12,11                                     
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
 80157c8:	44 a0 00 07 	be r5,r0,80157e4 <rtems_timer_server_fire_when+0x78><== NEVER TAKEN
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
 80157cc:	34 0c 00 09 	mvi r12,9                                      
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD.is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
 80157d0:	44 60 00 05 	be r3,r0,80157e4 <rtems_timer_server_fire_when+0x78>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 80157d4:	b8 40 08 00 	mv r1,r2                                       
 80157d8:	fb ff ef f6 	calli 80117b0 <_TOD_Validate>                  
    return RTEMS_INVALID_CLOCK;                                       
 80157dc:	34 0c 00 14 	mvi r12,20                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
 80157e0:	5c 20 00 0d 	bne r1,r0,8015814 <rtems_timer_server_fire_when+0xa8>
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
 80157e4:	b9 80 08 00 	mv r1,r12                                      
 80157e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80157ec:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80157f0:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80157f4:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80157f8:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80157fc:	2b 8f 00 14 	lw r15,(sp+20)                                 
 8015800:	2b 90 00 10 	lw r16,(sp+16)                                 
 8015804:	2b 91 00 0c 	lw r17,(sp+12)                                 
 8015808:	2b 92 00 08 	lw r18,(sp+8)                                  
 801580c:	37 9c 00 28 	addi sp,sp,40                                  
 8015810:	c3 a0 00 00 	ret                                            
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
 8015814:	b9 c0 08 00 	mv r1,r14                                      
 8015818:	fb ff ef 85 	calli 801162c <_TOD_To_seconds>                
 801581c:	78 03 08 03 	mvhi r3,0x803                                  
 8015820:	38 63 90 8c 	ori r3,r3,0x908c                               
 8015824:	b8 20 90 00 	mv r18,r1                                      
 8015828:	28 64 00 00 	lw r4,(r3+0)                                   
 801582c:	29 62 00 04 	lw r2,(r11+4)                                  
 8015830:	29 61 00 00 	lw r1,(r11+0)                                  
 8015834:	34 03 00 00 	mvi r3,0                                       
 8015838:	f8 00 57 73 	calli 802b604 <__divdi3>                       
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
 801583c:	50 52 ff ea 	bgeu r2,r18,80157e4 <rtems_timer_server_fire_when+0x78>
 8015840:	78 01 08 04 	mvhi r1,0x804                                  
 8015844:	38 21 06 50 	ori r1,r1,0x650                                
 8015848:	ba 00 10 00 	mv r2,r16                                      
 801584c:	37 83 00 28 	addi r3,sp,40                                  
 8015850:	f8 00 0d 26 	calli 8018ce8 <_Objects_Get>                   
 8015854:	b8 20 70 00 	mv r14,r1                                      
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8015858:	2b 81 00 28 	lw r1,(sp+40)                                  
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
 801585c:	34 0c 00 04 	mvi r12,4                                      
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
 8015860:	5c 20 ff e1 	bne r1,r0,80157e4 <rtems_timer_server_fire_when+0x78>
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
 8015864:	35 c1 00 10 	addi r1,r14,16                                 
 8015868:	f8 00 16 54 	calli 801b1b8 <_Watchdog_Remove>               
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
 801586c:	34 01 00 03 	mvi r1,3                                       
 8015870:	78 03 08 03 	mvhi r3,0x803                                  
 8015874:	59 c1 00 38 	sw (r14+56),r1                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8015878:	59 c0 00 18 	sw (r14+24),r0                                 
  the_watchdog->routine   = routine;                                  
 801587c:	59 cf 00 2c 	sw (r14+44),r15                                
  the_watchdog->id        = id;                                       
 8015880:	59 d0 00 30 	sw (r14+48),r16                                
  the_watchdog->user_data = user_data;                                
 8015884:	59 d1 00 34 	sw (r14+52),r17                                
 8015888:	38 63 90 8c 	ori r3,r3,0x908c                               
 801588c:	28 64 00 00 	lw r4,(r3+0)                                   
 8015890:	29 61 00 00 	lw r1,(r11+0)                                  
 8015894:	29 62 00 04 	lw r2,(r11+4)                                  
 8015898:	34 03 00 00 	mvi r3,0                                       
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
                                                                      
      _Thread_Enable_dispatch();                                      
      return RTEMS_SUCCESSFUL;                                        
 801589c:	34 0c 00 00 	mvi r12,0                                      
 80158a0:	f8 00 57 59 	calli 802b604 <__divdi3>                       
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 80158a4:	29 a3 00 04 	lw r3,(r13+4)                                  
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 80158a8:	ca 42 90 00 	sub r18,r18,r2                                 
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 80158ac:	b9 a0 08 00 	mv r1,r13                                      
 80158b0:	b9 c0 10 00 	mv r2,r14                                      
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
 80158b4:	59 d2 00 1c 	sw (r14+28),r18                                
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
 80158b8:	d8 60 00 00 	call r3                                        
                                                                      
      _Thread_Enable_dispatch();                                      
 80158bc:	f8 00 11 83 	calli 8019ec8 <_Thread_Enable_dispatch>        
      return RTEMS_SUCCESSFUL;                                        
 80158c0:	e3 ff ff c9 	bi 80157e4 <rtems_timer_server_fire_when+0x78> 
                                                                      

0800139c <rtems_verror>: static int rtems_verror( rtems_error_code_t error_flag, const char *printf_format, va_list arglist ) {
 800139c:	37 9c ff e4 	addi sp,sp,-28                                 
 80013a0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80013a4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80013a8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80013ac:	5b 8e 00 10 	sw (sp+16),r14                                 
 80013b0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80013b4:	5b 90 00 08 	sw (sp+8),r16                                  
 80013b8:	5b 9d 00 04 	sw (sp+4),ra                                   
 80013bc:	b8 20 68 00 	mv r13,r1                                      
  int               local_errno = 0;                                  
  int               chars_written = 0;                                
  rtems_status_code status;                                           
                                                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
 80013c0:	78 01 20 00 	mvhi r1,0x2000                                 
 80013c4:	a1 a1 08 00 	and r1,r13,r1                                  
static int rtems_verror(                                              
  rtems_error_code_t  error_flag,                                     
  const char         *printf_format,                                  
  va_list             arglist                                         
)                                                                     
{                                                                     
 80013c8:	b8 40 80 00 	mv r16,r2                                      
 80013cc:	b8 60 78 00 	mv r15,r3                                      
  int               local_errno = 0;                                  
  int               chars_written = 0;                                
  rtems_status_code status;                                           
                                                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
 80013d0:	44 20 00 10 	be r1,r0,8001410 <rtems_verror+0x74>           
    if (rtems_panic_in_progress++)                                    
 80013d4:	78 04 08 02 	mvhi r4,0x802                                  
 80013d8:	38 84 08 18 	ori r4,r4,0x818                                
 80013dc:	28 81 00 00 	lw r1,(r4+0)                                   
 80013e0:	34 25 00 01 	addi r5,r1,1                                   
 80013e4:	58 85 00 00 	sw (r4+0),r5                                   
 80013e8:	44 20 00 07 	be r1,r0,8001404 <rtems_verror+0x68>           <== ALWAYS TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 80013ec:	78 01 08 02 	mvhi r1,0x802                                  <== NOT EXECUTED
 80013f0:	38 21 09 58 	ori r1,r1,0x958                                <== NOT EXECUTED
 80013f4:	28 22 00 00 	lw r2,(r1+0)                                   <== NOT EXECUTED
                                                                      
    ++level;                                                          
 80013f8:	34 42 00 01 	addi r2,r2,1                                   <== NOT EXECUTED
    _Thread_Dispatch_disable_level = level;                           
 80013fc:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
void _Thread_Disable_dispatch( void );                                
#else                                                                 
RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )            
{                                                                     
  _Thread_Dispatch_increment_disable_level();                         
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
 8001400:	28 85 00 00 	lw r5,(r4+0)                                   <== NOT EXECUTED
      _Thread_Disable_dispatch();       /* disable task switches */   
                                                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
 8001404:	34 01 00 02 	mvi r1,2                                       
      return 0;                                                       
 8001408:	34 0c 00 00 	mvi r12,0                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
    if (rtems_panic_in_progress++)                                    
      _Thread_Disable_dispatch();       /* disable task switches */   
                                                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
 800140c:	48 a1 00 2b 	bg r5,r1,80014b8 <rtems_verror+0x11c>          <== NEVER TAKEN
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
 8001410:	78 0b 08 02 	mvhi r11,0x802                                 
 8001414:	39 6b 02 70 	ori r11,r11,0x270                              
 8001418:	29 61 00 00 	lw r1,(r11+0)                                  
  rtems_error_code_t  error_flag,                                     
  const char         *printf_format,                                  
  va_list             arglist                                         
)                                                                     
{                                                                     
  int               local_errno = 0;                                  
 800141c:	34 0e 00 00 	mvi r14,0                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
 8001420:	28 21 00 08 	lw r1,(r1+8)                                   
 8001424:	f8 00 30 a4 	calli 800d6b4 <fflush>                         
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
 8001428:	78 03 08 01 	mvhi r3,0x801                                  
 800142c:	38 63 d7 f0 	ori r3,r3,0xd7f0                               
 8001430:	28 62 00 00 	lw r2,(r3+0)                                   
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
 8001434:	78 01 40 00 	mvhi r1,0x4000                                 
 8001438:	a1 a1 08 00 	and r1,r13,r1                                  
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
 800143c:	a1 a2 68 00 	and r13,r13,r2                                 
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
 8001440:	5c 20 00 34 	bne r1,r0,8001510 <rtems_verror+0x174>         
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if (_System_state_Is_multiprocessing)                             
      fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
 8001444:	29 61 00 00 	lw r1,(r11+0)                                  
 8001448:	ba 00 10 00 	mv r2,r16                                      
 800144c:	b9 e0 18 00 	mv r3,r15                                      
 8001450:	28 21 00 0c 	lw r1,(r1+12)                                  
 8001454:	f8 00 44 8e 	calli 801268c <vfprintf>                       
 8001458:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  if (status)                                                         
 800145c:	5d a0 00 21 	bne r13,r0,80014e0 <rtems_verror+0x144>        
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
 8001460:	45 c0 00 0d 	be r14,r0,8001494 <rtems_verror+0xf8>          
    if ((local_errno > 0) && *strerror(local_errno))                  
 8001464:	4c 0e 00 05 	bge r0,r14,8001478 <rtems_verror+0xdc>         
 8001468:	b9 c0 08 00 	mv r1,r14                                      
 800146c:	f8 00 35 bb 	calli 800eb58 <strerror>                       
 8001470:	40 21 00 00 	lbu r1,(r1+0)                                  
 8001474:	5c 20 00 2a 	bne r1,r0,800151c <rtems_verror+0x180>         <== ALWAYS TAKEN
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
 8001478:	29 61 00 00 	lw r1,(r11+0)                                  
 800147c:	78 02 08 01 	mvhi r2,0x801                                  
 8001480:	38 42 d4 cc 	ori r2,r2,0xd4cc                               
 8001484:	28 21 00 0c 	lw r1,(r1+12)                                  
 8001488:	b9 c0 18 00 	mv r3,r14                                      
 800148c:	f8 00 31 f1 	calli 800dc50 <fprintf>                        
 8001490:	b5 81 60 00 	add r12,r12,r1                                 
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
 8001494:	29 61 00 00 	lw r1,(r11+0)                                  
 8001498:	78 02 08 01 	mvhi r2,0x801                                  
 800149c:	38 42 d2 1c 	ori r2,r2,0xd21c                               
 80014a0:	28 21 00 0c 	lw r1,(r1+12)                                  
 80014a4:	f8 00 31 eb 	calli 800dc50 <fprintf>                        
                                                                      
  (void) fflush(stderr);                                              
 80014a8:	29 62 00 00 	lw r2,(r11+0)                                  
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
 80014ac:	b4 2c 60 00 	add r12,r1,r12                                 
                                                                      
  (void) fflush(stderr);                                              
 80014b0:	28 41 00 0c 	lw r1,(r2+12)                                  
 80014b4:	f8 00 30 80 	calli 800d6b4 <fflush>                         
                                                                      
  return chars_written;                                               
}                                                                     
 80014b8:	b9 80 08 00 	mv r1,r12                                      
 80014bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80014c0:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80014c4:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80014c8:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80014cc:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80014d0:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80014d4:	2b 90 00 08 	lw r16,(sp+8)                                  
 80014d8:	37 9c 00 1c 	addi sp,sp,28                                  
 80014dc:	c3 a0 00 00 	ret                                            
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
 80014e0:	29 62 00 00 	lw r2,(r11+0)                                  
 80014e4:	b9 a0 08 00 	mv r1,r13                                      
 80014e8:	28 4d 00 0c 	lw r13,(r2+12)                                 
 80014ec:	fb ff ff a3 	calli 8001378 <rtems_status_text>              
 80014f0:	78 02 08 01 	mvhi r2,0x801                                  
 80014f4:	b8 20 18 00 	mv r3,r1                                       
 80014f8:	38 42 d4 ac 	ori r2,r2,0xd4ac                               
 80014fc:	b9 a0 08 00 	mv r1,r13                                      
 8001500:	f8 00 31 d4 	calli 800dc50 <fprintf>                        
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
 8001504:	b5 81 60 00 	add r12,r12,r1                                 
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
 8001508:	45 c0 ff e3 	be r14,r0,8001494 <rtems_verror+0xf8>          
 800150c:	e3 ff ff d6 	bi 8001464 <rtems_verror+0xc8>                 
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
    local_errno = errno;                                              
 8001510:	f8 00 2f 59 	calli 800d274 <__errno>                        
 8001514:	28 2e 00 00 	lw r14,(r1+0)                                  
 8001518:	e3 ff ff cb 	bi 8001444 <rtems_verror+0xa8>                 
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
    if ((local_errno > 0) && *strerror(local_errno))                  
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
 800151c:	29 62 00 00 	lw r2,(r11+0)                                  
 8001520:	b9 c0 08 00 	mv r1,r14                                      
 8001524:	28 4d 00 0c 	lw r13,(r2+12)                                 
 8001528:	f8 00 35 8c 	calli 800eb58 <strerror>                       
 800152c:	78 02 08 01 	mvhi r2,0x801                                  
 8001530:	b8 20 18 00 	mv r3,r1                                       
 8001534:	38 42 d4 bc 	ori r2,r2,0xd4bc                               
 8001538:	b9 a0 08 00 	mv r1,r13                                      
 800153c:	f8 00 31 c5 	calli 800dc50 <fprintf>                        
 8001540:	b5 81 60 00 	add r12,r12,r1                                 
 8001544:	e3 ff ff d4 	bi 8001494 <rtems_verror+0xf8>                 
                                                                      

08025bc0 <scanInt>: /** * Extract an integer value from the database */ static int scanInt(FILE *fp, int *val) {
 8025bc0:	37 9c ff d4 	addi sp,sp,-44                                 
 8025bc4:	5b 8b 00 2c 	sw (sp+44),r11                                 
 8025bc8:	5b 8c 00 28 	sw (sp+40),r12                                 
 8025bcc:	5b 8d 00 24 	sw (sp+36),r13                                 
 8025bd0:	5b 8e 00 20 	sw (sp+32),r14                                 
 8025bd4:	5b 8f 00 1c 	sw (sp+28),r15                                 
 8025bd8:	5b 90 00 18 	sw (sp+24),r16                                 
 8025bdc:	5b 91 00 14 	sw (sp+20),r17                                 
 8025be0:	5b 92 00 10 	sw (sp+16),r18                                 
 8025be4:	5b 93 00 0c 	sw (sp+12),r19                                 
 8025be8:	5b 94 00 08 	sw (sp+8),r20                                  
 8025bec:	5b 9d 00 04 	sw (sp+4),ra                                   
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
 8025bf0:	78 03 08 06 	mvhi r3,0x806                                  
 8025bf4:	38 63 2d fc 	ori r3,r3,0x2dfc                               
 8025bf8:	28 70 00 00 	lw r16,(r3+0)                                  
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025bfc:	78 13 08 06 	mvhi r19,0x806                                 
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8025c00:	78 0e 08 06 	mvhi r14,0x806                                 
/**                                                                   
 *  Extract an integer value from the database                        
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
 8025c04:	b8 20 58 00 	mv r11,r1                                      
 8025c08:	b8 40 a0 00 	mv r20,r2                                      
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
 8025c0c:	34 0f 00 00 	mvi r15,0                                      
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
  int c;                                                              
  unsigned int i = 0;                                                 
 8025c10:	34 0d 00 00 	mvi r13,0                                      
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025c14:	3a 73 ba 58 	ori r19,r19,0xba58                             
    if (c == ':')                                                     
 8025c18:	34 11 00 3a 	mvi r17,58                                     
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8025c1c:	39 ce ba 48 	ori r14,r14,0xba48                             
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
 8025c20:	34 12 00 2d 	mvi r18,45                                     
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025c24:	29 63 00 04 	lw r3,(r11+4)                                  
 8025c28:	34 63 ff ff 	addi r3,r3,-1                                  
 8025c2c:	59 63 00 04 	sw (r11+4),r3                                  
 8025c30:	4c 60 00 1a 	bge r3,r0,8025c98 <scanInt+0xd8>               <== ALWAYS TAKEN
 8025c34:	2a 61 00 00 	lw r1,(r19+0)                                  <== NOT EXECUTED
 8025c38:	b9 60 10 00 	mv r2,r11                                      <== NOT EXECUTED
 8025c3c:	f8 00 77 c2 	calli 8043b44 <__srget_r>                      <== NOT EXECUTED
 8025c40:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
    if (c == ':')                                                     
 8025c44:	45 91 00 1a 	be r12,r17,8025cac <scanInt+0xec>              <== NOT EXECUTED
      break;                                                          
    if (sign == 0) {                                                  
 8025c48:	5d e0 00 03 	bne r15,r0,8025c54 <scanInt+0x94>              
      if (c == '-') {                                                 
        sign = -1;                                                    
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
 8025c4c:	34 0f 00 01 	mvi r15,1                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
 8025c50:	45 92 00 32 	be r12,r18,8025d18 <scanInt+0x158>             
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
 8025c54:	29 c1 00 00 	lw r1,(r14+0)                                  
 8025c58:	b4 2c 08 00 	add r1,r1,r12                                  
 8025c5c:	40 21 00 01 	lbu r1,(r1+1)                                  
 8025c60:	20 21 00 04 	andi r1,r1,0x4                                 
 8025c64:	44 20 00 1f 	be r1,r0,8025ce0 <scanInt+0x120>               
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
 8025c68:	ba 00 08 00 	mv r1,r16                                      
 8025c6c:	34 02 00 0a 	mvi r2,10                                      
 8025c70:	f8 00 dd be 	calli 805d368 <__udivsi3>                      
 8025c74:	55 a1 00 1b 	bgu r13,r1,8025ce0 <scanInt+0x120>             
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
 8025c78:	35 8c ff d0 	addi r12,r12,-48                               
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
 8025c7c:	45 a1 00 14 	be r13,r1,8025ccc <scanInt+0x10c>              
      return 0;                                                       
    i = i * 10 + d;                                                   
 8025c80:	b5 ad 68 00 	add r13,r13,r13                                
 8025c84:	b5 ad 18 00 	add r3,r13,r13                                 
 8025c88:	b4 63 18 00 	add r3,r3,r3                                   
 8025c8c:	b5 a3 68 00 	add r13,r13,r3                                 
 8025c90:	b5 8d 68 00 	add r13,r12,r13                                
 8025c94:	e3 ff ff e4 	bi 8025c24 <scanInt+0x64>                      
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025c98:	29 63 00 00 	lw r3,(r11+0)                                  
 8025c9c:	40 6c 00 00 	lbu r12,(r3+0)                                 
 8025ca0:	34 61 00 01 	addi r1,r3,1                                   
 8025ca4:	59 61 00 00 	sw (r11+0),r1                                  
    if (c == ':')                                                     
 8025ca8:	5d 91 ff e8 	bne r12,r17,8025c48 <scanInt+0x88>             
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
 8025cac:	34 01 00 00 	mvi r1,0                                       
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
 8025cb0:	45 e0 00 0d 	be r15,r0,8025ce4 <scanInt+0x124>              <== NEVER TAKEN
    return 0;                                                         
  *val = i * sign;                                                    
 8025cb4:	b9 e0 08 00 	mv r1,r15                                      
 8025cb8:	b9 a0 10 00 	mv r2,r13                                      
 8025cbc:	f8 00 dd 46 	calli 805d1d4 <__mulsi3>                       
 8025cc0:	5a 81 00 00 	sw (r20+0),r1                                  
  return 1;                                                           
 8025cc4:	34 01 00 01 	mvi r1,1                                       
 8025cc8:	e0 00 00 07 	bi 8025ce4 <scanInt+0x124>                     
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
 8025ccc:	ba 00 08 00 	mv r1,r16                                      
 8025cd0:	34 02 00 0a 	mvi r2,10                                      
 8025cd4:	f8 00 dd b5 	calli 805d3a8 <__umodsi3>                      
 8025cd8:	55 81 00 02 	bgu r12,r1,8025ce0 <scanInt+0x120>             <== ALWAYS TAKEN
 8025cdc:	e3 ff ff e9 	bi 8025c80 <scanInt+0xc0>                      <== NOT EXECUTED
      return 0;                                                       
 8025ce0:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
  *val = i * sign;                                                    
  return 1;                                                           
}                                                                     
 8025ce4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8025ce8:	2b 8b 00 2c 	lw r11,(sp+44)                                 
 8025cec:	2b 8c 00 28 	lw r12,(sp+40)                                 
 8025cf0:	2b 8d 00 24 	lw r13,(sp+36)                                 
 8025cf4:	2b 8e 00 20 	lw r14,(sp+32)                                 
 8025cf8:	2b 8f 00 1c 	lw r15,(sp+28)                                 
 8025cfc:	2b 90 00 18 	lw r16,(sp+24)                                 
 8025d00:	2b 91 00 14 	lw r17,(sp+20)                                 
 8025d04:	2b 92 00 10 	lw r18,(sp+16)                                 
 8025d08:	2b 93 00 0c 	lw r19,(sp+12)                                 
 8025d0c:	2b 94 00 08 	lw r20,(sp+8)                                  
 8025d10:	37 9c 00 2c 	addi sp,sp,44                                  
 8025d14:	c3 a0 00 00 	ret                                            
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
        sign = -1;                                                    
        limit++;                                                      
 8025d18:	36 10 00 01 	addi r16,r16,1                                 
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
        sign = -1;                                                    
 8025d1c:	34 0f ff ff 	mvi r15,-1                                     
        limit++;                                                      
        continue;                                                     
 8025d20:	e3 ff ff c1 	bi 8025c24 <scanInt+0x64>                      
                                                                      

08025d24 <scanString>: /** * Extract a string value from the database */ static int scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag) {
 8025d24:	37 9c ff d8 	addi sp,sp,-40                                 
 8025d28:	5b 8b 00 28 	sw (sp+40),r11                                 
 8025d2c:	5b 8c 00 24 	sw (sp+36),r12                                 
 8025d30:	5b 8d 00 20 	sw (sp+32),r13                                 
 8025d34:	5b 8e 00 1c 	sw (sp+28),r14                                 
 8025d38:	5b 8f 00 18 	sw (sp+24),r15                                 
 8025d3c:	5b 90 00 14 	sw (sp+20),r16                                 
 8025d40:	5b 91 00 10 	sw (sp+16),r17                                 
 8025d44:	5b 92 00 0c 	sw (sp+12),r18                                 
 8025d48:	5b 93 00 08 	sw (sp+8),r19                                  
 8025d4c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8025d50:	b8 60 58 00 	mv r11,r3                                      
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
 8025d54:	28 63 00 00 	lw r3,(r3+0)                                   
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025d58:	78 12 08 06 	mvhi r18,0x806                                 
/**                                                                   
 *  Extract a string value from the database                          
 */                                                                   
static int                                                            
scanString(FILE *fp, char **name, char **bufp, size_t *nleft, int nlFlag)
{                                                                     
 8025d5c:	b8 20 60 00 	mv r12,r1                                      
 8025d60:	b8 80 68 00 	mv r13,r4                                      
 8025d64:	b8 a0 98 00 	mv r19,r5                                      
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
 8025d68:	58 43 00 00 	sw (r2+0),r3                                   
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025d6c:	3a 52 ba 58 	ori r18,r18,0xba58                             
    if (c == ':') {                                                   
 8025d70:	34 0e 00 3a 	mvi r14,58                                     
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
 8025d74:	34 0f 00 0a 	mvi r15,10                                     
        if (!nlFlag)                                                  
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
 8025d78:	34 10 ff ff 	mvi r16,-1                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
 8025d7c:	34 11 00 01 	mvi r17,1                                      
{                                                                     
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025d80:	29 81 00 04 	lw r1,(r12+4)                                  
 8025d84:	34 21 ff ff 	addi r1,r1,-1                                  
 8025d88:	59 81 00 04 	sw (r12+4),r1                                  
 8025d8c:	4c 20 00 12 	bge r1,r0,8025dd4 <scanString+0xb0>            
 8025d90:	2a 41 00 00 	lw r1,(r18+0)                                  
 8025d94:	b9 80 10 00 	mv r2,r12                                      
 8025d98:	f8 00 77 6b 	calli 8043b44 <__srget_r>                      
    if (c == ':') {                                                   
 8025d9c:	44 2e 00 13 	be r1,r14,8025de8 <scanString+0xc4>            <== NEVER TAKEN
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
 8025da0:	44 2f 00 2b 	be r1,r15,8025e4c <scanString+0x128>           
        if (!nlFlag)                                                  
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
 8025da4:	44 30 00 1d 	be r1,r16,8025e18 <scanString+0xf4>            
      return 0;                                                       
    if (*nleft < 2)                                                   
 8025da8:	29 a2 00 00 	lw r2,(r13+0)                                  
 8025dac:	52 22 00 1b 	bgeu r17,r2,8025e18 <scanString+0xf4>          
      return 0;                                                       
    **bufp = c;                                                       
 8025db0:	29 62 00 00 	lw r2,(r11+0)                                  
 8025db4:	30 41 00 00 	sb (r2+0),r1                                   
    ++(*bufp);                                                        
 8025db8:	29 62 00 00 	lw r2,(r11+0)                                  
    --(*nleft);                                                       
 8025dbc:	29 a1 00 00 	lw r1,(r13+0)                                  
    if (c == EOF)                                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
 8025dc0:	34 42 00 01 	addi r2,r2,1                                   
 8025dc4:	59 62 00 00 	sw (r11+0),r2                                  
    --(*nleft);                                                       
 8025dc8:	34 21 ff ff 	addi r1,r1,-1                                  
 8025dcc:	59 a1 00 00 	sw (r13+0),r1                                  
  }                                                                   
 8025dd0:	e3 ff ff ec 	bi 8025d80 <scanString+0x5c>                   
{                                                                     
  int c;                                                              
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
 8025dd4:	29 81 00 00 	lw r1,(r12+0)                                  
 8025dd8:	34 22 00 01 	addi r2,r1,1                                   
 8025ddc:	40 21 00 00 	lbu r1,(r1+0)                                  
 8025de0:	59 82 00 00 	sw (r12+0),r2                                  
    if (c == ':') {                                                   
 8025de4:	5c 2e ff ef 	bne r1,r14,8025da0 <scanString+0x7c>           
        if (nlFlag)                                                   
            return 0;                                                 
 8025de8:	34 01 00 00 	mvi r1,0                                       
                                                                      
  *name = *bufp;                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':') {                                                   
        if (nlFlag)                                                   
 8025dec:	5e 60 00 0c 	bne r19,r0,8025e1c <scanString+0xf8>           
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
 8025df0:	29 62 00 00 	lw r2,(r11+0)                                  
  ++(*bufp);                                                          
  --(*nleft);                                                         
  return 1;                                                           
 8025df4:	34 01 00 01 	mvi r1,1                                       
      return 0;                                                       
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
 8025df8:	30 40 00 00 	sb (r2+0),r0                                   
  ++(*bufp);                                                          
 8025dfc:	29 63 00 00 	lw r3,(r11+0)                                  
  --(*nleft);                                                         
 8025e00:	29 a2 00 00 	lw r2,(r13+0)                                  
    **bufp = c;                                                       
    ++(*bufp);                                                        
    --(*nleft);                                                       
  }                                                                   
  **bufp = '\0';                                                      
  ++(*bufp);                                                          
 8025e04:	34 63 00 01 	addi r3,r3,1                                   
 8025e08:	59 63 00 00 	sw (r11+0),r3                                  
  --(*nleft);                                                         
 8025e0c:	34 42 ff ff 	addi r2,r2,-1                                  
 8025e10:	59 a2 00 00 	sw (r13+0),r2                                  
  return 1;                                                           
 8025e14:	e0 00 00 02 	bi 8025e1c <scanString+0xf8>                   
        break;                                                        
    }                                                                 
    if (c == EOF)                                                     
      return 0;                                                       
    if (*nleft < 2)                                                   
      return 0;                                                       
 8025e18:	34 01 00 00 	mvi r1,0                                       
  }                                                                   
  **bufp = '\0';                                                      
  ++(*bufp);                                                          
  --(*nleft);                                                         
  return 1;                                                           
}                                                                     
 8025e1c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8025e20:	2b 8b 00 28 	lw r11,(sp+40)                                 
 8025e24:	2b 8c 00 24 	lw r12,(sp+36)                                 
 8025e28:	2b 8d 00 20 	lw r13,(sp+32)                                 
 8025e2c:	2b 8e 00 1c 	lw r14,(sp+28)                                 
 8025e30:	2b 8f 00 18 	lw r15,(sp+24)                                 
 8025e34:	2b 90 00 14 	lw r16,(sp+20)                                 
 8025e38:	2b 91 00 10 	lw r17,(sp+16)                                 
 8025e3c:	2b 92 00 0c 	lw r18,(sp+12)                                 
 8025e40:	2b 93 00 08 	lw r19,(sp+8)                                  
 8025e44:	37 9c 00 28 	addi sp,sp,40                                  
 8025e48:	c3 a0 00 00 	ret                                            
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
        if (!nlFlag)                                                  
            return 0;                                                 
 8025e4c:	34 01 00 00 	mvi r1,0                                       
        if (nlFlag)                                                   
            return 0;                                                 
        break;                                                        
    }                                                                 
    if (c == '\n') {                                                  
        if (!nlFlag)                                                  
 8025e50:	5e 60 ff e8 	bne r19,r0,8025df0 <scanString+0xcc>           
 8025e54:	e3 ff ff f2 	bi 8025e1c <scanString+0xf8>                   
                                                                      

08025e58 <scangr>: FILE *fp, struct group *grp, char *buffer, size_t bufsize ) {
 8025e58:	37 9c ff d8 	addi sp,sp,-40                                 
 8025e5c:	5b 8b 00 18 	sw (sp+24),r11                                 
 8025e60:	5b 8c 00 14 	sw (sp+20),r12                                 
 8025e64:	5b 8d 00 10 	sw (sp+16),r13                                 
 8025e68:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8025e6c:	5b 8f 00 08 	sw (sp+8),r15                                  
 8025e70:	5b 9d 00 04 	sw (sp+4),ra                                   
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8025e74:	37 8c 00 20 	addi r12,sp,32                                 
 8025e78:	37 8b 00 1c 	addi r11,sp,28                                 
  FILE *fp,                                                           
  struct group *grp,                                                  
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8025e7c:	5b 83 00 20 	sw (sp+32),r3                                  
 8025e80:	5b 84 00 1c 	sw (sp+28),r4                                  
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8025e84:	b9 80 18 00 	mv r3,r12                                      
 8025e88:	b9 60 20 00 	mv r4,r11                                      
 8025e8c:	34 05 00 00 	mvi r5,0                                       
  FILE *fp,                                                           
  struct group *grp,                                                  
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8025e90:	b8 20 70 00 	mv r14,r1                                      
 8025e94:	b8 40 78 00 	mv r15,r2                                      
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8025e98:	fb ff ff a3 	calli 8025d24 <scanString>                     
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
   || !scanInt(fp, &grgid)                                            
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
    return 0;                                                         
 8025e9c:	34 0d 00 00 	mvi r13,0                                      
{                                                                     
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
 8025ea0:	5c 20 00 0a 	bne r1,r0,8025ec8 <scangr+0x70>                
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
  return 1;                                                           
}                                                                     
 8025ea4:	b9 a0 08 00 	mv r1,r13                                      
 8025ea8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8025eac:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8025eb0:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8025eb4:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8025eb8:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8025ebc:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8025ec0:	37 9c 00 28 	addi sp,sp,40                                  
 8025ec4:	c3 a0 00 00 	ret                                            
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
 8025ec8:	b9 c0 08 00 	mv r1,r14                                      
 8025ecc:	35 e2 00 04 	addi r2,r15,4                                  
 8025ed0:	b9 80 18 00 	mv r3,r12                                      
 8025ed4:	b9 60 20 00 	mv r4,r11                                      
 8025ed8:	34 05 00 00 	mvi r5,0                                       
 8025edc:	fb ff ff 92 	calli 8025d24 <scanString>                     
 8025ee0:	44 20 ff f1 	be r1,r0,8025ea4 <scangr+0x4c>                 <== NEVER TAKEN
   || !scanInt(fp, &grgid)                                            
 8025ee4:	b9 c0 08 00 	mv r1,r14                                      
 8025ee8:	37 82 00 28 	addi r2,sp,40                                  
 8025eec:	fb ff ff 35 	calli 8025bc0 <scanInt>                        
 8025ef0:	44 20 ff ed 	be r1,r0,8025ea4 <scangr+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
 8025ef4:	b9 c0 08 00 	mv r1,r14                                      
 8025ef8:	37 82 00 24 	addi r2,sp,36                                  
 8025efc:	b9 80 18 00 	mv r3,r12                                      
 8025f00:	b9 60 20 00 	mv r4,r11                                      
 8025f04:	34 05 00 01 	mvi r5,1                                       
 8025f08:	fb ff ff 87 	calli 8025d24 <scanString>                     
 8025f0c:	44 20 ff e6 	be r1,r0,8025ea4 <scangr+0x4c>                 <== NEVER TAKEN
    return 0;                                                         
  grp->gr_gid = grgid;                                                
 8025f10:	2b 81 00 28 	lw r1,(sp+40)                                  
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f14:	2b 85 00 24 	lw r5,(sp+36)                                  
 8025f18:	34 03 00 17 	mvi r3,23                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
   || !scanInt(fp, &grgid)                                            
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
    return 0;                                                         
  grp->gr_gid = grgid;                                                
 8025f1c:	0d e1 00 08 	sh (r15+8),r1                                  
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f20:	40 a1 00 00 	lbu r1,(r5+0)                                  
 8025f24:	44 20 00 0c 	be r1,r0,8025f54 <scangr+0xfc>                 <== NEVER TAKEN
 8025f28:	b8 a0 10 00 	mv r2,r5                                       
 8025f2c:	34 03 00 01 	mvi r3,1                                       
 8025f30:	34 42 00 01 	addi r2,r2,1                                   
    if(*cp == ',')                                                    
      memcount++;                                                     
 8025f34:	64 24 00 2c 	cmpei r4,r1,44                                 
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f38:	40 41 00 00 	lbu r1,(r2+0)                                  
    if(*cp == ',')                                                    
      memcount++;                                                     
 8025f3c:	b4 64 18 00 	add r3,r3,r4                                   
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f40:	5c 20 ff fc 	bne r1,r0,8025f30 <scangr+0xd8>                
 8025f44:	34 63 00 01 	addi r3,r3,1                                   
 8025f48:	b4 63 18 00 	add r3,r3,r3                                   
 8025f4c:	b4 63 18 00 	add r3,r3,r3                                   
 8025f50:	34 63 00 0f 	addi r3,r3,15                                  
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
 8025f54:	2b 81 00 1c 	lw r1,(sp+28)                                  
    return 0;                                                         
 8025f58:	34 0d 00 00 	mvi r13,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
 8025f5c:	54 61 ff d2 	bgu r3,r1,8025ea4 <scangr+0x4c>                <== NEVER TAKEN
    return 0;                                                         
  grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);            
 8025f60:	2b 84 00 20 	lw r4,(sp+32)                                  
 8025f64:	34 01 ff f0 	mvi r1,-16                                     
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f68:	34 03 00 04 	mvi r3,4                                       
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
    return 0;                                                         
  grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);            
 8025f6c:	34 84 00 0f 	addi r4,r4,15                                  
 8025f70:	a0 81 20 00 	and r4,r4,r1                                   
 8025f74:	59 e4 00 0c 	sw (r15+12),r4                                 
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
 8025f78:	58 85 00 00 	sw (r4+0),r5                                   
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f7c:	2b 81 00 24 	lw r1,(sp+36)                                  
 8025f80:	40 22 00 00 	lbu r2,(r1+0)                                  
 8025f84:	44 40 00 0b 	be r2,r0,8025fb0 <scangr+0x158>                <== NEVER TAKEN
}                                                                     
                                                                      
/**                                                                   
 *  Extract a single group record from the database                   
 */                                                                   
static int scangr(                                                    
 8025f88:	34 21 00 01 	addi r1,r1,1                                   
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f8c:	34 03 00 01 	mvi r3,1                                       
    if(*cp == ',') {                                                  
 8025f90:	34 04 00 2c 	mvi r4,44                                      
 8025f94:	44 44 00 0b 	be r2,r4,8025fc0 <scangr+0x168>                
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
 8025f98:	40 22 00 00 	lbu r2,(r1+0)                                  
 8025f9c:	34 21 00 01 	addi r1,r1,1                                   
 8025fa0:	5c 40 ff fd 	bne r2,r0,8025f94 <scangr+0x13c>               
 8025fa4:	29 e4 00 0c 	lw r4,(r15+12)                                 
 8025fa8:	b4 63 18 00 	add r3,r3,r3                                   
 8025fac:	b4 63 18 00 	add r3,r3,r3                                   
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
 8025fb0:	b4 83 18 00 	add r3,r4,r3                                   
 8025fb4:	58 60 00 00 	sw (r3+0),r0                                   
  return 1;                                                           
 8025fb8:	34 0d 00 01 	mvi r13,1                                      
 8025fbc:	e3 ff ff ba 	bi 8025ea4 <scangr+0x4c>                       
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
 8025fc0:	30 20 ff ff 	sb (r1+-1),r0                                  
      grp->gr_mem[memcount++] = cp + 1;                               
 8025fc4:	29 e5 00 0c 	lw r5,(r15+12)                                 
 8025fc8:	b4 63 10 00 	add r2,r3,r3                                   
 8025fcc:	b4 42 10 00 	add r2,r2,r2                                   
 8025fd0:	b4 a2 10 00 	add r2,r5,r2                                   
 8025fd4:	58 41 00 00 	sw (r2+0),r1                                   
 8025fd8:	34 63 00 01 	addi r3,r3,1                                   
 8025fdc:	e3 ff ff ef 	bi 8025f98 <scangr+0x140>                      
                                                                      

08025fe0 <scanpw>: FILE *fp, struct passwd *pwd, char *buffer, size_t bufsize ) {
 8025fe0:	37 9c ff d8 	addi sp,sp,-40                                 
 8025fe4:	5b 8b 00 18 	sw (sp+24),r11                                 
 8025fe8:	5b 8c 00 14 	sw (sp+20),r12                                 
 8025fec:	5b 8d 00 10 	sw (sp+16),r13                                 
 8025ff0:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8025ff4:	5b 8f 00 08 	sw (sp+8),r15                                  
 8025ff8:	5b 9d 00 04 	sw (sp+4),ra                                   
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 8025ffc:	37 8c 00 20 	addi r12,sp,32                                 
 8026000:	37 8b 00 1c 	addi r11,sp,28                                 
  FILE *fp,                                                           
  struct passwd *pwd,                                                 
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8026004:	5b 83 00 20 	sw (sp+32),r3                                  
 8026008:	5b 84 00 1c 	sw (sp+28),r4                                  
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 802600c:	b9 80 18 00 	mv r3,r12                                      
 8026010:	b9 60 20 00 	mv r4,r11                                      
 8026014:	34 05 00 00 	mvi r5,0                                       
  FILE *fp,                                                           
  struct passwd *pwd,                                                 
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
 8026018:	b8 20 68 00 	mv r13,r1                                      
 802601c:	b8 40 70 00 	mv r14,r2                                      
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 8026020:	fb ff ff 41 	calli 8025d24 <scanString>                     
   || !scanInt(fp, &pwgid)                                            
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
 8026024:	34 0f 00 00 	mvi r15,0                                      
  size_t bufsize                                                      
)                                                                     
{                                                                     
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
 8026028:	5c 20 00 0a 	bne r1,r0,8026050 <scanpw+0x70>                
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
  pwd->pw_gid = pwgid;                                                
  return 1;                                                           
}                                                                     
 802602c:	b9 e0 08 00 	mv r1,r15                                      
 8026030:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8026034:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8026038:	2b 8c 00 14 	lw r12,(sp+20)                                 
 802603c:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8026040:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8026044:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8026048:	37 9c 00 28 	addi sp,sp,40                                  
 802604c:	c3 a0 00 00 	ret                                            
)                                                                     
{                                                                     
  int pwuid, pwgid;                                                   
                                                                      
  if (!scanString(fp, &pwd->pw_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &pwd->pw_passwd, &buffer, &bufsize, 0)          
 8026050:	b9 a0 08 00 	mv r1,r13                                      
 8026054:	35 c2 00 04 	addi r2,r14,4                                  
 8026058:	b9 80 18 00 	mv r3,r12                                      
 802605c:	b9 60 20 00 	mv r4,r11                                      
 8026060:	34 05 00 00 	mvi r5,0                                       
 8026064:	fb ff ff 30 	calli 8025d24 <scanString>                     
 8026068:	44 20 ff f1 	be r1,r0,802602c <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanInt(fp, &pwuid)                                            
 802606c:	b9 a0 08 00 	mv r1,r13                                      
 8026070:	37 82 00 28 	addi r2,sp,40                                  
 8026074:	fb ff fe d3 	calli 8025bc0 <scanInt>                        
 8026078:	44 20 ff ed 	be r1,r0,802602c <scanpw+0x4c>                 
   || !scanInt(fp, &pwgid)                                            
 802607c:	b9 a0 08 00 	mv r1,r13                                      
 8026080:	37 82 00 24 	addi r2,sp,36                                  
 8026084:	fb ff fe cf 	calli 8025bc0 <scanInt>                        
 8026088:	44 20 ff e9 	be r1,r0,802602c <scanpw+0x4c>                 
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
 802608c:	b9 a0 08 00 	mv r1,r13                                      
 8026090:	35 c2 00 0c 	addi r2,r14,12                                 
 8026094:	b9 80 18 00 	mv r3,r12                                      
 8026098:	b9 60 20 00 	mv r4,r11                                      
 802609c:	34 05 00 00 	mvi r5,0                                       
 80260a0:	fb ff ff 21 	calli 8025d24 <scanString>                     
 80260a4:	44 20 ff e2 	be r1,r0,802602c <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
 80260a8:	b9 a0 08 00 	mv r1,r13                                      
 80260ac:	35 c2 00 10 	addi r2,r14,16                                 
 80260b0:	b9 80 18 00 	mv r3,r12                                      
 80260b4:	b9 60 20 00 	mv r4,r11                                      
 80260b8:	34 05 00 00 	mvi r5,0                                       
 80260bc:	fb ff ff 1a 	calli 8025d24 <scanString>                     
 80260c0:	44 20 ff db 	be r1,r0,802602c <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
 80260c4:	b9 a0 08 00 	mv r1,r13                                      
 80260c8:	35 c2 00 14 	addi r2,r14,20                                 
 80260cc:	b9 80 18 00 	mv r3,r12                                      
 80260d0:	b9 60 20 00 	mv r4,r11                                      
 80260d4:	34 05 00 00 	mvi r5,0                                       
 80260d8:	fb ff ff 13 	calli 8025d24 <scanString>                     
 80260dc:	44 20 ff d4 	be r1,r0,802602c <scanpw+0x4c>                 <== NEVER TAKEN
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
 80260e0:	b9 a0 08 00 	mv r1,r13                                      
 80260e4:	35 c2 00 18 	addi r2,r14,24                                 
 80260e8:	b9 80 18 00 	mv r3,r12                                      
 80260ec:	b9 60 20 00 	mv r4,r11                                      
 80260f0:	34 05 00 01 	mvi r5,1                                       
 80260f4:	fb ff ff 0c 	calli 8025d24 <scanString>                     
 80260f8:	44 20 ff cd 	be r1,r0,802602c <scanpw+0x4c>                 <== NEVER TAKEN
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
 80260fc:	2b 81 00 28 	lw r1,(sp+40)                                  
  pwd->pw_gid = pwgid;                                                
  return 1;                                                           
 8026100:	34 0f 00 01 	mvi r15,1                                      
   || !scanString(fp, &pwd->pw_comment, &buffer, &bufsize, 0)         
   || !scanString(fp, &pwd->pw_gecos, &buffer, &bufsize, 0)           
   || !scanString(fp, &pwd->pw_dir, &buffer, &bufsize, 0)             
   || !scanString(fp, &pwd->pw_shell, &buffer, &bufsize, 1))          
    return 0;                                                         
  pwd->pw_uid = pwuid;                                                
 8026104:	0d c1 00 08 	sh (r14+8),r1                                  
  pwd->pw_gid = pwgid;                                                
 8026108:	2b 81 00 24 	lw r1,(sp+36)                                  
 802610c:	0d c1 00 0a 	sh (r14+10),r1                                 
  return 1;                                                           
 8026110:	e3 ff ff c7 	bi 802602c <scanpw+0x4c>                       
                                                                      

08004758 <sched_get_priority_max>: #include <rtems/posix/priority.h> int sched_get_priority_max( int policy ) {
 8004758:	37 9c ff fc 	addi sp,sp,-4                                  
 800475c:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 8004760:	48 01 00 05 	bg r0,r1,8004774 <sched_get_priority_max+0x1c> 
 8004764:	34 02 00 02 	mvi r2,2                                       
 8004768:	4c 41 00 08 	bge r2,r1,8004788 <sched_get_priority_max+0x30>
 800476c:	34 02 00 04 	mvi r2,4                                       
 8004770:	44 22 00 06 	be r1,r2,8004788 <sched_get_priority_max+0x30> <== ALWAYS TAKEN
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8004774:	f8 00 25 06 	calli 800db8c <__errno>                        
 8004778:	34 02 00 16 	mvi r2,22                                      
 800477c:	58 22 00 00 	sw (r1+0),r2                                   
 8004780:	34 01 ff ff 	mvi r1,-1                                      
 8004784:	e0 00 00 05 	bi 8004798 <sched_get_priority_max+0x40>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MAXIMUM_PRIORITY;                            
 8004788:	78 01 08 02 	mvhi r1,0x802                                  
 800478c:	38 21 00 fc 	ori r1,r1,0xfc                                 
 8004790:	40 21 00 00 	lbu r1,(r1+0)                                  
 8004794:	34 21 ff ff 	addi r1,r1,-1                                  
}                                                                     
 8004798:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800479c:	37 9c 00 04 	addi sp,sp,4                                   
 80047a0:	c3 a0 00 00 	ret                                            
                                                                      

080047a4 <sched_get_priority_min>: * 13.3.6 Get Scheduling Parameter Limits, P1003.1b-1993, p. 258 */ int sched_get_priority_min( int policy ) {
 80047a4:	37 9c ff fc 	addi sp,sp,-4                                  
 80047a8:	5b 9d 00 04 	sw (sp+4),ra                                   
  switch ( policy ) {                                                 
 80047ac:	48 01 00 05 	bg r0,r1,80047c0 <sched_get_priority_min+0x1c> 
 80047b0:	34 02 00 02 	mvi r2,2                                       
 80047b4:	4c 41 00 08 	bge r2,r1,80047d4 <sched_get_priority_min+0x30><== ALWAYS TAKEN
 80047b8:	34 02 00 04 	mvi r2,4                                       <== NOT EXECUTED
 80047bc:	44 22 00 06 	be r1,r2,80047d4 <sched_get_priority_min+0x30> <== NOT EXECUTED
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      break;                                                          
                                                                      
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 80047c0:	f8 00 24 f3 	calli 800db8c <__errno>                        
 80047c4:	34 02 00 16 	mvi r2,22                                      
 80047c8:	58 22 00 00 	sw (r1+0),r2                                   
 80047cc:	34 01 ff ff 	mvi r1,-1                                      
 80047d0:	e0 00 00 02 	bi 80047d8 <sched_get_priority_min+0x34>       
  }                                                                   
                                                                      
  return POSIX_SCHEDULER_MINIMUM_PRIORITY;                            
 80047d4:	34 01 00 01 	mvi r1,1                                       
}                                                                     
 80047d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047dc:	37 9c 00 04 	addi sp,sp,4                                   
 80047e0:	c3 a0 00 00 	ret                                            
                                                                      

080047e4 <sched_rr_get_interval>: int sched_rr_get_interval( pid_t pid, struct timespec *interval ) {
 80047e4:	37 9c ff f4 	addi sp,sp,-12                                 
 80047e8:	5b 8b 00 08 	sw (sp+8),r11                                  
 80047ec:	5b 9d 00 04 	sw (sp+4),ra                                   
 80047f0:	b8 20 58 00 	mv r11,r1                                      
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 80047f4:	5c 20 00 0b 	bne r1,r0,8004820 <sched_rr_get_interval+0x3c> <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( ESRCH );                    
                                                                      
  if ( !interval )                                                    
 80047f8:	44 40 00 13 	be r2,r0,8004844 <sched_rr_get_interval+0x60>  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  _Timespec_From_ticks( _Thread_Ticks_per_timeslice, interval );      
 80047fc:	78 01 08 02 	mvhi r1,0x802                                  
 8004800:	38 21 08 80 	ori r1,r1,0x880                                
 8004804:	28 21 00 00 	lw r1,(r1+0)                                   
 8004808:	f8 00 0f 37 	calli 80084e4 <_Timespec_From_ticks>           
  return 0;                                                           
 800480c:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004810:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004814:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8004818:	37 9c 00 0c 	addi sp,sp,12                                  
 800481c:	c3 a0 00 00 	ret                                            
{                                                                     
  /*                                                                  
   *  Only supported for the "calling process" (i.e. this node).      
   */                                                                 
                                                                      
  if ( pid && pid != getpid() )                                       
 8004820:	5b 82 00 0c 	sw (sp+12),r2                                  
 8004824:	fb ff f4 a5 	calli 8001ab8 <getpid>                         
 8004828:	2b 82 00 0c 	lw r2,(sp+12)                                  
 800482c:	44 2b ff f3 	be r1,r11,80047f8 <sched_rr_get_interval+0x14> 
    rtems_set_errno_and_return_minus_one( ESRCH );                    
 8004830:	f8 00 24 d7 	calli 800db8c <__errno>                        
 8004834:	34 02 00 03 	mvi r2,3                                       
 8004838:	58 22 00 00 	sw (r1+0),r2                                   
 800483c:	34 01 ff ff 	mvi r1,-1                                      
 8004840:	e3 ff ff f4 	bi 8004810 <sched_rr_get_interval+0x2c>        
                                                                      
  if ( !interval )                                                    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8004844:	f8 00 24 d2 	calli 800db8c <__errno>                        
 8004848:	34 02 00 16 	mvi r2,22                                      
 800484c:	58 22 00 00 	sw (r1+0),r2                                   
 8004850:	34 01 ff ff 	mvi r1,-1                                      
 8004854:	e3 ff ff ef 	bi 8004810 <sched_rr_get_interval+0x2c>        
                                                                      

080051dc <sem_open>: int oflag, ... /* mode_t mode, */ /* unsigned int value */ ) {
 80051dc:	37 9c ff b8 	addi sp,sp,-72                                 
 80051e0:	5b 8b 00 1c 	sw (sp+28),r11                                 
 80051e4:	5b 8c 00 18 	sw (sp+24),r12                                 
 80051e8:	5b 8d 00 14 	sw (sp+20),r13                                 
 80051ec:	5b 8e 00 10 	sw (sp+16),r14                                 
 80051f0:	5b 8f 00 0c 	sw (sp+12),r15                                 
 80051f4:	5b 90 00 08 	sw (sp+8),r16                                  
 80051f8:	5b 9d 00 04 	sw (sp+4),ra                                   
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 80051fc:	78 09 08 02 	mvhi r9,0x802                                  
 8005200:	39 29 53 28 	ori r9,r9,0x5328                               
 8005204:	29 2a 00 00 	lw r10,(r9+0)                                  
 8005208:	b8 20 78 00 	mv r15,r1                                      
 800520c:	5b 82 00 30 	sw (sp+48),r2                                  
                                                                      
    ++level;                                                          
 8005210:	35 41 00 01 	addi r1,r10,1                                  
 8005214:	5b 83 00 34 	sw (sp+52),r3                                  
 8005218:	5b 84 00 38 	sw (sp+56),r4                                  
 800521c:	5b 85 00 3c 	sw (sp+60),r5                                  
 8005220:	5b 86 00 40 	sw (sp+64),r6                                  
 8005224:	5b 87 00 44 	sw (sp+68),r7                                  
 8005228:	5b 88 00 48 	sw (sp+72),r8                                  
 800522c:	b8 40 68 00 	mv r13,r2                                      
    _Thread_Dispatch_disable_level = level;                           
 8005230:	59 21 00 00 	sw (r9+0),r1                                   
  Objects_Locations          location;                                
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 8005234:	20 4e 02 00 	andi r14,r2,0x200                              
  /* unsigned int value */                                            
)                                                                     
{                                                                     
  va_list                    arg;                                     
  mode_t                     mode;                                    
  unsigned int               value = 0;                               
 8005238:	34 10 00 00 	mvi r16,0                                      
  Objects_Locations          location;                                
  size_t                     name_len;                                
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
 800523c:	5d c0 00 2a 	bne r14,r0,80052e4 <sem_open+0x108>            
  const char *name,                                                   
  Objects_Id *id,                                                     
  size_t     *len                                                     
)                                                                     
{                                                                     
  return _POSIX_Name_to_id( &_POSIX_Semaphore_Information, name, id, len );
 8005240:	78 0b 08 02 	mvhi r11,0x802                                 
 8005244:	39 6b 55 64 	ori r11,r11,0x5564                             
 8005248:	b9 60 08 00 	mv r1,r11                                      
 800524c:	b9 e0 10 00 	mv r2,r15                                      
 8005250:	37 83 00 2c 	addi r3,sp,44                                  
 8005254:	37 84 00 20 	addi r4,sp,32                                  
 8005258:	fb ff fd e7 	calli 80049f4 <_POSIX_Name_to_id>              
 800525c:	b8 20 60 00 	mv r12,r1                                      
   *  and we can just return a pointer to the id.  Otherwise we may   
   *  need to check to see if this is a "semaphore does not exist"    
   *  or some other miscellaneous error on the name.                  
   */                                                                 
                                                                      
  if ( status ) {                                                     
 8005260:	44 20 00 09 	be r1,r0,8005284 <sem_open+0xa8>               
    /*                                                                
     * Unless provided a valid name that did not already exist        
     * and we are willing to create then it is an error.              
     */                                                               
                                                                      
    if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {               
 8005264:	34 01 00 02 	mvi r1,2                                       
 8005268:	5d 81 00 02 	bne r12,r1,8005270 <sem_open+0x94>             
 800526c:	5d c0 00 20 	bne r14,r0,80052ec <sem_open+0x110>            
      _Thread_Enable_dispatch();                                      
 8005270:	f8 00 0e d7 	calli 8008dcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( status, sem_t * );   
 8005274:	f8 00 29 51 	calli 800f7b8 <__errno>                        
 8005278:	58 2c 00 00 	sw (r1+0),r12                                  
 800527c:	34 01 ff ff 	mvi r1,-1                                      
 8005280:	e0 00 00 10 	bi 80052c0 <sem_open+0xe4>                     
                                                                      
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
 8005284:	21 ad 0a 00 	andi r13,r13,0xa00                             
 8005288:	34 01 0a 00 	mvi r1,2560                                    
 800528c:	45 a1 00 23 	be r13,r1,8005318 <sem_open+0x13c>             
  sem_t             *id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Semaphore_Control *)                                  
    _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location );
 8005290:	2b 82 00 2c 	lw r2,(sp+44)                                  
 8005294:	37 83 00 24 	addi r3,sp,36                                  
 8005298:	b9 60 08 00 	mv r1,r11                                      
 800529c:	f8 00 0a b7 	calli 8007d78 <_Objects_Get>                   
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( (sem_t *) &the_semaphore_id, &location );
    the_semaphore->open_count += 1;                                   
 80052a0:	28 22 00 18 	lw r2,(r1+24)                                  
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
    }                                                                 
                                                                      
    the_semaphore = _POSIX_Semaphore_Get( (sem_t *) &the_semaphore_id, &location );
 80052a4:	5b 81 00 28 	sw (sp+40),r1                                  
    the_semaphore->open_count += 1;                                   
 80052a8:	34 42 00 01 	addi r2,r2,1                                   
 80052ac:	58 22 00 18 	sw (r1+24),r2                                  
    _Thread_Enable_dispatch();                                        
 80052b0:	f8 00 0e c7 	calli 8008dcc <_Thread_Enable_dispatch>        
    _Thread_Enable_dispatch();                                        
 80052b4:	f8 00 0e c6 	calli 8008dcc <_Thread_Enable_dispatch>        
return_id:                                                            
  #if defined(RTEMS_USE_16_BIT_OBJECT)                                
    the_semaphore->Semaphore_id = the_semaphore->Object.id;           
    return &the_semaphore->Semaphore_id;                              
  #else                                                               
    return (sem_t *)&the_semaphore->Object.id;                        
 80052b8:	2b 81 00 28 	lw r1,(sp+40)                                  
 80052bc:	34 21 00 08 	addi r1,r1,8                                   
  #endif                                                              
}                                                                     
 80052c0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80052c4:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80052c8:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80052cc:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80052d0:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80052d4:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 80052d8:	2b 90 00 08 	lw r16,(sp+8)                                  
 80052dc:	37 9c 00 48 	addi sp,sp,72                                  
 80052e0:	c3 a0 00 00 	ret                                            
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( oflag & O_CREAT ) {                                            
    va_start(arg, oflag);                                             
    mode = va_arg( arg, mode_t );                                     
    value = va_arg( arg, unsigned int );                              
 80052e4:	2b 90 00 38 	lw r16,(sp+56)                                 
 80052e8:	e3 ff ff d6 	bi 8005240 <sem_open+0x64>                     
  /*                                                                  
   *  At this point, the semaphore does not exist and everything has been
   *  checked. We should go ahead and create a semaphore.             
   */                                                                 
                                                                      
  status =_POSIX_Semaphore_Create_support(                            
 80052ec:	2b 82 00 20 	lw r2,(sp+32)                                  
 80052f0:	34 03 00 00 	mvi r3,0                                       
 80052f4:	ba 00 20 00 	mv r4,r16                                      
 80052f8:	37 85 00 28 	addi r5,sp,40                                  
 80052fc:	b9 e0 08 00 	mv r1,r15                                      
 8005300:	f8 00 1c f6 	calli 800c6d8 <_POSIX_Semaphore_Create_support>
 8005304:	b8 20 58 00 	mv r11,r1                                      
                                                                      
  /*                                                                  
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
 8005308:	f8 00 0e b1 	calli 8008dcc <_Thread_Enable_dispatch>        
                                                                      
  if ( status == -1 )                                                 
    return SEM_FAILED;                                                
 800530c:	34 01 ff ff 	mvi r1,-1                                      
   * errno was set by Create_support, so don't set it again.          
   */                                                                 
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  if ( status == -1 )                                                 
 8005310:	5d 61 ff ea 	bne r11,r1,80052b8 <sem_open+0xdc>             <== ALWAYS TAKEN
 8005314:	e3 ff ff eb 	bi 80052c0 <sem_open+0xe4>                     <== NOT EXECUTED
    /*                                                                
     * Check for existence with creation.                             
     */                                                               
                                                                      
    if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {       
      _Thread_Enable_dispatch();                                      
 8005318:	f8 00 0e ad 	calli 8008dcc <_Thread_Enable_dispatch>        
      rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );   
 800531c:	f8 00 29 27 	calli 800f7b8 <__errno>                        
 8005320:	34 02 00 11 	mvi r2,17                                      
 8005324:	58 22 00 00 	sw (r1+0),r2                                   
 8005328:	34 01 ff ff 	mvi r1,-1                                      
 800532c:	e3 ff ff e5 	bi 80052c0 <sem_open+0xe4>                     
                                                                      

08006c5c <sem_timedwait>: int sem_timedwait( sem_t *sem, const struct timespec *abstime ) {
 8006c5c:	37 9c ff f4 	addi sp,sp,-12                                 
 8006c60:	5b 8b 00 08 	sw (sp+8),r11                                  
 8006c64:	5b 9d 00 04 	sw (sp+4),ra                                   
 8006c68:	b8 20 58 00 	mv r11,r1                                      
   *                                                                  
   *  If the status is POSIX_ABSOLUTE_TIMEOUT_INVALID,                
   *  POSIX_ABSOLUTE_TIMEOUT_IS_IN_PAST, or POSIX_ABSOLUTE_TIMEOUT_IS_NOW,
   *  then we should not wait.                                        
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
 8006c6c:	b8 40 08 00 	mv r1,r2                                       
 8006c70:	37 82 00 0c 	addi r2,sp,12                                  
 8006c74:	f8 00 16 ae 	calli 800c72c <_POSIX_Absolute_timeout_to_ticks>
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
 8006c78:	34 02 00 03 	mvi r2,3                                       
 8006c7c:	44 22 00 09 	be r1,r2,8006ca0 <sem_timedwait+0x44>          <== ALWAYS TAKEN
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
 8006c80:	2b 83 00 0c 	lw r3,(sp+12)                                  <== NOT EXECUTED
 8006c84:	b9 60 08 00 	mv r1,r11                                      <== NOT EXECUTED
 8006c88:	34 02 00 00 	mvi r2,0                                       <== NOT EXECUTED
 8006c8c:	f8 00 1a bb 	calli 800d778 <_POSIX_Semaphore_Wait_support>  <== NOT EXECUTED
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8006c90:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 8006c94:	2b 8b 00 08 	lw r11,(sp+8)                                  <== NOT EXECUTED
 8006c98:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8006c9c:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
   */                                                                 
  status = _POSIX_Absolute_timeout_to_ticks( abstime, &ticks );       
  if ( status != POSIX_ABSOLUTE_TIMEOUT_IS_IN_FUTURE )                
    do_wait = false;                                                  
                                                                      
  lock_status = _POSIX_Semaphore_Wait_support( sem, do_wait, ticks ); 
 8006ca0:	2b 83 00 0c 	lw r3,(sp+12)                                  
 8006ca4:	b9 60 08 00 	mv r1,r11                                      
 8006ca8:	34 02 00 01 	mvi r2,1                                       
 8006cac:	f8 00 1a b3 	calli 800d778 <_POSIX_Semaphore_Wait_support>  
         lock_status == POSIX_ABSOLUTE_TIMEOUT_IS_NOW )               
      rtems_set_errno_and_return_minus_one( ETIMEDOUT );              
  }                                                                   
                                                                      
  return lock_status;                                                 
}                                                                     
 8006cb0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8006cb4:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8006cb8:	37 9c 00 0c 	addi sp,sp,12                                  
 8006cbc:	c3 a0 00 00 	ret                                            
                                                                      

08004980 <sigaction>: int sigaction( int sig, const struct sigaction *act, struct sigaction *oact ) {
 8004980:	37 9c ff f0 	addi sp,sp,-16                                 
 8004984:	5b 8b 00 10 	sw (sp+16),r11                                 
 8004988:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800498c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8004990:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004994:	b8 20 58 00 	mv r11,r1                                      
 8004998:	b8 40 60 00 	mv r12,r2                                      
  ISR_Level     level;                                                
                                                                      
  if ( oact )                                                         
 800499c:	44 60 00 0e 	be r3,r0,80049d4 <sigaction+0x54>              
    *oact = _POSIX_signals_Vectors[ sig ];                            
 80049a0:	b4 21 08 00 	add r1,r1,r1                                   
 80049a4:	b4 2b 08 00 	add r1,r1,r11                                  
 80049a8:	78 02 08 01 	mvhi r2,0x801                                  
 80049ac:	b4 21 08 00 	add r1,r1,r1                                   
 80049b0:	38 42 9e 48 	ori r2,r2,0x9e48                               
 80049b4:	b4 21 08 00 	add r1,r1,r1                                   
 80049b8:	b4 41 08 00 	add r1,r2,r1                                   
 80049bc:	28 22 00 00 	lw r2,(r1+0)                                   
 80049c0:	58 62 00 00 	sw (r3+0),r2                                   
 80049c4:	28 22 00 04 	lw r2,(r1+4)                                   
 80049c8:	58 62 00 04 	sw (r3+4),r2                                   
 80049cc:	28 21 00 08 	lw r1,(r1+8)                                   
 80049d0:	58 61 00 08 	sw (r3+8),r1                                   
                                                                      
  if ( !sig )                                                         
 80049d4:	45 60 00 04 	be r11,r0,80049e4 <sigaction+0x64>             
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 80049d8:	35 61 ff ff 	addi r1,r11,-1                                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
 80049dc:	34 02 00 1f 	mvi r2,31                                      
 80049e0:	50 41 00 06 	bgeu r2,r1,80049f8 <sigaction+0x78>            
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 80049e4:	f8 00 26 73 	calli 800e3b0 <__errno>                        
 80049e8:	34 02 00 16 	mvi r2,22                                      
 80049ec:	58 22 00 00 	sw (r1+0),r2                                   
 80049f0:	34 01 ff ff 	mvi r1,-1                                      
 80049f4:	e0 00 00 1c 	bi 8004a64 <sigaction+0xe4>                    
   *                                                                  
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
 80049f8:	34 01 00 09 	mvi r1,9                                       
 80049fc:	45 61 ff fa 	be r11,r1,80049e4 <sigaction+0x64>             
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
 8004a00:	34 01 00 00 	mvi r1,0                                       
  /*                                                                  
   *  Evaluate the new action structure and set the global signal vector
   *  appropriately.                                                  
   */                                                                 
                                                                      
  if ( act ) {                                                        
 8004a04:	45 80 00 18 	be r12,r0,8004a64 <sigaction+0xe4>             <== NEVER TAKEN
    /*                                                                
     *  Unless the user is installing the default signal actions, then
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
 8004a08:	90 00 68 00 	rcsr r13,IE                                    
 8004a0c:	34 01 ff fe 	mvi r1,-2                                      
 8004a10:	a1 a1 08 00 	and r1,r13,r1                                  
 8004a14:	d0 01 00 00 	wcsr IE,r1                                     
      if ( act->sa_handler == SIG_DFL ) {                             
 8004a18:	29 81 00 08 	lw r1,(r12+8)                                  
 8004a1c:	44 20 00 18 	be r1,r0,8004a7c <sigaction+0xfc>              
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
      } else {                                                        
         _POSIX_signals_Clear_process_signals( sig );                 
 8004a20:	b9 60 08 00 	mv r1,r11                                      
 8004a24:	f8 00 18 63 	calli 800abb0 <_POSIX_signals_Clear_process_signals>
         _POSIX_signals_Vectors[ sig ] = *act;                        
 8004a28:	b5 6b 08 00 	add r1,r11,r11                                 
 8004a2c:	b4 2b 58 00 	add r11,r1,r11                                 
 8004a30:	29 82 00 00 	lw r2,(r12+0)                                  
 8004a34:	78 01 08 01 	mvhi r1,0x801                                  
 8004a38:	b5 6b 58 00 	add r11,r11,r11                                
 8004a3c:	38 21 9e 48 	ori r1,r1,0x9e48                               
 8004a40:	b5 6b 58 00 	add r11,r11,r11                                
 8004a44:	b4 2b 58 00 	add r11,r1,r11                                 
 8004a48:	59 62 00 00 	sw (r11+0),r2                                  
 8004a4c:	29 81 00 04 	lw r1,(r12+4)                                  
 8004a50:	59 61 00 04 	sw (r11+4),r1                                  
 8004a54:	29 81 00 08 	lw r1,(r12+8)                                  
 8004a58:	59 61 00 08 	sw (r11+8),r1                                  
      }                                                               
    _ISR_Enable( level );                                             
 8004a5c:	d0 0d 00 00 	wcsr IE,r13                                    
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
 8004a60:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8004a64:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8004a68:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8004a6c:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8004a70:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8004a74:	37 9c 00 10 	addi sp,sp,16                                  
 8004a78:	c3 a0 00 00 	ret                                            
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
      if ( act->sa_handler == SIG_DFL ) {                             
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
 8004a7c:	b5 6b 08 00 	add r1,r11,r11                                 
 8004a80:	b4 2b 58 00 	add r11,r1,r11                                 
 8004a84:	b5 6b 58 00 	add r11,r11,r11                                
 8004a88:	78 02 08 01 	mvhi r2,0x801                                  
 8004a8c:	b5 6b 58 00 	add r11,r11,r11                                
 8004a90:	38 42 7e 04 	ori r2,r2,0x7e04                               
 8004a94:	b4 4b 10 00 	add r2,r2,r11                                  
 8004a98:	28 44 00 00 	lw r4,(r2+0)                                   
 8004a9c:	28 43 00 04 	lw r3,(r2+4)                                   
 8004aa0:	78 01 08 01 	mvhi r1,0x801                                  
 8004aa4:	28 42 00 08 	lw r2,(r2+8)                                   
 8004aa8:	38 21 9e 48 	ori r1,r1,0x9e48                               
 8004aac:	b4 2b 58 00 	add r11,r1,r11                                 
 8004ab0:	59 64 00 00 	sw (r11+0),r4                                  
 8004ab4:	59 63 00 04 	sw (r11+4),r3                                  
 8004ab8:	59 62 00 08 	sw (r11+8),r2                                  
 8004abc:	e3 ff ff e8 	bi 8004a5c <sigaction+0xdc>                    
                                                                      

08004fa8 <sigtimedwait>: int sigtimedwait( const sigset_t *set, siginfo_t *info, const struct timespec *timeout ) {
 8004fa8:	37 9c ff d8 	addi sp,sp,-40                                 
 8004fac:	5b 8b 00 1c 	sw (sp+28),r11                                 
 8004fb0:	5b 8c 00 18 	sw (sp+24),r12                                 
 8004fb4:	5b 8d 00 14 	sw (sp+20),r13                                 
 8004fb8:	5b 8e 00 10 	sw (sp+16),r14                                 
 8004fbc:	5b 8f 00 0c 	sw (sp+12),r15                                 
 8004fc0:	5b 90 00 08 	sw (sp+8),r16                                  
 8004fc4:	5b 9d 00 04 	sw (sp+4),ra                                   
 8004fc8:	b8 20 68 00 	mv r13,r1                                      
 8004fcc:	b8 40 58 00 	mv r11,r2                                      
 8004fd0:	b8 60 60 00 	mv r12,r3                                      
  ISR_Level          level;                                           
                                                                      
  /*                                                                  
   *  Error check parameters before disabling interrupts.             
   */                                                                 
  if ( !set )                                                         
 8004fd4:	44 20 00 70 	be r1,r0,8005194 <sigtimedwait+0x1ec>          <== NEVER TAKEN
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
  if ( timeout ) {                                                    
 8004fd8:	44 60 00 5c 	be r3,r0,8005148 <sigtimedwait+0x1a0>          
                                                                      
    if ( !_Timespec_Is_valid( timeout ) )                             
 8004fdc:	b8 60 08 00 	mv r1,r3                                       
 8004fe0:	f8 00 0f 7f 	calli 8008ddc <_Timespec_Is_valid>             
 8004fe4:	44 20 00 6c 	be r1,r0,8005194 <sigtimedwait+0x1ec>          <== NEVER TAKEN
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
 8004fe8:	b9 80 08 00 	mv r1,r12                                      
 8004fec:	f8 00 0f 88 	calli 8008e0c <_Timespec_To_ticks>             
                                                                      
    if ( !interval )                                                  
 8004ff0:	44 20 00 69 	be r1,r0,8005194 <sigtimedwait+0x1ec>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 8004ff4:	45 60 00 57 	be r11,r0,8005150 <sigtimedwait+0x1a8>         <== NEVER TAKEN
                                                                      
  the_thread = _Thread_Executing;                                     
 8004ff8:	78 0c 08 01 	mvhi r12,0x801                                 
 8004ffc:	39 8c 9d c0 	ori r12,r12,0x9dc0                             
 8005000:	29 83 00 10 	lw r3,(r12+16)                                 
                                                                      
  api = the_thread->API_Extensions[ THREAD_API_POSIX ];               
 8005004:	28 6f 01 1c 	lw r15,(r3+284)                                
   *  What if they are already pending?                               
   */                                                                 
                                                                      
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
 8005008:	90 00 80 00 	rcsr r16,IE                                    
 800500c:	34 02 ff fe 	mvi r2,-2                                      
 8005010:	a2 02 10 00 	and r2,r16,r2                                  
 8005014:	d0 02 00 00 	wcsr IE,r2                                     
  if ( *set & api->signals_pending ) {                                
 8005018:	29 a5 00 00 	lw r5,(r13+0)                                  
 800501c:	29 e4 00 d4 	lw r4,(r15+212)                                
 8005020:	a0 a4 10 00 	and r2,r5,r4                                   
 8005024:	5c 40 00 4d 	bne r2,r0,8005158 <sigtimedwait+0x1b0>         
    return the_info->si_signo;                                        
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
 8005028:	78 04 08 01 	mvhi r4,0x801                                  
 800502c:	38 84 a0 3c 	ori r4,r4,0xa03c                               
 8005030:	28 84 00 00 	lw r4,(r4+0)                                   
 8005034:	a0 a4 28 00 	and r5,r5,r4                                   
 8005038:	5c a2 00 35 	bne r5,r2,800510c <sigtimedwait+0x164>         
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 800503c:	78 02 08 01 	mvhi r2,0x801                                  
 8005040:	38 42 99 38 	ori r2,r2,0x9938                               
 8005044:	28 44 00 00 	lw r4,(r2+0)                                   
    the_info->si_code = SI_USER;                                      
    the_info->si_value.sival_int = 0;                                 
    return signo;                                                     
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
 8005048:	34 05 ff ff 	mvi r5,-1                                      
 800504c:	59 65 00 00 	sw (r11+0),r5                                  
                                                                      
    ++level;                                                          
 8005050:	34 84 00 01 	addi r4,r4,1                                   
    _Thread_Dispatch_disable_level = level;                           
 8005054:	58 44 00 00 	sw (r2+0),r4                                   
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
    the_thread->Wait.return_code     = EINTR;                         
 8005058:	34 02 00 04 	mvi r2,4                                       
 800505c:	58 62 00 34 	sw (r3+52),r2                                  
    the_thread->Wait.option          = *set;                          
 8005060:	29 a4 00 00 	lw r4,(r13+0)                                  
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 8005064:	78 02 08 01 	mvhi r2,0x801                                  
 8005068:	38 42 9f d4 	ori r2,r2,0x9fd4                               
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
 800506c:	58 64 00 30 	sw (r3+48),r4                                  
    the_thread->Wait.return_argument = the_info;                      
 8005070:	58 6b 00 28 	sw (r3+40),r11                                 
  }                                                                   
                                                                      
  the_info->si_signo = -1;                                            
                                                                      
  _Thread_Disable_dispatch();                                         
    the_thread->Wait.queue           = &_POSIX_signals_Wait_queue;    
 8005074:	58 62 00 44 	sw (r3+68),r2                                  
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
 8005078:	34 03 00 01 	mvi r3,1                                       
 800507c:	58 43 00 30 	sw (r2+48),r3                                  
    the_thread->Wait.return_code     = EINTR;                         
    the_thread->Wait.option          = *set;                          
    the_thread->Wait.return_argument = the_info;                      
    _Thread_queue_Enter_critical_section( &_POSIX_signals_Wait_queue );
    _ISR_Enable( level );                                             
 8005080:	d0 10 00 00 	wcsr IE,r16                                    
    _Thread_queue_Enqueue( &_POSIX_signals_Wait_queue, interval );    
 8005084:	78 03 08 00 	mvhi r3,0x800                                  
 8005088:	b8 20 10 00 	mv r2,r1                                       
 800508c:	78 01 08 01 	mvhi r1,0x801                                  
 8005090:	38 63 8b 80 	ori r3,r3,0x8b80                               
 8005094:	38 21 9f d4 	ori r1,r1,0x9fd4                               
 8005098:	f8 00 0d ad 	calli 800874c <_Thread_queue_Enqueue_with_handler>
  _Thread_Enable_dispatch();                                          
 800509c:	f8 00 0c 29 	calli 8008140 <_Thread_Enable_dispatch>        
  /*                                                                  
   * When the thread is set free by a signal, it is need to eliminate 
   * the signal.                                                      
   */                                                                 
                                                                      
  _POSIX_signals_Clear_signals( api, the_info->si_signo, the_info, false, false );
 80050a0:	29 62 00 00 	lw r2,(r11+0)                                  
 80050a4:	b9 e0 08 00 	mv r1,r15                                      
 80050a8:	b9 60 18 00 	mv r3,r11                                      
 80050ac:	34 04 00 00 	mvi r4,0                                       
 80050b0:	34 05 00 00 	mvi r5,0                                       
 80050b4:	f8 00 19 73 	calli 800b680 <_POSIX_signals_Clear_signals>   
  /* Set errno only if return code is not EINTR or                    
   * if EINTR was caused by a signal being caught, which              
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
 80050b8:	29 81 00 10 	lw r1,(r12+16)                                 
 80050bc:	28 22 00 34 	lw r2,(r1+52)                                  
 80050c0:	34 01 00 04 	mvi r1,4                                       
 80050c4:	5c 41 00 39 	bne r2,r1,80051a8 <sigtimedwait+0x200>         
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
 80050c8:	29 6e 00 00 	lw r14,(r11+0)                                 
 80050cc:	34 01 00 01 	mvi r1,1                                       
 80050d0:	35 c2 ff ff 	addi r2,r14,-1                                 
 80050d4:	f8 00 46 86 	calli 8016aec <__ashlsi3>                      
 80050d8:	29 a2 00 00 	lw r2,(r13+0)                                  
 80050dc:	a0 22 08 00 	and r1,r1,r2                                   
 80050e0:	44 20 00 32 	be r1,r0,80051a8 <sigtimedwait+0x200>          
    errno = _Thread_Executing->Wait.return_code;                      
    return -1;                                                        
  }                                                                   
                                                                      
  return the_info->si_signo;                                          
}                                                                     
 80050e4:	b9 c0 08 00 	mv r1,r14                                      
 80050e8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80050ec:	2b 8b 00 1c 	lw r11,(sp+28)                                 
 80050f0:	2b 8c 00 18 	lw r12,(sp+24)                                 
 80050f4:	2b 8d 00 14 	lw r13,(sp+20)                                 
 80050f8:	2b 8e 00 10 	lw r14,(sp+16)                                 
 80050fc:	2b 8f 00 0c 	lw r15,(sp+12)                                 
 8005100:	2b 90 00 08 	lw r16,(sp+8)                                  
 8005104:	37 9c 00 28 	addi sp,sp,40                                  
 8005108:	c3 a0 00 00 	ret                                            
  }                                                                   
                                                                      
  /* Process pending signals? */                                      
                                                                      
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
 800510c:	b8 80 08 00 	mv r1,r4                                       
 8005110:	fb ff ff 86 	calli 8004f28 <_POSIX_signals_Get_lowest>      
 8005114:	b8 20 70 00 	mv r14,r1                                      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
 8005118:	b9 c0 10 00 	mv r2,r14                                      
 800511c:	b9 e0 08 00 	mv r1,r15                                      
 8005120:	b9 60 18 00 	mv r3,r11                                      
 8005124:	34 04 00 01 	mvi r4,1                                       
 8005128:	34 05 00 00 	mvi r5,0                                       
 800512c:	f8 00 19 55 	calli 800b680 <_POSIX_signals_Clear_signals>   
    _ISR_Enable( level );                                             
 8005130:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_signo = signo;                                       
    the_info->si_code = SI_USER;                                      
 8005134:	34 01 00 01 	mvi r1,1                                       
  if ( *set & _POSIX_signals_Pending ) {                              
    signo = _POSIX_signals_Get_lowest( _POSIX_signals_Pending );      
    _POSIX_signals_Clear_signals( api, signo, the_info, true, false );
    _ISR_Enable( level );                                             
                                                                      
    the_info->si_signo = signo;                                       
 8005138:	59 6e 00 00 	sw (r11+0),r14                                 
    the_info->si_code = SI_USER;                                      
 800513c:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 8005140:	59 60 00 08 	sw (r11+8),r0                                  
    return signo;                                                     
 8005144:	e3 ff ff e8 	bi 80050e4 <sigtimedwait+0x13c>                
                                                                      
  /*  NOTE: This is very specifically a RELATIVE not ABSOLUTE time    
   *        in the Open Group specification.                          
   */                                                                 
                                                                      
  interval = 0;                                                       
 8005148:	34 01 00 00 	mvi r1,0                                       
                                                                      
  /*                                                                  
   *  Initialize local variables.                                     
   */                                                                 
                                                                      
  the_info = ( info ) ? info : &signal_information;                   
 800514c:	5d 60 ff ab 	bne r11,r0,8004ff8 <sigtimedwait+0x50>         
 8005150:	37 8b 00 20 	addi r11,sp,32                                 
 8005154:	e3 ff ff a9 	bi 8004ff8 <sigtimedwait+0x50>                 
  /* API signals pending? */                                          
                                                                      
  _ISR_Disable( level );                                              
  if ( *set & api->signals_pending ) {                                
    /* XXX real info later */                                         
    the_info->si_signo = _POSIX_signals_Get_lowest( api->signals_pending );
 8005158:	b8 80 08 00 	mv r1,r4                                       
 800515c:	fb ff ff 73 	calli 8004f28 <_POSIX_signals_Get_lowest>      
 8005160:	b8 20 10 00 	mv r2,r1                                       
 8005164:	59 61 00 00 	sw (r11+0),r1                                  
    _POSIX_signals_Clear_signals(                                     
 8005168:	b9 60 18 00 	mv r3,r11                                      
 800516c:	b9 e0 08 00 	mv r1,r15                                      
 8005170:	34 04 00 00 	mvi r4,0                                       
 8005174:	34 05 00 00 	mvi r5,0                                       
 8005178:	f8 00 19 42 	calli 800b680 <_POSIX_signals_Clear_signals>   
      the_info->si_signo,                                             
      the_info,                                                       
      false,                                                          
      false                                                           
    );                                                                
    _ISR_Enable( level );                                             
 800517c:	d0 10 00 00 	wcsr IE,r16                                    
                                                                      
    the_info->si_code = SI_USER;                                      
 8005180:	34 01 00 01 	mvi r1,1                                       
 8005184:	59 61 00 04 	sw (r11+4),r1                                  
    the_info->si_value.sival_int = 0;                                 
 8005188:	59 60 00 08 	sw (r11+8),r0                                  
    return the_info->si_signo;                                        
 800518c:	29 6e 00 00 	lw r14,(r11+0)                                 
 8005190:	e3 ff ff d5 	bi 80050e4 <sigtimedwait+0x13c>                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    interval = _Timespec_To_ticks( timeout );                         
                                                                      
    if ( !interval )                                                  
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8005194:	f8 00 26 46 	calli 800eaac <__errno>                        
 8005198:	34 02 00 16 	mvi r2,22                                      
 800519c:	58 22 00 00 	sw (r1+0),r2                                   
 80051a0:	34 0e ff ff 	mvi r14,-1                                     
 80051a4:	e3 ff ff d0 	bi 80050e4 <sigtimedwait+0x13c>                
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
 80051a8:	f8 00 26 41 	calli 800eaac <__errno>                        
 80051ac:	29 82 00 10 	lw r2,(r12+16)                                 
    return -1;                                                        
 80051b0:	34 0e ff ff 	mvi r14,-1                                     
   * was not in our set.                                              
   */                                                                 
                                                                      
  if ( (_Thread_Executing->Wait.return_code != EINTR)                 
       || !(*set & signo_to_mask( the_info->si_signo )) ) {           
    errno = _Thread_Executing->Wait.return_code;                      
 80051b4:	28 42 00 34 	lw r2,(r2+52)                                  
 80051b8:	58 22 00 00 	sw (r1+0),r2                                   
    return -1;                                                        
 80051bc:	e3 ff ff ca 	bi 80050e4 <sigtimedwait+0x13c>                
                                                                      

080071d0 <sigwait>: int sigwait( const sigset_t *set, int *sig ) {
 80071d0:	37 9c ff f8 	addi sp,sp,-8                                  
 80071d4:	5b 8b 00 08 	sw (sp+8),r11                                  
 80071d8:	5b 9d 00 04 	sw (sp+4),ra                                   
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 80071dc:	34 03 00 00 	mvi r3,0                                       
                                                                      
int sigwait(                                                          
  const sigset_t  *set,                                               
  int             *sig                                                
)                                                                     
{                                                                     
 80071e0:	b8 40 58 00 	mv r11,r2                                      
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
 80071e4:	34 02 00 00 	mvi r2,0                                       
 80071e8:	fb ff ff 6d 	calli 8006f9c <sigtimedwait>                   
                                                                      
  if ( status != -1 ) {                                               
 80071ec:	34 02 ff ff 	mvi r2,-1                                      
 80071f0:	44 22 00 09 	be r1,r2,8007214 <sigwait+0x44>                
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
 80071f4:	34 03 00 00 	mvi r3,0                                       
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
 80071f8:	45 60 00 02 	be r11,r0,8007200 <sigwait+0x30>               <== NEVER TAKEN
      *sig = status;                                                  
 80071fc:	59 61 00 00 	sw (r11+0),r1                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
 8007200:	b8 60 08 00 	mv r1,r3                                       
 8007204:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007208:	2b 8b 00 08 	lw r11,(sp+8)                                  
 800720c:	37 9c 00 08 	addi sp,sp,8                                   
 8007210:	c3 a0 00 00 	ret                                            
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
  }                                                                   
                                                                      
  return errno;                                                       
 8007214:	f8 00 24 fd 	calli 8010608 <__errno>                        
 8007218:	28 23 00 00 	lw r3,(r1+0)                                   
}                                                                     
 800721c:	b8 60 08 00 	mv r1,r3                                       
 8007220:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8007224:	2b 8b 00 08 	lw r11,(sp+8)                                  
 8007228:	37 9c 00 08 	addi sp,sp,8                                   
 800722c:	c3 a0 00 00 	ret                                            
                                                                      

08005754 <siproc>: /* * Process input character, with semaphore. */ static int siproc (unsigned char c, struct rtems_termios_tty *tty) {
 8005754:	37 9c ff f4 	addi sp,sp,-12                                 
 8005758:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800575c:	5b 8c 00 08 	sw (sp+8),r12                                  
 8005760:	5b 9d 00 04 	sw (sp+4),ra                                   
  int i;                                                              
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
 8005764:	28 43 00 3c 	lw r3,(r2+60)                                  
/*                                                                    
 * Process input character, with semaphore.                           
 */                                                                   
static int                                                            
siproc (unsigned char c, struct rtems_termios_tty *tty)               
{                                                                     
 8005768:	b8 20 60 00 	mv r12,r1                                      
 800576c:	b8 40 58 00 	mv r11,r2                                      
  int i;                                                              
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
 8005770:	20 61 0e 78 	andi r1,r3,0xe78                               
 8005774:	5c 20 00 0a 	bne r1,r0,800579c <siproc+0x48>                <== ALWAYS TAKEN
    rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
    i = iproc (c, tty);                                               
    rtems_semaphore_release (tty->osem);                              
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
 8005778:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 800577c:	fb ff ff 80 	calli 800557c <iproc>                          <== NOT EXECUTED
 8005780:	b8 20 60 00 	mv r12,r1                                      <== NOT EXECUTED
  }                                                                   
  return i;                                                           
}                                                                     
 8005784:	b9 80 08 00 	mv r1,r12                                      <== NOT EXECUTED
 8005788:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 800578c:	2b 8b 00 0c 	lw r11,(sp+12)                                 <== NOT EXECUTED
 8005790:	2b 8c 00 08 	lw r12,(sp+8)                                  <== NOT EXECUTED
 8005794:	37 9c 00 0c 	addi sp,sp,12                                  <== NOT EXECUTED
 8005798:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
    rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
 800579c:	28 41 00 18 	lw r1,(r2+24)                                  
 80057a0:	34 03 00 00 	mvi r3,0                                       
 80057a4:	34 02 00 00 	mvi r2,0                                       
 80057a8:	f8 00 05 6b 	calli 8006d54 <rtems_semaphore_obtain>         
    i = iproc (c, tty);                                               
 80057ac:	b9 60 10 00 	mv r2,r11                                      
 80057b0:	b9 80 08 00 	mv r1,r12                                      
 80057b4:	fb ff ff 72 	calli 800557c <iproc>                          
 80057b8:	b8 20 60 00 	mv r12,r1                                      
    rtems_semaphore_release (tty->osem);                              
 80057bc:	29 61 00 18 	lw r1,(r11+24)                                 
 80057c0:	f8 00 05 c1 	calli 8006ec4 <rtems_semaphore_release>        
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
  }                                                                   
  return i;                                                           
}                                                                     
 80057c4:	b9 80 08 00 	mv r1,r12                                      
 80057c8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80057cc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80057d0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80057d4:	37 9c 00 0c 	addi sp,sp,12                                  
 80057d8:	c3 a0 00 00 	ret                                            
                                                                      

0800bc08 <sparse_disk_ioctl>: /* * ioctl handler to be passed to the block device handler */ static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp ) {
 800bc08:	37 9c ff bc 	addi sp,sp,-68                                 
 800bc0c:	5b 8b 00 3c 	sw (sp+60),r11                                 
 800bc10:	5b 8c 00 38 	sw (sp+56),r12                                 
 800bc14:	5b 8d 00 34 	sw (sp+52),r13                                 
 800bc18:	5b 8e 00 30 	sw (sp+48),r14                                 
 800bc1c:	5b 8f 00 2c 	sw (sp+44),r15                                 
 800bc20:	5b 90 00 28 	sw (sp+40),r16                                 
 800bc24:	5b 91 00 24 	sw (sp+36),r17                                 
 800bc28:	5b 92 00 20 	sw (sp+32),r18                                 
 800bc2c:	5b 93 00 1c 	sw (sp+28),r19                                 
 800bc30:	5b 94 00 18 	sw (sp+24),r20                                 
 800bc34:	5b 95 00 14 	sw (sp+20),r21                                 
 800bc38:	5b 96 00 10 	sw (sp+16),r22                                 
 800bc3c:	5b 97 00 0c 	sw (sp+12),r23                                 
 800bc40:	5b 98 00 08 	sw (sp+8),r24                                  
 800bc44:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_status_code  sc;                                              
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
 800bc48:	78 06 08 03 	mvhi r6,0x803                                  
 800bc4c:	38 c6 01 5c 	ori r6,r6,0x15c                                
 800bc50:	28 c5 00 00 	lw r5,(r6+0)                                   
                                                                      
/*                                                                    
 * ioctl handler to be passed to the block device handler             
 */                                                                   
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
{                                                                     
 800bc54:	b8 60 b8 00 	mv r23,r3                                      
  rtems_status_code  sc;                                              
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
 800bc58:	28 2d 00 3c 	lw r13,(r1+60)                                 
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
 800bc5c:	44 45 00 23 	be r2,r5,800bce8 <sparse_disk_ioctl+0xe0>      
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
      default:                                                        
        break;                                                        
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
 800bc60:	78 06 08 02 	mvhi r6,0x802                                  
 800bc64:	38 c6 fb d4 	ori r6,r6,0xfbd4                               
 800bc68:	28 c5 00 00 	lw r5,(r6+0)                                   
 800bc6c:	44 45 00 15 	be r2,r5,800bcc0 <sparse_disk_ioctl+0xb8>      
    if ( NULL != sd->delete_handler )                                 
      ( *sd->delete_handler )( sd );                                  
                                                                      
    return 0;                                                         
  } else {                                                            
    return rtems_blkdev_ioctl( dd, req, argp );                       
 800bc70:	f8 00 0e 49 	calli 800f594 <rtems_blkdev_ioctl>             
 800bc74:	b8 20 58 00 	mv r11,r1                                      
  }                                                                   
                                                                      
  errno = EINVAL;                                                     
  return -1;                                                          
}                                                                     
 800bc78:	b9 60 08 00 	mv r1,r11                                      
 800bc7c:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800bc80:	2b 8b 00 3c 	lw r11,(sp+60)                                 
 800bc84:	2b 8c 00 38 	lw r12,(sp+56)                                 
 800bc88:	2b 8d 00 34 	lw r13,(sp+52)                                 
 800bc8c:	2b 8e 00 30 	lw r14,(sp+48)                                 
 800bc90:	2b 8f 00 2c 	lw r15,(sp+44)                                 
 800bc94:	2b 90 00 28 	lw r16,(sp+40)                                 
 800bc98:	2b 91 00 24 	lw r17,(sp+36)                                 
 800bc9c:	2b 92 00 20 	lw r18,(sp+32)                                 
 800bca0:	2b 93 00 1c 	lw r19,(sp+28)                                 
 800bca4:	2b 94 00 18 	lw r20,(sp+24)                                 
 800bca8:	2b 95 00 14 	lw r21,(sp+20)                                 
 800bcac:	2b 96 00 10 	lw r22,(sp+16)                                 
 800bcb0:	2b 97 00 0c 	lw r23,(sp+12)                                 
 800bcb4:	2b 98 00 08 	lw r24,(sp+8)                                  
 800bcb8:	37 9c 00 44 	addi sp,sp,68                                  
 800bcbc:	c3 a0 00 00 	ret                                            
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
      default:                                                        
        break;                                                        
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
    sc = rtems_semaphore_delete( sd->mutex );                         
 800bcc0:	29 a1 00 00 	lw r1,(r13+0)                                  
 800bcc4:	fb ff e7 dd 	calli 8005c38 <rtems_semaphore_delete>         
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
 800bcc8:	5c 20 00 94 	bne r1,r0,800bf18 <sparse_disk_ioctl+0x310>    <== NEVER TAKEN
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
                                                                      
    if ( NULL != sd->delete_handler )                                 
 800bccc:	29 a2 00 10 	lw r2,(r13+16)                                 
    sc = rtems_semaphore_delete( sd->mutex );                         
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
 800bcd0:	59 a0 00 00 	sw (r13+0),r0                                  
                                                                      
    if ( NULL != sd->delete_handler )                                 
      ( *sd->delete_handler )( sd );                                  
                                                                      
    return 0;                                                         
 800bcd4:	34 0b 00 00 	mvi r11,0                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
                                                                      
    if ( NULL != sd->delete_handler )                                 
 800bcd8:	44 4b ff e8 	be r2,r11,800bc78 <sparse_disk_ioctl+0x70>     <== NEVER TAKEN
      ( *sd->delete_handler )( sd );                                  
 800bcdc:	b9 a0 08 00 	mv r1,r13                                      
 800bce0:	d8 40 00 00 	call r2                                        
 800bce4:	e3 ff ff e5 	bi 800bc78 <sparse_disk_ioctl+0x70>            
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
 800bce8:	28 73 00 00 	lw r19,(r3+0)                                  
 800bcec:	34 01 00 01 	mvi r1,1                                       
 800bcf0:	56 61 00 85 	bgu r19,r1,800bf04 <sparse_disk_ioctl+0x2fc>   <== NEVER TAKEN
  rtems_blkdev_bnum       block;                                      
  uint8_t                *buff;                                       
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
 800bcf4:	29 a1 00 00 	lw r1,(r13+0)                                  
 800bcf8:	34 02 00 00 	mvi r2,0                                       
 800bcfc:	34 03 00 00 	mvi r3,0                                       
 800bd00:	78 10 08 00 	mvhi r16,0x800                                 
 800bd04:	fb ff e8 04 	calli 8005d14 <rtems_semaphore_obtain>         
 800bd08:	ba e0 b0 00 	mv r22,r23                                     
static int sparse_disk_read_write(                                    
  rtems_sparse_disk    *sparse_disk,                                  
  rtems_blkdev_request *req,                                          
  const bool            read )                                        
{                                                                     
  int                     rv = 0;                                     
 800bd0c:	34 0c 00 00 	mvi r12,0                                      
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
                                                                      
  for ( req_buffer = 0;                                               
 800bd10:	34 18 00 00 	mvi r24,0                                      
 800bd14:	37 94 00 40 	addi r20,sp,64                                 
 800bd18:	3a 10 bb f0 	ori r16,r16,0xbbf0                             
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
 800bd1c:	2a e1 00 10 	lw r1,(r23+16)                                 
 800bd20:	54 38 00 09 	bgu r1,r24,800bd44 <sparse_disk_ioctl+0x13c>   
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
 800bd24:	29 a1 00 00 	lw r1,(r13+0)                                  
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
      case RTEMS_BLKDEV_REQ_READ:                                     
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
 800bd28:	34 0b 00 00 	mvi r11,0                                      
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
 800bd2c:	fb ff e8 56 	calli 8005e84 <rtems_semaphore_release>        
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
 800bd30:	2a e3 00 04 	lw r3,(r23+4)                                  
 800bd34:	ba e0 08 00 	mv r1,r23                                      
 800bd38:	34 02 00 00 	mvi r2,0                                       
 800bd3c:	d8 60 00 00 	call r3                                        
 800bd40:	e3 ff ff ce 	bi 800bc78 <sparse_disk_ioctl+0x70>            
    scatter_gather = &req->bufs[req_buffer];                          
                                                                      
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
 800bd44:	2a cb 00 1c 	lw r11,(r22+28)                                
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
 800bd48:	34 02 00 1f 	mvi r2,31                                      
 800bd4c:	a5 80 08 00 	not r1,r12                                     
 800bd50:	f8 00 8c aa 	calli 802eff8 <__lshrsi3>                      
 800bd54:	7d 62 00 00 	cmpnei r2,r11,0                                
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
        ++req_buffer ) {                                              
    scatter_gather = &req->bufs[req_buffer];                          
                                                                      
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
 800bd58:	2a d2 00 20 	lw r18,(r22+32)                                
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
 800bd5c:	a0 22 08 00 	and r1,r1,r2                                   
        ++req_buffer ) {                                              
    scatter_gather = &req->bufs[req_buffer];                          
                                                                      
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
 800bd60:	2a ce 00 18 	lw r14,(r22+24)                                
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
 800bd64:	44 20 00 39 	be r1,r0,800be48 <sparse_disk_ioctl+0x240>     <== NEVER TAKEN
 800bd68:	34 0f 00 00 	mvi r15,0                                      
      if ( read )                                                     
 800bd6c:	5e 60 00 1d 	bne r19,r0,800bde0 <sparse_disk_ioctl+0x1d8>   
  const rtems_blkdev_bnum  block,                                     
  uint8_t                 *buffer,                                    
  const size_t             buffer_size )                              
{                                                                     
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
 800bd70:	5b 8e 00 40 	sw (sp+64),r14                                 
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
 800bd74:	29 a2 00 0c 	lw r2,(r13+12)                                 
  const rtems_blkdev_bnum  block,                                     
  uint8_t                 *buffer,                                    
  const size_t             buffer_size )                              
{                                                                     
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
 800bd78:	5b 80 00 44 	sw (sp+68),r0                                  
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
      if ( read )                                                     
        rv = sparse_disk_read_block( sparse_disk,                     
 800bd7c:	b6 4f 88 00 	add r17,r18,r15                                
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
 800bd80:	b9 60 60 00 	mv r12,r11                                     
 800bd84:	50 4b 00 02 	bgeu r2,r11,800bd8c <sparse_disk_ioctl+0x184>  
 800bd88:	b8 40 60 00 	mv r12,r2                                      
                                                                      
  if ( buffer_size < bytes_to_copy )                                  
    bytes_to_copy = buffer_size;                                      
                                                                      
  key = bsearch(                                                      
 800bd8c:	29 a2 00 18 	lw r2,(r13+24)                                 
 800bd90:	29 a3 00 08 	lw r3,(r13+8)                                  
 800bd94:	ba 80 08 00 	mv r1,r20                                      
 800bd98:	34 04 00 08 	mvi r4,8                                       
 800bd9c:	ba 00 28 00 	mv r5,r16                                      
 800bda0:	f8 00 42 62 	calli 801c728 <bsearch>                        
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL != key )                                                  
 800bda4:	44 20 00 2d 	be r1,r0,800be58 <sparse_disk_ioctl+0x250>     
    memcpy( buffer, key->data, bytes_to_copy );                       
 800bda8:	28 22 00 04 	lw r2,(r1+4)                                   
 800bdac:	b9 80 18 00 	mv r3,r12                                      
 800bdb0:	ba 20 08 00 	mv r1,r17                                      
 800bdb4:	f8 00 45 de 	calli 801d52c <memcpy>                         
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
  else if ( block_needs_writing )                                     
    return -1;                                                        
                                                                      
  return bytes_to_copy;                                               
 800bdb8:	c9 6c 58 00 	sub r11,r11,r12                                
 800bdbc:	34 02 00 1f 	mvi r2,31                                      
 800bdc0:	7d 71 00 00 	cmpnei r17,r11,0                               
 800bdc4:	a5 80 08 00 	not r1,r12                                     
 800bdc8:	f8 00 8c 8c 	calli 802eff8 <__lshrsi3>                      
 800bdcc:	a2 21 10 00 	and r2,r17,r1                                  
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
 800bdd0:	44 40 00 1e 	be r2,r0,800be48 <sparse_disk_ioctl+0x240>     
        rv = sparse_disk_write_block( sparse_disk,                    
                                      block,                          
                                      &buff[bytes_handled],           
                                      buff_size );                    
                                                                      
      ++block;                                                        
 800bdd4:	35 ce 00 01 	addi r14,r14,1                                 
      bytes_handled += rv;                                            
 800bdd8:	b5 ec 78 00 	add r15,r15,r12                                
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
      if ( read )                                                     
 800bddc:	46 60 ff e5 	be r19,r0,800bd70 <sparse_disk_ioctl+0x168>    
  const size_t            buffer_size )                               
{                                                                     
  unsigned int           i;                                           
  bool                   block_needs_writing = false;                 
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
 800bde0:	5b 8e 00 40 	sw (sp+64),r14                                 
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
 800bde4:	29 a2 00 0c 	lw r2,(r13+12)                                 
  const size_t            buffer_size )                               
{                                                                     
  unsigned int           i;                                           
  bool                   block_needs_writing = false;                 
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
 800bde8:	5b 80 00 44 	sw (sp+68),r0                                  
        rv = sparse_disk_read_block( sparse_disk,                     
                                     block,                           
                                     &buff[bytes_handled],            
                                     buff_size );                     
      else                                                            
        rv = sparse_disk_write_block( sparse_disk,                    
 800bdec:	b6 4f 88 00 	add r17,r18,r15                                
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
 800bdf0:	b9 60 60 00 	mv r12,r11                                     
 800bdf4:	50 4b 00 02 	bgeu r2,r11,800bdfc <sparse_disk_ioctl+0x1f4>  
 800bdf8:	b8 40 60 00 	mv r12,r2                                      
                                                                      
  /* we only need to write the block if it is different from the fill pattern.
   * If the read method does not find a block it will deliver the fill pattern anyway.
   */                                                                 
                                                                      
  key = bsearch(                                                      
 800bdfc:	29 a2 00 18 	lw r2,(r13+24)                                 
 800be00:	29 a3 00 08 	lw r3,(r13+8)                                  
 800be04:	ba 80 08 00 	mv r1,r20                                      
 800be08:	34 04 00 08 	mvi r4,8                                       
 800be0c:	ba 00 28 00 	mv r5,r16                                      
 800be10:	f8 00 42 46 	calli 801c728 <bsearch>                        
 800be14:	b8 20 a8 00 	mv r21,r1                                      
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
 800be18:	44 20 00 15 	be r1,r0,800be6c <sparse_disk_ioctl+0x264>     
      key = sparse_disk_get_new_block( sparse_disk, block );          
    }                                                                 
  }                                                                   
                                                                      
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
 800be1c:	2a a1 00 04 	lw r1,(r21+4)                                  
 800be20:	ba 20 10 00 	mv r2,r17                                      
 800be24:	b9 80 18 00 	mv r3,r12                                      
 800be28:	f8 00 45 c1 	calli 801d52c <memcpy>                         
  else if ( block_needs_writing )                                     
    return -1;                                                        
                                                                      
  return bytes_to_copy;                                               
 800be2c:	c9 6c 58 00 	sub r11,r11,r12                                
 800be30:	34 02 00 1f 	mvi r2,31                                      
 800be34:	7d 71 00 00 	cmpnei r17,r11,0                               
 800be38:	a5 80 08 00 	not r1,r12                                     
 800be3c:	f8 00 8c 6f 	calli 802eff8 <__lshrsi3>                      
 800be40:	a2 21 10 00 	and r2,r17,r1                                  
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
 800be44:	5c 40 ff e4 	bne r2,r0,800bdd4 <sparse_disk_ioctl+0x1cc>    
                                      block,                          
                                      &buff[bytes_handled],           
                                      buff_size );                    
                                                                      
      ++block;                                                        
      bytes_handled += rv;                                            
 800be48:	36 d6 00 10 	addi r22,r22,16                                
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
                                                                      
  for ( req_buffer = 0;                                               
 800be4c:	48 0c 00 26 	bg r0,r12,800bee4 <sparse_disk_ioctl+0x2dc>    <== NEVER TAKEN
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
        ++req_buffer ) {                                              
 800be50:	37 18 00 01 	addi r24,r24,1                                 
 800be54:	e3 ff ff b2 	bi 800bd1c <sparse_disk_ioctl+0x114>           
    );                                                                
                                                                      
  if ( NULL != key )                                                  
    memcpy( buffer, key->data, bytes_to_copy );                       
  else                                                                
    memset( buffer, sparse_disk->fill_pattern, buffer_size );         
 800be58:	41 a2 00 14 	lbu r2,(r13+20)                                
 800be5c:	ba 20 08 00 	mv r1,r17                                      
 800be60:	b9 60 18 00 	mv r3,r11                                      
 800be64:	f8 00 45 f3 	calli 801d630 <memset>                         
 800be68:	e3 ff ff d4 	bi 800bdb8 <sparse_disk_ioctl+0x1b0>           
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
 800be6c:	45 81 ff d3 	be r12,r1,800bdb8 <sparse_disk_ioctl+0x1b0>    <== NEVER TAKEN
      if ( buffer[i] != sparse_disk->fill_pattern )                   
 800be70:	41 a1 00 14 	lbu r1,(r13+20)                                
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
 800be74:	42 22 00 00 	lbu r2,(r17+0)                                 
 800be78:	34 06 00 01 	mvi r6,1                                       
 800be7c:	5c 41 00 09 	bne r2,r1,800bea0 <sparse_disk_ioctl+0x298>    
 800be80:	55 86 00 02 	bgu r12,r6,800be88 <sparse_disk_ioctl+0x280>   <== ALWAYS TAKEN
 800be84:	e3 ff ff cd 	bi 800bdb8 <sparse_disk_ioctl+0x1b0>           <== NOT EXECUTED
}                                                                     
                                                                      
/*                                                                    
 * ioctl handler to be passed to the block device handler             
 */                                                                   
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
 800be88:	b6 26 10 00 	add r2,r17,r6                                  
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
 800be8c:	40 42 00 00 	lbu r2,(r2+0)                                  
 800be90:	5c 41 00 04 	bne r2,r1,800bea0 <sparse_disk_ioctl+0x298>    
 800be94:	34 c6 00 01 	addi r6,r6,1                                   
 800be98:	55 86 ff fc 	bgu r12,r6,800be88 <sparse_disk_ioctl+0x280>   
 800be9c:	e3 ff ff c7 	bi 800bdb8 <sparse_disk_ioctl+0x1b0>           
  rtems_sparse_disk      *sparse_disk,                                
  const rtems_blkdev_bnum block )                                     
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
 800bea0:	29 a2 00 08 	lw r2,(r13+8)                                  
 800bea4:	29 a1 00 04 	lw r1,(r13+4)                                  
 800bea8:	50 41 00 0d 	bgeu r2,r1,800bedc <sparse_disk_ioctl+0x2d4>   <== NEVER TAKEN
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
 800beac:	29 a1 00 18 	lw r1,(r13+24)                                 
 800beb0:	b4 42 a8 00 	add r21,r2,r2                                  
 800beb4:	b6 b5 a8 00 	add r21,r21,r21                                
 800beb8:	b6 b5 a8 00 	add r21,r21,r21                                
 800bebc:	b4 35 a8 00 	add r21,r1,r21                                 
    key->block = block;                                               
    ++sparse_disk->used_count;                                        
 800bec0:	34 42 00 01 	addi r2,r2,1                                   
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
    key->block = block;                                               
 800bec4:	5a ae 00 00 	sw (r21+0),r14                                 
    ++sparse_disk->used_count;                                        
 800bec8:	59 a2 00 08 	sw (r13+8),r2                                  
    qsort( sparse_disk->key_table, sparse_disk->used_count,           
 800becc:	34 03 00 08 	mvi r3,8                                       
 800bed0:	ba 00 20 00 	mv r4,r16                                      
 800bed4:	f8 00 46 3a 	calli 801d7bc <qsort>                          
 800bed8:	e3 ff ff d1 	bi 800be1c <sparse_disk_ioctl+0x214>           
  }                                                                   
                                                                      
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
  else if ( block_needs_writing )                                     
    return -1;                                                        
 800bedc:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 800bee0:	e3 ff ff da 	bi 800be48 <sparse_disk_ioctl+0x240>           <== NOT EXECUTED
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
 800bee4:	29 a1 00 00 	lw r1,(r13+0)                                  <== NOT EXECUTED
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
      case RTEMS_BLKDEV_REQ_READ:                                     
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
 800bee8:	34 0b 00 00 	mvi r11,0                                      <== NOT EXECUTED
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
 800beec:	fb ff e7 e6 	calli 8005e84 <rtems_semaphore_release>        <== NOT EXECUTED
 800bef0:	2a e3 00 04 	lw r3,(r23+4)                                  <== NOT EXECUTED
 800bef4:	ba e0 08 00 	mv r1,r23                                      <== NOT EXECUTED
 800bef8:	34 02 00 1b 	mvi r2,27                                      <== NOT EXECUTED
 800befc:	d8 60 00 00 	call r3                                        <== NOT EXECUTED
 800bf00:	e3 ff ff 5e 	bi 800bc78 <sparse_disk_ioctl+0x70>            <== NOT EXECUTED
    return 0;                                                         
  } else {                                                            
    return rtems_blkdev_ioctl( dd, req, argp );                       
  }                                                                   
                                                                      
  errno = EINVAL;                                                     
 800bf04:	f8 00 42 3c 	calli 801c7f4 <__errno>                        <== NOT EXECUTED
 800bf08:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 800bf0c:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
  return -1;                                                          
 800bf10:	34 0b ff ff 	mvi r11,-1                                     <== NOT EXECUTED
 800bf14:	e3 ff ff 59 	bi 800bc78 <sparse_disk_ioctl+0x70>            <== NOT EXECUTED
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
    sc = rtems_semaphore_delete( sd->mutex );                         
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
 800bf18:	78 02 08 02 	mvhi r2,0x802                                  <== NOT EXECUTED
 800bf1c:	38 42 fb d8 	ori r2,r2,0xfbd8                               <== NOT EXECUTED
 800bf20:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800bf24:	fb ff e9 09 	calli 8006348 <rtems_fatal_error_occurred>     <== NOT EXECUTED
                                                                      

08004394 <sync_per_thread>: fdatasync(fn); } /* iterate over all FILE *'s for this thread */ static void sync_per_thread(Thread_Control *t) {
 8004394:	37 9c ff f4 	addi sp,sp,-12                                 
 8004398:	5b 8b 00 0c 	sw (sp+12),r11                                 
 800439c:	5b 8c 00 08 	sw (sp+8),r12                                  
 80043a0:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
   /*                                                                 
    *  The sync_wrapper() function will operate on the current thread's
    *  reent structure so we will temporarily use that.               
    */                                                                
   this_reent = t->libc_reent;                                        
 80043a4:	28 23 01 14 	lw r3,(r1+276)                                 
   if ( this_reent ) {                                                
 80043a8:	44 60 00 0c 	be r3,r0,80043d8 <sync_per_thread+0x44>        <== NEVER TAKEN
     current_reent = _Thread_Executing->libc_reent;                   
 80043ac:	78 0b 08 01 	mvhi r11,0x801                                 
 80043b0:	39 6b 7d 80 	ori r11,r11,0x7d80                             
 80043b4:	29 64 00 10 	lw r4,(r11+16)                                 
     _Thread_Executing->libc_reent = this_reent;                      
     _fwalk (t->libc_reent, sync_wrapper);                            
 80043b8:	78 02 08 00 	mvhi r2,0x800                                  
 80043bc:	38 42 43 ec 	ori r2,r2,0x43ec                               
    *  The sync_wrapper() function will operate on the current thread's
    *  reent structure so we will temporarily use that.               
    */                                                                
   this_reent = t->libc_reent;                                        
   if ( this_reent ) {                                                
     current_reent = _Thread_Executing->libc_reent;                   
 80043c0:	28 8c 01 14 	lw r12,(r4+276)                                
     _Thread_Executing->libc_reent = this_reent;                      
 80043c4:	58 83 01 14 	sw (r4+276),r3                                 
     _fwalk (t->libc_reent, sync_wrapper);                            
 80043c8:	28 21 01 14 	lw r1,(r1+276)                                 
 80043cc:	f8 00 2a c0 	calli 800eecc <_fwalk>                         
     _Thread_Executing->libc_reent = current_reent;                   
 80043d0:	29 61 00 10 	lw r1,(r11+16)                                 
 80043d4:	58 2c 01 14 	sw (r1+276),r12                                
   }                                                                  
}                                                                     
 80043d8:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80043dc:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80043e0:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80043e4:	37 9c 00 0c 	addi sp,sp,12                                  
 80043e8:	c3 a0 00 00 	ret                                            
                                                                      

08003620 <sysconf>: */ long sysconf( int name ) {
 8003620:	37 9c ff fc 	addi sp,sp,-4                                  
 8003624:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003628:	b8 20 10 00 	mv r2,r1                                       
  if ( name == _SC_CLK_TCK )                                          
 800362c:	34 01 00 02 	mvi r1,2                                       
 8003630:	44 41 00 0f 	be r2,r1,800366c <sysconf+0x4c>                
    return (TOD_MICROSECONDS_PER_SECOND /                             
      rtems_configuration_get_microseconds_per_tick());               
                                                                      
  if ( name == _SC_OPEN_MAX )                                         
 8003634:	34 01 00 04 	mvi r1,4                                       
 8003638:	44 41 00 17 	be r2,r1,8003694 <sysconf+0x74>                
    return rtems_libio_number_iops;                                   
                                                                      
  if ( name == _SC_GETPW_R_SIZE_MAX )                                 
 800363c:	34 03 00 33 	mvi r3,51                                      
    return 1024;                                                      
 8003640:	34 01 04 00 	mvi r1,1024                                    
      rtems_configuration_get_microseconds_per_tick());               
                                                                      
  if ( name == _SC_OPEN_MAX )                                         
    return rtems_libio_number_iops;                                   
                                                                      
  if ( name == _SC_GETPW_R_SIZE_MAX )                                 
 8003644:	44 43 00 07 	be r2,r3,8003660 <sysconf+0x40>                
    return 1024;                                                      
                                                                      
  if ( name == _SC_PAGESIZE )                                         
 8003648:	34 03 00 08 	mvi r3,8                                       
    return PAGE_SIZE;                                                 
 800364c:	34 01 10 00 	mvi r1,4096                                    
    return rtems_libio_number_iops;                                   
                                                                      
  if ( name == _SC_GETPW_R_SIZE_MAX )                                 
    return 1024;                                                      
                                                                      
  if ( name == _SC_PAGESIZE )                                         
 8003650:	44 43 00 04 	be r2,r3,8003660 <sysconf+0x40>                
    return PAGE_SIZE;                                                 
                                                                      
  if ( name == _SC_SYMLOOP_MAX )                                      
 8003654:	34 03 00 4f 	mvi r3,79                                      
    return RTEMS_FILESYSTEM_SYMLOOP_MAX;                              
 8003658:	34 01 00 20 	mvi r1,32                                      
    return 1024;                                                      
                                                                      
  if ( name == _SC_PAGESIZE )                                         
    return PAGE_SIZE;                                                 
                                                                      
  if ( name == _SC_SYMLOOP_MAX )                                      
 800365c:	5c 43 00 14 	bne r2,r3,80036ac <sysconf+0x8c>               <== ALWAYS TAKEN
  if ( name == 515 ) /* Solaris _SC_STACK_PROT */                     
   return 0;                                                          
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003660:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003664:	37 9c 00 04 	addi sp,sp,4                                   
 8003668:	c3 a0 00 00 	ret                                            
  int name                                                            
)                                                                     
{                                                                     
  if ( name == _SC_CLK_TCK )                                          
    return (TOD_MICROSECONDS_PER_SECOND /                             
      rtems_configuration_get_microseconds_per_tick());               
 800366c:	78 02 08 01 	mvhi r2,0x801                                  
long sysconf(                                                         
  int name                                                            
)                                                                     
{                                                                     
  if ( name == _SC_CLK_TCK )                                          
    return (TOD_MICROSECONDS_PER_SECOND /                             
 8003670:	78 03 08 01 	mvhi r3,0x801                                  
 8003674:	38 63 43 a8 	ori r3,r3,0x43a8                               
      rtems_configuration_get_microseconds_per_tick());               
 8003678:	38 42 43 14 	ori r2,r2,0x4314                               
long sysconf(                                                         
  int name                                                            
)                                                                     
{                                                                     
  if ( name == _SC_CLK_TCK )                                          
    return (TOD_MICROSECONDS_PER_SECOND /                             
 800367c:	28 61 00 00 	lw r1,(r3+0)                                   
 8003680:	28 42 00 0c 	lw r2,(r2+12)                                  
 8003684:	f8 00 3f 45 	calli 8013398 <__udivsi3>                      
  if ( name == 515 ) /* Solaris _SC_STACK_PROT */                     
   return 0;                                                          
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003688:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800368c:	37 9c 00 04 	addi sp,sp,4                                   
 8003690:	c3 a0 00 00 	ret                                            
  if ( name == _SC_CLK_TCK )                                          
    return (TOD_MICROSECONDS_PER_SECOND /                             
      rtems_configuration_get_microseconds_per_tick());               
                                                                      
  if ( name == _SC_OPEN_MAX )                                         
    return rtems_libio_number_iops;                                   
 8003694:	78 01 08 01 	mvhi r1,0x801                                  
 8003698:	38 21 60 10 	ori r1,r1,0x6010                               
 800369c:	28 21 00 00 	lw r1,(r1+0)                                   
  if ( name == 515 ) /* Solaris _SC_STACK_PROT */                     
   return 0;                                                          
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 80036a0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80036a4:	37 9c 00 04 	addi sp,sp,4                                   
 80036a8:	c3 a0 00 00 	ret                                            
#if defined(__sparc__)                                                
  if ( name == 515 ) /* Solaris _SC_STACK_PROT */                     
   return 0;                                                          
#endif                                                                
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 80036ac:	f8 00 26 3f 	calli 800cfa8 <__errno>                        
 80036b0:	34 02 00 16 	mvi r2,22                                      
 80036b4:	58 22 00 00 	sw (r1+0),r2                                   
 80036b8:	34 01 ff ff 	mvi r1,-1                                      
 80036bc:	e3 ff ff e9 	bi 8003660 <sysconf+0x40>                      
                                                                      

080030cc <tcgetpgrp>: /** * POSIX 1003.1b 7.2.3 - Get Foreground Process Group ID */ pid_t tcgetpgrp(int fd __attribute__((unused))) {
 80030cc:	37 9c ff fc 	addi sp,sp,-4                                  <== NOT EXECUTED
 80030d0:	5b 9d 00 04 	sw (sp+4),ra                                   <== NOT EXECUTED
  return getpid();                                                    
 80030d4:	fb ff f8 49 	calli 80011f8 <getpid>                         <== NOT EXECUTED
}                                                                     
 80030d8:	2b 9d 00 04 	lw ra,(sp+4)                                   <== NOT EXECUTED
 80030dc:	37 9c 00 04 	addi sp,sp,4                                   <== NOT EXECUTED
 80030e0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

080030e4 <tcsendbreak>: int tcsendbreak ( int fd __attribute__((unused)), int duration __attribute__((unused)) ) { return 0; }
 80030e4:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80030e8:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08014570 <tcsetattr>: int tcsetattr( int fd, int opt, struct termios *tp ) {
 8014570:	37 9c ff f4 	addi sp,sp,-12                                 
 8014574:	5b 8b 00 0c 	sw (sp+12),r11                                 
 8014578:	5b 8c 00 08 	sw (sp+8),r12                                  
 801457c:	5b 9d 00 04 	sw (sp+4),ra                                   
 8014580:	b8 20 60 00 	mv r12,r1                                      
 8014584:	b8 60 58 00 	mv r11,r3                                      
  switch (opt) {                                                      
 8014588:	44 40 00 12 	be r2,r0,80145d0 <tcsetattr+0x60>              
 801458c:	34 03 00 01 	mvi r3,1                                       
 8014590:	44 43 00 0a 	be r2,r3,80145b8 <tcsetattr+0x48>              
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
 8014594:	f8 00 15 3f 	calli 8019a90 <__errno>                        
 8014598:	34 02 00 86 	mvi r2,134                                     
 801459c:	58 22 00 00 	sw (r1+0),r2                                   
 80145a0:	34 01 ff ff 	mvi r1,-1                                      
     * Fall through to....                                            
     */                                                               
  case TCSANOW:                                                       
    return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );                  
  }                                                                   
}                                                                     
 80145a4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80145a8:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80145ac:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80145b0:	37 9c 00 0c 	addi sp,sp,12                                  
 80145b4:	c3 a0 00 00 	ret                                            
  switch (opt) {                                                      
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
                                                                      
  case TCSADRAIN:                                                     
    if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)                      
 80145b8:	34 02 00 03 	mvi r2,3                                       
 80145bc:	34 03 00 00 	mvi r3,0                                       
 80145c0:	f8 00 11 01 	calli 80189c4 <ioctl>                          
 80145c4:	b8 20 10 00 	mv r2,r1                                       
    	return -1;                                                       
 80145c8:	34 01 ff ff 	mvi r1,-1                                      
  switch (opt) {                                                      
  default:                                                            
    rtems_set_errno_and_return_minus_one( ENOTSUP );                  
                                                                      
  case TCSADRAIN:                                                     
    if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)                      
 80145cc:	48 02 ff f6 	bg r0,r2,80145a4 <tcsetattr+0x34>              <== NEVER TAKEN
    	return -1;                                                       
    /*                                                                
     * Fall through to....                                            
     */                                                               
  case TCSANOW:                                                       
    return ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp );                  
 80145d0:	b9 80 08 00 	mv r1,r12                                      
 80145d4:	34 02 00 02 	mvi r2,2                                       
 80145d8:	b9 60 18 00 	mv r3,r11                                      
 80145dc:	f8 00 10 fa 	calli 80189c4 <ioctl>                          
  }                                                                   
}                                                                     
 80145e0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80145e4:	2b 8b 00 0c 	lw r11,(sp+12)                                 
 80145e8:	2b 8c 00 08 	lw r12,(sp+8)                                  
 80145ec:	37 9c 00 0c 	addi sp,sp,12                                  
 80145f0:	c3 a0 00 00 	ret                                            
                                                                      

080030ec <tcsetpgrp>: int tcsetpgrp( int fd __attribute__((unused)), pid_t pid __attribute__((unused)) ) { return 0; }
 80030ec:	34 01 00 00 	mvi r1,0                                       <== NOT EXECUTED
 80030f0:	c3 a0 00 00 	ret                                            <== NOT EXECUTED
                                                                      

08005330 <timer_create>: int timer_create( clockid_t clock_id, struct sigevent *evp, timer_t *timerid ) {
 8005330:	37 9c ff f0 	addi sp,sp,-16                                 
 8005334:	5b 8b 00 10 	sw (sp+16),r11                                 
 8005338:	5b 8c 00 0c 	sw (sp+12),r12                                 
 800533c:	5b 8d 00 08 	sw (sp+8),r13                                  
 8005340:	5b 9d 00 04 	sw (sp+4),ra                                   
 8005344:	b8 40 58 00 	mv r11,r2                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 8005348:	34 02 00 01 	mvi r2,1                                       
int timer_create(                                                     
  clockid_t        clock_id,                                          
  struct sigevent *evp,                                               
  timer_t         *timerid                                            
)                                                                     
{                                                                     
 800534c:	b8 60 68 00 	mv r13,r3                                      
  POSIX_Timer_Control *ptimer;                                        
                                                                      
  if ( clock_id != CLOCK_REALTIME )                                   
 8005350:	5c 22 00 06 	bne r1,r2,8005368 <timer_create+0x38>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !timerid )                                                     
 8005354:	44 60 00 05 	be r3,r0,8005368 <timer_create+0x38>           
 /*                                                                   
  *  The data of the structure evp are checked in order to verify if they
  *  are coherent.                                                    
  */                                                                  
                                                                      
  if (evp != NULL) {                                                  
 8005358:	45 60 00 14 	be r11,r0,80053a8 <timer_create+0x78>          
    /* The structure has data */                                      
    if ( ( evp->sigev_notify != SIGEV_NONE ) &&                       
 800535c:	29 62 00 00 	lw r2,(r11+0)                                  
 8005360:	34 42 ff ff 	addi r2,r2,-1                                  
 8005364:	50 22 00 0b 	bgeu r1,r2,8005390 <timer_create+0x60>         <== ALWAYS TAKEN
                                                                      
     if ( !evp->sigev_signo )                                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
       rtems_set_errno_and_return_minus_one( EINVAL );                
 8005368:	f8 00 29 14 	calli 800f7b8 <__errno>                        
 800536c:	34 02 00 16 	mvi r2,22                                      
 8005370:	58 22 00 00 	sw (r1+0),r2                                   
 8005374:	34 01 ff ff 	mvi r1,-1                                      
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
  _Thread_Enable_dispatch();                                          
  return 0;                                                           
}                                                                     
 8005378:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800537c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8005380:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005384:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005388:	37 9c 00 10 	addi sp,sp,16                                  
 800538c:	c3 a0 00 00 	ret                                            
         ( evp->sigev_notify != SIGEV_SIGNAL ) ) {                    
       /* The value of the field sigev_notify is not valid */         
       rtems_set_errno_and_return_minus_one( EINVAL );                
     }                                                                
                                                                      
     if ( !evp->sigev_signo )                                         
 8005390:	29 61 00 04 	lw r1,(r11+4)                                  
 8005394:	44 20 ff f5 	be r1,r0,8005368 <timer_create+0x38>           <== NEVER TAKEN
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
 8005398:	34 21 ff ff 	addi r1,r1,-1                                  
       rtems_set_errno_and_return_minus_one( EINVAL );                
                                                                      
     if ( !is_valid_signo(evp->sigev_signo) )                         
 800539c:	34 02 00 1f 	mvi r2,31                                      
 80053a0:	50 41 00 02 	bgeu r2,r1,80053a8 <timer_create+0x78>         <== ALWAYS TAKEN
 80053a4:	e3 ff ff f1 	bi 8005368 <timer_create+0x38>                 <== NOT EXECUTED
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
 80053a8:	78 01 08 02 	mvhi r1,0x802                                  
 80053ac:	38 21 53 28 	ori r1,r1,0x5328                               
 80053b0:	28 22 00 00 	lw r2,(r1+0)                                   
                                                                      
    ++level;                                                          
 80053b4:	34 42 00 01 	addi r2,r2,1                                   
    _Thread_Dispatch_disable_level = level;                           
 80053b8:	58 22 00 00 	sw (r1+0),r2                                   
 *  the inactive chain of free timer control blocks.                  
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
{                                                                     
  return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
 80053bc:	78 0c 08 02 	mvhi r12,0x802                                 
 80053c0:	39 8c 55 a4 	ori r12,r12,0x55a4                             
 80053c4:	b9 80 08 00 	mv r1,r12                                      
 80053c8:	f8 00 08 e8 	calli 8007768 <_Objects_Allocate>              
                                                                      
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
 80053cc:	44 20 00 29 	be r1,r0,8005470 <timer_create+0x140>          
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 80053d0:	78 02 08 02 	mvhi r2,0x802                                  
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
  }                                                                   
                                                                      
  /* The data of the created timer are stored to use them later */    
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
 80053d4:	34 03 00 02 	mvi r3,2                                       
 80053d8:	30 23 00 3c 	sb (r1+60),r3                                  
  ptimer->thread_id = _Thread_Executing->Object.id;                   
 80053dc:	38 42 58 00 	ori r2,r2,0x5800                               
 80053e0:	28 42 00 10 	lw r2,(r2+16)                                  
 80053e4:	28 42 00 08 	lw r2,(r2+8)                                   
 80053e8:	58 22 00 38 	sw (r1+56),r2                                  
                                                                      
  if ( evp != NULL ) {                                                
 80053ec:	45 60 00 07 	be r11,r0,8005408 <timer_create+0xd8>          
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 80053f0:	29 64 00 00 	lw r4,(r11+0)                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 80053f4:	29 63 00 04 	lw r3,(r11+4)                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 80053f8:	29 62 00 08 	lw r2,(r11+8)                                  
                                                                      
  ptimer->state     = POSIX_TIMER_STATE_CREATE_NEW;                   
  ptimer->thread_id = _Thread_Executing->Object.id;                   
                                                                      
  if ( evp != NULL ) {                                                
    ptimer->inf.sigev_notify = evp->sigev_notify;                     
 80053fc:	58 24 00 40 	sw (r1+64),r4                                  
    ptimer->inf.sigev_signo  = evp->sigev_signo;                      
 8005400:	58 23 00 44 	sw (r1+68),r3                                  
    ptimer->inf.sigev_value  = evp->sigev_value;                      
 8005404:	58 22 00 48 	sw (r1+72),r2                                  
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
 8005408:	28 23 00 08 	lw r3,(r1+8)                                   
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 800540c:	29 84 00 1c 	lw r4,(r12+28)                                 
  }                                                                   
                                                                      
  ptimer->overrun  = 0;                                               
 8005410:	58 20 00 68 	sw (r1+104),r0                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
 8005414:	20 62 ff ff 	andi r2,r3,0xffff                              
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
 8005418:	b4 42 10 00 	add r2,r2,r2                                   
 800541c:	b4 42 10 00 	add r2,r2,r2                                   
  ptimer->timer_data.it_value.tv_sec     = 0;                         
 8005420:	58 20 00 5c 	sw (r1+92),r0                                  
  ptimer->timer_data.it_value.tv_nsec    = 0;                         
 8005424:	58 20 00 60 	sw (r1+96),r0                                  
  ptimer->timer_data.it_interval.tv_sec  = 0;                         
 8005428:	58 20 00 54 	sw (r1+84),r0                                  
  ptimer->timer_data.it_interval.tv_nsec = 0;                         
 800542c:	58 20 00 58 	sw (r1+88),r0                                  
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8005430:	58 20 00 18 	sw (r1+24),r0                                  
  the_watchdog->routine   = routine;                                  
 8005434:	58 20 00 2c 	sw (r1+44),r0                                  
  the_watchdog->id        = id;                                       
 8005438:	58 20 00 30 	sw (r1+48),r0                                  
  the_watchdog->user_data = user_data;                                
 800543c:	58 20 00 34 	sw (r1+52),r0                                  
 8005440:	b4 82 10 00 	add r2,r4,r2                                   
 8005444:	58 41 00 00 	sw (r2+0),r1                                   
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
 8005448:	58 20 00 0c 	sw (r1+12),r0                                  
                                                                      
  _Watchdog_Initialize( &ptimer->Timer, NULL, 0, NULL );              
  _Objects_Open_u32(&_POSIX_Timer_Information, &ptimer->Object, 0);   
                                                                      
  *timerid  = ptimer->Object.id;                                      
 800544c:	59 a3 00 00 	sw (r13+0),r3                                  
  _Thread_Enable_dispatch();                                          
 8005450:	f8 00 0e 5f 	calli 8008dcc <_Thread_Enable_dispatch>        
  return 0;                                                           
 8005454:	34 01 00 00 	mvi r1,0                                       
}                                                                     
 8005458:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800545c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8005460:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8005464:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8005468:	37 9c 00 10 	addi sp,sp,16                                  
 800546c:	c3 a0 00 00 	ret                                            
  /*                                                                  
   *  Allocate a timer                                                
   */                                                                 
  ptimer = _POSIX_Timer_Allocate();                                   
  if ( !ptimer ) {                                                    
    _Thread_Enable_dispatch();                                        
 8005470:	f8 00 0e 57 	calli 8008dcc <_Thread_Enable_dispatch>        
    rtems_set_errno_and_return_minus_one( EAGAIN );                   
 8005474:	f8 00 28 d1 	calli 800f7b8 <__errno>                        
 8005478:	34 02 00 0b 	mvi r2,11                                      
 800547c:	58 22 00 00 	sw (r1+0),r2                                   
 8005480:	34 01 ff ff 	mvi r1,-1                                      
 8005484:	e3 ff ff f5 	bi 8005458 <timer_create+0x128>                
                                                                      

08003c2c <timer_settime>: timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue ) {
 8003c2c:	37 9c ff c4 	addi sp,sp,-60                                 
 8003c30:	5b 8b 00 18 	sw (sp+24),r11                                 
 8003c34:	5b 8c 00 14 	sw (sp+20),r12                                 
 8003c38:	5b 8d 00 10 	sw (sp+16),r13                                 
 8003c3c:	5b 8e 00 0c 	sw (sp+12),r14                                 
 8003c40:	5b 8f 00 08 	sw (sp+8),r15                                  
 8003c44:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003c48:	b8 60 60 00 	mv r12,r3                                      
 8003c4c:	b8 20 70 00 	mv r14,r1                                      
 8003c50:	b8 40 58 00 	mv r11,r2                                      
 8003c54:	b8 80 68 00 	mv r13,r4                                      
  Objects_Locations    location;                                      
  bool                 activated;                                     
  uint32_t             initial_period;                                
  struct itimerspec    normalize;                                     
                                                                      
  if ( !value )                                                       
 8003c58:	44 60 00 1e 	be r3,r0,8003cd0 <timer_settime+0xa4>          <== NEVER TAKEN
                                                                      
  /*                                                                  
   * First, it verifies if the structure "value" is correct           
   * if the number of nanoseconds is not correct return EINVAL        
   */                                                                 
  if ( !_Timespec_Is_valid( &(value->it_value) ) ) {                  
 8003c5c:	34 61 00 08 	addi r1,r3,8                                   
 8003c60:	f8 00 0f d4 	calli 8007bb0 <_Timespec_Is_valid>             
 8003c64:	44 20 00 1b 	be r1,r0,8003cd0 <timer_settime+0xa4>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
  if ( !_Timespec_Is_valid( &(value->it_interval) ) ) {               
 8003c68:	b9 80 08 00 	mv r1,r12                                      
 8003c6c:	f8 00 0f d1 	calli 8007bb0 <_Timespec_Is_valid>             
 8003c70:	44 20 00 18 	be r1,r0,8003cd0 <timer_settime+0xa4>          
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  if ( flags != TIMER_ABSTIME && flags != POSIX_TIMER_RELATIVE ) {    
 8003c74:	7d 62 00 00 	cmpnei r2,r11,0                                
 8003c78:	7d 61 00 04 	cmpnei r1,r11,4                                
 8003c7c:	a0 41 08 00 	and r1,r2,r1                                   
 8003c80:	5c 20 00 14 	bne r1,r0,8003cd0 <timer_settime+0xa4>         <== NEVER TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                   
  }                                                                   
                                                                      
  normalize = *value;                                                 
 8003c84:	29 81 00 0c 	lw r1,(r12+12)                                 
 8003c88:	29 84 00 00 	lw r4,(r12+0)                                  
 8003c8c:	29 83 00 04 	lw r3,(r12+4)                                  
 8003c90:	29 82 00 08 	lw r2,(r12+8)                                  
 8003c94:	5b 81 00 28 	sw (sp+40),r1                                  
 8003c98:	5b 84 00 1c 	sw (sp+28),r4                                  
 8003c9c:	5b 83 00 20 	sw (sp+32),r3                                  
 8003ca0:	5b 82 00 24 	sw (sp+36),r2                                  
                                                                      
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
 8003ca4:	34 01 00 04 	mvi r1,4                                       
 8003ca8:	45 61 00 5a 	be r11,r1,8003e10 <timer_settime+0x1e4>        
  timer_t            id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (POSIX_Timer_Control *)                                      
    _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location );
 8003cac:	78 03 08 02 	mvhi r3,0x802                                  
 8003cb0:	b8 60 08 00 	mv r1,r3                                       
 8003cb4:	38 21 0b 84 	ori r1,r1,0xb84                                
 8003cb8:	b9 c0 10 00 	mv r2,r14                                      
 8003cbc:	37 83 00 3c 	addi r3,sp,60                                  
 8003cc0:	f8 00 08 d7 	calli 800601c <_Objects_Get>                   
 8003cc4:	b8 20 58 00 	mv r11,r1                                      
   * something with the structure of times of the timer: to stop, start
   * or start it again                                                
   */                                                                 
                                                                      
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
 8003cc8:	2b 81 00 3c 	lw r1,(sp+60)                                  
 8003ccc:	44 20 00 0d 	be r1,r0,8003d00 <timer_settime+0xd4>          <== ALWAYS TAKEN
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
 8003cd0:	f8 00 28 1a 	calli 800dd38 <__errno>                        
 8003cd4:	34 02 00 16 	mvi r2,22                                      
 8003cd8:	58 22 00 00 	sw (r1+0),r2                                   
 8003cdc:	34 01 ff ff 	mvi r1,-1                                      
}                                                                     
 8003ce0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ce4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003ce8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003cec:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003cf0:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003cf4:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003cf8:	37 9c 00 3c 	addi sp,sp,60                                  
 8003cfc:	c3 a0 00 00 	ret                                            
  ptimer = _POSIX_Timer_Get( timerid, &location );                    
  switch ( location ) {                                               
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
 8003d00:	2b 82 00 24 	lw r2,(sp+36)                                  
 8003d04:	5c 41 00 03 	bne r2,r1,8003d10 <timer_settime+0xe4>         
 8003d08:	2b 8e 00 28 	lw r14,(sp+40)                                 
 8003d0c:	45 c2 00 62 	be r14,r2,8003e94 <timer_settime+0x268>        
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
 8003d10:	b9 80 08 00 	mv r1,r12                                      
 8003d14:	f8 00 0f d4 	calli 8007c64 <_Timespec_To_ticks>             
 8003d18:	59 61 00 64 	sw (r11+100),r1                                
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
 8003d1c:	37 81 00 24 	addi r1,sp,36                                  
 8003d20:	f8 00 0f d1 	calli 8007c64 <_Timespec_To_ticks>             
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 8003d24:	29 63 00 08 	lw r3,(r11+8)                                  
 8003d28:	78 04 08 00 	mvhi r4,0x800                                  
        return 0;                                                     
       }                                                              
                                                                      
       /* Convert from seconds and nanoseconds to ticks */            
       ptimer->ticks  = _Timespec_To_ticks( &value->it_interval );    
       initial_period = _Timespec_To_ticks( &normalize.it_value );    
 8003d2c:	b8 20 10 00 	mv r2,r1                                       
                                                                      
                                                                      
       activated = _POSIX_Timer_Insert_helper(                        
 8003d30:	38 84 3f 10 	ori r4,r4,0x3f10                               
 8003d34:	35 61 00 10 	addi r1,r11,16                                 
 8003d38:	b9 60 28 00 	mv r5,r11                                      
 8003d3c:	f8 00 1a de 	calli 800a8b4 <_POSIX_Timer_Insert_helper>     
         initial_period,                                              
         ptimer->Object.id,                                           
         _POSIX_Timer_TSR,                                            
         ptimer                                                       
       );                                                             
       if ( !activated ) {                                            
 8003d40:	44 20 00 2a 	be r1,r0,8003de8 <timer_settime+0x1bc>         
                                                                      
       /*                                                             
        * The timer has been started and is running.  So we return the
        * old ones in "ovalue"                                        
        */                                                            
       if ( ovalue )                                                  
 8003d44:	45 a0 00 09 	be r13,r0,8003d68 <timer_settime+0x13c>        
         *ovalue = ptimer->timer_data;                                
 8003d48:	29 61 00 54 	lw r1,(r11+84)                                 
 8003d4c:	59 a1 00 00 	sw (r13+0),r1                                  
 8003d50:	29 61 00 58 	lw r1,(r11+88)                                 
 8003d54:	59 a1 00 04 	sw (r13+4),r1                                  
 8003d58:	29 61 00 5c 	lw r1,(r11+92)                                 
 8003d5c:	59 a1 00 08 	sw (r13+8),r1                                  
 8003d60:	29 61 00 60 	lw r1,(r11+96)                                 
 8003d64:	59 a1 00 0c 	sw (r13+12),r1                                 
       ptimer->timer_data = normalize;                                
 8003d68:	2b 81 00 1c 	lw r1,(sp+28)                                  
)                                                                     
{                                                                     
  Timestamp_Control  tod_as_timestamp;                                
  Timestamp_Control *tod_as_timestamp_ptr;                            
                                                                      
  tod_as_timestamp_ptr =                                              
 8003d6c:	78 02 08 02 	mvhi r2,0x802                                  
 8003d70:	38 42 08 c8 	ori r2,r2,0x8c8                                
 8003d74:	59 61 00 54 	sw (r11+84),r1                                 
 8003d78:	2b 81 00 20 	lw r1,(sp+32)                                  
 8003d7c:	59 61 00 58 	sw (r11+88),r1                                 
 8003d80:	2b 81 00 24 	lw r1,(sp+36)                                  
 8003d84:	59 61 00 5c 	sw (r11+92),r1                                 
 8003d88:	2b 81 00 28 	lw r1,(sp+40)                                  
 8003d8c:	59 61 00 60 	sw (r11+96),r1                                 
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
 8003d90:	34 01 00 03 	mvi r1,3                                       
 8003d94:	31 61 00 3c 	sb (r11+60),r1                                 
 8003d98:	37 81 00 2c 	addi r1,sp,44                                  
 8003d9c:	f8 00 05 81 	calli 80053a0 <_TOD_Get_with_nanoseconds>      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003da0:	28 2d 00 00 	lw r13,(r1+0)                                  
 8003da4:	28 2c 00 04 	lw r12,(r1+4)                                  
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003da8:	78 01 08 01 	mvhi r1,0x801                                  
 8003dac:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003db0:	28 24 00 00 	lw r4,(r1+0)                                   
 8003db4:	34 03 00 00 	mvi r3,0                                       
 8003db8:	b9 a0 08 00 	mv r1,r13                                      
 8003dbc:	b9 80 10 00 	mv r2,r12                                      
 8003dc0:	f8 00 4e ab 	calli 801786c <__divdi3>                       
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003dc4:	78 01 08 01 	mvhi r1,0x801                                  
 8003dc8:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003dcc:	28 24 00 00 	lw r4,(r1+0)                                   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003dd0:	59 62 00 6c 	sw (r11+108),r2                                
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003dd4:	34 03 00 00 	mvi r3,0                                       
 8003dd8:	b9 a0 08 00 	mv r1,r13                                      
 8003ddc:	b9 80 10 00 	mv r2,r12                                      
 8003de0:	f8 00 50 a5 	calli 8018074 <__moddi3>                       
 8003de4:	59 62 00 70 	sw (r11+112),r2                                
       ptimer->timer_data = normalize;                                
                                                                      
       /* Indicate that the time is running */                        
       ptimer->state = POSIX_TIMER_STATE_CREATE_RUN;                  
       _TOD_Get( &ptimer->time );                                     
       _Thread_Enable_dispatch();                                     
 8003de8:	f8 00 0c 5b 	calli 8006f54 <_Thread_Enable_dispatch>        
       return 0;                                                      
 8003dec:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003df0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003df4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003df8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003dfc:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003e00:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003e04:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003e08:	37 9c 00 3c 	addi sp,sp,60                                  
 8003e0c:	c3 a0 00 00 	ret                                            
 8003e10:	78 02 08 02 	mvhi r2,0x802                                  
 8003e14:	38 42 08 c8 	ori r2,r2,0x8c8                                
 8003e18:	37 81 00 2c 	addi r1,sp,44                                  
 8003e1c:	f8 00 05 61 	calli 80053a0 <_TOD_Get_with_nanoseconds>      
 8003e20:	28 2f 00 00 	lw r15,(r1+0)                                  
 8003e24:	28 2b 00 04 	lw r11,(r1+4)                                  
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003e28:	78 01 08 01 	mvhi r1,0x801                                  
 8003e2c:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003e30:	28 24 00 00 	lw r4,(r1+0)                                   
 8003e34:	34 03 00 00 	mvi r3,0                                       
 8003e38:	b9 e0 08 00 	mv r1,r15                                      
 8003e3c:	b9 60 10 00 	mv r2,r11                                      
 8003e40:	f8 00 4e 8b 	calli 801786c <__divdi3>                       
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003e44:	78 01 08 01 	mvhi r1,0x801                                  
 8003e48:	38 21 e6 08 	ori r1,r1,0xe608                               
 8003e4c:	28 24 00 00 	lw r4,(r1+0)                                   
static inline void _Timestamp64_implementation_To_timespec(           
  const Timestamp64_Control *_timestamp,                              
  struct timespec           *_timespec                                
)                                                                     
{                                                                     
  _timespec->tv_sec = (time_t) (*_timestamp / 1000000000L);           
 8003e50:	5b 82 00 34 	sw (sp+52),r2                                  
  _timespec->tv_nsec = (long) (*_timestamp % 1000000000L);            
 8003e54:	b9 e0 08 00 	mv r1,r15                                      
 8003e58:	b9 60 10 00 	mv r2,r11                                      
 8003e5c:	34 03 00 00 	mvi r3,0                                       
 8003e60:	f8 00 50 85 	calli 8018074 <__moddi3>                       
  /* Convert absolute to relative time */                             
  if (flags == TIMER_ABSTIME) {                                       
    struct timespec now;                                              
    _TOD_Get( &now );                                                 
    /* Check for seconds in the past */                               
    if ( _Timespec_Greater_than( &now, &normalize.it_value ) )        
 8003e64:	37 8f 00 24 	addi r15,sp,36                                 
 8003e68:	37 8b 00 34 	addi r11,sp,52                                 
 8003e6c:	5b 82 00 38 	sw (sp+56),r2                                  
 8003e70:	b9 e0 08 00 	mv r1,r15                                      
 8003e74:	b9 60 10 00 	mv r2,r11                                      
 8003e78:	f8 00 0f 5a 	calli 8007be0 <_Timespec_Less_than>            
 8003e7c:	5c 20 ff 95 	bne r1,r0,8003cd0 <timer_settime+0xa4>         <== NEVER TAKEN
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    _Timespec_Subtract( &now, &normalize.it_value, &normalize.it_value );
 8003e80:	b9 e0 10 00 	mv r2,r15                                      
 8003e84:	b9 60 08 00 	mv r1,r11                                      
 8003e88:	b9 e0 18 00 	mv r3,r15                                      
 8003e8c:	f8 00 0f 60 	calli 8007c0c <_Timespec_Subtract>             
 8003e90:	e3 ff ff 87 	bi 8003cac <timer_settime+0x80>                
                                                                      
    case OBJECTS_LOCAL:                                               
      /* First, it verifies if the timer must be stopped */           
      if ( normalize.it_value.tv_sec == 0 && normalize.it_value.tv_nsec == 0 ) {
         /* Stop the timer */                                         
         (void) _Watchdog_Remove( &ptimer->Timer );                   
 8003e94:	35 61 00 10 	addi r1,r11,16                                 
 8003e98:	f8 00 10 96 	calli 80080f0 <_Watchdog_Remove>               
         /* The old data of the timer are returned */                 
         if ( ovalue )                                                
 8003e9c:	45 ae 00 09 	be r13,r14,8003ec0 <timer_settime+0x294>       
           *ovalue = ptimer->timer_data;                              
 8003ea0:	29 61 00 54 	lw r1,(r11+84)                                 
 8003ea4:	59 a1 00 00 	sw (r13+0),r1                                  
 8003ea8:	29 61 00 58 	lw r1,(r11+88)                                 
 8003eac:	59 a1 00 04 	sw (r13+4),r1                                  
 8003eb0:	29 61 00 5c 	lw r1,(r11+92)                                 
 8003eb4:	59 a1 00 08 	sw (r13+8),r1                                  
 8003eb8:	29 61 00 60 	lw r1,(r11+96)                                 
 8003ebc:	59 a1 00 0c 	sw (r13+12),r1                                 
         /* The new data are set */                                   
         ptimer->timer_data = normalize;                              
 8003ec0:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003ec4:	59 61 00 54 	sw (r11+84),r1                                 
 8003ec8:	2b 81 00 20 	lw r1,(sp+32)                                  
 8003ecc:	59 61 00 58 	sw (r11+88),r1                                 
 8003ed0:	2b 81 00 24 	lw r1,(sp+36)                                  
 8003ed4:	59 61 00 5c 	sw (r11+92),r1                                 
 8003ed8:	2b 81 00 28 	lw r1,(sp+40)                                  
 8003edc:	59 61 00 60 	sw (r11+96),r1                                 
         /* Indicates that the timer is created and stopped */        
         ptimer->state = POSIX_TIMER_STATE_CREATE_STOP;               
 8003ee0:	34 01 00 04 	mvi r1,4                                       
 8003ee4:	31 61 00 3c 	sb (r11+60),r1                                 
         /* Returns with success */                                   
        _Thread_Enable_dispatch();                                    
 8003ee8:	f8 00 0c 1b 	calli 8006f54 <_Thread_Enable_dispatch>        
        return 0;                                                     
 8003eec:	34 01 00 00 	mvi r1,0                                       
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  rtems_set_errno_and_return_minus_one( EINVAL );                     
}                                                                     
 8003ef0:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ef4:	2b 8b 00 18 	lw r11,(sp+24)                                 
 8003ef8:	2b 8c 00 14 	lw r12,(sp+20)                                 
 8003efc:	2b 8d 00 10 	lw r13,(sp+16)                                 
 8003f00:	2b 8e 00 0c 	lw r14,(sp+12)                                 
 8003f04:	2b 8f 00 08 	lw r15,(sp+8)                                  
 8003f08:	37 9c 00 3c 	addi sp,sp,60                                  
 8003f0c:	c3 a0 00 00 	ret                                            
                                                                      

08003d74 <ualarm>: useconds_t ualarm( useconds_t useconds, useconds_t interval ) {
 8003d74:	37 9c ff e4 	addi sp,sp,-28                                 
 8003d78:	5b 8b 00 14 	sw (sp+20),r11                                 
 8003d7c:	5b 8c 00 10 	sw (sp+16),r12                                 
 8003d80:	5b 8d 00 0c 	sw (sp+12),r13                                 
 8003d84:	5b 8e 00 08 	sw (sp+8),r14                                  
 8003d88:	5b 9d 00 04 	sw (sp+4),ra                                   
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 8003d8c:	78 0b 08 01 	mvhi r11,0x801                                 
 8003d90:	39 6b 81 e0 	ori r11,r11,0x81e0                             
 8003d94:	29 62 00 1c 	lw r2,(r11+28)                                 
                                                                      
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
 8003d98:	b8 20 60 00 	mv r12,r1                                      
                                                                      
  /*                                                                  
   *  Initialize the timer used to implement alarm().                 
   */                                                                 
                                                                      
  if ( !the_timer->routine ) {                                        
 8003d9c:	44 40 00 55 	be r2,r0,8003ef0 <ualarm+0x17c>                
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
 8003da0:	b9 60 08 00 	mv r1,r11                                      
 8003da4:	f8 00 10 2a 	calli 8007e4c <_Watchdog_Remove>               
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
 8003da8:	34 21 ff fe 	addi r1,r1,-2                                  
 8003dac:	34 02 00 01 	mvi r2,1                                       
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 8003db0:	34 0d 00 00 	mvi r13,0                                      
    _Watchdog_Initialize( the_timer, _POSIX_signals_Ualarm_TSR, 0, NULL );
  } else {                                                            
    Watchdog_States state;                                            
                                                                      
    state = _Watchdog_Remove( the_timer );                            
    if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) {
 8003db4:	54 22 00 24 	bgu r1,r2,8003e44 <ualarm+0xd0>                <== NEVER TAKEN
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
 8003db8:	29 64 00 14 	lw r4,(r11+20)                                 
 8003dbc:	29 61 00 0c 	lw r1,(r11+12)                                 
 8003dc0:	29 63 00 18 	lw r3,(r11+24)                                 
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 8003dc4:	37 82 00 18 	addi r2,sp,24                                  
       *  boot.  Since alarm() is dealing in seconds, we must account for
       *  this.                                                       
       */                                                             
                                                                      
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
 8003dc8:	b4 81 08 00 	add r1,r4,r1                                   
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
 8003dcc:	c8 23 08 00 	sub r1,r1,r3                                   
 8003dd0:	f8 00 0e 98 	calli 8007830 <_Timespec_From_ticks>           
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
 8003dd4:	2b 85 00 18 	lw r5,(sp+24)                                  
      remaining += tp.tv_nsec / 1000;                                 
 8003dd8:	2b 81 00 1c 	lw r1,(sp+28)                                  
 8003ddc:	34 02 03 e8 	mvi r2,1000                                    
      ticks = the_timer->initial;                                     
      ticks -= (the_timer->stop_time - the_timer->start_time);        
      /* remaining is now in ticks */                                 
                                                                      
      _Timespec_From_ticks( ticks, &tp );                             
      remaining  = tp.tv_sec * TOD_MICROSECONDS_PER_SECOND;           
 8003de0:	b4 a5 18 00 	add r3,r5,r5                                   
 8003de4:	b4 63 18 00 	add r3,r3,r3                                   
 8003de8:	b4 63 18 00 	add r3,r3,r3                                   
 8003dec:	b4 63 20 00 	add r4,r3,r3                                   
 8003df0:	b4 84 20 00 	add r4,r4,r4                                   
 8003df4:	b4 84 20 00 	add r4,r4,r4                                   
 8003df8:	b4 84 20 00 	add r4,r4,r4                                   
 8003dfc:	b4 84 20 00 	add r4,r4,r4                                   
 8003e00:	c8 83 20 00 	sub r4,r4,r3                                   
 8003e04:	b4 84 18 00 	add r3,r4,r4                                   
 8003e08:	b4 63 18 00 	add r3,r3,r3                                   
 8003e0c:	b4 63 18 00 	add r3,r3,r3                                   
 8003e10:	b4 63 18 00 	add r3,r3,r3                                   
 8003e14:	b4 63 18 00 	add r3,r3,r3                                   
 8003e18:	b4 63 18 00 	add r3,r3,r3                                   
 8003e1c:	c8 64 18 00 	sub r3,r3,r4                                   
 8003e20:	b4 65 68 00 	add r13,r3,r5                                  
 8003e24:	b5 ad 68 00 	add r13,r13,r13                                
 8003e28:	b5 ad 68 00 	add r13,r13,r13                                
 8003e2c:	b5 ad 68 00 	add r13,r13,r13                                
 8003e30:	b5 ad 68 00 	add r13,r13,r13                                
 8003e34:	b5 ad 68 00 	add r13,r13,r13                                
 8003e38:	b5 ad 68 00 	add r13,r13,r13                                
      remaining += tp.tv_nsec / 1000;                                 
 8003e3c:	f8 00 44 6e 	calli 8014ff4 <__divsi3>                       
 8003e40:	b4 2d 68 00 	add r13,r1,r13                                 
  /*                                                                  
   *  If useconds is non-zero, then the caller wants to schedule      
   *  the alarm repeatedly at that interval.  If the interval is      
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
 8003e44:	45 80 00 23 	be r12,r0,8003ed0 <ualarm+0x15c>               
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003e48:	78 01 08 01 	mvhi r1,0x801                                  
 8003e4c:	38 21 62 98 	ori r1,r1,0x6298                               
 8003e50:	28 22 00 00 	lw r2,(r1+0)                                   
 8003e54:	b9 80 08 00 	mv r1,r12                                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
    ticks = _Timespec_To_ticks( &tp );                                
 8003e58:	37 8e 00 18 	addi r14,sp,24                                 
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003e5c:	f8 00 44 bf 	calli 8015158 <__udivsi3>                      
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 8003e60:	78 03 08 01 	mvhi r3,0x801                                  
 8003e64:	38 63 62 98 	ori r3,r3,0x6298                               
 8003e68:	28 62 00 00 	lw r2,(r3+0)                                   
   *  less than a single clock tick, then fudge it to a clock tick.   
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
 8003e6c:	5b 81 00 18 	sw (sp+24),r1                                  
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 8003e70:	b9 80 08 00 	mv r1,r12                                      
 8003e74:	f8 00 44 c9 	calli 8015198 <__umodsi3>                      
 8003e78:	b4 21 10 00 	add r2,r1,r1                                   
 8003e7c:	b4 42 10 00 	add r2,r2,r2                                   
 8003e80:	b4 42 10 00 	add r2,r2,r2                                   
 8003e84:	b4 42 18 00 	add r3,r2,r2                                   
 8003e88:	b4 63 18 00 	add r3,r3,r3                                   
 8003e8c:	b4 43 10 00 	add r2,r2,r3                                   
 8003e90:	b4 42 18 00 	add r3,r2,r2                                   
 8003e94:	b4 63 18 00 	add r3,r3,r3                                   
 8003e98:	b4 43 10 00 	add r2,r2,r3                                   
 8003e9c:	b4 42 18 00 	add r3,r2,r2                                   
 8003ea0:	b4 63 18 00 	add r3,r3,r3                                   
 8003ea4:	b4 43 18 00 	add r3,r2,r3                                   
    ticks = _Timespec_To_ticks( &tp );                                
 8003ea8:	b9 c0 08 00 	mv r1,r14                                      
   */                                                                 
  if ( useconds ) {                                                   
    Watchdog_Interval ticks;                                          
                                                                      
    tp.tv_sec = useconds / TOD_MICROSECONDS_PER_SECOND;               
    tp.tv_nsec = (useconds % TOD_MICROSECONDS_PER_SECOND) * 1000;     
 8003eac:	5b 83 00 1c 	sw (sp+28),r3                                  
    ticks = _Timespec_To_ticks( &tp );                                
 8003eb0:	f8 00 0e 86 	calli 80078c8 <_Timespec_To_ticks>             
    if ( ticks == 0 )                                                 
      ticks = 1;                                                      
                                                                      
    _Watchdog_Insert_ticks( the_timer, _Timespec_To_ticks( &tp ) );   
 8003eb4:	b9 c0 08 00 	mv r1,r14                                      
 8003eb8:	f8 00 0e 84 	calli 80078c8 <_Timespec_To_ticks>             
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
 8003ebc:	59 61 00 0c 	sw (r11+12),r1                                 
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
 8003ec0:	78 01 08 01 	mvhi r1,0x801                                  
 8003ec4:	b9 60 10 00 	mv r2,r11                                      
 8003ec8:	38 21 79 e0 	ori r1,r1,0x79e0                               
 8003ecc:	f8 00 0f 7a 	calli 8007cb4 <_Watchdog_Insert>               
  }                                                                   
                                                                      
  return remaining;                                                   
}                                                                     
 8003ed0:	b9 a0 08 00 	mv r1,r13                                      
 8003ed4:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003ed8:	2b 8b 00 14 	lw r11,(sp+20)                                 
 8003edc:	2b 8c 00 10 	lw r12,(sp+16)                                 
 8003ee0:	2b 8d 00 0c 	lw r13,(sp+12)                                 
 8003ee4:	2b 8e 00 08 	lw r14,(sp+8)                                  
 8003ee8:	37 9c 00 1c 	addi sp,sp,28                                  
 8003eec:	c3 a0 00 00 	ret                                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
 8003ef0:	78 01 08 00 	mvhi r1,0x800                                  
 8003ef4:	38 21 3d 2c 	ori r1,r1,0x3d2c                               
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
 8003ef8:	59 60 00 08 	sw (r11+8),r0                                  
  the_watchdog->routine   = routine;                                  
 8003efc:	59 61 00 1c 	sw (r11+28),r1                                 
  the_watchdog->id        = id;                                       
 8003f00:	59 60 00 20 	sw (r11+32),r0                                 
  the_watchdog->user_data = user_data;                                
 8003f04:	59 60 00 24 	sw (r11+36),r0                                 
useconds_t ualarm(                                                    
  useconds_t useconds,                                                
  useconds_t interval                                                 
)                                                                     
{                                                                     
  useconds_t        remaining = 0;                                    
 8003f08:	34 0d 00 00 	mvi r13,0                                      
 8003f0c:	e3 ff ff ce 	bi 8003e44 <ualarm+0xd0>                       
                                                                      

08003688 <unmount>: * in some form is supported on most UNIX and POSIX systems. This * routine is necessary to mount instantiations of a file system * into the file system name space. */ int unmount( const char *path ) {
 8003688:	37 9c ff b4 	addi sp,sp,-76                                 
 800368c:	5b 8b 00 10 	sw (sp+16),r11                                 
 8003690:	5b 8c 00 0c 	sw (sp+12),r12                                 
 8003694:	5b 8d 00 08 	sw (sp+8),r13                                  
 8003698:	5b 9d 00 04 	sw (sp+4),ra                                   
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_FOLLOW_LINK;                              
  const rtems_filesystem_location_info_t *currentloc =                
    rtems_filesystem_eval_path_start( &ctx, path, eval_flags );       
 800369c:	37 8d 00 14 	addi r13,sp,20                                 
int unmount( const char *path )                                       
{                                                                     
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_FOLLOW_LINK;                              
  const rtems_filesystem_location_info_t *currentloc =                
 80036a0:	b8 20 10 00 	mv r2,r1                                       
 80036a4:	34 03 00 18 	mvi r3,24                                      
 80036a8:	b9 a0 08 00 	mv r1,r13                                      
 80036ac:	fb ff fd 77 	calli 8002c88 <rtems_filesystem_eval_path_start>
    rtems_filesystem_eval_path_start( &ctx, path, eval_flags );       
  rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
 80036b0:	28 2b 00 14 	lw r11,(r1+20)                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  return (*mt_entry->ops->are_nodes_equal_h)(                         
 80036b4:	29 63 00 0c 	lw r3,(r11+12)                                 
 80036b8:	29 62 00 24 	lw r2,(r11+36)                                 
 80036bc:	28 63 00 10 	lw r3,(r3+16)                                  
 80036c0:	d8 60 00 00 	call r3                                        
                                                                      
  if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {   
 80036c4:	44 20 00 34 	be r1,r0,8003794 <unmount+0x10c>               
static bool contains_root_or_current_directory(                       
  const rtems_filesystem_mount_table_entry_t *mt_entry                
)                                                                     
{                                                                     
  const rtems_filesystem_location_info_t *root =                      
    &rtems_filesystem_root->location;                                 
 80036c8:	78 02 08 01 	mvhi r2,0x801                                  
 80036cc:	38 42 61 90 	ori r2,r2,0x6190                               
 80036d0:	28 41 00 00 	lw r1,(r2+0)                                   
  const rtems_filesystem_location_info_t *current =                   
    &rtems_filesystem_current->location;                              
                                                                      
  return mt_entry == root->mt_entry || mt_entry == current->mt_entry; 
 80036d4:	28 22 00 04 	lw r2,(r1+4)                                   
)                                                                     
{                                                                     
  const rtems_filesystem_location_info_t *root =                      
    &rtems_filesystem_root->location;                                 
  const rtems_filesystem_location_info_t *current =                   
    &rtems_filesystem_current->location;                              
 80036d8:	28 23 00 00 	lw r3,(r1+0)                                   
                                                                      
  return mt_entry == root->mt_entry || mt_entry == current->mt_entry; 
 80036dc:	28 41 00 14 	lw r1,(r2+20)                                  
 80036e0:	45 61 00 28 	be r11,r1,8003780 <unmount+0xf8>               
 80036e4:	28 61 00 14 	lw r1,(r3+20)                                  
 80036e8:	45 61 00 26 	be r11,r1,8003780 <unmount+0xf8>               
  rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
                                                                      
  if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {   
    if ( !contains_root_or_current_directory( mt_entry ) ) {          
      const rtems_filesystem_operations_table *mt_point_ops =         
        mt_entry->mt_point_node->location.mt_entry->ops;              
 80036ec:	29 62 00 20 	lw r2,(r11+32)                                 
                                                                      
      rv = (*mt_point_ops->unmount_h)( mt_entry );                    
 80036f0:	b9 60 08 00 	mv r1,r11                                      
  rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
                                                                      
  if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {   
    if ( !contains_root_or_current_directory( mt_entry ) ) {          
      const rtems_filesystem_operations_table *mt_point_ops =         
        mt_entry->mt_point_node->location.mt_entry->ops;              
 80036f4:	28 42 00 14 	lw r2,(r2+20)                                  
                                                                      
      rv = (*mt_point_ops->unmount_h)( mt_entry );                    
 80036f8:	28 42 00 0c 	lw r2,(r2+12)                                  
 80036fc:	28 42 00 38 	lw r2,(r2+56)                                  
 8003700:	d8 40 00 00 	call r2                                        
 8003704:	b8 20 60 00 	mv r12,r1                                      
      if ( rv == 0 ) {                                                
 8003708:	44 20 00 0a 	be r1,r0,8003730 <unmount+0xa8>                
  } else {                                                            
    errno = EACCES;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 800370c:	b9 a0 08 00 	mv r1,r13                                      
 8003710:	fb ff fd b5 	calli 8002de4 <rtems_filesystem_eval_path_cleanup>
      rtems_fatal_error_occurred( 0xdeadbeef );                       
    }                                                                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
 8003714:	b9 80 08 00 	mv r1,r12                                      
 8003718:	2b 9d 00 04 	lw ra,(sp+4)                                   
 800371c:	2b 8b 00 10 	lw r11,(sp+16)                                 
 8003720:	2b 8c 00 0c 	lw r12,(sp+12)                                 
 8003724:	2b 8d 00 08 	lw r13,(sp+8)                                  
 8003728:	37 9c 00 4c 	addi sp,sp,76                                  
 800372c:	c3 a0 00 00 	ret                                            
      const rtems_filesystem_operations_table *mt_point_ops =         
        mt_entry->mt_point_node->location.mt_entry->ops;              
                                                                      
      rv = (*mt_point_ops->unmount_h)( mt_entry );                    
      if ( rv == 0 ) {                                                
        rtems_id self_task_id = rtems_task_self();                    
 8003730:	f8 00 02 d3 	calli 800427c <rtems_task_self>                
        rtems_filesystem_mt_entry_declare_lock_context( lock_context );
                                                                      
        rtems_filesystem_mt_entry_lock( lock_context );               
 8003734:	90 00 10 00 	rcsr r2,IE                                     
 8003738:	34 03 ff fe 	mvi r3,-2                                      
 800373c:	a0 43 18 00 	and r3,r2,r3                                   
 8003740:	d0 03 00 00 	wcsr IE,r3                                     
        mt_entry->unmount_task = self_task_id;                        
 8003744:	59 61 00 3c 	sw (r11+60),r1                                 
        mt_entry->mounted = false;                                    
 8003748:	31 60 00 28 	sb (r11+40),r0                                 
        rtems_filesystem_mt_entry_unlock( lock_context );             
 800374c:	d0 02 00 00 	wcsr IE,r2                                     
  } else {                                                            
    errno = EACCES;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
 8003750:	b9 a0 08 00 	mv r1,r13                                      
 8003754:	fb ff fd a4 	calli 8002de4 <rtems_filesystem_eval_path_cleanup>
  rtems_interval ticks                                                
)                                                                     
{                                                                     
  rtems_event_set event_out;                                          
                                                                      
  return rtems_event_system_receive(                                  
 8003758:	78 01 80 00 	mvhi r1,0x8000                                 
 800375c:	34 02 00 00 	mvi r2,0                                       
 8003760:	34 03 00 00 	mvi r3,0                                       
 8003764:	37 84 00 4c 	addi r4,sp,76                                  
 8003768:	f8 00 02 5a 	calli 80040d0 <rtems_event_system_receive>     
    rtems_status_code sc = rtems_event_transient_receive(             
      RTEMS_WAIT,                                                     
      RTEMS_NO_TIMEOUT                                                
    );                                                                
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
 800376c:	44 20 ff ea 	be r1,r0,8003714 <unmount+0x8c>                <== ALWAYS TAKEN
      rtems_fatal_error_occurred( 0xdeadbeef );                       
 8003770:	78 02 08 01 	mvhi r2,0x801                                  <== NOT EXECUTED
 8003774:	38 42 47 5c 	ori r2,r2,0x475c                               <== NOT EXECUTED
 8003778:	28 41 00 00 	lw r1,(r2+0)                                   <== NOT EXECUTED
 800377c:	f8 00 03 4d 	calli 80044b0 <rtems_fatal_error_occurred>     <== NOT EXECUTED
        mt_entry->unmount_task = self_task_id;                        
        mt_entry->mounted = false;                                    
        rtems_filesystem_mt_entry_unlock( lock_context );             
      }                                                               
    } else {                                                          
      errno = EBUSY;                                                  
 8003780:	f8 00 27 72 	calli 800d548 <__errno>                        
 8003784:	34 02 00 10 	mvi r2,16                                      
 8003788:	58 22 00 00 	sw (r1+0),r2                                   
      rv = -1;                                                        
 800378c:	34 0c ff ff 	mvi r12,-1                                     
 8003790:	e3 ff ff df 	bi 800370c <unmount+0x84>                      
    }                                                                 
  } else {                                                            
    errno = EACCES;                                                   
 8003794:	f8 00 27 6d 	calli 800d548 <__errno>                        
 8003798:	34 02 00 0d 	mvi r2,13                                      
 800379c:	58 22 00 00 	sw (r1+0),r2                                   
    rv = -1;                                                          
 80037a0:	34 0c ff ff 	mvi r12,-1                                     
 80037a4:	e3 ff ff da 	bi 800370c <unmount+0x84>                      
                                                                      

08003610 <vprintk>: */ void vprintk( const char *fmt, va_list ap ) {
 8003610:	37 9c ff a4 	addi sp,sp,-92                                 
 8003614:	5b 8b 00 44 	sw (sp+68),r11                                 
 8003618:	5b 8c 00 40 	sw (sp+64),r12                                 
 800361c:	5b 8d 00 3c 	sw (sp+60),r13                                 
 8003620:	5b 8e 00 38 	sw (sp+56),r14                                 
 8003624:	5b 8f 00 34 	sw (sp+52),r15                                 
 8003628:	5b 90 00 30 	sw (sp+48),r16                                 
 800362c:	5b 91 00 2c 	sw (sp+44),r17                                 
 8003630:	5b 92 00 28 	sw (sp+40),r18                                 
 8003634:	5b 93 00 24 	sw (sp+36),r19                                 
 8003638:	5b 94 00 20 	sw (sp+32),r20                                 
 800363c:	5b 95 00 1c 	sw (sp+28),r21                                 
 8003640:	5b 96 00 18 	sw (sp+24),r22                                 
 8003644:	5b 97 00 14 	sw (sp+20),r23                                 
 8003648:	5b 98 00 10 	sw (sp+16),r24                                 
 800364c:	5b 99 00 0c 	sw (sp+12),r25                                 
 8003650:	5b 9b 00 08 	sw (sp+8),fp                                   
 8003654:	5b 9d 00 04 	sw (sp+4),ra                                   
 8003658:	b8 20 60 00 	mv r12,r1                                      
  for (; *fmt != '\0'; fmt++) {                                       
 800365c:	40 21 00 00 	lbu r1,(r1+0)                                  
 */                                                                   
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
 8003660:	b8 40 b0 00 	mv r22,r2                                      
  for (; *fmt != '\0'; fmt++) {                                       
 8003664:	44 20 00 6b 	be r1,r0,8003810 <vprintk+0x200>               <== NEVER TAKEN
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 8003668:	78 02 08 01 	mvhi r2,0x801                                  
 800366c:	78 12 08 01 	mvhi r18,0x801                                 
 8003670:	38 42 d3 8c 	ori r2,r2,0xd38c                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
 8003674:	34 17 00 25 	mvi r23,37                                     
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
 8003678:	34 1b 00 2d 	mvi fp,45                                      
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 800367c:	34 14 00 09 	mvi r20,9                                      
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
 8003680:	34 19 00 6c 	mvi r25,108                                    
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
 8003684:	34 18 00 63 	mvi r24,99                                     
 8003688:	3a 52 da 64 	ori r18,r18,0xda64                             
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 800368c:	5b 82 00 48 	sw (sp+72),r2                                  
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
 8003690:	5c 37 00 78 	bne r1,r23,8003870 <vprintk+0x260>             
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
 8003694:	35 8c 00 01 	addi r12,r12,1                                 
    if (*fmt == '0' ) {                                               
 8003698:	41 83 00 00 	lbu r3,(r12+0)                                 
 800369c:	34 01 00 30 	mvi r1,48                                      
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
 80036a0:	34 15 00 20 	mvi r21,32                                     
    if (*fmt != '%') {                                                
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
 80036a4:	44 61 00 7c 	be r3,r1,8003894 <vprintk+0x284>               
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
 80036a8:	34 10 00 00 	mvi r16,0                                      
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
 80036ac:	44 7b 00 76 	be r3,fp,8003884 <vprintk+0x274>               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 80036b0:	34 61 ff d0 	addi r1,r3,-48                                 
 80036b4:	20 21 00 ff 	andi r1,r1,0xff                                
 80036b8:	34 0b 00 00 	mvi r11,0                                      
 80036bc:	54 34 00 0c 	bgu r1,r20,80036ec <vprintk+0xdc>              
      width *= 10;                                                    
 80036c0:	b5 6b 58 00 	add r11,r11,r11                                
 80036c4:	b5 6b 20 00 	add r4,r11,r11                                 
 80036c8:	b4 84 20 00 	add r4,r4,r4                                   
 80036cc:	b5 64 58 00 	add r11,r11,r4                                 
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
 80036d0:	35 8c 00 01 	addi r12,r12,1                                 
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
 80036d4:	b5 63 58 00 	add r11,r11,r3                                 
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 80036d8:	41 83 00 00 	lbu r3,(r12+0)                                 
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
 80036dc:	35 6b ff d0 	addi r11,r11,-48                               
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
 80036e0:	34 64 ff d0 	addi r4,r3,-48                                 
 80036e4:	20 84 00 ff 	andi r4,r4,0xff                                
 80036e8:	52 84 ff f6 	bgeu r20,r4,80036c0 <vprintk+0xb0>             
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
 80036ec:	44 79 00 5c 	be r3,r25,800385c <vprintk+0x24c>              
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
 80036f0:	44 78 00 5e 	be r3,r24,8003868 <vprintk+0x258>              
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      rtems_putc(chr);                                                
      continue;                                                       
    }                                                                 
    if ( c == 's' ) {                                                 
 80036f4:	34 01 00 73 	mvi r1,115                                     
 80036f8:	44 61 00 6b 	be r3,r1,80038a4 <vprintk+0x294>               
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 80036fc:	64 65 00 4f 	cmpei r5,r3,79                                 
 8003700:	64 64 00 6f 	cmpei r4,r3,111                                
      base = 8; sign = false;                                         
 8003704:	34 01 00 00 	mvi r1,0                                       
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 8003708:	b8 a4 20 00 	or r4,r5,r4                                    
      base = 8; sign = false;                                         
 800370c:	34 10 00 08 	mvi r16,8                                      
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
 8003710:	5c 80 00 0b 	bne r4,r0,800373c <vprintk+0x12c>              
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 8003714:	64 66 00 49 	cmpei r6,r3,73                                 
 8003718:	64 65 00 69 	cmpei r5,r3,105                                
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
 800371c:	34 01 00 01 	mvi r1,1                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 8003720:	b8 c5 28 00 	or r5,r6,r5                                    
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
 8003724:	34 10 00 0a 	mvi r16,10                                     
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
 8003728:	5c a4 00 05 	bne r5,r4,800373c <vprintk+0x12c>              
                c == 'd' || c == 'D' ) {                              
 800372c:	64 66 00 44 	cmpei r6,r3,68                                 
 8003730:	64 64 00 64 	cmpei r4,r3,100                                
 8003734:	b8 c4 20 00 	or r4,r6,r4                                    
 8003738:	44 85 00 85 	be r4,r5,800394c <vprintk+0x33c>               
    } else {                                                          
      rtems_putc(c);                                                  
      continue;                                                       
    }                                                                 
                                                                      
    printNum(                                                         
 800373c:	2a cf 00 00 	lw r15,(r22+0)                                 
      lflag ? va_arg(ap, long) : (long) va_arg(ap, int),              
 8003740:	36 d6 00 04 	addi r22,r22,4                                 
  unsigned long unsigned_num;                                         
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
 8003744:	44 20 00 07 	be r1,r0,8003760 <vprintk+0x150>               
 8003748:	4d e0 00 06 	bge r15,r0,8003760 <vprintk+0x150>             
    rtems_putc('-');                                                  
 800374c:	34 01 00 2d 	mvi r1,45                                      
 8003750:	f8 00 17 7b 	calli 800953c <rtems_putc>                     
    unsigned_num = (unsigned long) -num;                              
    if (maxwidth) maxwidth--;                                         
 8003754:	7d 61 00 00 	cmpnei r1,r11,0                                
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    rtems_putc('-');                                                  
    unsigned_num = (unsigned long) -num;                              
 8003758:	c8 0f 78 00 	sub r15,r0,r15                                 
    if (maxwidth) maxwidth--;                                         
 800375c:	c9 61 58 00 	sub r11,r11,r1                                 
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 8003760:	b9 e0 08 00 	mv r1,r15                                      
 8003764:	ba 00 10 00 	mv r2,r16                                      
 8003768:	f8 00 62 28 	calli 801c008 <__udivsi3>                      
 800376c:	b8 20 68 00 	mv r13,r1                                      
 8003770:	22 13 00 ff 	andi r19,r16,0xff                              
    if (maxwidth) maxwidth--;                                         
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
 8003774:	34 0e 00 00 	mvi r14,0                                      
 8003778:	37 91 00 4c 	addi r17,sp,76                                 
  while ((n = unsigned_num / base) > 0) {                             
 800377c:	5c 20 00 04 	bne r1,r0,800378c <vprintk+0x17c>              
 8003780:	e0 00 00 85 	bi 8003994 <vprintk+0x384>                     
 8003784:	b9 a0 78 00 	mv r15,r13                                     
 8003788:	b8 20 68 00 	mv r13,r1                                      
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 800378c:	b9 a0 10 00 	mv r2,r13                                      
 8003790:	ba 60 08 00 	mv r1,r19                                      
 8003794:	f8 00 61 b8 	calli 801be74 <__mulsi3>                       
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 8003798:	b6 2e 18 00 	add r3,r17,r14                                 
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 800379c:	c9 e1 78 00 	sub r15,r15,r1                                 
 80037a0:	30 6f 00 00 	sb (r3+0),r15                                  
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 80037a4:	b9 a0 08 00 	mv r1,r13                                      
 80037a8:	ba 00 10 00 	mv r2,r16                                      
 80037ac:	f8 00 62 17 	calli 801c008 <__udivsi3>                      
    toPrint[count++] = (char) (unsigned_num - (n * base));            
 80037b0:	35 ce 00 01 	addi r14,r14,1                                 
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 80037b4:	5c 20 ff f4 	bne r1,r0,8003784 <vprintk+0x174>              
 80037b8:	35 cf 00 01 	addi r15,r14,1                                 
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
 80037bc:	b6 2e 70 00 	add r14,r17,r14                                
 80037c0:	31 cd 00 00 	sb (r14+0),r13                                 
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
 80037c4:	51 eb 00 05 	bgeu r15,r11,80037d8 <vprintk+0x1c8>           
 80037c8:	35 6b ff ff 	addi r11,r11,-1                                
    rtems_putc(lead);                                                 
 80037cc:	ba a0 08 00 	mv r1,r21                                      
 80037d0:	f8 00 17 5b 	calli 800953c <rtems_putc>                     
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
 80037d4:	55 6f ff fd 	bgu r11,r15,80037c8 <vprintk+0x1b8>            
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
 80037d8:	45 e0 00 0b 	be r15,r0,8003804 <vprintk+0x1f4>              <== NEVER TAKEN
    rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);      
 80037dc:	35 ed ff ff 	addi r13,r15,-1                                
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 80037e0:	b6 2d 68 00 	add r13,r17,r13                                
 80037e4:	34 0b 00 00 	mvi r11,0                                      
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
    rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);      
 80037e8:	41 a1 00 00 	lbu r1,(r13+0)                                 
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
 80037ec:	35 6b 00 01 	addi r11,r11,1                                 
 80037f0:	35 ad ff ff 	addi r13,r13,-1                                
    rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);      
 80037f4:	b6 41 08 00 	add r1,r18,r1                                  
 80037f8:	40 21 00 00 	lbu r1,(r1+0)                                  
 80037fc:	f8 00 17 50 	calli 800953c <rtems_putc>                     
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
 8003800:	55 eb ff fa 	bgu r15,r11,80037e8 <vprintk+0x1d8>            
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
 8003804:	35 8c 00 01 	addi r12,r12,1                                 
 8003808:	41 81 00 00 	lbu r1,(r12+0)                                 
 800380c:	5c 20 ff a1 	bne r1,r0,8003690 <vprintk+0x80>               
      sign,                                                           
      width,                                                          
      lead                                                            
    );                                                                
  }                                                                   
}                                                                     
 8003810:	2b 9d 00 04 	lw ra,(sp+4)                                   
 8003814:	2b 8b 00 44 	lw r11,(sp+68)                                 
 8003818:	2b 8c 00 40 	lw r12,(sp+64)                                 
 800381c:	2b 8d 00 3c 	lw r13,(sp+60)                                 
 8003820:	2b 8e 00 38 	lw r14,(sp+56)                                 
 8003824:	2b 8f 00 34 	lw r15,(sp+52)                                 
 8003828:	2b 90 00 30 	lw r16,(sp+48)                                 
 800382c:	2b 91 00 2c 	lw r17,(sp+44)                                 
 8003830:	2b 92 00 28 	lw r18,(sp+40)                                 
 8003834:	2b 93 00 24 	lw r19,(sp+36)                                 
 8003838:	2b 94 00 20 	lw r20,(sp+32)                                 
 800383c:	2b 95 00 1c 	lw r21,(sp+28)                                 
 8003840:	2b 96 00 18 	lw r22,(sp+24)                                 
 8003844:	2b 97 00 14 	lw r23,(sp+20)                                 
 8003848:	2b 98 00 10 	lw r24,(sp+16)                                 
 800384c:	2b 99 00 0c 	lw r25,(sp+12)                                 
 8003850:	2b 9b 00 08 	lw fp,(sp+8)                                   
 8003854:	37 9c 00 5c 	addi sp,sp,92                                  
 8003858:	c3 a0 00 00 	ret                                            
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
      lflag = true;                                                   
      c = *++fmt;                                                     
 800385c:	35 8c 00 01 	addi r12,r12,1                                 
 8003860:	41 83 00 00 	lbu r3,(r12+0)                                 
    }                                                                 
    if ( c == 'c' ) {                                                 
 8003864:	5c 78 ff a4 	bne r3,r24,80036f4 <vprintk+0xe4>              <== ALWAYS TAKEN
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      rtems_putc(chr);                                                
 8003868:	42 c1 00 03 	lbu r1,(r22+3)                                 
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
 800386c:	36 d6 00 04 	addi r22,r22,4                                 
      rtems_putc(chr);                                                
 8003870:	f8 00 17 33 	calli 800953c <rtems_putc>                     
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
 8003874:	35 8c 00 01 	addi r12,r12,1                                 
 8003878:	41 81 00 00 	lbu r1,(r12+0)                                 
 800387c:	5c 20 ff 85 	bne r1,r0,8003690 <vprintk+0x80>               
 8003880:	e3 ff ff e4 	bi 8003810 <vprintk+0x200>                     
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
 8003884:	35 8c 00 01 	addi r12,r12,1                                 
 8003888:	41 83 00 00 	lbu r3,(r12+0)                                 
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
 800388c:	34 10 00 01 	mvi r16,1                                      
 8003890:	e3 ff ff 88 	bi 80036b0 <vprintk+0xa0>                      
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
 8003894:	35 8c 00 01 	addi r12,r12,1                                 
 8003898:	41 83 00 00 	lbu r3,(r12+0)                                 
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
 800389c:	34 15 00 30 	mvi r21,48                                     
 80038a0:	e3 ff ff 82 	bi 80036a8 <vprintk+0x98>                      
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 80038a4:	2a ce 00 00 	lw r14,(r22+0)                                 
 80038a8:	36 d1 00 04 	addi r17,r22,4                                 
                                                                      
      if ( str == NULL ) {                                            
 80038ac:	45 c0 00 38 	be r14,r0,800398c <vprintk+0x37c>              
        str = "";                                                     
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
 80038b0:	41 c1 00 00 	lbu r1,(r14+0)                                 
 80038b4:	34 0d 00 00 	mvi r13,0                                      
 80038b8:	44 20 00 05 	be r1,r0,80038cc <vprintk+0x2bc>               
 80038bc:	35 ad 00 01 	addi r13,r13,1                                 
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
 80038c0:	b5 cd 08 00 	add r1,r14,r13                                 
      if ( str == NULL ) {                                            
        str = "";                                                     
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
 80038c4:	40 21 00 00 	lbu r1,(r1+0)                                  
 80038c8:	5c 20 ff fd 	bne r1,r0,80038bc <vprintk+0x2ac>              
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
 80038cc:	5e 00 00 07 	bne r16,r0,80038e8 <vprintk+0x2d8>             
        for ( i=len ; i<width ; i++ )                                 
 80038d0:	51 ab 00 06 	bgeu r13,r11,80038e8 <vprintk+0x2d8>           
 80038d4:	b9 a0 78 00 	mv r15,r13                                     
 80038d8:	35 ef 00 01 	addi r15,r15,1                                 
          rtems_putc(' ');                                            
 80038dc:	34 01 00 20 	mvi r1,32                                      
 80038e0:	f8 00 17 17 	calli 800953c <rtems_putc>                     
      for ( len=0, s=str ; *s ; len++, s++ )                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
        for ( i=len ; i<width ; i++ )                                 
 80038e4:	55 6f ff fd 	bgu r11,r15,80038d8 <vprintk+0x2c8>            
          rtems_putc(' ');                                            
                                                                      
      /* no width option */                                           
      if (width == 0) {                                               
 80038e8:	5d 60 00 03 	bne r11,r0,80038f4 <vprintk+0x2e4>             
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 80038ec:	45 ab 00 0c 	be r13,r11,800391c <vprintk+0x30c>             
 80038f0:	b9 a0 58 00 	mv r11,r13                                     
 80038f4:	41 c1 00 00 	lbu r1,(r14+0)                                 
 80038f8:	44 20 00 09 	be r1,r0,800391c <vprintk+0x30c>               <== NEVER TAKEN
        rtems_putc(*str);                                             
 80038fc:	f8 00 17 10 	calli 800953c <rtems_putc>                     
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 8003900:	35 ce 00 01 	addi r14,r14,1                                 
 8003904:	e0 00 00 02 	bi 800390c <vprintk+0x2fc>                     
        rtems_putc(*str);                                             
 8003908:	f8 00 17 0d 	calli 800953c <rtems_putc>                     
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 800390c:	41 c2 00 00 	lbu r2,(r14+0)                                 
 8003910:	35 ce 00 01 	addi r14,r14,1                                 
        rtems_putc(*str);                                             
 8003914:	b8 40 08 00 	mv r1,r2                                       
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
 8003918:	5c 40 ff fc 	bne r2,r0,8003908 <vprintk+0x2f8>              
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 800391c:	ba 20 b0 00 	mv r22,r17                                     
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
        rtems_putc(*str);                                             
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
 8003920:	46 00 ff b9 	be r16,r0,8003804 <vprintk+0x1f4>              
        for ( i=len ; i<width ; i++ )                                 
 8003924:	51 ab ff b8 	bgeu r13,r11,8003804 <vprintk+0x1f4>           
 8003928:	35 ad 00 01 	addi r13,r13,1                                 
          rtems_putc(' ');                                            
 800392c:	34 01 00 20 	mvi r1,32                                      
 8003930:	f8 00 17 03 	calli 800953c <rtems_putc>                     
      for ( i=0 ; i<width && *str ; str++ )                           
        rtems_putc(*str);                                             
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
        for ( i=len ; i<width ; i++ )                                 
 8003934:	55 6d ff fd 	bgu r11,r13,8003928 <vprintk+0x318>            
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
 8003938:	35 8c 00 01 	addi r12,r12,1                                 
 800393c:	41 81 00 00 	lbu r1,(r12+0)                                 
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
 8003940:	ba 20 b0 00 	mv r22,r17                                     
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
 8003944:	5c 20 ff 53 	bne r1,r0,8003690 <vprintk+0x80>               <== ALWAYS TAKEN
 8003948:	e3 ff ff b2 	bi 8003810 <vprintk+0x200>                     <== NOT EXECUTED
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
 800394c:	64 66 00 55 	cmpei r6,r3,85                                 
 8003950:	64 65 00 75 	cmpei r5,r3,117                                
      base = 10; sign = false;                                        
 8003954:	34 01 00 00 	mvi r1,0                                       
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
 8003958:	b8 c5 28 00 	or r5,r6,r5                                    
 800395c:	5c a4 ff 78 	bne r5,r4,800373c <vprintk+0x12c>              
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
 8003960:	64 66 00 58 	cmpei r6,r3,88                                 
 8003964:	64 64 00 78 	cmpei r4,r3,120                                
      base = 16; sign = false;                                        
 8003968:	b8 a0 08 00 	mv r1,r5                                       
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
 800396c:	b8 c4 20 00 	or r4,r6,r4                                    
      base = 16; sign = false;                                        
 8003970:	34 10 00 10 	mvi r16,16                                     
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
 8003974:	5c 85 ff 72 	bne r4,r5,800373c <vprintk+0x12c>              
      base = 16; sign = false;                                        
    } else if ( c == 'p' ) {                                          
 8003978:	34 02 00 70 	mvi r2,112                                     
 800397c:	44 62 ff 70 	be r3,r2,800373c <vprintk+0x12c>               
      base = 16; sign = false; lflag = true;                          
    } else {                                                          
      rtems_putc(c);                                                  
 8003980:	b8 60 08 00 	mv r1,r3                                       
 8003984:	f8 00 16 ee 	calli 800953c <rtems_putc>                     
      continue;                                                       
 8003988:	e3 ff ff 9f 	bi 8003804 <vprintk+0x1f4>                     
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
 800398c:	2b 8e 00 48 	lw r14,(sp+72)                                 
 8003990:	e3 ff ff c8 	bi 80038b0 <vprintk+0x2a0>                     
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
 8003994:	b9 e0 68 00 	mv r13,r15                                     
    if (maxwidth) maxwidth--;                                         
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
 8003998:	34 0e 00 00 	mvi r14,0                                      
  while ((n = unsigned_num / base) > 0) {                             
 800399c:	34 0f 00 01 	mvi r15,1                                      
 80039a0:	37 91 00 4c 	addi r17,sp,76                                 
 80039a4:	e3 ff ff 86 	bi 80037bc <vprintk+0x1ac>                     
                                                                      

0801c6bc <write>: ssize_t write( int fd, const void *buffer, size_t count ) {
 801c6bc:	37 9c ff fc 	addi sp,sp,-4                                  
 801c6c0:	5b 9d 00 04 	sw (sp+4),ra                                   
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
 801c6c4:	78 04 08 02 	mvhi r4,0x802                                  
 801c6c8:	38 84 00 10 	ori r4,r4,0x10                                 
 801c6cc:	28 84 00 00 	lw r4,(r4+0)                                   
 801c6d0:	54 81 00 06 	bgu r4,r1,801c6e8 <write+0x2c>                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
 801c6d4:	fb ff c2 e8 	calli 800d274 <__errno>                        
 801c6d8:	34 02 00 09 	mvi r2,9                                       
 801c6dc:	58 22 00 00 	sw (r1+0),r2                                   
 801c6e0:	34 01 ff ff 	mvi r1,-1                                      
 801c6e4:	e0 00 00 18 	bi 801c744 <write+0x88>                        
)                                                                     
{                                                                     
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 801c6e8:	b4 21 20 00 	add r4,r1,r1                                   
 801c6ec:	b4 81 20 00 	add r4,r4,r1                                   
 801c6f0:	78 05 08 02 	mvhi r5,0x802                                  
 801c6f4:	b4 84 20 00 	add r4,r4,r4                                   
 801c6f8:	38 a5 08 1c 	ori r5,r5,0x81c                                
 801c6fc:	b4 84 20 00 	add r4,r4,r4                                   
 801c700:	c8 81 08 00 	sub r1,r4,r1                                   
 801c704:	28 a4 00 00 	lw r4,(r5+0)                                   
 801c708:	b4 21 08 00 	add r1,r1,r1                                   
 801c70c:	b4 21 08 00 	add r1,r1,r1                                   
 801c710:	b4 81 20 00 	add r4,r4,r1                                   
  rtems_libio_check_is_open( iop );                                   
 801c714:	28 85 00 08 	lw r5,(r4+8)                                   
 801c718:	20 a1 01 00 	andi r1,r5,0x100                               
 801c71c:	44 20 ff ee 	be r1,r0,801c6d4 <write+0x18>                  
  rtems_libio_check_buffer( buffer );                                 
 801c720:	44 40 00 0c 	be r2,r0,801c750 <write+0x94>                  <== NEVER TAKEN
  rtems_libio_check_count( count );                                   
 801c724:	34 01 00 00 	mvi r1,0                                       
 801c728:	44 60 00 07 	be r3,r0,801c744 <write+0x88>                  
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
 801c72c:	20 a5 00 04 	andi r5,r5,0x4                                 
 801c730:	44 a0 ff e9 	be r5,r0,801c6d4 <write+0x18>                  
                                                                      
  /*                                                                  
   *  Now process the write() request.                                
   */                                                                 
  return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );    
 801c734:	28 85 00 1c 	lw r5,(r4+28)                                  
 801c738:	b8 80 08 00 	mv r1,r4                                       
 801c73c:	28 a4 00 0c 	lw r4,(r5+12)                                  
 801c740:	d8 80 00 00 	call r4                                        
}                                                                     
 801c744:	2b 9d 00 04 	lw ra,(sp+4)                                   
 801c748:	37 9c 00 04 	addi sp,sp,4                                   
 801c74c:	c3 a0 00 00 	ret                                            
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
 801c750:	fb ff c2 c9 	calli 800d274 <__errno>                        <== NOT EXECUTED
 801c754:	34 02 00 16 	mvi r2,22                                      <== NOT EXECUTED
 801c758:	58 22 00 00 	sw (r1+0),r2                                   <== NOT EXECUTED
 801c75c:	34 01 ff ff 	mvi r1,-1                                      <== NOT EXECUTED
 801c760:	e3 ff ff f9 	bi 801c744 <write+0x88>                        <== NOT EXECUTED
                                                                      

0800476c <writev>: ssize_t writev( int fd, const struct iovec *iov, int iovcnt ) {
 800476c:	37 9c ff dc 	addi sp,sp,-36                                 
 8004770:	5b 8b 00 24 	sw (sp+36),r11                                 
 8004774:	5b 8c 00 20 	sw (sp+32),r12                                 
 8004778:	5b 8d 00 1c 	sw (sp+28),r13                                 
 800477c:	5b 8e 00 18 	sw (sp+24),r14                                 
 8004780:	5b 8f 00 14 	sw (sp+20),r15                                 
 8004784:	5b 90 00 10 	sw (sp+16),r16                                 
 8004788:	5b 91 00 0c 	sw (sp+12),r17                                 
 800478c:	5b 92 00 08 	sw (sp+8),r18                                  
 8004790:	5b 9d 00 04 	sw (sp+4),ra                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 8004794:	78 04 08 01 	mvhi r4,0x801                                  
 8004798:	38 84 70 10 	ori r4,r4,0x7010                               
 800479c:	28 84 00 00 	lw r4,(r4+0)                                   
ssize_t writev(                                                       
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
 80047a0:	b8 60 88 00 	mv r17,r3                                      
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
 80047a4:	54 81 00 11 	bgu r4,r1,80047e8 <writev+0x7c>                
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
 80047a8:	f8 00 25 39 	calli 800dc8c <__errno>                        
 80047ac:	34 02 00 09 	mvi r2,9                                       
 80047b0:	58 22 00 00 	sw (r1+0),r2                                   
 80047b4:	34 0c ff ff 	mvi r12,-1                                     
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
 80047b8:	b9 80 08 00 	mv r1,r12                                      
 80047bc:	2b 9d 00 04 	lw ra,(sp+4)                                   
 80047c0:	2b 8b 00 24 	lw r11,(sp+36)                                 
 80047c4:	2b 8c 00 20 	lw r12,(sp+32)                                 
 80047c8:	2b 8d 00 1c 	lw r13,(sp+28)                                 
 80047cc:	2b 8e 00 18 	lw r14,(sp+24)                                 
 80047d0:	2b 8f 00 14 	lw r15,(sp+20)                                 
 80047d4:	2b 90 00 10 	lw r16,(sp+16)                                 
 80047d8:	2b 91 00 0c 	lw r17,(sp+12)                                 
 80047dc:	2b 92 00 08 	lw r18,(sp+8)                                  
 80047e0:	37 9c 00 24 	addi sp,sp,36                                  
 80047e4:	c3 a0 00 00 	ret                                            
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
 80047e8:	b4 21 18 00 	add r3,r1,r1                                   
 80047ec:	b4 61 18 00 	add r3,r3,r1                                   
 80047f0:	78 04 08 01 	mvhi r4,0x801                                  
 80047f4:	b4 63 18 00 	add r3,r3,r3                                   
 80047f8:	b4 63 18 00 	add r3,r3,r3                                   
 80047fc:	38 84 77 f8 	ori r4,r4,0x77f8                               
 8004800:	c8 61 08 00 	sub r1,r3,r1                                   
 8004804:	28 92 00 00 	lw r18,(r4+0)                                  
 8004808:	b4 21 08 00 	add r1,r1,r1                                   
 800480c:	b4 21 08 00 	add r1,r1,r1                                   
 8004810:	b6 41 90 00 	add r18,r18,r1                                 
  rtems_libio_check_is_open( iop );                                   
 8004814:	2a 43 00 08 	lw r3,(r18+8)                                  
 8004818:	20 61 01 00 	andi r1,r3,0x100                               
 800481c:	44 20 ff e3 	be r1,r0,80047a8 <writev+0x3c>                 
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
 8004820:	20 63 00 04 	andi r3,r3,0x4                                 
 8004824:	44 60 ff e1 	be r3,r0,80047a8 <writev+0x3c>                 <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
 8004828:	44 40 00 02 	be r2,r0,8004830 <writev+0xc4>                 
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
 800482c:	4a 20 00 06 	bg r17,r0,8004844 <writev+0xd8>                
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
      rtems_set_errno_and_return_minus_one( EINVAL );                 
 8004830:	f8 00 25 17 	calli 800dc8c <__errno>                        
 8004834:	34 02 00 16 	mvi r2,22                                      
 8004838:	58 22 00 00 	sw (r1+0),r2                                   
 800483c:	34 0c ff ff 	mvi r12,-1                                     
 8004840:	e3 ff ff de 	bi 80047b8 <writev+0x4c>                       
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8004844:	34 01 04 00 	mvi r1,1024                                    
 8004848:	4c 31 00 02 	bge r1,r17,8004850 <writev+0xe4>               <== ALWAYS TAKEN
 800484c:	e3 ff ff f9 	bi 8004830 <writev+0xc4>                       <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );                   
 8004850:	b8 40 80 00 	mv r16,r2                                      
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
 8004854:	b8 40 58 00 	mv r11,r2                                      
 8004858:	34 0f 00 01 	mvi r15,1                                      
 800485c:	34 0d 00 00 	mvi r13,0                                      
 8004860:	34 0e 00 00 	mvi r14,0                                      
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
 8004864:	29 63 00 00 	lw r3,(r11+0)                                  
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 8004868:	34 02 00 1f 	mvi r2,31                                      
   *  this loop does that check as well and sets "all-zero" appropriately.
   *  The variable "all_zero" is used as an early exit point before   
   *  entering the write loop.                                        
   */                                                                 
  all_zeros = true;                                                   
  for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {                    
 800486c:	35 ad 00 01 	addi r13,r13,1                                 
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
 8004870:	44 60 ff f0 	be r3,r0,8004830 <writev+0xc4>                 
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
 8004874:	29 6c 00 04 	lw r12,(r11+4)                                 
   *  this loop does that check as well and sets "all-zero" appropriately.
   *  The variable "all_zero" is used as an early exit point before   
   *  entering the write loop.                                        
   */                                                                 
  all_zeros = true;                                                   
  for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {                    
 8004878:	35 6b 00 08 	addi r11,r11,8                                 
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 800487c:	65 83 00 00 	cmpei r3,r12,0                                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8004880:	b5 cc 60 00 	add r12,r14,r12                                
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 8004884:	c8 03 18 00 	sub r3,r0,r3                                   
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 8004888:	b9 80 08 00 	mv r1,r12                                      
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
 800488c:	a1 e3 78 00 	and r15,r15,r3                                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
 8004890:	f8 00 3d 6f 	calli 8013e4c <__lshrsi3>                      
 8004894:	e9 cc 10 00 	cmpg r2,r14,r12                                
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
 8004898:	b9 80 70 00 	mv r14,r12                                     
    if ( total < old || total > SSIZE_MAX )                           
 800489c:	b8 22 08 00 	or r1,r1,r2                                    
 80048a0:	20 21 00 ff 	andi r1,r1,0xff                                
 80048a4:	5c 20 ff e3 	bne r1,r0,8004830 <writev+0xc4>                
   *  this loop does that check as well and sets "all-zero" appropriately.
   *  The variable "all_zero" is used as an early exit point before   
   *  entering the write loop.                                        
   */                                                                 
  all_zeros = true;                                                   
  for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {                    
 80048a8:	4a 2d ff ef 	bg r17,r13,8004864 <writev+0xf8>               
                                                                      
  /*                                                                  
   * A writev with all zeros is supposed to have no effect per OpenGroup.
   */                                                                 
  if ( all_zeros == true ) {                                          
    return 0;                                                         
 80048ac:	34 0c 00 00 	mvi r12,0                                      
  }                                                                   
                                                                      
  /*                                                                  
   * A writev with all zeros is supposed to have no effect per OpenGroup.
   */                                                                 
  if ( all_zeros == true ) {                                          
 80048b0:	5d e0 ff c2 	bne r15,r0,80047b8 <writev+0x4c>               
 80048b4:	34 0b 00 00 	mvi r11,0                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
 80048b8:	2a 03 00 04 	lw r3,(r16+4)                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 80048bc:	35 6b 00 01 	addi r11,r11,1                                 
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
 80048c0:	5c 60 00 04 	bne r3,r0,80048d0 <writev+0x164>               <== ALWAYS TAKEN
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
 80048c4:	36 10 00 08 	addi r16,r16,8                                 
 80048c8:	4a 2b ff fc 	bg r17,r11,80048b8 <writev+0x14c>              
 80048cc:	e3 ff ff bb 	bi 80047b8 <writev+0x4c>                       
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
      continue;                                                       
                                                                      
    bytes = (*iop->pathinfo.handlers->write_h)(                       
 80048d0:	2a 44 00 1c 	lw r4,(r18+28)                                 
 80048d4:	2a 02 00 00 	lw r2,(r16+0)                                  
 80048d8:	ba 40 08 00 	mv r1,r18                                      
 80048dc:	28 84 00 0c 	lw r4,(r4+12)                                  
 80048e0:	d8 80 00 00 	call r4                                        
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
 80048e4:	48 01 00 06 	bg r0,r1,80048fc <writev+0x190>                <== NEVER TAKEN
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
 80048e8:	44 20 00 02 	be r1,r0,80048f0 <writev+0x184>                <== NEVER TAKEN
      total       += bytes;                                           
 80048ec:	b5 81 60 00 	add r12,r12,r1                                 
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
 80048f0:	2a 02 00 04 	lw r2,(r16+4)                                  
 80048f4:	44 22 ff f4 	be r1,r2,80048c4 <writev+0x158>                <== ALWAYS TAKEN
 80048f8:	e3 ff ff b0 	bi 80047b8 <writev+0x4c>                       <== NOT EXECUTED
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
 80048fc:	34 0c ff ff 	mvi r12,-1                                     <== NOT EXECUTED
 8004900:	e3 ff ff ae 	bi 80047b8 <writev+0x4c>                       <== NOT EXECUTED